从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′. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |