как записать состояние завершения захвата, вызывая другой perl-скрипт внутри perl-скрипта и, если он потерпит неудачу, он должен умереть - PullRequest
0 голосов
/ 17 октября 2018

Я только начал использовать Perl 5.26 на secure-CRT и написал сценарий Perl, который захватывает вызовы нескольких сценариев Perl.

 my @secondCommand = capture("perl clientquery.pl -r $cid -l test.log -is $sqlFile");

Мне было интересно, как я могу записать состояние завершения каждого вызова захвата и, если это не удается, как заставить исходный скрипт умереть.

1 Ответ

0 голосов
/ 17 октября 2018

IPC :: System :: Simple предоставляет $EXITVAL, который фиксирует код выхода команд, выполняемых через capture и другие функции.

Значение выходалюбой команды, выполняемой IPC :: System :: Simple, всегда можно получить из переменной $IPC::System::Simple::EXITVAL:

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

use IPC::System::Simple qw(capture $EXITVAL EXIT_ANY);

my @enemies_defeated = capture(EXIT_ANY, "defeat_evil", "/dev/mordor");

print "Program exited with value $EXITVAL\n";

$EXITVAL будет установлен в -1, если команда не завершилась нормально (например, завершилась сигналом) или не запустилась.В этой ситуации также будет выдано исключение.

...