Perl :忽略第一行,同时读取文件的每个字符



我正在尝试读取如下所示的文件:

> SOME HEADER
ABCDEFGHIJKLMNOP
QRSTUPWXYZ123456

我需要能够读取字符 A、B、C、D 等。每个字符,所以我正在使用这个循环:

while (read $file, my $char, 1){

  print $char;
  print $.;
  print "nn";
}

但问题是,我需要跳过"一些标题"。我需要跳过它,不是因为它是第一行,而是基于有一个"> SOME HEADER"子字符串。

打印 $. 始终输出"6",即使它不是正确的行号。

open my $file,"<","file.txt";
<$file>; #Removing first line
while (read $file, my $char, 1)
{
    print $char;
}

或者设置标志并检查它

my $flag = 0;
while (read $file, my $char, 1)
{
    $flag = 1 and next if(($char =~m/n|rn/) && ($flag == 0));
    next if $flag == 0;
    print $char;
}

逐行处理然后逐个字符处理不是更容易吗?

use strict;
use warnings;
while (<DATA>) {
    chomp;
    next if /^> SOME HEADER/;
    for my $char (split(//)) {
        print "$char $.n";
    }
}
__DATA__
> SOME HEADER
ABCDEFGHIJKLMNOP
QRSTUPWXYZ123456

输出:

A 2
B 2
C 2
...
4 3
5 3
6 3

最新更新