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

后端 未结 4 1893
南旧
南旧 2020-12-06 00:34

I\'m new to Perl and want to know of a way to run an external command (call it prg) in the following scenarios:

  1. Run prg, get its
4条回答
  •  粉色の甜心
    2020-12-06 00:41

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

提交回复
热议问题