Berc: Slash ersetzen

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

  1. 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

    --

    _ - jenseits vom delirium - _
    [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
    Nichts ist unmöglich? Doch!
    Heute schon gegökt?
    1. 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

      --

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

        OT: ich glaube, ich mutiere langsam zum Gunnar ;)

        oder zur Ingrid ;-)

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
      2. 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 =).

    2. WOW Danke ^^

  2. 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

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes