我想从我的Perl代码中调用一个脚本并将其STDERR和STDOUT结合在一起。
我通常使用capture
中的IPC::System::Simple
但是ti似乎不允许捕获STDERR。
答案 0 :(得分:3)
您可以使用2>&1
将STDERR(文件描述符2)重定向到STDOUT(文件描述符1)。
来自qx//
运营商的perlop:
因为反引号不会影响 标准错误,使用shell文件 描述符语法(假设shell 支持这个)如果你想解决 这个。捕获命令的STDERR 和STDOUT在一起:
$ output =`cmd 2>& 1`;
答案 1 :(得分:2)
在POSIX系统上,您可以执行以下操作。在Windows上,这可以在cygwin中使用。
my @lines = capture("some command 2>&1");
但是,如果要将STDERR行与STDOUT行区分开来,可能需要使用IPC::Open3或错误命名的IPC::Open3::Util。