繁体   English   中英

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

[英]In Perl, why do I get a syntax error when I try to use string eval?

为什么这不起作用?

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

给出:

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

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

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

这是行不通的,因为用双引号引起来的字符串会进行插值,插值将无法顺利进行,因为这些变量已在适当位置扩展。 而且您需要在评估之外使用分号,而在评估中则不需要太多。 像这样尝试单引号:

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

一个更好的更好的问题是,为什么首先要使用eval? 我怀疑您正在使用LWP::UserAgent ,除非您实现自己的请求对象,否则'request`方法不太可能消失。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM