鉴于每个数据记录的代码数据文件内容,我无法打印每条记录的第一行。但是,它确实打印了第一条记录的第一行,如:1aaaaaaaaaaaaa
特别提示:我确信有很多方法可以做到这一点,但就我而言,我需要一个遵循代码问题的解决方案....
记录的数据文件内容
1aaaaaaaaaa
aaaaaaaaaaa
aaaaaaaaaaa
__Data__
1bbbbbbbbbb
bbbbbbbbbbb
bbbbbbbbbbb
__Data__
1cccccccccc
ccccccccccc
ccccccccccc
__Data__
{
local $/="__Data__\n";
open my $fh,"<","logA.txt" or die "Unable to open file";
while(<$fh>)
{
# remove the input record separator value of __Data__\n
chomp;
# display the line of each record
if(/([^\n]*)\n(.*)/sm)
{
print "$1\n";
}
}
close ($fh);
}
我得到了不受欢迎的输出:
[root@yeti]# perl test2.pl
1aaaaaaaaaaaaa
[root@yeti]#
我需要每条记录第一行的输出.....
1aaaaaaaaaaa 1bbbbbbbbbbb 1ccccccccccc
答案 0 :(得分:2)
要进行调试,您会发现程序状态与您的期望不同,然后您回溯直至找到原因。
检查程序执行的操作会显示您的循环只输入一次,$_
包含整个文件。这意味着Perl没有找到行终止符("__Data__\n"
)。
检查文件会在__Data__
和换行符之间找到空格。从文件中删除尾随空格。
perl -i -ple's/\s+\z//' logA.txt