Perl - 管道命令到另一个

dre*_*ard 1 linux perl system pipe

快问,

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

例如:
free -m | grep Mem

我怎么能在Perl中做"管道"?

Cas*_*bel 6

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

system("free -m | grep Mem");
Run Code Online (Sandbox Code Playgroud)

文档:

如果只有一个标量参数,则检查参数是否为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
Run Code Online (Sandbox Code Playgroud)

  • 最好使用三参数打开:`打开我的$ fh," - |","free -m | grep Mem"或者呱呱叫"无法运行管道";`? (3认同)
  • @Jefromi:我没有代表,但自从1987年12月18日第0天以来我一直没有*编程Perl*.当你有一个文字字符串时,使用2参数打开是没有错的.它更加清晰. (2认同)