Perl one-liner:如何跳转到@ARGV中的下一个文件

时间:2016-02-02 22:06:50

标签: perl

我在考虑如何在perl -ne循环中“短路”读取文件。如果我遇到某种情况,我想放弃当前文件并继续进入@ARGV中的下一个文件。这类似于GNU awk的方便nextfile命令。

这样的事情:

perl -ne 'do_something(); next_file if some_condition()' files ...

在游戏中,我发现close ARGV实现了“转到下一个档案”的目标。

还有其他不那么神奇的方法来实现这个目标吗?

1 个答案:

答案 0 :(得分:6)

不,关闭ARGV是正确的方法。

正如glenn jackman所说,这会产生重置$.行计数器的副作用(通常在使用ARGV时会在几个文件中继续递增),因此您可能希望保存并恢复它:

my $line = $.;
close ARGV;
$. = $line;