目录路径上的eval是做什么的?

时间:2013-08-05 18:14:00

标签: perl

$dir  =~ s/\$\&/\$src/g;
$pattern =~ s/\$\&/\$src/g;

$dir1 = eval( $dir );
$file = eval( $pattern );

关于上述问题,$ dir是一个目录,$ pattern是某个文件名的模式。 eval完成了什么?好像它正在取代$&在变量& src作为字符串文字的字符串中,但目录路径或文件名上的eval如何工作?

1 个答案:

答案 0 :(得分:0)

这些字符串碰巧包含类似路径的信息这一事实与它正在做的事情无关。

前2行取代'$&'用'$ src'。

第2行(evals)强制对字符串进行重新插值,用$ src的内容替换'$ src'。 (当然,还要扩展字符串中指定的任何其他变量。)

除非你遗漏了一些重要内容,否则这些都可以通过从替换的替换字符串中删除反斜杠来完成,例如($dir1 = $dir) =~ s/\$\&/$src/g