Захват вывода perl-скрипта, вызванного через pipe, из другого perl-скрипта - PullRequest
1 голос
/ 03 октября 2019

Вот фрагмент кода основного скрипта. Основной скрипт вызывает скрипт populate_details через канал. Отправка 2 массивов inv1 и inv2 в качестве входных данных.

 *my $fh = FileHandle->new('| ./populate_details') 
 print $fh Data::Dumper->Dump([\@inv1], [qw(inv1)]);
 print $fh Data::Dumper->Dump([\@inv2], [qw(inv2)]);*

Вопрос в том, как получить код возврата и значение возврата из сценария populate_details? Например, скрипт populate_details отправляет как хэш возвращаемых значений.

Не могли бы вы помочь?

1 Ответ

1 голос
/ 03 октября 2019

Чтобы получить статус выхода, close дескриптор файла и проверьте $?

Если дескриптор файла пришел из открытого канала, close возвращает false, если одиниз-за других задействованных системных сбоев или если его программа выходит с ненулевым статусом. Если единственной проблемой было то, что программа вышла не из нуля, $! будет установлен в 0. Закрытие канала также ожидает завершения процесса, выполняющегося в канале - в случае, если вы хотите посмотреть на вывод каналазатем - и неявно помещает значение состояния выхода этой команды в $? и ${^CHILD_ERROR_NATIVE}.

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