Thread join (//, @buffer): join mit // hängt von Matching ab (16 answers)
Opened by El Ron at 2007-02-07 10:35

sid burn
 2007-02-09 01:35
#74114 #74114
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
[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:
Code: (dl )
1
2
3
4
5
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.

Code: (dl )
1
2
3
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

View full thread join (//, @buffer): join mit // hängt von Matching ab