在Perl中,为什么在尝试使用字符串eval时会出现语法错误?

时间:2009-08-04 13:42:12

标签: perl string syntax eval

为什么这不起作用?

eval "$response = $ua->request($r);"
print "$@";

给出:

syntax error at (eval 8) line 1, near "=" 

3 个答案:

答案 0 :(得分:22)

更好的问题是为什么使用字符串eval而不是块eval?

eval { $response = $ua->request($r); }
print "$@";

答案 1 :(得分:15)

它不起作用,因为你的双引号字符串会受到插值的影响,这些变量不会很好,这些变量会在适当的位置展开。而且你需要在你的eval外面加一个分号,而不是在你的内部。尝试使用单引号:

eval '$response = $ua->request($r)';

答案 2 :(得分:2)

更好的问题是为什么你首先使用eval?我怀疑你使用的是LWP::UserAgent,除非你实现自己的请求对象,否则'request`方法不太可能会死掉。

因此,为什么不简单地使用:

$response = $ua->request($r);