In Perl, warum bekomme ich einen Syntaxfehler, wenn ich versuche Zeichenfolge eval zu benutzen?
Frage
Warum ist das nicht funktioniert?
eval "$response = $ua->request($r);"
print "$@";
gibt:
syntax error at (eval 8) line 1, near "="
Lösung
Es funktioniert nicht, weil Ihre Strings in doppelten Anführungszeichen unterliegen Interpolation ist, die gehen zu gehen ist nicht gut, mit diesen Variablen anstelle erweitert. Und Sie brauchen ein Semikolon außerhalb Ihres eval, nicht so sehr in seinem Inneren. Versuchen Sie einfache Anführungszeichen wie folgt:
eval '$response = $ua->request($r)';
Andere Tipps
Eine bessere Frage ist, warum Sie eine Zeichenfolge eval verwenden, anstelle eines Blocks eval?
eval { $response = $ua->request($r); }
print "$@";
Eine noch bessere bessere Frage ist, warum Sie eval in erster Linie verwenden? Ich vermute, dass Sie LWP::UserAgent
verwenden und wenn Sie Ihre eigenen Wunsch Objekt implementieren, die ‚request` Methode ist unwahrscheinlich sterben.
So, warum nicht einfach verwenden:
$response = $ua->request($r);