Phw1: s/// und sonderzeichen

ich habe ein perl-cgi-programm geschrieben in dem
aus einer datei strings eingelesen werden,
die sonderzeichen enthalten können:

$x =~ s,|,\|,g;
  $x =~ s,(,\(,g;
...
  $string =~ s/$x/$y/g;

da die anweisung in der dritten zeile zu einer fehlermeldung
führt, wenn in $x sonderzeichen enthalten sind, habe ich
alle sonderzeichen durch eine reihe von ersetzungen maskiert.
das finde ich nicht besonders elegant, zumal
auch im errorlog gemahnt wird: use of uninitialized value in line ...

  • gibt es eine methode diese reihe durch eine einzelne anweisung zu ersetzen und die warnung auszuschließen?
  • kann man die letzte ersetzung so umschreiben, dass man die sonderzeichen
      gar nicht mehr maskieren muss?

danke für die antworten, gruss, phw

  1. Hoi,

    • gibt es eine methode diese reihe durch eine einzelne anweisung zu
      ersetzen und die warnung auszuschließen?

    $x = quotemeta $x;
    $y = quotemeta $y;

    • kann man die letzte ersetzung so umschreiben, dass man die sonderzeichen
        gar nicht mehr maskieren muss?

    $y = quotemeta $y;
    $var =~ s/\Q$x\E/$y/g;

    Gruesse,
     CK