Я пытаюсь указать каталог и рекурсивно найти каждый файл в подкаталогах.После того, как find
chdir попадет в каталог, я хочу выполнить некоторую обработку, прежде чем find
прочитает файлы.Вот упрощенный фрагмент, который демонстрирует проблему.Он не входит в подкаталоги, но, похоже, должен.Я могу убедиться, что вложенные каталоги и файлы существуют, потому что, если я вызову find
без ключа предварительной обработки, я получу список.Я давно не использую Perl, поэтому я немного озадачен.
find({
wanted => \&wanted,
preprocess => \&preprocess
}, "/home/nelson/invoices/");
# function definitions
sub wanted {
print "Calling wanted...\n";
print "\t" . $File::Find::name . "\n";
}
sub preprocess{
print "Calling preprocess...\n";
print "\t" . $File::Find::dir . "\n";
}
А вот и вывод.
Calling wanted...
/home/nelson/invoices
Calling preprocess...
/home/nelson/invoices
Calling wanted...
/home/nelson/invoices/1