如何将系统命令的结果存储在Perl变量中?

前端之家收集整理的这篇文章主要介绍了如何将系统命令的结果存储在Perl变量中?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
$cat test.pl
my $pid = 5892;
my $not = system("top -H -p $pid -n 1 | grep myprocess | wc -l");
print "not = $not\n";
$perl test.pl
11
not = 0
$

我想把结果,即11变成一个变量.我怎样才能做到这一点?

解决方法

Perlfaq8

你很混淆system()backticks(“)的目的. system()运行命令并返回退出状态信息(作为16位值:低7位是进程死亡的信号,如果有的话,高8位是实际退出值).反引号(“)运行命令并将其发送到STDOUT.

$exit_status   = system("mail-users");
    $output_string = `ls`;

有很多方法可以从Perl执行外部命令.最有意义的是:

> system():你想执行一个命令,不想捕获它的输出
> exec:你不想返回
调用perl脚本
> backticks:你想捕捉
输出命令
> open:你想要管道命令(as
输入或输出)到您的脚本

另见How can I capture STDERR from an external command?

猜你在找的Perl相关文章