perl eval与后面的报价

时间:2016-05-15 14:10:05

标签: python perl eval

我正在将perl脚本转换为python,然后我找到了这个我无法理解的功能。

sub set_xyz_hash {
    %xyz = ();
    $_ = join(' ', map { my $a = $_; $a =~ s/\'/\'\"\'\"\'/g; "'$a'" } @ARGV);
    eval `XYZ_ARG0='$0' NZENV_OUTPUT='-a -p xyz' xyz $_`;
}

因为我对perl的了解非常有限,所以我无法理解此函数中使用的' 。有人可以帮我吗?

注意,eval与`(后引号)一起使用。

1 个答案:

答案 0 :(得分:1)

反引号运行外部命令并返回输出:

my $result = `ls -l`;
print $result;

您的eval行的处理方式完全相同:

my $result = `XYZ_ARG0='$0' NZENV_OUTPUT='-a -p xyz' xyz $_`;
eval $result;

它基本上是从被调用脚本的输出中获取一些Perl源并运行它。