有时候perl脚本需要与Linux外部命令进行交互,本文讲解如何将外部命令的执行结果的输出(此处指的不是运行结果的返回值,而是标准输出上的内容之类)赋给perl变量。
首先需要了解perl调用shell命令的三种方式:
**1. system**
通过system运行得到的结果是一个返回值,其实是一串数字,若外部命令运行成功,则返回值为“0”,若运行失败,则返回非0的值。
**2. 反引号** (ESC下面的那个键)
通过反引号运行,会返回shell运行结果的输出,下面的脚本通过“which”查询“COG_2014.phr”的绝对路径,并将其赋值给`$path`。然后通过正则表达式获取“COG_2014.phr”所在的目录的路径,并将其赋值给变量`$cogdb_dir`。
1 2 3 4 5 6
| my $cogdb_dir; my $path = `which COG_2014.phr`; if ($path=~/(.+)COG_2014.*/) { $cogdb_dir = $1; } print $cogdb_dir;
|
**3. exec**
exec与system相似,但是执行完exec命令之后,perl会终止运行,不再执行后续的代码。