我正在尝试阅读一堆类似的文件并逐个处理它们。这是我的代码。但不知何故,perl脚本没有正确读取文件。我不确定如何解决它。这些文件绝对是我可读写的。
cannot open /full_dir_to_file/a.txt
当我运行它时,出现错误信息(如下所示):
{{1}}
答案 0 :(得分:6)
每个文件名末尾都有换行符:
my @olap_f = `ls ~dir_to_file/*txt`;
chomp @olap_f; # Remove newlines
更好的是,使用glob
来避免启动新流程(并且必须修剪换行符):
my @olap_f = glob "~dir_to_file/*txt";
另外,使用$!
找出文件无法打开的原因:
open(IN,'<',$file) || die "cannot open $file: $!";
这会告诉你
cannot open /full_dir_to_file/a.txt
: No such file or directory
可能会让您识别出不需要的换行符。
答案 1 :(得分:1)
我会在这里为IO::All
添加一个快速插件。了解引擎盖下发生的事情非常重要,但有时可以方便地做到:
use IO::All;
my @olap_f = io->dir('/full_dir_to_file/')->glob('*txt');
在这种情况下,它不短于@ cjm使用glob
,但IO::All
确实有一些其他方便的方法来处理文件。