我正在编写一个使用外部脚本的Perl脚本.外部脚本必须从特定目录运行,因此我发现以下内容非常有用:
use IPC::System::Simple qw(capture);
my @args = ('external script path...', 'arg1', ...);
my $out = capture( [0], "cd $dir ; @args" );
Run Code Online (Sandbox Code Playgroud)
有时外部脚本会将内容写入STDERR,但仍会返回0.我希望捕获这些时间和confess(或die).由于我不控制外部脚本的返回值,我想也许我可以捕获它的STDERR所以我会有这样的东西:
my ($out, $err) = cool_capture( [0], "cd $dir ; @args" );
say "Output was: $out";
if ($err) {
die "Error: this was written to STDERR: $err";
}
Run Code Online (Sandbox Code Playgroud)
我能做什么?