Perl 我的脚本在读取文件时漏行
我正在做一个大的(8000行)库数据转换。我读入一个文件,想逐行修改它。读取文件在到达文件末尾之前停止Perl 我的脚本在读取文件时漏行,perl,file,file-handling,Perl,File,File Handling,我正在做一个大的(8000行)库数据转换。我读入一个文件,想逐行修改它。读取文件在到达文件末尾之前停止 open(my $infh, "<", 'infile.pica') || die('Could not open pica file'); open(my $outfh, ">", 'infile.pica.norm') || die('Could not open pica file'); my $counter = 0; while
open(my $infh, "<", 'infile.pica')
|| die('Could not open pica file');
open(my $outfh, ">", 'infile.pica.norm')
|| die('Could not open pica file');
my $counter = 0;
while (my $line = <$infh>) {
$counter++;
# for debugging - this is the last line being read.
# infile actually has 7857 lines
if ($counter >= 7691) {
say $line;
}
# modification commented out for debugging
print $outfh $line;
}
close $infh;
close $outfh;
以下是数据集的一个片段,它将停止读取:
002@ $0Oax
002C $aText$btxt
002D $aComputermedien$bc
002E $aOnline-Ressource$bcr
004A $09780309160193
006X $cEBC$03564211
010@ $aeng
011@ $a2010
你可以看到每一行后面都有一个换行符
(嘿,代码
0A
)。第006X行是它停止读取的位置 解决方法是:问题与我发布的脚本无关,甚至与从文件中读取无关。在我没有发布的脚本中,我忘记通过调用以下命令刷新输出:
PICA::Writer->end()
见:
写完。根据格式和输出处理程序,将写入页脚(例如XML结束标记),并关闭输出处理程序。之后,状态设置为PICA::Writer::end
。如果编写器以前没有启动过,则首先调用start方法
结束或写入已结束的写入程序将抛出错误。您可以使用output方法或start方法重新启动已结束的写入程序
你的代码看起来还可以,也许可以发布一些关于你的设置的详细信息?你有没有看过最后一行的字符?默认情况下,Perl将在换行符(
\n
)上拆分行-您的所有行都有换行符吗?您可以用记事本++之类的东西打开文件,使其显示所有字符(如CR、LF等)并查看可疑行,如果查看输入文件的hey转储,可能确实存在无法“看到”的内容。每行末尾都有一个A0
。基于此,您在问题中发布的代码与您的问题没有任何关系,很明显它没有生成您声称的输出。对你请求帮助的人故意撒谎不是个好主意。另外,不要发布文本截图。我给你演示了如何得到一个六边形垃圾场。把它贴出来。
PICA::Writer->end()