парсинг первой записи вызова find в perl? - PullRequest
0 голосов
/ 10 января 2012

Мне нужно получить файл примера файла из команды find в сценарии Perl, чтобы впоследствии создать еще один системный вызов.По какой-то причине команда find застревает, когда я вызываю ее из скрипта.Вот что мне нужно сделать:

my $search_dir = "/something/like/this/??/??/??";
# the triple '??' are needed here
my $cmd = "find $search_dir -name \"\*.$var1.token1.$var2.ext\" | head -n 1";
my $first_example_file = `$cmd`; chomp $first_example_file;

Это застревает, когда я запускаю его через Perl, оно никогда не завершает выполнение команды, в то время как сгенерированный $ cmd быстро запускается, если я копирую + вставляю изайти в мой терминал bash.Есть идеи?

Ответы [ 2 ]

5 голосов
/ 10 января 2012

Попробуйте использовать модуль perl File :: Find для поиска файлов. Если вы хотите использовать bash's find в вашем perl, то вам, возможно, придется использовать $(..) в вашей команде.

Я не собираюсь perl ... просто пытаться помочь.

Обновление:

Как указано в комментариях Rohaq, вы также можете использовать File :: Find :: Rule

1 голос
/ 10 января 2012

Держу пари, что используется глобализация (расширение метасимволов).Но независимо от того, попробуйте и измельчить команду.Работает ли без трубы?Как насчет без ??в пути?Что произойдет, если вы добавите «эхо» («найти эхо»)?Все еще висит?Затем вы можете попробовать это в perl -d - отладчике;perldoc perldebug - твой друг.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...