1

可能重复:
如何将 Perl 的系统函数输出存储到变量中?

我试图在我的 Perl 脚本中运行一个 shell 命令。一个例子如下:

system ("ls -al");

结果在 Unix 上打印得很好。

有没有办法$string在我的 Perl 脚本中返回结果而不是在 Unix 上返回结果?

我不希望结果打印在我的 Unix 上。

4

1 回答 1

14

使用反引号:

$string = `ls -al`;

'qx' 定界符是这个的同义词:

$string = qx{ls -al};

perlop 手册页中有记录。

或者,您可以使用open'|' 像这样:

open my $filehandle, "ls -al|" or die "Open failed!\n";
while(<$filehandle>) {do_something($_);}
close $filehandle;

在这种情况下,您正在打开附加到命令输出的管道的文件句柄(基本上将输出视为文件)。如果该命令需要很长时间或产生的输出多于您一次存储在内存中的数量,这将非常方便。这在Perl 开放手册中有记录。

于 2012-09-05T03:44:18.987 回答