带反引号的 perl eval
perl eval with back quote
我正在将一个 perl 脚本转换成 python 然后我发现了这个我无法理解的函数。
sub set_xyz_hash {
%xyz = ();
$_ = join(' ', map { my $a = $_; $a =~ s/\'/\'\"\'\"\'/g; "'$a'" } @ARGV);
eval `XYZ_ARG0='[=10=]' NZENV_OUTPUT='-a -p xyz' xyz $_`;
}
由于我对perl的了解非常有限,我无法理解这个函数中使用的'eval'。有人可以帮我吗?
注意,eval 与 `(反引号)一起使用。
反引号 运行 外部命令和 return 输出:
my $result = `ls -l`;
print $result;
您的 eval
行的处理方式完全相同:
my $result = `XYZ_ARG0='[=11=]' NZENV_OUTPUT='-a -p xyz' xyz $_`;
eval $result;
它基本上是从被调用脚本的输出中获取一些 Perl 源代码并 运行s 它。
我正在将一个 perl 脚本转换成 python 然后我发现了这个我无法理解的函数。
sub set_xyz_hash {
%xyz = ();
$_ = join(' ', map { my $a = $_; $a =~ s/\'/\'\"\'\"\'/g; "'$a'" } @ARGV);
eval `XYZ_ARG0='[=10=]' NZENV_OUTPUT='-a -p xyz' xyz $_`;
}
由于我对perl的了解非常有限,我无法理解这个函数中使用的'eval'。有人可以帮我吗?
注意,eval 与 `(反引号)一起使用。
反引号 运行 外部命令和 return 输出:
my $result = `ls -l`;
print $result;
您的 eval
行的处理方式完全相同:
my $result = `XYZ_ARG0='[=11=]' NZENV_OUTPUT='-a -p xyz' xyz $_`;
eval $result;
它基本上是从被调用脚本的输出中获取一些 Perl 源代码并 运行s 它。