Patrick Andrieu: string terminator??

Beitrag lesen

Hallo Assa!

"Da die Slahs die Default-Delimiter sind, brauchst Du m hier nicht. Erst wenn Du andere benutzt, z.B.:"
...nicht verstehe. Aber da muss ich mich einfach noch mehr mit Perl beschäftigen...

Delimiter sind Grenzen. Wenn Du z.B einen String definierst, brauchst Du auch Delimiter. Diese sind "" oder '':

my $string = "Hallo Welt!";
print "Heute ist ein schöner Tag zum Perlen\n";

Reguläre Ausdrücke brauchen auch Delimiter. Defaultmäßig werden Slashs benutzt:

print $string if /Welt!/; # $string enthält »Welt!«, »Hallo Welt!« wird ausgegeben.

Du kannst aber andere Delimiter benutzen. Wichtig ist, dass diese im Suchausdruck nicht vorkommen, denn da müssen sie escaped (mit einem Backslash: ) werden.

Nehmen wir an, Du musst einen Serverpfad oder Teile einer URI manipulieren. Diese enthalten ja Slashs:

$path = "/home/user/public/myweb/pics/mypic.jpg"
print $path if /\home/user/public/myweb/pics/;

Sieht etwas unübersichtlich aus, nicht wahr? Aber man kann ja andere Delimiter nehmen:

print $path if m!/home/user/public/myweb/pics!;
oder:
print $path if m#/home/user/public/myweb/pics#;

Hier wird m benötigt, damit Perl weiß, dass ein RegExp folgt. Mit den Slahs als Default-Delimiter weiß Perl das von selbst.

Bei unserem Beispielstring vom Beginn: Hallo Welt! müssen wir, falls wir ! als Delimiter nehmen, was machen?

print if m!Welt!!; # AUA, das tut weh!
print if m!Welt!!; # Schon besser.

Viele Grüße aus Frankfurt/Main,
Patrick

--

_ - jenseits vom delirium - _
[link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
Nichts ist unmöglich? Doch!
Heute schon gegökt?