Marc Rauber: Suche nach Sonderzeichen wie Slash oder Backslash

Hallo,
folgender Sachverahlt:

mittels $input =~ s/suche/ersetze/g;

gehe ich meinen input durch und ersetze meine suche.

Was aber wenn ich nach einem Pfad suche als folgendes Konstrukt habe:

$input =~ s//home/xaranx/file//home/xaranx/file1/g;
mit
$input =~ s//home/xaranx/file//home/xaranx/file1/g;
hierbei bekomme ich zwar keine Fehlermeldung, der Perl Interpreter führt die suche aber auch nicht durch :-(

jemand eine Idee wie ich die / darstellen muss um den Such String durch zubekommen? Habe über google nichts verwertbares gefunden.

gruß Marc

  1. Hallo,
    folgender Sachverahlt:

    mittels $input =~ s/suche/ersetze/g;

    gehe ich meinen input durch und ersetze meine suche.

    Was aber wenn ich nach einem Pfad suche als folgendes Konstrukt habe:

    $input =~ s//home/xaranx/file//home/xaranx/file1/g;
    mit
    $input =~ s//home/xaranx/file//home/xaranx/file1/g;
    hierbei bekomme ich zwar keine Fehlermeldung, der Perl Interpreter führt die suche aber auch nicht durch :-(

    Du arbeitest sicher nicht mit angeschalteten Warnungen oder mit use strict?

    Denn dein Fehler liegt mit Sicherheit woanders:

    my $input = '/home/xaranx/file';
    $input =~ s//home/xaranx/file//home/xaranx/file1/g;
    print $input

    klappt einwandfrei bei mir.

    Struppi.

    1. Du arbeitest sicher nicht mit angeschalteten Warnungen oder mit use strict?

      Denn dein Fehler liegt mit Sicherheit woanders:

      my $input = '/home/xaranx/file';
      $input =~ s//home/xaranx/file//home/xaranx/file1/g;
      print $input

      klappt einwandfrei bei mir.

      Struppi.

      nunja der Fehler liegt wohl in diesem Aufruf:
      $input =~ s/<klaraein $klara>\nKlaraRoot /home/$klara\n//g;

      er soll hier den String: <klaraein $klara>\nKlaraRoot /home/$klara\n suchen und durch nichts ersetzen, also quasi löschen :-)

      Mein Problem an dem ganzen setze ich:
      $input =~ s/<klaraein $klara>\n//g;
      oder
      $input =~ s/KlaraRoot /home/$klara\n//g;
      ein, dann wird dieser Ausdruck gelöscht nur beid im Verbund, da passiert nichts.

      Steh ich auf dem Schlauch und übersehe was?
      Ich ärger mich seit einem Tag mit diesem Ausdruck rum und finde es einfach nicht.

      gruß Marc

      1. nunja der Fehler liegt wohl in diesem Aufruf:
        $input =~ s/<klaraein $klara>\nKlaraRoot /home/$klara\n//g;

        er soll hier den String: <klaraein $klara>\nKlaraRoot /home/$klara\n suchen und durch nichts ersetzen, also quasi löschen :-)

        Mein Problem an dem ganzen setze ich:
        $input =~ s/<klaraein $klara>\n//g;
        oder
        $input =~ s/KlaraRoot /home/$klara\n//g;
        ein, dann wird dieser Ausdruck gelöscht nur beid im Verbund, da passiert nichts.

        Ich seh den Zusammenhang zwischen den ausdrücken nicht. was ist $klara?

        könntest du einfach mal den Teil des Codes posten, der läuft aber nicht das macht was du möchtest.

        Struppi.

        1. naja $klara ist eine Variable :-)

          aber der Fehler liegt nicht im Code es war ein Denkfehler meinerseits.

          Wenn ich mit input eine Zeile nach der anderen Einlese,
          kann das Skript einfach keine 2 Zeilen finden :-)

          Also werd ich wohl für jede Zeile eine extra Such/Ersetze funktion schreiben müßen oder den kompletten input in eine Variable oder Array schreiben.

          danke für die prompten Tips.

          gruß Marc