Perl:读取文件时跳过N行

coo*_*490 4 perl loops

在解析文本文件时,如何跳过第9行?

这就是我得到的

use strict; use warnings;
open(my $fh, '<', 'file.txt') or die $!;
my $skip = 1;
while (<$fh>){
    $_=~ s/\r//;
    chomp;
    next if ($skip eq 9)
    $skip++;
}
Run Code Online (Sandbox Code Playgroud)

不确定这是否有效,但我确信这样做更有说服力.

imr*_*ran 13

你可以使用$.:

use strict; use warnings;
open(my $fh, '<', 'file.txt') or die $!;
while (<$fh>){
    next if $. == 9;
    $_=~ s/\r//;
    chomp;
    # process line
}
Run Code Online (Sandbox Code Playgroud)

也可以用 $fh->input_line_number()

  • @ cooldood3490正确的检查位置是与你的`perl`一起安装的文档:`perldoc -v'$.'`文档的当前版本可以在[perldoc.perl.org]上找到(http://perldoc.perl .org/perlvar.html#%24.)我建议远离那些拼写错误语言名称的网站. (4认同)
  • 你甚至不必直接使用[`$ .`](http://perldoc.perl.org/perlvar.html#%24."perldoc -v'$.'"),你可以使用[`.标量上下文中的.`](http://perldoc.perl.org/perlop.html#Range-Operators"perldoc perlop").`next if if 9..9;`如果你需要跳过更多行:`next if 9..12;` (3认同)
  • 好的,所以$是一个特殊变量,用于存储最后一个读取的文件句柄的当前输入行号。我只是从此[SITE](http://www.kichwa.com/quik_ref/spec_variables.html)阅读。直到今天我才知道。谢谢 (2认同)