为什么目录列表不能在我的Windows系统上运行?

时间:2014-01-07 09:40:27

标签: perl

为什么以下代码无效?

-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";

2 个答案:

答案 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);
  }
 ...