调用外部命令,并保存输出的结果

How can I run an external command and capture its output in Perl?

 

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

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

$output = `cmd`;

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

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

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

To capture both stdout and stderr you can do:

$output = `cmd 2>&1`;

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`;



参考:https://stackoverflow.com/questions/2461472/how-can-i-run-an-external-command-and-capture-its-output-in-perl


posted @ 2021-07-14 13:59  profesor  阅读(50)  评论(0编辑  收藏  举报