2014-01-07 1 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

: [왜 펄이 있는가 'ELSIF'와 'ELSEIF'하지 (http://stackoverflow.com/questions/659553/how-does-elsif-work-in-perl) –

답변

3

확인,

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

고마워요. 일하는 ...! – chanti

1

당신은 readdir을 만 경로없이 파일 이름을 반환로 파일이나 디렉토리가 있는지 확인하기 전에 $ 파일 이름에 $ 경로를 추가해야합니다. "ELSIF"에 관한

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

감사합니다 .. 두 가지 솔루션 모두 작동합니다! – chanti

관련 문제