[quote=GwenDragon,23.05.2006, 14:58]perlop schreibt:
Quoteqw/STRING/
Evaluates to a list of the words extracted out of STRING, using embedded whitespace as the word delimiters. It can be understood as being roughly equivalent to:
split(' ', q/STRING/);
Das bedeutet, dass eine Liste aus dem Muster erzeugt wird, wobei das Leerzeichen als Wortgrenze angesehen wird.[/quote]
Vorsicht, nicht einfach dieses einzelne Leerzeichen, sondern beliebige Mengen an Whitespace sind die Begrenzung bei diesem
split.
Man beachte die Unterschiede zwischen
/ /,
/\s+/ und
' ' bei split:
teilt
$string an einzelnen Leerzeichen auf. Zwei Leerzeichen hintereinander ergeben ein leeres Element der Liste. Leerzeichen am Anfang von
$string ergeben auch leere Elemente.
teilt
$string an Folgen von Whitespace (Leerzeichen, Tab, Vertikaler Tab) auf. Whitespace am Anfang von
$string führt zu einem leeren Element am Anfang der Ergebnisliste.
split ' ', $string
# oder
split " ", $string
# oder andere Quote-Varianten, z.B.
split q{ }, $string
teilt
$string ebenfalls an Folgen von Whitespace (Leerzeichen, Tab, Vertikaler Tab) auf,
aber Whitespace am Anfang von
$string wird hier ignoriert!
Dieses Feature von
split wird oft übersehen, denn der Unterschied zwischen
/pattern/ und
"pattern" bei split besteht nur dann, wenn
pattern exakt ein Leerzeichen ist. Man sollte sich auch deshalb angewöhnen, immer
split /pattern/, ... zu schreiben. So fällt ein
split ' ', ... direkt auf.
Nur zur Erinnerung.