Perl基础---外部程序调用
Posted EasyPerl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Perl基础---外部程序调用相关的知识,希望对你有一定的参考价值。
我们日常编程中, 有时候会需要调用外部的程序,脚本来处理一些特殊的任务。这样可以综合利用现有的资源, 而不需要重新造轮子。
在Perl中, 我们主要可以通过以下几种方式
``反引号, 这个是比较常用的方式, 反引号会调用中间的程序或者命令, 并接收其返回的数据。具体我们看下面的例子:
my $return = `ls`;
print "result2: $return\n";
my @returns = `ls`;
print "file: $_" for @returns;
当在标量环境中时, 所有的返回值都会被存在$return中, 当处于列表环境时, 返回的内容会根据相关的分割(一般都是换行)存入到列表中。
2. system函数, system函数也会调用相关程序和命令, 与反引号不同的是, system的返回值是程序的退出码, 很大一部分情况下往往是0或者-1或者其他数字。我们看下面的例子:
my $return = system('ls');
print "result1 : $return\n";
3. exec函数, exec函数和上面2个的区别是, exec函数在调用外部程序时, 会直接退出当前程序。我们来看下面的例子:
my $return = exec('ls');
print "result3 : $return\n";
我们可以看到,最后一个print是不会被执行的, 因为当我们调用了exec时, 他会在执行ls命令的同时, 退出该perl程序, 因此print就永远不会被执行了。
适用场景:
1 ``反引号适用于大部分需要调用外部程序的场景, 尤其是需要获得外部程序结果的场合
2 system往往用于只需要知道外部程序执行是否成功的场景
3 exec更适合在程序的最后, 退出之前调用外部程序来继续处理一切其他问题, 因此比较适合在一些系统的定时任务。或者是流程串联的脚本。
以上是关于Perl基础---外部程序调用的主要内容,如果未能解决你的问题,请参考以下文章
安装perl for win32 是用cmd的cd指令结果显示"perl"不是内部或外部命令,也不是可运行的程序或批处理文件。