用于捕获在后引号中执行的命令的stderr和stdout的Perl脚本

Raj*_*eev 1 linux perl

在我在Perl脚本中执行的以下命令中,如何捕获stderr?

my $output = `ssh login.com git clone --bare user@login.com:/nfs/repo/ /nfs/repo//4124/`;
if ($? ne '0')
{ 
    $stderr = $output;
    print $stderr;
}
else
{
    $stdout = $output;
    print $stdout;
}
Run Code Online (Sandbox Code Playgroud)

bvr*_*bvr 6

您可以使用Capture :: Tiny捕获stdout,stderr或两者合并.


Jon*_*ler 6

my $output = `ssh login.com git clone --bare user@login.com:/nfs/repo/ /nfs/repo//4124/ 2>&1`;
Run Code Online (Sandbox Code Playgroud)

所述2>&1在端发送标准误差到同一位置作为标准输出,这是由反引号捕获.