在Perl脚本中,允许调用系统的命令来进行操作。这就是Perl灵活性的体现,作为一种系统命令的粘合语言,能给程序员带来许多的便利。这样,你就可以最大限度地利用别人的成果,用不着自己使劲造轮子了。

在Perl中,可以用system、exec、readpipe这三个命令来调用其他脚本、系统命令等。这三个命令的主要区别就是返回值。

1) 对于system这个函数来说,它会返回执行后的状态,比如说

@args = (“command”, “arg1″, “arg2″);
    system(@args) == 0
    or die “system @args failed: $?”

当然,你也可以用类似于下面的语句来检查出错的原因:

if ($? == -1) {
    print “failed to execute: $!\n”;
    }
    elsif ($? & 127) {
    printf “child died with signal %d, %s coredump\n”,
    ($? & 127),  ($? & 128) ? ‘with’ : ‘without’;
    }
    else {
    printf “child exited with value %d\n”, $? >> 8;
    }

2) 而对于exec这个函数来说,仅仅是执行一个系统的命令,一般情况下并没有返回值。exec只有在系统没有你要执行的命令的情况下,才会返回false值。

exec (‘foo’)   or print STDERR “couldn’t exec foo: $!”;
    { exec (‘foo’) }; print STDERR “couldn’t exec foo: $!”;

3) 当我们需要保存系统命令运行的结果,以便分析并作进一步的处理时,就要用到readpipe这个函数了。例如:

@result = readpipe( “ls -l /tmp” );
    print “@result”;

会产生如下的结果:

drwxr-xr-x  2 root   root    4096 Mar 19 11:55 testdir

当然,你也可以把生成的结果放到一个文件里,以便写工作日志呀、发布报告呀。

$inject_command = “./ConfigChecker.bat F:/nic/3502/ARRAY-4AD2E0573/etc “.$device_name;
    chdir “F:/TestTools/bin/”;
    @temp_result = readpipe($inject_command);
    open(result_file,”>result.txt”);
    print result_file @temp_result;
    close(result_file);

这样,你就把系统运行的结果扔到了系统命令所在目录下的result.txt文件里了。

这三个命令,有各自的特点,需要在使用时灵活选用,更详细的资料就得上PerlDoc上找了。

注解:
1;$result=system( '外部命令 ');
这个result只是返回命令是否成功,而不是外部命令的打印结果
2;

perl system函数返回值问题相关推荐

  1. system函数返回值

    system(执行shell 命令) 相关函数  fork,execve,waitpid,popen 表头文件  #include<stdlib.h> 定义函数  int system(c ...

  2. system函数返回值探究

    http://blog.chinaunix.net/uid-24774106-id-3048281.html?page=3 遇到system调用脚本,结果返回了256的情况,那么如何判断脚本是否正常成 ...

  3. system函数返回值,Linux

    理论 我们先看下man手册是怎么说的man system RETURN VALUEThe value returned is -1 on error (e.g., fork(2) failed), a ...

  4. Linux system函数返回值

    例: status=system("./test.sh"); 1.先统一两个说法: (1)system返回值:指调用system函数后的返回值,比如上例中status为system ...

  5. 2020-09-22C++学习笔记之引用1(1.引用(普通引用)2.引用做函数参数 3.引用的意义 4.引用本质5.引用结论 6.函数返回值是引用(引用当左值)7测试代码)

    2020-09-22C++学习笔记之引用1(1.引用(普通引用)2.引用做函数参数 3.引用的意义 4.引用本质5.引用结论 6.函数返回值是引用(引用当左值)7测试代码) 1.引用(普通引用) 变量 ...

  6. java 函数参数 返回值_java中如何用函数返回值作为post提交的参数?

    1.我想实现的功能是在java程序中导入HttpURLConnection类,然后将函数的值作为post方法要提交的参数,最后显示在显示台上. 2.要用到的函数是自己写的可以显示实时计算机cpu.内存 ...

  7. 【C 语言】字符串模型 ( 字符串翻转模型 | 抽象成业务函数 | 形参返回值 | 函数返回值 | 函数形参处理 | 形参指针判空 )

    文章目录 一.字符串翻转模型 业务函数 二.完整代码示例 一.字符串翻转模型 业务函数 将上一篇博客 [C 语言]字符串模型 ( 字符串翻转模型 ) 的代码 , 主要业务逻辑 , 抽象成函数 ; 字符 ...

  8. 【C 语言】字符串模型 ( 两头堵模型 | 将 两头堵模型 抽象成业务模块函数 | 形参返回值 | 函数返回值 | 形参指针判空 | 形参返回值操作 )

    文章目录 一.将 两头堵模型 抽象成业务模块函数 二.完整代码示例 一.将 两头堵模型 抽象成业务模块函数 将 两头堵模型 抽象成业务模块函数 相关要点 : 形参返回值 : 函数的返回值 , 一般使用 ...

  9. java 11:数组作为函数参数,数组做为函数返回值

    1 数组作为参数 我们可以将数组作为参数,传入到函数中,其实就像我们main函数中 public void main(String [] args){};就是用数组作为函数参数: 又如, [java] ...

最新文章

  1. u-boot之怎么实现分区
  2. JQuery图表插件Highcharts示例教程
  3. 深度学习(六)——CNN进化史
  4. 2016 校园招聘求职经历(二)
  5. 最近两天遇到的问题 原因 和处理方式 小结
  6. GaussDB(DWS)应用实战:对被视图引用的表进行DDL操作
  7. Shell编程基础(1)
  8. 指定 年-月-日 将其封装tree树状结构
  9. Unity获取安卓手机运营商,电量,wifi信号强度,本地Toast,获取已安装apk,调用第三方应用,强制自动重启本应用...
  10. 怎样python爬虫更换ip地址爬取网站
  11. Linux下服务的管理
  12. matlab 类型强制转换,关于数据类型强制转换的分析和应用
  13. Mac 使用 扫描 仪
  14. logback MDC线上问题快速定位神器
  15. 学习python第八节课:可变与不可变对象
  16. 单射、满射和双射(一 一映射)
  17. [渝粤教育] 西南科技大学 电子测量与仪表 在线考试复习资料(1)
  18. 抽象手绘七夕情人节快闪PPT模板
  19. 小米air2se耳机只有一边有声音怎么办_盘点2020半入耳蓝牙耳机排名
  20. 建筑计算机辅助设计证书,学术讲座:计算机辅助设计绘图员(建筑类)职业技能鉴定...

热门文章

  1. 爬虫入门之绘图matplotlib与词云(七)
  2. Vuejs --01 起步
  3. 母版页的铵钮事件去获取子页的内容
  4. django项目基础
  5. greenplum 单表 数据扫描
  6. 系统初始化SHELL脚本
  7. c# ComboBox禁用鼠标滚轮
  8. AVR系列之TWI功能测试
  9. python 读取bin文件
  10. Java之品优购部署_day01(10)