perl – open(HANDLE,“ – |”,$cmd,@ args):如何阅读stderr?

前端之家收集整理的这篇文章主要介绍了perl – open(HANDLE,“ – |”,$cmd,@ args):如何阅读stderr?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想将包含stderr的命令输出读入HANDLE:

open(HANDLE,"-|",$cmd,@args);

但上面的命令只是读取标准输入?

我怎么能读到stderr?

解决方法

IPC::Run模块提供的运行功能类似于增压系统.它允许我们收集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相关文章