Как запустить код только после завершения Perl Find :: Find? - PullRequest
1 голос
/ 22 октября 2010

Perl вопрос для вас:

#!/usr/bin/perl
use File::Find;

#Find files
find(\&wanted, $dir);

sub wanted {    #Do something   }   
#Done going through all files, do below:

other stuff { }

Итак, я хочу проанализировать каталог и найти определенные типы файлов. Я могу сделать это успешно с File :: Find. Тем не менее, мой следующий шаг, как только я закончу поиск файлов, я хочу сделать следующий процесс.

Проблема в том, что, что бы я ни поставил после того, как подпрограмма «хотел что-то сделать», # # выполняется, каждый раз, нужный файл не найден! Я знаю, что для программы это логично. Но не могли бы вы сказать мне, что мне нужно сделать, чтобы сделать это:

1] Найти файлы: используя> sub требуемый {# Сделать что-то} 2] Пока больше нет файлов для поиска:> сделать что-то еще {}

Спасибо!

1 Ответ

1 голос
/ 22 октября 2010

ОБНОВЛЕННЫЙ ОТВЕТ: (после того, как ОП пояснил, что он просто хочет запустить некоторый код после того, как find() завершит поиск):

Поскольку find() не выполняет параллельный поиск, он будетпросто вернитесь, когда весь поиск будет завершен.Поэтому вам не нужно делать НИЧЕГО особенного для достижения вашей цели:

find(\&wanted, @directories_to_search);
# Here be code that runs after search completes.

ОРИГИНАЛЬНЫЙ ОТВЕТ

Вы можете установить флаг создания файлов в требуемомподпрограмма:

my $files_not_found = 1;
find(\&wanted, @directories_to_search);
sub wanted { @args=@_; $files_not_found = 0; }
if ($files_not_found) { 
    print "No files found!\n";
}
# Here you do things after find is finished.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...