我在考虑如何在perl -ne
循环中“短路”读取文件。如果我遇到某种情况,我想放弃当前文件并继续进入@ARGV中的下一个文件。这类似于GNU awk的方便nextfile
命令。
这样的事情:
perl -ne 'do_something(); next_file if some_condition()' files ...
在游戏中,我发现close ARGV
实现了“转到下一个档案”的目标。
还有其他不那么神奇的方法来实现这个目标吗?
答案 0 :(得分:6)
不,关闭ARGV是正确的方法。
正如glenn jackman所说,这会产生重置$.
行计数器的副作用(通常在使用ARGV时会在几个文件中继续递增),因此您可能希望保存并恢复它:
my $line = $.;
close ARGV;
$. = $line;