我正在使用这个简单的代码来读取文件并将所有值放入数组中。
open (TEXT_FILE, "$file_name") || die "can't open $_";
@file_data=<TEXT_FILE>;
close TEXT_FILE;
我正在阅读的文件是一个文本文件,并使用unix或windows进行编辑。因此,在每一行的末尾,它可能包含回车符和换行符(如果是窗口),并且可能只包含换行符(如果是unix)。如果存在,我想删除回车。 我在想这样的事情
foreach(@file_data)
{
if($_ =~ /something to match a carriage return at the end of line/)
{
chop $_;
}
else{ #do nothing
}
}
如果我做得对,那么请建议我一些其他方案也提出其他方案。 在此先感谢!!
答案 0 :(得分:4)
如果您对快速修复感兴趣,可以查看dos2unix
实用程序。在Perl中,你可以做到
perl -pi -le 's/[\r\n]+\z//' yourfile.txt
-pi
执行就地编辑(无备份,除非您向-i
添加扩展名),-l
开关为您处理换行符(打印时删除并放回) )。
如果您想使用自己的代码,只需在循环中应用相同的正则表达式。
答案 1 :(得分:1)
回车符是\r
,所以只需:
s/\r$//;