【发布时间】:2016-09-29 14:57:14
【问题描述】:
我可以从perldoc -f eval看到以下内容:
eval EXPR
eval BLOCK
eval In the first form, the return value of EXPR is parsed and
executed as if it were a little Perl program.
而且我见过 EXPR 用单引号或双引号括起来,例如,
use strict;
use warnings;
for my $operator ( qw?+ - *? )
{
my $sum = eval "3 $operator 2";
print "$sum\n";
}
我对引号有疑问:在这种情况下,"3 $operator 2" 是 EXPR,根据 perldoc,"3 + 2" 的第一次迭代的返回值是 "3 + 2","3 + 2" 被解析并执行,但它是一个双引号字符串文字,Perl 最终如何得到5 的结果?我的意思是,当EXPR 用单引号或双引号括起来时,引号是EXPR 的一部分还是只是分隔符?如果将其更改为单引号,程序会崩溃,因此引号的含义似乎与单引号或双引号字符串文字中的含义相同。
谢谢
【问题讨论】:
-
qw分隔符的好选择。
标签: perl eval double-quotes single-quotes