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种方式对外部命令调用!
阅读(4157) | 评论(0) | 转发(0) |