加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

从perl中的external * nix命令获取STDOUT,STDERR和响应代码

发布时间:2020-12-15 23:28:28 所属栏目:大数据 来源:网络整理
导读:我想从我的Perl脚本中执行一个外部命令,将stdout和stderr的输出放入我选择的$变量中,并将命令的退出代码放入$?变量. 我在perlfaq8及其论坛中找到了解决方案,但他们并没有为我工作.奇怪的是,只要退出代码是正确的,我在任何情况下都不会获得sdterr的输出. 我
我想从我的Perl脚本中执行一个外部命令,将stdout和stderr的输出放入我选择的$变量中,并将命令的退出代码放入$?变量.

我在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|");

当命令成功运行时,我可以捕获stdout.

我不想使用其他捕获模块.如何捕获外部命令的完整结果?

解决方法

实际上,写这个的正确方法是:

#!/usr/bin/perl
$cmd = 'lsss';  
my $out=qx($cmd 2>&1);
my $r_c=$?;
print "output was $outn";
print "return code = ",$r_c,"n";

如果没有错误,你将得到’0′,如果错误,你将得到’-1′.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读