Perl基础---外部程序调用

Posted EasyPerl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Perl基础---外部程序调用相关的知识,希望对你有一定的参考价值。

我们日常编程中, 有时候会需要调用外部的程序,脚本来处理一些特殊的任务。这样可以综合利用现有的资源, 而不需要重新造轮子。


在Perl中, 我们主要可以通过以下几种方式


  1. ``反引号, 这个是比较常用的方式, 反引号会调用中间的程序或者命令, 并接收其返回的数据。具体我们看下面的例子:


    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 和外部程序

'perl' 不是内部或外部命令,也不是可运行的程序

如何从 Java 执行外部程序?

Perl基础速成

在 Perl 中修改子进程的环境

安装perl for win32 是用cmd的cd指令结果显示"perl"不是内部或外部命令,也不是可运行的程序或批处理文件。