私は、指定されたディレクトリの下のすべてのディレクトリを再帰的に検索する関数を作成しようとしています。Perlによる再帰に失敗しました
use strict;
use warnings;
sub printDir
{
my $root = shift;
opendir DIR, $root or die "can't open dir $root\n";
my $dir;
while ($dir = readdir DIR)
{
if (-d "$root/$dir" && "$dir" ne '.' && "$dir" ne '..')
{
print "$dir\n";
&printDir ("$root/$dir");
}
}
}
my $root = $ARGV[0];
printDir $root;
ディレクトリ階層は次のようである場合:
A
/\
B C
|
D
コードが検索されない-B-DおよびCを検索した後に停止します。コードの何が間違っていますか?
ありがとうございます。
アンパサンドとカッコで1回、これらのどちらでも1回も使用しないと、なぜprintDirを呼び出しますか?アンパサンドを使用することは決して必要ではなく、あなたが望まないいくつかの副作用を持つ可能性があります。括弧を使い、アンパサンドを忘れてください。 –