Frank: Sonderzeichen!?

Hi folks,

$LOG2[0]=~ s/[//gi;

irgendwie mag Perl das wohl nicht so ganz:
/[/ unmatched [] in regexp line xyz

Gut die Fehlermeldung verstehe ich schon, aber wie kann ich denn Madame Perl klarmachen das es bitte alle [ in der Variable durch nichts ersetzen soll?

merci euch
mfg
FrankyBoy

  1. Hi,

    $LOG2[0]=~ s/[//gi;

    irgendwie mag Perl das wohl nicht so ganz:
    /[/ unmatched [] in regexp line xyz

    Gut die Fehlermeldung verstehe ich schon, aber wie kann ich denn Madame Perl klarmachen das es bitte alle [ in der Variable durch nichts ersetzen soll?

    Wie man alle Sonderzeichen quotet: "\Zeichen"

    $LOG2[0]=~ s/[//gi;

    [ ] Du hast dich umgeschaut und in der Perldoc gesucht bevor
        du diese Frage hier gepostet hast?

    Ciao,
      Wolfgang

  2. Hi,

    $LOG2[0]=~ s/[//gi;

    irgendwie mag Perl das wohl nicht so ganz:
    /[/ unmatched [] in regexp line xyz

    Gut die Fehlermeldung verstehe ich schon, aber wie kann ich denn
    Madame Perl klarmachen das es bitte alle [ in der Variable durch
    nichts ersetzen soll?

    schonmal was von maskieren gehoert?

    $LOG2[0]=~ s/[//gi;

    mfg
    CK1

  3. Hallo Frank,

    versuch mal das folgende:

    $LOG2[0]=~ s/[//gi;

    Damit müßte es eigentlich gehen.
    Hintergrund:
    Die diversen Klammern bzw Sonderzeichen werden in Perl ja genutzt und benötigt. Darum mußt Du dem Interpreter erklären, das es sich bei eben diesem Sonderzeichen nicht um einen Programmbestandteil handelt. Und das geschieht eben durch den Backslash . Damit wird das direkt nachfolgende Zeichen entwertet. Würdest Du also z.B. [] ersetzen wollen, müßte es dann so aussehen:

    $LOG2[0]=~ s/[]//gi;

    Es gibt noch eine weitere Möglichkeit, damit Du nicht für jedes Sonderzeichen ein \ davor setzen mußt, die weiß ich aber im Moment nicht aus dem Kopf, kann aber im SelfHTML nachgelesen werden.

    Jens

  4. Hi Frank!

    $LOG2[0]=~ s/[//gi;

    irgendwie mag Perl das wohl nicht so ganz:
    /[/ unmatched [] in regexp line xyz

    In regulären Ausdrücken kann man halt mit [....] eine Gruppe von Zeichen angeben die zur Auswahl stehen:
    /Herr Me[yi]er/

    Nun sucht er bei Dir halt die schließende Klammer! Per \ kannst Du aber die Wirkung von [ aufheben:
    $LOG2[0]=~ s/[//gi;

    Die Option i ist hier überflüssig (kostet nur Zeit) ...

    Zum puren Zeichen löschen solltest Du aber
    $LOG2[0]=~ tr/[//d;

    verwenden, da Du ja auch keine Regulären Ausdrücke benötigst ...

    Gruß,
       Jörk