我使用File::Find
来运行目录树,当我尝试打开当前文件进行阅读时,我得到No such file or directory
。目录树中的所有文件都会发生这种情况。
这是我在find()
中使用的子词:
sub {
if (-d) {
return;
}
if (-f) {
my $file = ${File::Find::name};
open (my $IN, '<', '$file') or die "$!\n";
while (<$IN>) {
### Do some formatting.
}
close $IN;
}
}
它失败了:
open (my $IN, '<', '$file') or die "$!\n";
我认为这可能是链接的问题,但即使使用follow => 1
选项,我也会收到此错误。
顺便说一下,如果没有follow
错误,我得到的是我找到的第一个目录的第一个文件,并且错误是在最后一个目录的最后一个文件上(但在这两种情况下,它都是在File::Find
)检查的第一个文件上。
答案 0 :(得分:2)
问题解决了。显然,用open
行中的双引号替换单引号,甚至更好,不使用任何引号,就可以了。字符串文字'$file'
生成字符串$file
,并且显然没有具有此名称的文件。