[quote=Dubu,08.Feb..2007, 23:54][quote=sid burn,08.02.2007, 23:46]Es wird nirgendswo eine 1 zurück geliefert, wenn der match nicht klappt.[/quote]
Sorry, vielleicht habe ich mich unklar ausgedrückt: Es wird eine 1 zurück geliefert, da der
vorige Match nicht klappt.
Siehe das Problem aus dem ersten Beitrag:
my $dummy = "Y";
my @buffer = qw(a b c d);
$dummy =~ /N/i;
print join(//,@buffer),"\n";
Das ergibt
a1b1c1d.
Das meinte ich. Da der Match mit /N/ nicht gepasst hat, liefert das // später im skalaren Kontext immer eine 1.[/quote]
Nein,
der vorherige Match hat nicht geklappt. Daher hat // keine weitere bedeutung. Nur wenn der vorherige Matcht geklappt hätte würde // auf den letzten Match gesetzt werden.
Da bisher noch kein Match geklappt hat entspricht // halt einer Leeren Regex.
Und wenn man keine Variable angibt dann wird automatisch auf $_ gematcht.
Das hat zur folge das ein Leerer Match immer wahr wird. Und dies hat den Rückgabewert 1.
Das // hat nichts direkt mit dem vorherigen Match zu tun, und dass er nicht gematcht hat. Würdest du den vorherige Match raus löschen würde immer noch das gleiche heraus kommen.
$dummy =~ /N/i;
hat keinen Einfluss auf das Ergebnis, da es eben nicht matcht, und somit // nicht verändert. Es kommt das gleiche Ergebniss raus, auch wenn du den ganzen Match weg lässt.
my $dummy = "Y";
my @buffer = qw(a b c d);
print join(//,@buffer),"\n";
Hierbei kommt wie gesagt immer noch "a1b1c1d" heraus.\n\n
<!--EDIT|sid burn|1170978477-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de