我想将包含 stderr 的命令的输出读入 HANDLE:
open(HANDLE, "-|", $cmd, @args);
但是上面的命令只是读取标准输入?
我怎样才能读取标准错误?
最佳答案
IPC::Run 模块提供了一个 run
函数,其工作方式类似于增压 system
。它允许我们收集 STDERR 和 STDOUT 组合的输出:
run [$cmd, @args], '&>', \my $output;
之后,
$output
变量将组合输出保存为字符串。例子:
use IPC::Run qw/ run /;
run ['perl', '-E say "stdout"; say STDERR "stderr"'], '&>', \my $output;
print uc $output;
输出:
STDOUT
STDERR
我不知道如何使用文件句柄代替标量引用,以便可以在
while(<$fh>)
循环中正常读取输出。关于perl - 打开( handle , "-|",$cmd,@args): how to read stderr?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17109089/