我正在尝试从文本文件中过滤文件名
my $fname= "filenames.txt";
open (FPTR,$fname) || die "Can't Open File: $fname\n";
chomp(my @filenames = <FPTR>);
Run Code Online (Sandbox Code Playgroud)
文件的上下文如下
file1.pl
file2.pl
file3.pl
.
.
.
file100.pl
Run Code Online (Sandbox Code Playgroud)
但是当我打印 @filenames 数组时,它就像
';AR1 = 'file1.pl
';AR2 = 'file2.pl
';AR3 = 'file3.pl
';AR4 = 'file4.pl
.
.
.
.
$VAR100 = 'file100.pl';
Run Code Online (Sandbox Code Playgroud)
即使我添加了 chomp,新行也没有从数组元素中删除。
看起来您正在使用 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>);
Run Code Online (Sandbox Code Playgroud)
另一种方法是替换chomp为
s/\R\z// for @filenames;
Run Code Online (Sandbox Code Playgroud)
或者
s/\s+\z// for @filenames;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2794 次 |
| 最近记录: |