我打算遞歸遍歷包含這段perl腳本的目錄。 這個想法是遍歷其父目錄包含perl腳本的所有目錄,並將所有文件路徑列入單個數組變量。然後返回列表。perl中的遞歸目錄遍歷
這裏談到的錯誤信息:
readdir() attempted on invalid dirhandle $DIR at xxx
closedir() attempted on invalid dirhandle $DIR at xxx
代碼附加參考,謝謝你在前進。
use strict;
use warnings;
use Cwd;
our @childfile =();
sub recursive_dir{
my $current_dir = $_[0]; # a parameter
opendir(my $DIR,$current_dir) or die "Fail to open current directory,error: $!";
while(my $contents = readdir($DIR)){
next if ($contents =~ m/^\./); # filter out "." and ".."
#if-else clause separate dirs from files
if(-d "$contents"){
#print getcwd;
#print $contents;
#closedir($DIR);
recursive_dir(getcwd."/$contents");
print getcwd."/$contents";
}
else{
if($contents =~ /(?<!\.pl)$/){
push(@childfile,$contents);
}
}
}
closedir($DIR);
#print @childfile;
return @childfile;
}
recursive_dir(getcwd);
爲什麼要重新發明輪子?使用['File :: Find']](http://search.cpan.org/perldoc?File%3A%3AFind)。 – TLP
我不應該使用圖書館。 – user3368737
@ user3368737:即使是核心模塊?然後使用源碼Luke:'perldoc -m File :: Find' – toolic