Substitution-Probleme

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