Perl перехват STDERR и STDOUT подпроцесса - PullRequest
2 голосов
/ 11 марта 2020

У меня есть Perl скрипт, который выполняет другой скрипт. Как я могу гарантировать, что при выполнении CONNECTION.pl я буду захватывать STDERR и STDOUT, чтобы я мог поместить их в журнал в родительском скрипте? Ниже приведен код из родительского скрипта:

my $systemcmd ='perl bin/CONNECTION.pl "'.$expanded_sql.'" "'.$tmp_file.'" "'.$fetch.'"';

eval {
  my $rc = system($systemcmd );
};

if ($@) {
  $errmsg = $@;
  croak {message=>$errmsg};
  unlink $tmp_file;
} 

1 Ответ

8 голосов
/ 11 марта 2020

Попробуйте использовать Capture :: Tiny , чтобы обернуть вызов к system .

Более того, может быть чище изменить скрипт Perl CONNECTION.pl в модуль и используйте его из вашего скрипта, а не обстреливая, чтобы снова вызвать perl.

...