IPC :: System :: Simple可以捕获STDERR吗?

时间:2010-11-06 11:35:35

标签: perl redirect stdout stderr

我想从我的Perl代码中调用一个脚本并将其STDERR和STDOUT结合在一起。

我通常使用capture中的IPC::System::Simple但是ti似乎不允许捕获STDERR。

2 个答案:

答案 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