Substitution-Probleme
am 10.07.2006 17:08:04 von Jan Teune
Hallo NG,
ich hab das folgende Problem:
ich weiss das der Inhalt einer Variable $var in einer anderen skalaren
Variable $string vorkommt. Nun möchte ich gerne den Inhalt der
Variable $var in der Variable $string durch nichts ersetzen, also
quasi: $string =~ s/$var//;
Hab ich hier einen klitzekleinen Denkfehler oder funktioniert das nicht?
kleines Beispiel:
$var = "(())";
$string = "((((.(())..((((((((";
$string =~ s/$var//;
ergibt die Ausgabe:
((((.(())..(((((((( <---ist also nix passiert...
Gruss
Jan
Re: Substitution-Probleme
am 10.07.2006 17:36:05 von Wolf Behrenhoff
Jan Teune schrieb:
> Hallo NG,
> ich hab das folgende Problem:
> ich weiss das der Inhalt einer Variable $var in einer anderen skalaren
> Variable $string vorkommt. Nun möchte ich gerne den Inhalt der
> Variable $var in der Variable $string durch nichts ersetzen, also
> quasi: $string =~ s/$var//;
> Hab ich hier einen klitzekleinen Denkfehler oder funktioniert das nicht?
>
> kleines Beispiel:
> $var = "(())";
> $string = "((((.(())..((((((((";
>
> $string =~ s/$var//;
> ergibt die Ausgabe:
> ((((.(())..(((((((( <---ist also nix passiert...
Das kann so doch nicht funktionieren, weil der Inahlt von $var praktisch
in das s/// eingesetzt wird, es ist also äquivalent zu
$string =~ s/(())//;
Dass das nicht das gewünschte erledigt, siehst du hoffentlich selbst.
Lösung:
perldoc -f quotemeta
Also vorher $var = quotemeta $var machen oder s/\Q$var// benutzen.
Wolf