从perl中的数组中删除新行

时间:2016-03-11 12:42:39

标签: arrays perl

我试图从文本文件中过滤文件名

my $fname= "filenames.txt";
open (FPTR,$fname) || die "Can't Open File: $fname\n";
chomp(my @filenames = <FPTR>);

文件的上下文如下所示

file1.pl
file2.pl
file3.pl
.
.
.
file100.pl

但是,当我打印@filenames数组时,它就像

';AR1 = 'file1.pl
';AR2 = 'file2.pl
';AR3 = 'file3.pl
';AR4 = 'file4.pl
.
.
.
.
$VAR100 = 'file100.pl';

即使我添加了chomp,也没有从数组元素中删除新行。

1 个答案:

答案 0 :(得分:4)

看起来您正在使用Linux来处理源自Windows的文件,该文件将CR LF放在每行的末尾。你的chomp删除了LF,留下了CR。您可以通过更改代码来解决此问题

my $fname = 'filenames.txt';
open my $fptr, '<:crlf', $fname or die qq{Can't open file "$fname" for input: $!};
chomp(my @filenames = <$fptr>);

另一种方法是将chomp替换为

s/\R\z// for @filenames;

s/\s+\z// for @filenames;