且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2023-01-04 11:45:51

您可以使用backtics执行外部程序并捕获其stdoutstderr.

You can use the backtics to execute your external program and capture its stdout and stderr.

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

By default the backticks discard the stderr and return only the stdout of the external program.So

$output = `cmd`;

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

Will capture the stdout of the program cmd and discard stderr.

要仅捕获stderr,可以将Shell的文件描述符用作:

To capture only stderr you can use the shell's file descriptors as:

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

要同时捕获stdoutstderr,您可以执行以下操作:

To capture both stdout and stderr you can do:

$output = `cmd 2>&1`;

使用以上内容,您将无法区分stderrstdout.要从stderr中分离stdout,可以将它们都重定向到一个单独的文件并读取文件:

Using the above you'll not be able to differenciate stderr from stdout. To separte stdout from stderr can redirect both to a separate file and read the files:

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