如何运行外部命令并在Perl中捕获其输出?

前端之家收集整理的这篇文章主要介绍了如何运行外部命令并在Perl中捕获其输出?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是Perl的新人,想知道在以下情况下运行外部命令(称为prg)的方法

>运行prg,只得到它的stdout.
>运行prg,只得到它的stderr.
>运行prg,分别得到它的stdout和stderr.

解决方法@H_301_8@
您可以使用backtic来执行外部程序并捕获其stdout和stderr.

默认情况下,反引号丢弃stderr并只返回外部程序的stdout

$output = `cmd`;

将捕获程序cmd的stdout并丢弃stderr.

要捕获stderr,您可以使用shell的文件描述符:

$output = `cmd 2>&1 1>/dev/null`;

要捕获stdout和stderr,你可以做:

$output = `cmd 2>&1`;

使用上述方法,您将无法将stderr与stdout区分开来.要将stdout从stderr中分离出来,可以将其重定向到单独的文件并读取文件

`cmd 1>stdout.txt 2>stderr.txt`;

猜你在找的Perl相关文章