![](/img/trans.png)
[英]Why is '$_' the same as $ARGV in a Perl one-liner?
[英]Perl one-liner: how to skip to the next file in @ARGV
我正在考慮如何“短路”在perl -ne
循環中讀取文件。 如果遇到某種情況,我想放棄當前文件並繼續執行@ARGV中的下一個文件。 這類似於GNU awk的方便的nextfile
命令。
像這樣:
perl -ne 'do_something(); next_file if some_condition()' files ...
閑逛,我發現close ARGV
可以達到“轉到下一個文件”的目標。
還有其他更神奇的方法來做到這一點嗎?
不,關閉ARGV是執行此操作的正確方法。
如glenn jackman所述,這具有重置$.
的副作用$.
行計數器(使用ARGV時,它通常會在多個文件中繼續遞增),因此您可能需要保存和恢復它:
my $line = $.;
close ARGV;
$. = $line;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.