Мне нужно запустить скрипт Perl из скрипта Perl, сохранить вывод в файле журнала и отобразить сообщение об ошибке, если я получу ошибку.Я не хочу, чтобы сценарий заканчивался, просто напечатайте сообщение о том, что вызов не удался.Я использую захват, чтобы сделать это, но я не могу напечатать сообщение об ошибке условно.
Я сослался на эту ссылку , особенно этот текст:
$EXITVAL Выходное значение любой команды, выполняемой 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 "Программа вышла со значением $ EXITVAL \ n";
$ EXITVAL будет установлена в-1, если команда не завершилась нормально (например, завершилась сигналом) или не запустилась.В этом случае также будет сгенерировано исключение.
Это мой код:
use IPC::System::Simple qw(capture EXIT_ANY $EXITVAL);
my $output = capture(EXIT_ANY, $tool_path);
if($EXITVAL == -1){
print "CHECK_FLOW: Error! check. Check the log file mem_check.log\n";
}
else{
print "CHECK_FLOW: Completed check.\n";
}
my $filename = 'check.log';
open(my $fh, '>', $filename);
print $fh "$output\n";
close $fh;
Я специально вставил ошибку в $ tool_path и использовал отладчик, который показывает$ EXITVAL будет 0 в обоих случаях.
Есть ли что-то, чего мне не хватает?Есть ли другой способ выполнить то, что я пытаюсь сделать?