그래서 서브 루틴에서 opendir을 사용하여 디렉토리를 열고 readdir을 사용하여 현재 작업 디렉토리의 모든 파일을 읽은 다음 모든 파일을 배열로 푸시 할 수 있다는 것을 알고 있습니다. 배열이면 파일을 누른 다음 파일을 인쇄하거나 새로운 배열로 그 파일을 밀어 그렇지 않으면 디렉토리가 반복적으로 서브 루틴을 호출 디렉토리입니다. 내가 이해할 수없는 것은 여기에 깊이를 명시하는 부분입니다. 어떤 도움이라도 대단히 감사합니다.Perl에서 재귀를 사용하여 디렉토리와 하위 디렉토리를 검색하고 깊이를 지정하는 방법은 무엇입니까?
read_dir('test', 1);
sub read_dir {
$dir = shift;
$level = shift;
chdir ($dir);
opendir(DIR, '.') or die "Can't open $dir: $!";
@filesarray = readdir (DIR) or die;
closedir(DIR);
my @files;
foreach my $file (@filesarray) {
if (-f $file && $file =~ /\.txt$/i){
push @files, $file;
} ## end of if
elsif (-d $file) {
next if ($file eq ".");
next if ($file eq "..");
$dir = $file;
read_dir($dir, $level+1); ## QUESTION IS HERE?????
} ## end of elsif
} ## end of foreach
foreach my $file1 (@files) {
print "$file1\n";
}
} ## end of sub read_dir
관련 질문 : http://stackoverflow.com/q/13374829/133939 – Zaid