我遇到了Perl脚本的问题,如下所示。无法打开由Perl中的readdir返回的文件
我必须打开并分析目录中的所有* .txt文件,但我不能。
我可以读取保存在@files
数组中并打印的文件名,但无法打开这些文件进行读取。
这是我的代码: my $dir= "../Scrivania/programmi" ;
opendir my ($dh), $dir;
my @files = grep { -f and /\.txt/i } readdir $dir;
closedir $dh;
for my $file (@files) {
$file = catfile($dir, $file);
print qq{Opening "$file"\n};
open my $fh, '<', $file;
# Do stuff with the data from $fh
print "sono nel foreach\n";
print " in : "."$fh\n";
#open(CANALI,$fh);
#@righe=<CANALI>;
#close(CANALI);
#print "canali:"."@righe\n";
#foreach $canali (@righe)
#{
# $canali =~ /\d\d:\d\d (-) (.*)/;
# $ora= $1;
#
# if($hhSplit[0] == $ora)
# {
# push(@output, "$canali");
#
# }
#}
}
实际上,你使用正则表达式,但你提到的glob –
我读过,用Perl可以有这样做的不止一种方式让事情更清晰。在这种情况下,您已经在@files中拥有文件名,也许您只需遍历该数组并使用正则表达式来过滤要查找的文件名即可。然后将文件名和目录名粘贴在一起,并使用该路径访问该文件。 – ewd
'为我的$ fn(grep {$ _ =〜/\.txt$/} @files){'? – bytepusher