Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl:在读取文件的每个字符时忽略第一行_Perl_File_Parsing_Character - Fatal编程技术网

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

Perl:在读取文件的每个字符时忽略第一行,perl,file,parsing,character,Perl,File,Parsing,Character,我正在尝试读取一个如下所示的文件: > SOME HEADER ABCDEFGHIJKLMNOP QRSTUPWXYZ123456 我需要能够读取每个字符的A、B、C、D等字符,所以我使用这个循环: while (read $file, my $char, 1){ print $char; print $.; print "\n\n"; } 但问题是,我需要跳过“某些标题”。我需要跳过它,不是因为它是第一行,而是因为它有一个“>SOME HEADER”子字符串 打印美

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

> SOME HEADER
ABCDEFGHIJKLMNOP
QRSTUPWXYZ123456
我需要能够读取每个字符的A、B、C、D等字符,所以我使用这个循环:

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


  print $char;
  print $.;

  print "\n\n";
}
但问题是,我需要跳过“某些标题”。我需要跳过它,不是因为它是第一行,而是因为它有一个“>SOME HEADER”子字符串


打印美元。始终输出“6”,即使它不是正确的行号。

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

open my $file,"<","file.txt";
<$file>; #Removing first line
while (read $file, my $char, 1)
{
    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

显然,您需要保留一个缓冲区,并检查它的子字符串,然后将其丢弃(清除缓冲区)。或者--按行读取,检查子字符串并跳过,或者按字符逐行处理字符串(如果需要的话)。。。那么,你为什么按字符阅读?您需要做什么?对于
read
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