Perl获取外部命令执行结果的输出
发表于:2019-04-19 | 分类: IT
字数统计: 275 | 阅读时长: 1分钟 | 阅读量:

有时候perl脚本需要与Linux外部命令进行交互,本文讲解如何将外部命令的执行结果的输出(此处指的不是运行结果的返回值,而是标准输出上的内容之类)赋给perl变量。

首先需要了解perl调用shell命令的三种方式:


**1. system**
1
system("command");

通过system运行得到的结果是一个返回值,其实是一串数字,若外部命令运行成功,则返回值为“0”,若运行失败,则返回非0的值。
**2. 反引号** (ESC下面的那个键)
1
`command`;

通过反引号运行,会返回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**
1
exec("command");

exec与system相似,但是执行完exec命令之后,perl会终止运行,不再执行后续的代码。
上一篇:
PGCGAP中文说明
下一篇:
Perl捕获外部命令执行异常并继续运行后续代码