我有一个perl代码,我可以访问多个txt文件并为它们生成输出。 当我运行代码时,控制台上的输出行被覆盖。
2015-04-21:12-04-54|getFilesInInputDir| ********** name : PEPORT **********
PEPORT4-21:12-04-54|readNFormOutputFile| name :
PEPORT" is : -04-54|readNFormOutputFile| Frequency for name "
请注意,它应该是第二行和第三行
2015-04-21:12-04-54|readNFormOutputFile| name : PEPORT
2015-04-21:12-04-54|readNFormOutputFile| Frequency for name "PEPORT"
此后,代码停止处理我的文件。代码似乎很好。我可以知道可能的原因是什么。
感谢。
答案 0 :(得分:2)
似乎是CR / LF与LF问题。通过运行dos2unix
或fromdos
将输入从MSWin转换为Linux,或从Perl代码中删除"\r"
个字符。
答案 1 :(得分:0)
正如choroba所说,我猜你正在Linux上读取一个在Windows上生成的文件。最简单的解决方法是将chomp
替换为s/\s+\z//
或s/\p{cntrl}+\z//
或者,如果尾随空格很重要,您可以使用s/[\r\n]+\z//
,或者,如果您运行的是Perl 5的版本10或更高版本,s/\R\z//