我试图从文本文件中过滤文件名
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,也没有从数组元素中删除新行。
答案 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;