我试图读取一堆类似的文件并逐个处理它们.这是我的代码.但不知何故,perl脚本无法正确读取文件.我不确定如何解决它.这些文件绝对是我可读写的.
#!/usr/bin/perl
use strict;
use warnings;
my @olap_f = `ls /full_dir_to_file/*txt`;
foreach my $file (@olap_f){
my %traits_h;
open(IN,'<',$file) || die "cannot open $file";
while(<IN>){
chomp;
my @array = split /\t/;
my $trait = $array[4];
$traits_h{$trait} ++;
}
close IN;
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,出现错误消息(如下所示):
cannot open /full_dir_to_file/a.txt
Run Code Online (Sandbox Code Playgroud)
每个文件名末尾都有换行符:
my @olap_f = `ls ~dir_to_file/*txt`;
chomp @olap_f; # Remove newlines
Run Code Online (Sandbox Code Playgroud)
更好的是,使用glob以避免启动新进程(并且必须修剪换行符):
my @olap_f = glob "~dir_to_file/*txt";
Run Code Online (Sandbox Code Playgroud)
另外,用于$!找出无法打开文件的原因:
open(IN,'<',$file) || die "cannot open $file: $!";
Run Code Online (Sandbox Code Playgroud)
这会告诉你的
cannot open /full_dir_to_file/a.txt
: No such file or directory
Run Code Online (Sandbox Code Playgroud)
这可能让你识别出不需要的换行符.
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |