快速提问,
有没有办法通过perl将命令传递到另一个命令,就像在* Nix命令行中一样?
例如:
free -m | grep Mem
我怎样才能在Perl中进行“管道”?
答案 0 :(得分:6)
您可以完全按照以下方式调用命令:
system("free -m | grep Mem");
如果只有一个标量参数,则检查参数是否为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