参见英文答案 >
Using Perl modules vs. using system() calls1个
有时我会看到人们从Perl(以及其他脚本语言)调用系统grep,而不是使用内置的语言工具/库来解析文件.我想鼓励人们使用内置设施,我想征求一些原因,说明为什么使用内置工具是一种好习惯.我可以想到一些这样的
有时我会看到人们从Perl(以及其他脚本语言)调用系统grep,而不是使用内置的语言工具/库来解析文件.我想鼓励人们使用内置设施,我想征求一些原因,说明为什么使用内置工具是一种好习惯.我可以想到一些这样的
>使用库/语言设施更快.由于执行外部命令的开销,性能会受到影响.
>坚持语言设施更便携.
还有其他原因吗?
另一方面,是否有理由支持使用系统命令而不是内置语言设施?在这方面,如果一个Perl脚本基本上只调用外部命令(例如没有库的自定义实用程序),那么制作一个shell脚本可能更好吗?
解决方法
实际上,当它重要时,专用工具可以更快.
保持Perl工作的真正好处是:
>可移植性(即使在具有相同操作系统的计算机之间).
>易于检测错误.
>灵活处理错误.
>更高的可定制性/灵活性.
>更少的“活动部件”. (你确定你正确地逃脱了一切并正确设置了环境吗?)
>需要的专业知识. (您不需要知道Perl和外部工具(及其端口)来编写和维护程序.)
On that note,if a Perl script is basically only calling external commands (e.g. custom utilities without libraries),might it be better just to make a shell script of it?
有可能.如果任何程序返回不成功的错误代码,您可以配置一些shell退出.这可以使一些脚本非常健壮.例如,我有几行bash脚本
trap 'e=$? ; echo "Error." ; exit $e' ERR