n.d. parker: Was passiert bei diesem fehlehftem Substitutionsbefehl?

Beitrag lesen

Moin,

($ausgabe=$text) =~ s/testen/Testen/;    #wie wir wissen wird "das Testen" groß geschrieben
($ausgabe=$text) = ~ s/testen/Testen/;     # hä, bitte?  Was?

"Use of uninitialized value in substitution (s///) at F:\webs\cgi-bin\testprog.pl line 13.",

$_ ist undefiniert.

Außerdem wird noch eine Zahl ausgegeben: 4294967295

= -1 als (unsigned) LongInt

Also: "Was will mir Perl damit sagen?" bzw. was bedeutet diese Zahl?

=~ ist nicht gleich = ~

=~ ist der Bindungsoperator
= ~ sind ein gleichheitszeichen und ein binaeres NOT.

was passiert also?

s/testen/Testen/ versucht, da es "ungebunden" ist, $_ zu bearbeiten.
$_ ist aber undef und so kommt die Fehlermeldung zustande.
Rückgabewert von s/// ist die Anzahl der durchgefuehrten Substiutionen, hier 0 (null).
Binär negiert ist das =-1, bzw. 0xFFFFFFFF.

empfehlenswerte Lektuere:

perldoc perlop
perldoc perlre

Viele Gruesse,

n.d.p.