为什么这不起作用?
eval "$response = $ua->request($r);"
print "$@";
给出:
syntax error at (eval 8) line 1, near "="
答案 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);