3

我正在使用这个简单的代码来读取文件并将所有值放入数组中。

open (TEXT_FILE, "$file_name") || die "can't open $_";
@file_data=<TEXT_FILE>;
close TEXT_FILE;

我正在阅读的文件是一个文本文件,并且是使用 unix 或 windows 编辑的。因此,在每行的末尾,它可能包含回车和换行(在 windows 的情况下),并且可能只包含换行(在 unix 的情况下)。如果存在,我想删除回车。我在想这样的事情

foreach(@file_data)
{
 if($_ =~ /something to match a carriage return at the end of line/)
 {
   chop $_;
 }
 else{ #do nothing
 }
}

如果我做得对,那么请建议我一些模式,否则也建议一些其他选项。提前致谢 !!

4

2 回答 2

4

如果您对快速修复感兴趣,您可以查看该dos2unix实用程序。在 Perl 中,你可以这样做

perl -pi -le 's/[\r\n]+\z//' yourfile.txt

执行-pi就地编辑(没有备份,除非您添加扩展名-i),并且-l开关为您处理换行符(打印时删除和放回)。

如果您想使用自己的代码,只需在循环中应用相同的正则表达式。

于 2013-08-14T11:30:39.463 回答
2

回车是\r,所以只需:

s/\r$//;
于 2013-08-14T11:24:09.250 回答