Komisches Verhalten von split()

19/11/2010 - 14:33 von Lewin Bormann | Report spam
Hallo,
ich stelle seit einigen Tagen ein merkwürdiges Verhalten von split()
fest: Führe ich folgenden Code aus...

my $var = "mein.text";
my @var2 = split(".",$var);
print("@var2");

...so ist in der Ausgabe nichts als der Zeilenumbruch enthalten. Benutze
ich hingegen diesen Code:

my $var = "mein,text";
my @var2 = split(",",$var);
print("@var2");

...dann klappt split() so, wie es sollte. Ich kann mich daran erinnern,
dass das Trennen durch Punkt funktioniert hat. Oder kann split() etwa
gar nicht mit einem Punkt trennen?
Ach ja, bei Nutzung von strict und -w kommen keine Warnungen.

Vielen Dank,
LB
Visit my projects at http://dermesser-projects.webs.com
Für persönlichen Kontakt bitte <news~lewin-bormann.de> (~ = at)
IRC (freenode): lewin_b
Systeminfos: http://ubuntuone.com/p/Kxy/
 

Lesen sie die antworten

#1 Rud1ger Sch1erz
19/11/2010 - 14:48 | Warnen spam
Lewin Bormann writes:

my $var = "mein.text";
my @var2 = split(".",$var);
print("@var2");

...so ist in der Ausgabe nichts als der Zeilenumbruch enthalten. Benutze



Der PATTERN, den du split als Delimiter mit gibst, ist eine Regex. "."
steht da für ein beliebiges Zeichen, dh., jedes Zeichen deiner
Zeichenkette in $var ist ein Trennzeichen. Da bleibt halt nix mehr
dazwischen übrig. ;-)

Wenn du explizit einen Punkt zum Trennen nehmen möchtest, musst du den
maskieren, versuch' mal:

my @var2 = split(/\./,$var);

Weitere Info:

perldoc -f split

HTH,
Rudiger

Ähnliche fragen