re hi
print RAUS join "\n", grep { /^URL:\s(.+)$/ } <REIN>
Sicher, dass obiges falsch ist? grep() liefert doch im Listenkontext
... eine Liste der _gesamten_ zeilen zurueck, bei denen das matching erfolgreich war.
in der url-datei wuerde dann sowas stehen:
URL: http://www.mustermann.de
URL: http://tralala
usw.
print RAUS join "\n", map { /^URL:\s*(.+)$/ } <REIN>
map() dagegen müsste die Subroutine auf alle Elemente anwenden und in
diesem Fall nur zufällig die richtige URL zurückliefern, in allen
Zeilen, in denen keine URL vorhanden ist aber eine leere Liste.
hmm, jetzt, wo dus sagst, aber funktioniert hat es bei mir, ein paar tests (mit den daten aus dem ursprungsposting) haben folgendes ergeben:
(1)
print RAUS join "*\n", map { my ($x,$y)=/^((?:NameURL):\s*)(.+)$/;($x,$y); } <REIN>;
liefert das zurueck, was du sagst.
(2)
print RAUS join "*\n", map { my @array=/^((?:NameURL):\s*)(.+)$/;@array; } <REIN>; # und
print RAUS join "*\n", map { /^((?:NameURL):\s*)(.+)$/ } <REIN>;
liefern das angestrebte (also meins:-) Ergebnis zurueck
Der Unterschied zwischen beiden ist: (jeweils im nicht-gemachten Fall)
bei (2) wird eine leere Liste zurueckgegeben (also quasi _nichts_), es ist nichts da zum joinen
bei (1) wird keine leere Liste, sondern eine Liste mit zwei leeren Elementen, in diesem Fall handelt join und naja joint eben :-)
so wuerde ich mir das erklaeren, Gegenstimmen? :-)
cua
n.d.p. (auch noch etwas verwirrt .-)