Martin: zeichen ersetzen mit nichts

Hallo,

möchte in einem String alle Zeichen löschen ausser Buchstaben. Warum funktioniert das hier nicht:

$test =~ tr/a-z|A-Z//c;

Gruß
Martin

  1. Hallo,

    möchte in einem String alle Zeichen löschen ausser Buchstaben. Warum funktioniert das hier nicht:

    $test =~ tr/a-z|A-Z//c;

    $test =~ tr/[^a-zA-Z]//c;
    oder mit
    $test =~ tr/\W//c;

    hoffe das war richtig...

    gruss
    horst

    1. Hallo,

      möchte in einem String alle Zeichen löschen ausser Buchstaben. Warum funktioniert das hier nicht:

      $test =~ tr/a-z|A-Z//c;

      $test =~ tr/[^a-zA-Z]//c;
      oder mit
      $test =~ tr/\W//c;

      hoffe das war richtig...

      gruss
      horst

      Habe gerade herausgefunden, das das hier auch geht:

      $test =~ tr/a-z|A-Z/-/c;

      ...logisch, das wäre dann auch richtig:

      $test =~ tr/a-zA-Z/-/c;

      Habe gerade irgendwo gelesen, dass dem Zeichen"-" eine besondere Rolle zusteht und wenn man das im Ersetzungsoperator einsetzt wird das Zeichen davor benutzt. Und wenn da keins ist wird es auch mit nichts ersetzt. Das ist mal wieder Typisch Perl :-)

      Gruß
      Dirk