当前位置:  开发笔记 > 编程语言 > 正文

在Perl中命令执行失败时如何读取stderr?

如何解决《在Perl中命令执行失败时如何读取stderr?》经验,为你挑选了1个好方法。

我正在执行一个diff命令perl.

my @lines = `/usr/local/bin/diff -udr \"$expected_file\" \"$gen_file\"`;

if ($? != 0)
{
    print ERRFILE "Diff between $expected_file and $gen_file failed\n";
    return $diff_err;
}

diff由于某种原因,这里可能失败了.例如:stderr显示/ usr/local/bin/diff:test.txt:没有这样的文件或目录.我想在程序中阅读此消息.如何找到diff命令的stderr消息(或者grep我执行的任何命令)?

提前感谢您的帮助.

谢谢,Mathew Liju



1> brian d foy..:

这在perlfaq8中得到了解答:如何从外部命令捕获STDERR?

如果我想读取进程的STDOUT和STDERR,我使用Perl附带的IPC :: Open3.这样,我不必合并这些流,然后找出输出的哪一部分来自什么.

我会尽可能避免临时文件(所以没有2>file.txt).当我可以直接读取STDERR时,这只是太多的工作和代码.

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有