Was passiert bei diesem fehlehftem Substitutionsbefehl?
Ed X
- perl
Hi Folks,
ein kleines perl (Verständnisproblem)Problem!
Etwas Quellcode:
<-------- schnipp --------------->
#!c:/perl/bin/perl.exe -w
$text = 'Ein kleiner Testtext natuerlich nur zum testen.';
#print "Content-type: text/html\n\n";
#print "<html>\n<head>\n<title>Ein Titelchen</title>\n</head>\n<body>\n";
print "$text\n<br>\n";
($ausgabe=$text) =~ s/testen/Testen/; #wie wir wissen wird "das Testen" groß geschrieben
print "$ausgabe\n<br>\n";
($ausgabe=$text) = ~ s/testen/Testen/; # hä, bitte? Was?
print "$ausgabe\n<br>\n";
print "</body></html>\n";
<-------- schnapp --------------->
Die Substitutionsanweisung mit einem space zwischen dem Matcher und dem Gleichheitszeichen bewirkt die Fehlerausgabe:"Use of uninitialized value in substitution (s///) at F:\webs\cgi-bin\testprog.pl line 13.", Soweit, So gut, So richtig bzw. falsch.
Außerdem wird noch eine Zahl ausgegeben: 4294967295
Trotz längerem Nachgrübelns bin ich nicht dahintergestiegen, was sie bedeutet.
Also: "Was will mir Perl damit sagen?" bzw. was bedeutet diese Zahl?
Bye Ed X
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.