$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
输入或输出)到您的脚本