在Perl中,我们通常使用File::Find
进行递归目录遍历,我们经常使用类似于下面的代码来基于模式来查找某些文件。过早退出Perl文件::查找
find(\&filter, $somepath);
sub filter {
my $srcfile = $_;
if -f $srcfile && $srcfile =~ /<CERTAIN PATTERN>/ {
<Some processing which requires a premature exit>
}
}
这通常很灵活,但是有些时候我们想过早地退出查找。 Perl中有定义的方法来做到这一点吗?
谢谢,这是我一直在寻找:-)确切的事情。顺便说一句,有什么特别的原因,你为什么说'尝试这种可能性是否适合你:'。有什么情况会导致失败? – Abhijit 2011-12-31 18:03:49
@Abhijit:不安全,没有别的。我正在学习perl,但我仍然是一个新手,尽管我在发布解决方案之前对其进行了测试,但不确定这是否是最好的解决方案。本站有许多perl专家将详细解释此解决方案和其他解决方案的优缺点。我尽可能地尽力提供帮助,并且学习,当然。 – Birei 2011-12-31 18:21:31
@Birei =>如果你把它写成'eval {...; 1}或打印“错误字符串:$ @”'那么如果'find'正常结束,你不会得到错误信息。这是因为'eval'会在成功时返回块中的最后一个表达式,失败时返回'undef'。因此,以'; 1'结尾块将'eval'变成布尔运算符,以便轻松链接或使用条件进行测试。 – 2011-12-31 20:14:51