【发布时间】:2013-12-28 01:11:35
【问题描述】:
有时我看到有人从 Perl(以及其他脚本语言)调用系统 grep,而不是使用内置的语言工具/库来解析文件。我想鼓励人们使用内置工具,并且我想征求一些理由来说明为什么使用内置工具是一种好的做法。我可以想到一些诸如
- 使用库/语言工具更快。由于执行外部命令的开销,性能会受到影响。
- 坚持使用语言设施更便携。
还有其他原因吗?
另一方面,是否有理由支持使用系统命令而不是内置语言工具?需要注意的是,如果 Perl 脚本基本上只是调用外部命令(例如,没有库的自定义实用程序),那么制作它的 shell 脚本会更好吗?
【问题讨论】:
-
因为有些人不懂库/语言,但知道如何使用外部工具进行 smt。
-
调用系统更容易出错。另一方面,像
sort这样的一些系统命令比 perl 的内存/cpu 效率更高,在涉及大量数据时更是如此。 -
系统命令更不安全。即使是看似无害的命令也可以用来执行任意代码。如果有人将文件
./echo与#!/bin/bash \n rm -rf /一起添加,请考虑system("echo", $foo)