Perl - 管道命令到另一个

时间:2010-11-30 20:25:47

标签: linux perl system pipe

快速提问,

有没有办法通过perl将命令传递到另一个命令,就像在* Nix命令行中一样?

例如:
free -m | grep Mem

我怎样才能在Perl中进行“管道”?

1 个答案:

答案 0 :(得分:6)

您可以完全按照以下方式调用命令:

system("free -m | grep Mem");

来自documentation

  

如果只有一个标量参数,则检查参数是否为shell元字符,如果有,则将整个参数传递给系统的命令shell进行解析(这是Unix平台上的/ bin / sh -c,但在其他平台上有所不同)。如果参数中没有shell元字符,它将被拆分为单词并直接传递给execvp,这样效率更高。

您可以使用其他方法来调用外部命令,例如open

open my $fh, "-|", "free -m | grep Mem" or croak "failed to run pipeline";
# and now read from $fh as usual