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