为什么以下代码无效?
-d
和-f
在我的Windows计算机上无法正常运行。
use strict;
use warnings;
use Data::Dump qw/pp/;
my $path="C:/perl/workspace";
opendir ( DIR, $path ) || die "Error in opening dir $path\n";
my (@file,@dir);
while (my $filename=readdir(DIR)) {
next if ($filename =~ m/^\./);
if (-f $filename) {
push(@file,$filename);
} elsif (-d $filename){
push(@dir,$filename);
}
}
#pp \@file,\@dir;
print "@dir";
答案 0 :(得分:3)
检查带路径的文件,
if (-f "$path/$filename")
答案 1 :(得分:1)
你应该在$ filename之前添加$ path,然后检查它是文件还是目录,因为readdir只返回没有路径的文件名。
...
if (-f $path."/".$filename) {
push(@file,$filename);
} elsif (-d $path."/".$filename){
push(@dir,$filename);
}
...