为什么大多数 Linux 发行版都默认安装 Perl?
答案1
在拉里·沃尔的原始 Perl v1.0 发布到comp.sources.misc1987 年 12 月 18 日的新闻组中,他说:
如果您遇到的问题通常会使用 sed 或 awk 或 sh,但它超出了它们的能力或必须运行得更快一点,并且您不想用 C 编写愚蠢的东西,那么 perl 可能适合您。
在一个很久以后的阐述,他详细阐述了一些:
但是 Unix shell 编程的挫折直接导致了 Perl 的创建,我真的没有时间讲述它。但本质上,我发现 shell 脚本本质上受到以下事实的限制:它的大多数动词不受其控制,因此彼此之间很大程度上不一致。而且名词也很贫乏,仅限于字符串和文件,谁知道是什么类型......
更具破坏性的是认为它是一个一维宇宙的心态:你要么用 C 编程,要么用 shell 编程,因为它们显然位于一个真正的连续体的两端。当我意识到脚本并不总是被视为与编程相反,而是单一语言对两者都非常有利时,Perl 就出现了。这开辟了一个巨大的生态位。你们中的许多人都看过我的旧翻盖图,其中包含操控性和鞭策性两个维度。
如今,Perl 已成为满足 shell 脚本和文本解析需求的标准替代/替代品,并且比传统工具具有更多功能。由于 Perl 极端的(有些人会说不优雅)灵活性,它被描述为“脚本语言的瑞士军电锯“。使用 Perl 解决时,任务通常会显着缩短、更容易或更可扩展。许多系统工具、脚本和大型程序通常都是用 Perl 编写的。因此,在现代 Linux 环境中,Perl 现在是另一种标准 Unix 工具,并且真正不可或缺。
答案2
答案是否性感,取决于你的观点。
Perl 非常有用。许多系统实用程序都是用 perl 编写的或依赖于 perl。如果卸载 Perl,大多数系统将无法正常运行。
几年前,FreeBSD 经历了很多的努力删除 Perl 作为依赖项对于基础系统。这不是一件容易的事。
答案3
- Perl 是为 Unix 开发的,因为工具不够强大。对于体育运动,您可以在其中查找
awk
和(Perl)。sed
- Perl(除其他外)受到 Unix shell(以及 C,它对 Unix 非常重要——或者反过来,也许)的启发。
- 还,Perl 可以在 GNU 许可证下分发。有些人会认为从技术角度来看这无关紧要,但它显示了混合性。
- 我最后能想到的是LAMP,它是一个网络“软件包”。 (在维基百科上查一下:P 是,或者至少是 Perl;L 是 Linux。)(但最后一点有点“先有鸡还是先有蛋”。)
答案4
我认为这个问题的答案部分是历史性的,部分是实践性的。
就历史而言,Perl 是一种优雅的语言。它比 Python 更优雅(更不用说 PHP),尽管我不知道什么是“更好”(如果可以以某种方式进行正式分析,我对此表示怀疑)。正在使用(或使用过)Perl 的优秀人士通常是决定 Linux 发行版中应包含哪些内容的人。
至于实用性如何,Perl是仍然是很多东西的粘合剂:操作系统和网络(同样,LAMP,不要忘记 Python 或 PHP)。那么为什么不包含一些对多种用途有用的东西呢?更何况,为什么消除那里的任何东西(并且不会造成任何伤害),和有用吗?
但是,碰巧的是,最新一期的 Linux 杂志(#151,2013 年 6 月)对此有一个注释。显然,为了编译 Linux 内核,使用了几个简短的 Perl 脚本。 (再次强调 Perl 在操作系统中的“粘合剂”作用。)现在,一位内核开发人员已经提交了这些脚本的重写补丁,这次不是用 Perl,而是用“Unix shell 脚本”(是这样的)sh
?)。这样,编译内核的人就不必安装 Perl。但是,该补丁(已提交多次)尚未被采纳。原因之一是,一旦被冷落,Perl 就不太可能被接纳。人们喜欢 Perl,他们不想放弃它。
现在,这只是触及这个问题的边缘,因为可能只有极少数的 Linux 用户可能会编译内核。但这是另一个难题(我怀疑还有很多)。