可能重复:
如何将Perl的系统函数输出存储到变量中?
我试图在我的perl脚本中运行shell命令.示例如下:
system ("ls -al");
Run Code Online (Sandbox Code Playgroud)
结果很好地打印在unix上.
有没有办法将结果返回到$string我的perl脚本而不是在unix上返回结果.我不希望结果打印在我的unix上.
小智 11
使用反引号:
$string = `ls -al`;
Run Code Online (Sandbox Code Playgroud)
'qx'分隔符是此的同义词:
$string = qx{ls -al};
Run Code Online (Sandbox Code Playgroud)
这是记录在这里在perlop中手册页.
或者,您可以使用'|'打开 像这样:
open my $filehandle, "ls -al|" or die "Open failed!\n";
while(<$filehandle>) {do_something($_);}
close $filehandle;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您将文件句柄打开到附加到命令输出的管道(基本上将输出视为文件).如果命令花费很长时间或产生的输出多于您希望一次存储在内存中,则这很方便.这在perl open手册中有记录.