【发布时间】:2012-02-02 17:22:56
【问题描述】:
我想从我的 Perl 脚本中执行一个外部命令,将 stdout 和 stderr 的输出放入我选择的 $variable 中,并将命令的退出代码放入 $? 变量中。
我在perlfaq8 和他们的论坛中查看了解决方案,但它们对我不起作用。奇怪的是,只要退出代码正确,无论如何我不会得到 sdterr 的输出。
我在 Red Hat Linux 5 上使用 Perl 版本 5.8.8。
这是我正在尝试的示例:
my $cmd="less";
my $out=`$cmd 2>&1`;
或
my $out=qx($cmd 2>&1);
或
open(PIPE, "$cmd 2>&1|");
当命令运行成功时,我可以捕获标准输出。
我不想使用额外的捕获模块。如何捕获外部命令的完整结果?
【问题讨论】:
-
只需使用IPC::Run,这很容易。