我正在执行一个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
这在perlfaq8中得到了解答:如何从外部命令捕获STDERR?
如果我想读取进程的STDOUT和STDERR,我使用Perl附带的IPC :: Open3.这样,我不必合并这些流,然后找出输出的哪一部分来自什么.
我会尽可能避免临时文件(所以没有2>file.txt
).当我可以直接读取STDERR时,这只是太多的工作和代码.