Я пытаюсь написать скрипт, который распечатывает файловую структуру, начиная с папки, в которой находится скрипт. Скрипт работает нормально без рекурсивного вызова, но при этом вызове он печатает содержимое первой папки и вылетает с следующее сообщение: closedir () попытался использовать недопустимый dir-дескриптор DIR в строке printFiles.pl 24. Папки печатаются, и выполнение достигает последней строки, но почему не выполняется рекурсивный вызов? И как я должен решить это вместо этого?
#!/usr/bin/perl -w
printDir(".");
sub printDir{
opendir(DIR, $_[0]);
local(@files);
local(@dirs);
(@files) = readdir(DIR);
foreach $file (@files) {
if (-f $file) {
print $file . "\n";
}
if (-d $file && $file ne "." && $file ne "..") {
push(@dirs, $file);
}
}
foreach $dir (@dirs) {
print "\n";
print $dir . "\n";
printDir($dir);
}
closedir(DIR);
}