Felix Schwarz: eval & reguläre Ausdrücke mit @

Beitrag lesen

Hallo.

Ich habe ein Problem, dass ich trotz Konsultierung der einschlaegigen Buecher (Kamel~, Koch~) nicht loesen konnte:

Ich will einen dynamischen, regulaeren Ausdruck in ein Perl-Programm einfuegen.
Folgender Code laeuft wunderbar:

$string = "Forumsbesucher";
$compare = "=~ /forum/i";
eval "if ($string $compare) { print 'Erfolg!\n'; }";

Bei $string = "webmaster@forum.de"; gibt es aber folgende Fehlermeldung:
  Literal @forum now requires backslash at t.pl line
    2, within string
  Execution of t.pl aborted due to compilation errors.

Daraufhin habe ich versucht, das @ zu quoten:
  $string = "webmaster@forum.de"; oder
  $string = quotemeta ("webmaster@forum.de");
was aber beides keinen Erfolg brachte.

Es geht nicht nur um das @, auch wenn ein ! in $string drin ist, gibt Perl Fehlermeldungen aus.

Wie muss ich meinen Code modifizieren, damit Perl keinen Fehler zurueckgibt?
Hat mein Problem etwas mit dem Matching von Mulitbyte-Zeichen zu tun? (wohl eher nicht, oder?)

mfg
Felix Schwarz