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

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

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

4

1 回答 1

0

这些字符串恰好包含类似路径的信息这一事实与它正在做什么无关。

第 2 行将 '$&' 替换为 '$src'。

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

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

于 2013-08-05T18:56:59.653 回答