在挖掘一些旧的源代码时,我看到了以下内容:
my $module = $some{module};
eval "require $module";
die "Bad module\n$@" if $@;
虽然我了解代码的作用,但它会尝试“要求”一个模块并在它不成功时死掉 - 批评者抱怨它
“eval”的表达形式在第 331 行第 13 列。参见 PBP 的第 161 页。(严重性:5)
不幸的是我没有PBP书,所以想知道上面的正确方法是什么......
此外,在同一来源中发现:
sub test_repo_file {
my($self, $repo, $test) = @_;
my $abspath = repo_abs_path($repo);
return "eval -$test $abspath";
}
这里不明白是什么解决了“eval”,perlcritic 再次抱怨“string eval”......
有人可以解释一下关于“字符串评估”的基本要点以及如何正确编写上述内容吗?