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