Jan*_*i86 2 shell perl stdout system-calls stderr
我有正在执行另一个脚本的 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;
}
Run Code Online (Sandbox Code Playgroud)
尝试使用Capture::Tiny包装对system的调用。
此外,将 Perl 脚本 CONNECTION.pl 更改为模块并从脚本中使用它可能会更清晰,而不是再次调用 perl。