Slash ersetzen
Berc
- perl
1 Patrick Andrieu0 Patrick Andrieu0 Berc
1 Cheatah
Hallo,
wie man Buchstaben, Ziffern usw ersetzt weiß ich. Jedoch haut bei mir das ersetzen von Slash´s nicht hin.
Bei z.B. folgender Variable mit folgendem Inhalt :
$importdirectory = "//n1010111/Ablagen/Z111-Zeit/Backup/";
muss jedes / mit \ ersetzt werden.
Dann haben wir s/Suchmuster/ersatz usw.
$importdirectory=~ s///\/g; haut nicht hin.
Muss ich noch irgendetwas beachten?
Gruß,
Berc
Hallo Berc!
Dann haben wir s/Suchmuster/ersatz usw.
$importdirectory=~ s///\/g; haut nicht hin.
Wenn der Slash »/« Deine Delimiter (Begrenzungszeichen) sind, was passiert Deiner Meinung nach mit Deinem Beispiel?
$importdirectory=~ s///\/g;
^^^
Ersetze nichts durch nichts, alles hinter dem dritten »/« wird nicht beachtet und dürfte sogar eine Fehlermeldung oder Warnung auswerfen.
Alles, was Du an Delimiter benutzt, muss, falls diese im Such- oder Ersetzungsmuster vorkommen, maskiert werden. Zusätzlich müssen Zeichen, die in RegExps eine besondere Bedeutung haben, auch maskiert werden:
s//\/g; # ersetzt einen Slah durch einen Backslash.
Da es so aber schwer lesbar ist (mit / als Delemiter, da / auch noch im Muster vorkommt), kannst Du andere Delimiter nehmen:
s!/!\!g;
oder
s{/}{\}g; # bei Klammern paarweise!
Viele Grüße aus Frankfurt/Main,
Patrick
Re!
s//\/g; # ersetzt einen Slah durch einen Backslash.
Da es so aber schwer lesbar
So schwer lesbar, dass mir ein Fehler unterlaufen ist ;)
s///\/g; # So ist's korrekt
^ ^ ^
1 2 3 # drei Begrenzer bei Substitutions (es sei denn, man nimmt Klammern)
OT: ich glaube, ich mutiere langsam zum Gunnar ;)
Viele Grüße aus Frankfurt/Main,
Patrick
Hi,
OT: ich glaube, ich mutiere langsam zum Gunnar ;)
oder zur Ingrid ;-)
Cheatah
Re!
s//\/g; # ersetzt einen Slah durch einen Backslash.
Da es so aber schwer lesbar
So schwer lesbar, dass mir ein Fehler unterlaufen ist ;)
s///\/g; # So ist's korrekt
^ ^ ^
1 2 3 # drei Begrenzer bei Substitutions (es sei denn, man nimmt Klammern)OT: ich glaube, ich mutiere langsam zum Gunnar ;)
Viele Grüße aus Frankfurt/Main,
Patrick
Jetzt hab ich das ganze auch besser verstanden. Danke für die schnellen Antworten. Skript funktioniert jetzt einwandfrei und ich kann übergeben =).
Hi,
Dann haben wir s/Suchmuster/ersatz usw.
damit hast Du "/" als Delimiter gewählt, welches ergo innerhalb des Suchmusters ein Sonderzeichen ist. Und was macht man mit Sonderzeichen?
$importdirectory=~ s///\/g; haut nicht hin.
Selbst wenn es hinhauen _würde_, würdest Du damit Deine Slashes nur durch einen einzigen Backslash ersetzen. Als Escape-Zeichen ist der Backslash nämlich automatisch ein Sonderzeichen.
Cheatah