2014-01-07 36 views
1

为什么下面的代码不工作?为什么一个目录列表不工作我的Windows系统上?

-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

关于 “else if” 语句:[?为什么Perl中有 'ELSIF' 而不是 'elseif的'](http://stackoverflow.com/questions/659553/how-does-elsif-work-in-perl ) –

回答

3

检查与路径文件,

if (-f "$path/$filename") 
+0

感谢..its工作...! – chanti

1

你应该检查,如果它是一个文件或目录的readdir只返回文件名不带路径前添加$路径$文件名。

... 
if (-f $path."/".$filename) { 
    push(@file,$filename); 
    } elsif (-d $path."/".$filename){ 
    push(@dir,$filename); 
    } 
... 
+0

感谢u..both的解决方案正在努力! – chanti

相关问题