在Perl中使用系统命令而不是内置库/函数

Fre*_*sen 7 scripting perl

有时我看到人们从Perl(以及其他脚本语言)调用系统grep,而不是使用内置的语言工具/库来解析文件.我想鼓励人们使用内置设施,我想征求一些原因,说明为什么使用内置工具是一种好习惯.我可以想到一些这样的

  • 使用库/语言设施更快.由于执行外部命令的开销,性能会受到影响.
  • 坚持语言设施更便携.

还有其他原因吗?

硬币的另一面是否有理由支持使用系统命令而不是内置语言设施?在这方面,如果一个Perl脚本基本上只调用外部命令(例如没有库的自定义实用程序),那么制作一个shell脚本可能更好吗?

ike*_*ami 8

实际上,当它重要时,专用工具可以更快.

保持Perl工作的真正好处是:

  • 可移植性(即使在具有相同操作系统的机器之间).
  • 易于错误检测.
  • 灵活处理错误.
  • 更高的可定制性/灵活性.
  • 更少"活动部件".(你确定你正确地逃脱了一切并正确设置了环境吗?)
  • 需要更少的专业知 (您不需要知道Perl和外部工具(及其端口)来编写和维护程序.)

在这方面,如果一个Perl脚本基本上只调用外部命令(例如没有库的自定义实用程序),那么制作一个shell脚本可能更好吗?

有可能.如果任何程序返回不成功的错误代码,您可以配置一些shell退出.这可以使一些脚本非常健壮.例如,我有几行bash脚本

trap 'e=$? ; echo "Error." ; exit $e' ERR
Run Code Online (Sandbox Code Playgroud)