perl-seiten, Klammer + Index unnötig?

06/12/2009 - 21:07 von Klaus | Report spam
Hallo,

auf dieser Seite

http://perl-seiten.homepage.t-onlin....html#abs3

finde ich in dem Beispiel in der 3. gelben Box folgende Zeilen:

foreach my $elem (@liste) {
push(@temp_1,[ $elem, ( $elem =~ /<(\d+)>/ )[0] ]);
}

Mich hat die runde Klammer und der Index 0 um die Regex gewundert. Ich habe
das mal entfernt und erhalte das gleiche Ergebnis.

Wollte der Autor mit der runden Klammer den List-Context "erzwingen" und mit
[0] dann das Ergebnis aus $1 (die gefundene Zahl aus der Regex) auswàhlen?

Da anscheinend in dem anonymen Array der List-Context gilt, funktioniert
diese einfachere Zeile genauso:

foreach my $elem (@liste) {
push(@temp_1,[ $elem, $elem =~ /<(\d+)>/ ]);
}


Weiter unten in der "Schwartz'schen Transformation" im Map kann man es
ebenso entfernen.

Habe ich mir das soweit richtig zusammengereimt?

Grüße
Klaus
 

Lesen sie die antworten

#1 Moritz Lenz
06/12/2009 - 21:24 | Warnen spam
Hallo,

Klaus wrote:
foreach my $elem (@liste) {
push(@temp_1,[ $elem, ( $elem =~ /<(\d+)>/ )[0] ]);
}

Mich hat die runde Klammer und der Index 0 um die Regex gewundert. Ich habe
das mal entfernt und erhalte das gleiche Ergebnis.

Wollte der Autor mit der runden Klammer den List-Context "erzwingen" und mit
[0] dann das Ergebnis aus $1 (die gefundene Zahl aus der Regex) auswàhlen?



vermutlich nicht. Sobald die Regex mehrere Captures enthàlt, macht der
Index einen Unterschied. Ohne den Index würde der Inhalt aller captures
auf dem Array landen.

Es geht also vermutlich eher um die Erweiterbarkeit des Codes.

Grüße,
Moritz

Moritz Lenz
http://perl-6.de/ http://moritz.faui2k3.org/

Ähnliche fragen