Chinaunix首页 | 论坛 | 博客
  • 博客访问: 61226
  • 博文数量: 10
  • 博客积分: 393
  • 博客等级: 一等列兵
  • 技术积分: 124
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-09 09:37
文章分类

全部博文(10)

文章存档

2012年(1)

2011年(5)

2010年(4)

我的朋友

分类: Python/Ruby

2011-09-13 17:23:10

1. exec(@COMMANDS);
     优点: 在当前进程直接运行外部命令或者脚本,对外部命令或者脚本返回状态捕获较好!
     缺点: 如果出错直接退出perl脚本,无法捕获@COMMANDS的输出。

2. system(@COMMANDS) or die (ERROR:$?);
     优点: fork子进程执行外部命令或者脚本,外部命令或者脚本出错,不会影响当前进程,对外部命令或者脚本的返回状态捕获较好。
     缺点:无法捕获@commands输出。
  
3. @return=`COMMANDS`;
    优点: 能捕获脚本的STDOUT输出,而且外部命令出错不影响当前进程。
    缺点: 对错误输出捕获不好,无法通过$?捕获脚本返回码。

4. @return=readpipe("COMMANDS") or die (ERROR!$?)
    优点: 能捕获STDOUT输出,而且外部命令出错不影响当前进程。
    缺点:几乎无,基本能满足外部调用需求。

综合上述,推荐第4种方式对外部命令调用!
阅读(4162) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~