Perl发展轶事(202x)
本文主要用于记录Perl编程语言发展和使用过程中的大事记,截止到2030年前。
编程网站 Perl.com 被劫-欲19万美元售出
DuckDuckGo 向 Perl 和 Raku 基金会捐赠 2.5 万美元
包管理系统CPAN轶事
Perl在TIOBE榜单上重回前十
编程网站 Perl.com 被劫-欲19万美元售出
1987 年诞生的 Perl,尽管近年来不如 Python 和 Ruby 这类年轻的编程语言时常活跃在大众视野,但 33 年后的如今依旧排在 TIOBE 榜前10或20,Perl 必定有其不可取代的优势:使用广泛,尤其适用于系统管理和 Web 编程方面。
可就在2021年1月,Perl 却遭遇了麻烦:它的 Perl.com 域名被劫,指向了恶意 IP 地址,并在网上以 19 万美元出售。
恶意 IP 地址存在隐患
Perl.com 域创建于 1994 年, 在注册商 key-systems.net 中完成注册,是 Perl 编程语言的官方网站, 由 Perl 基金会管理, 一直以来都在提供有关 Perl 编程的文章, 得到了许多 Perl 编程语言爱好者的支持。2021年 1 月 27 日,据 Perl 基础架构博客 Perl NOC 报道称, Perl.com 域已被劫,建议用户不要访问该域,因为可能连接到与恶意软件分发相关的站点。

黑客将 IP 地址从 151.101.2.132 更改为 35.186.238.101,而 35.186.238.101 与曾经恶意软件分发使用的域相关,包括 Locky 勒索软件(Locky 是通过垃圾邮件活动传播的一种勒索软件,这个恶意软件具有类似于 Dridex 木马的特征,曾感染美国多个地区的医院)的分发,不过它也可以被用作 命令和控制(C&C)服务器及 BleepingComputer 注释。
考虑到 Perl.com 会被用作通过 CPAN 分发模块的镜像或备份,即劫持者可能会利用这种联系危害使用 Perl 和 CPAN 的系统,Perl NOC强烈建议那些把 Perl.com作为 CPAN 镜像的用户在 CPAN.pm更新镜像避免隐患,具体可通过 conf urllist http://www.cpan.org 来替换。另外在 2021年 1 月 28 日, Perl NOC还给出了替代方案:如果用户在查找有关 Perl 编程语言相关文章,可前往 perldotcom.perl.org,该网站已托管Perl.com被劫之前存在的内容。
售价 19 万,现已下架
在 Perl.com 域被劫后不久,就有外媒发现该域名在 afternic.com(属于 GoDaddy,GoDaddy 主要提供域名注册和互联网主机服务)上以 19 万美元的价格出售。除此之外,列表中还包括其他昂贵的域名,比如用户 drawmaster 提供的 piracy.com,价格为 12.5 万美元。但不久后, Perl.com的出售信息就已下架。
目前被劫的 Perl.com看似还未体现出恶意,不过在 Perl 官方正式重新控制前,用户尽量不要访问该网站。为避免混淆,在此声明, Perl 编程语言的官方网站 perl.org 是安全的, Perl官方正在积极进行收回域名的工作,并且 2021年 2 月 1 日 Perl 官方最新回应称:经验证,cpan.org 是安全可靠。
DuckDuckGo 向 Perl 和 Raku 基金会捐赠 25,000 美元
Perl 和 Raku 基金会 (TPRF) 在2024年12月公告中称收到来自 DuckDuckGo 捐赠的 25,000 美元。

自 2011 年以来,DuckDuckGo 已向与其 “提高在线信任标准” 愿景一致的组织捐赠了超过 600 万美元。
TPRF 致力于通过开源开发、社区参与和推广来推动 Perl 和 Raku 编程语言的发展,以确保它们的持续增长、相关性和可及性。来自 DuckDuckGo 的支持将使 TPRF 能够继续资助核心 Perl 开发,为对社区重要的项目提供资金,并在其它方面支持该社区。
DuckDuckGo 创立于 2008 年,创始人是毕业于麻省理工的 Gabriel Weinberg。谈到这个奇怪的网站名字,Weinberg 表示是受启发于儿童玩的追逐游戏「duck, duck, goose」,并没有其他深意或隐喻。
在自己的流量统计页面上,DuckDuckGo 特别标出了几个重要的发展节点:2011 年 1 月,DuckDuckGo 在旧金山架起一幅巨型户外广告牌,内容直指 Google 的追踪行为——「Google tracks you. We don’t.」,一举吸引众多关注;一年后,Google 宣布更新隐私政策,决定在其各个在线服务中搜集用户信息,DuckDuckGo 借此迎来了一次流量激增;2013 年,棱镜门事件爆发,再次引发了公众对网络隐私的担忧,DuckDuckGo 的日均使用量在一年之内翻了一倍以上;2014 年,Safari 和 Firefox 浏览器宣布将 DuckDuckGo 作为可选的搜索引擎,进一步促进了其用户量增长。
经过近十年的发展,DuckDuckGo 如今已有每天 1600 多万次的搜索量。虽然这比起 Google 每天动辄 30 多亿次的搜索只是九牛一毛,但想到其完全依靠社区支持,背后没有任何巨头推动,也是一个相当可喜的成绩。科技圈内也有许多名人表达过对 DuckDuckGo 的赞许和支持,如著名博主 John Gruber 就曾多次表示已转用 DuckDuckGo 为默认搜索引擎。
说明:
DuckDuckGo 目前无法在中国大陆直接访问,因此体验时请自行准备相应条件;
DuckDuckGo 提供包括中文在内的多语言支持,但其中文翻译存在很多影响理解的明显错误,故后文在介绍时仍将以英文界面为准;
Safari 和 Firefox 可直接将 DuckDuckGo 设为默认搜索引擎,Chrome 浏览器可使用其官方插件,DuckDuckGo 另提供手机 app 和短网址 ddg.gg 。
DuckDuckGo 固然只是搜索引擎市场中不起眼的一个,但其存在的意义不在于与 Google 争夺多少市场份额,而在于维持一个垄断市场中的竞争压力,使上位者不敢固步自封、肆意妄为,损害用户福利。今年,美国两大无线运营商 Verizon 和 AT&T 纷纷宣布推出无限流量计划,其动因正是来自竞争者 T-Mobile 和 Sprint 的压力,而后两者的市场份额还不到它们的一半。这正是竞争带来的效果。
另外,信息收集带来的福利与维护隐私并不矛盾。这方面,最好的例子就是苹果的 differential privacy 技术:为了在输入法词组、图像识别等服务上提高用户体验,苹果也需要收集部分用户数据;但它坚持在收集的数据中人为加上「噪音」,切断数据和用户身份之间的关系,从而达到既获得所需信息、又不至于泄露隐私的效果。这与上文提及的 DuckDuckGo 同步用户设置的机制有异曲同工之处。
在互联网的浪潮中,DuckDuckGo 选择了一条逆流而上的道路。这注定是一个困难的方向:我们无从预判它带来的这份隐私能坚持多久,甚至无从验证它承诺的这份安全究竟有多可靠。但可以肯定的是,只要还有 DuckDuckGo 这样的「叛逆者」在波浪中奋力游动,互联网就不会变成隐私的荒漠。
包管理系统CPAN轶事
1995 年Perl发明的包管理系统CPAN。Larry Wall发明Perl的时候,目的非常单纯,帮助自己做“报告生成和日志分析”。所以他赋予了Perl无以伦比的文本处理能力,特别适合处理正则表达式、日志文件、配置文本等。

Perl也不是为了优雅,而是为了“快速地搞定事情”,所以它的表达能力、信息压缩能力非常强。Larry说:“做一件事不止一种方法”,鼓励程序员用自己舒服的方式写代码。
于是有些Perl大师就写出了这样的代码:
#!/bin/perl -s-- -export-a-crypto-system-sig -RSA-3-lines-PERL
$m=unpack(H.$w,$m."\0"x$w),$_=`echo "16do$w 2+4Oi0$d*-^1[d2%Sa
2/d0<X+d*La1=z\U$n%0]SX$k"[$m*]\EszlXx++p|dc`,s/^.|\W//g,print
pack('H*',$_)while read(STDIN,$m,($w=2*$d-1+length$n&~1)/2)
短短的几行代码就实现了RSA算法!
当时美国政府有严格的加密技术出口管制,有人将这几行代码印到了T恤上,于是T恤衫就变成了禁止出口的“军火”。如果穿着它离开美国,将被处以高额罚款和10年监禁。

1993年,Marc Andreessen发明了Mosaic浏览器,网页开始真正流行起来。为了增加网页的动态性,有人提出了CGI脚本,可以在服务器端执行,根据用户的输入产生动态内容。

例如留言板,还有访问计数器:

CGI程序员可以用各种语言编写,最早是用C语言,但很快大家就发现Perl更合适,因为CGI主要在处理HTML文本,正好是Perl擅长的领域。
早期的互联网是免费分享的天堂,大家建立了邮件列表,通过邮件的方式分享各种各样的Perl脚本。
Perl脚本多了以后,邮件分享就不方便了,有些“囤积者”就把自己收集的代码放到个人FTP站点上让大家下载。FTP站点多了以后,有人就想:大家应该合并资源啊!要不然重复代码很多,找起来很麻烦。最初,大家整理了一个列表,列出Perl模块的名称和下载地址。叫什么名称呢?有人提议“CPAN”(Comprehensive Perl Archive Network),灵感来自CTAN,即TeX和LaTex的代码库。
后来大家觉得用个人的FTP服务器不好,万一down机了,就无法下载了,干脆集中到一起吧。有两个人Andreas J. König 和 Jarkko Hietaniemi,建立了一个叫PAUSE(Perl Author’s Upload Server)的东西,即Perl作者上传服务器。
每个人都可以在这个服务器上注册,上传自己的Perl模块。系统建立了一棵分类树,从原先按人名和文件简单分组,变成了“数据库模块”、“用户界面模块”、“文件处理模块”等等,这样大家找代码更方便了。从此以后,用Perl做事,大家第一想到的是CPAN,因为那里有所有模块。如果找不到,也许你可以做一个再上传。
Perl 5发布以后,CPAN上的代码和模块激增。到 1999 年,每个月大约有 200 个包发布到 CPAN。到了 2001 年,这个数字超过了 500 个。
Perl成了首个拥有超大集中开源代码库的语言,CPAN成了一个强大的生态系统。
不过,还有一个问题还没有解决:每个月都有这么多的新模块上传,还有成千上万的模块更新,怎么才能确定它们没有问题呢?一般的Perl模块都包含测试代码,用户把模块下载以后可以测试,并且反馈是“通过”还是“失败”。
但是不可能让每个用户都这么干,于是CPAN设计了一个自动化的方案:志愿者可以贡献机器,这些机器会自动下载模块,运行测试,然后把结果传到一个叫CPAN Testers的网站。用户只需要到网站上一看,就知道哪个模块在哪些系统上运行正常。
这其实就是一个全球分布式的持续集成系统(CI),如今CI很常见,但是很少有包管理系统像CPAN Tester那样,能利用志愿者的电脑,分布式地完成Perl代码跨版本、跨环境的测试。
Perl社区确实太了不起了!
从CPAN的发展历史来看,是自然而然,水到渠成的事情,Perl适合写CGI脚本,后来又是LAMP的重要一员,在互联网早期非常流行,用户众多,随着分享代码需求的出现,CPAN这这么一步步地成熟了。

"感染"其他语言
Perl语法灵活,Perl社区黑客精神非常浓厚,这些都是好事儿,但是对很多人来说,门槛就有点高了。
2000年左右,有着更清晰语法,更现代面向对象的Python和Ruby崛起,Perl终于让出了王者宝座。
很多Perl程序员转入Python和Ruby阵营,也把Perl的优秀理念给带来过来。
2003年,Python的包管理器PyPI对外发布。
2004年,Ruby的包管理器RubyGems对外发布。
而Java经过了10年发展以后,也通过Maven在2004年建立了自己的中央仓库。
随后,CPAN就像病毒一样,感染了各个编程语言,JavaScript、Go、PHP、Rust都有了自己的包管理系统。
它甚至入侵了微软,.NET,也建立了NuGet作为包管理系统。
这其中以JavaScript的npm最吓人,2023年的一个数据说npm有300多万个软件包!
JavaScript特别自由奔放,特别推崇“一包一事”,鼓励将功能高度拆分为独立模块,哪怕只是几个字符的功能。
这导致了很多“微型”“极简”的软件包,其中只有几行甚至一行代码。例如判断一个数字是否是偶数:is-even
module.exports = function(n) {
return n % 2 === 0;
};
还有最为知名的,让真个互联网都颤抖的left-pad,它的作者Azer不但写了left-pad,还写了其他273个软件包,是npm一个相当大的贡献者。
这273个软件包中有一个叫做kik,这个名称和加拿大一家叫做Kik Interactive的公司相同,这家公司要求Azer Koçulu放弃对kik的控制权,因为该公司拥有Kik商标。
Azer当然不愿意放弃,回复了一个 fXXk you 的邮件就不搭理他了。没想到Kik公司找到了npm的CEO,也是创始人 Isaac Schlueter ,注意,npm和CPAN不同,这是一家商业实体,是要盈利的。
Kik威胁说要起诉npm,Isaac Schlueter怕了,就把所有权给了Kik公司。Azer Koçulu看到npm竟然站在对方那一边,一气之下把自己的273个软件包都删除了,其中就包括left-pad。
这一下子捅了马蜂窝,因为别看left-pad很简单,却是JavaScript的一个核心包。Babel在用它,Webpack在用它,React也在用它,left-pad被下载使用了1500万次!
left-pad被删除,“整个互联网被摧毁了”!所以集中式软件包管理给程序员们带来了无数的便利,但一旦出事儿,就是大事儿。
缺席的C和C++
有意思的是,C/C++一直没有流行的包管理系统。2008 年,Linux内核开发者Rusty Russell在开源开发者大会 和CPAN 管理员Adam Kennedy偶然相遇,相谈甚欢,回去以后就创建了CPAN的C语言版本 :CCAN(Comprehensive C Archive Network)。
但是CCAN从来没有流行起来,倒是微软,在2016年创建了vcpkg这个C和C++的包管理系统,收录了2613个知名软件包,还有JFrog创建的Conan,也有几千个,这规模完全无法和 npm 或 pip 那种“几百万包、全民使用”的盛况相比。C/C++ 是现在这个状况,可能有这么两个原因:
1.语言设计哲学不同
C 和 C++ 强调底层控制、编译独立性和平台适配性,给了程序员最大程度的控制权。
它们不是“一站式生态”,而是允许开发者自由决定怎么构建和链接依赖。
所以大家都是手动下载源码包、makefile、自定义构建。
2.二进制兼容性难以统一
脚本语言(如 Python、JavaScript)模块多为纯文本,天然跨平台。
而 C/C++ 的模块多是静态链接库(.a/.lib)和动态链接库(.so/.dll),这意味着编译器(gcc、clang、MSVC)不一致会导致兼容性问题,不同平台、架构、选项会生成不同的二进制文件,即使源代码一致,也可能因构建参数不一而行为不同。这极大增加了构建和分发的复杂性,也使得标准化包管理器难以一统江湖。
C/C++ 没有统一包管理器,可能不是一种“现代开发者习惯”的友好体验,但却是一种“系统编程者文化”的真实写照。
CPAN,首次定义了“集中式代码共享”的范式,让程序员们不再孤军奋战,而是能够站在彼此的肩膀上协作创新。它激发了Python的 PyPI,启发了 RubyGems,影响了Java的 Maven,甚至在JavaScript中演化成了如今世界最大的软件仓库 npm。整个编程世界的生态,全球程序员的工作方式,被Perl永久地改写了。
Perl在TIOBE榜单上重回前十
Perl在2025年9月重回榜单前十,而就在2024年,Perl 还排在第 27 位。TIOBE CEO Paul Jansen 表示,尽管 Perl 鼎盛时期(2005年3月)也曾排在第 3 位,但其目前的复苏仍然引人注目,值得探讨。
他认为在技术层面上,Perl 能获得如此高的排名主要归功于其在亚马逊平台上庞大的书籍数量 —— 是 PHP 的 4 倍,更是 Rust 的 7 倍。“至于 Perl 人气飙升的 '真正' 原因我并不清楚。能想到的唯一可能性是,Perl 5 现在逐渐被认为是真正的 Perl。Larry Wall 于 2000 年前后宣布开发全新的 Perl 6,其实现耗时数十年,甚至导致该语言被重新命名为 Raku。在这几十年里,Perl 5 的开发很稳定但新特性不多,这导致 Perl 社区充满了不确定性;与此同时,一个不错的替代方案 Python 逐渐成熟,一些 Perl 程序员转向了 Python。如今 25 年过去了,Perl 6/Raku 在 TIOBE 指数中排名第 129 位,在编程世界中几乎毫无存在感。另一方面,Perl 5 近期发布频率显著提升,正重新获得关注。”
TOP 20 编程语言(2025年9月)

TOP 10 编程语言 TIOBE 指数走势(2002-2024)

TIOBE 指数的定义方式,以及详细榜单信息均可查看官网。引人注目的是 R 和 Perl。R 是一种统计编程语言,长期以来一直是 Python 在数据科学领域的直接竞争对手。虽然 Python 近年来明显超越了 R,但 R 似乎正在重拾势头,并已连续数月重返 TIOBE 指数前十。Perl 曾是脚本语言领域无可争议的领导者,但由于多年的内部分裂和来自新兴语言的竞争,它一度衰落。然而,近年来,Perl 强势回归,自 2018 年 1 月以来重新跻身 TIOBE 前十。
编程网站 Perl.com 被劫-欲19万美元售出
DuckDuckGo 向 Perl 和 Raku 基金会捐赠 2.5 万美元
包管理系统CPAN轶事
Perl在TIOBE榜单上重回前十
编程网站 Perl.com 被劫-欲19万美元售出
1987 年诞生的 Perl,尽管近年来不如 Python 和 Ruby 这类年轻的编程语言时常活跃在大众视野,但 33 年后的如今依旧排在 TIOBE 榜前10或20,Perl 必定有其不可取代的优势:使用广泛,尤其适用于系统管理和 Web 编程方面。
可就在2021年1月,Perl 却遭遇了麻烦:它的 Perl.com 域名被劫,指向了恶意 IP 地址,并在网上以 19 万美元出售。
恶意 IP 地址存在隐患
Perl.com 域创建于 1994 年, 在注册商 key-systems.net 中完成注册,是 Perl 编程语言的官方网站, 由 Perl 基金会管理, 一直以来都在提供有关 Perl 编程的文章, 得到了许多 Perl 编程语言爱好者的支持。2021年 1 月 27 日,据 Perl 基础架构博客 Perl NOC 报道称, Perl.com 域已被劫,建议用户不要访问该域,因为可能连接到与恶意软件分发相关的站点。

黑客将 IP 地址从 151.101.2.132 更改为 35.186.238.101,而 35.186.238.101 与曾经恶意软件分发使用的域相关,包括 Locky 勒索软件(Locky 是通过垃圾邮件活动传播的一种勒索软件,这个恶意软件具有类似于 Dridex 木马的特征,曾感染美国多个地区的医院)的分发,不过它也可以被用作 命令和控制(C&C)服务器及 BleepingComputer 注释。
考虑到 Perl.com 会被用作通过 CPAN 分发模块的镜像或备份,即劫持者可能会利用这种联系危害使用 Perl 和 CPAN 的系统,Perl NOC强烈建议那些把 Perl.com作为 CPAN 镜像的用户在 CPAN.pm更新镜像避免隐患,具体可通过 conf urllist http://www.cpan.org 来替换。另外在 2021年 1 月 28 日, Perl NOC还给出了替代方案:如果用户在查找有关 Perl 编程语言相关文章,可前往 perldotcom.perl.org,该网站已托管Perl.com被劫之前存在的内容。
售价 19 万,现已下架
在 Perl.com 域被劫后不久,就有外媒发现该域名在 afternic.com(属于 GoDaddy,GoDaddy 主要提供域名注册和互联网主机服务)上以 19 万美元的价格出售。除此之外,列表中还包括其他昂贵的域名,比如用户 drawmaster 提供的 piracy.com,价格为 12.5 万美元。但不久后, Perl.com的出售信息就已下架。
目前被劫的 Perl.com看似还未体现出恶意,不过在 Perl 官方正式重新控制前,用户尽量不要访问该网站。为避免混淆,在此声明, Perl 编程语言的官方网站 perl.org 是安全的, Perl官方正在积极进行收回域名的工作,并且 2021年 2 月 1 日 Perl 官方最新回应称:经验证,cpan.org 是安全可靠。
DuckDuckGo 向 Perl 和 Raku 基金会捐赠 25,000 美元
Perl 和 Raku 基金会 (TPRF) 在2024年12月公告中称收到来自 DuckDuckGo 捐赠的 25,000 美元。

自 2011 年以来,DuckDuckGo 已向与其 “提高在线信任标准” 愿景一致的组织捐赠了超过 600 万美元。
TPRF 致力于通过开源开发、社区参与和推广来推动 Perl 和 Raku 编程语言的发展,以确保它们的持续增长、相关性和可及性。来自 DuckDuckGo 的支持将使 TPRF 能够继续资助核心 Perl 开发,为对社区重要的项目提供资金,并在其它方面支持该社区。
DuckDuckGo 创立于 2008 年,创始人是毕业于麻省理工的 Gabriel Weinberg。谈到这个奇怪的网站名字,Weinberg 表示是受启发于儿童玩的追逐游戏「duck, duck, goose」,并没有其他深意或隐喻。
在自己的流量统计页面上,DuckDuckGo 特别标出了几个重要的发展节点:2011 年 1 月,DuckDuckGo 在旧金山架起一幅巨型户外广告牌,内容直指 Google 的追踪行为——「Google tracks you. We don’t.」,一举吸引众多关注;一年后,Google 宣布更新隐私政策,决定在其各个在线服务中搜集用户信息,DuckDuckGo 借此迎来了一次流量激增;2013 年,棱镜门事件爆发,再次引发了公众对网络隐私的担忧,DuckDuckGo 的日均使用量在一年之内翻了一倍以上;2014 年,Safari 和 Firefox 浏览器宣布将 DuckDuckGo 作为可选的搜索引擎,进一步促进了其用户量增长。
经过近十年的发展,DuckDuckGo 如今已有每天 1600 多万次的搜索量。虽然这比起 Google 每天动辄 30 多亿次的搜索只是九牛一毛,但想到其完全依靠社区支持,背后没有任何巨头推动,也是一个相当可喜的成绩。科技圈内也有许多名人表达过对 DuckDuckGo 的赞许和支持,如著名博主 John Gruber 就曾多次表示已转用 DuckDuckGo 为默认搜索引擎。
说明:
DuckDuckGo 目前无法在中国大陆直接访问,因此体验时请自行准备相应条件;
DuckDuckGo 提供包括中文在内的多语言支持,但其中文翻译存在很多影响理解的明显错误,故后文在介绍时仍将以英文界面为准;
Safari 和 Firefox 可直接将 DuckDuckGo 设为默认搜索引擎,Chrome 浏览器可使用其官方插件,DuckDuckGo 另提供手机 app 和短网址 ddg.gg 。
DuckDuckGo 固然只是搜索引擎市场中不起眼的一个,但其存在的意义不在于与 Google 争夺多少市场份额,而在于维持一个垄断市场中的竞争压力,使上位者不敢固步自封、肆意妄为,损害用户福利。今年,美国两大无线运营商 Verizon 和 AT&T 纷纷宣布推出无限流量计划,其动因正是来自竞争者 T-Mobile 和 Sprint 的压力,而后两者的市场份额还不到它们的一半。这正是竞争带来的效果。
另外,信息收集带来的福利与维护隐私并不矛盾。这方面,最好的例子就是苹果的 differential privacy 技术:为了在输入法词组、图像识别等服务上提高用户体验,苹果也需要收集部分用户数据;但它坚持在收集的数据中人为加上「噪音」,切断数据和用户身份之间的关系,从而达到既获得所需信息、又不至于泄露隐私的效果。这与上文提及的 DuckDuckGo 同步用户设置的机制有异曲同工之处。
在互联网的浪潮中,DuckDuckGo 选择了一条逆流而上的道路。这注定是一个困难的方向:我们无从预判它带来的这份隐私能坚持多久,甚至无从验证它承诺的这份安全究竟有多可靠。但可以肯定的是,只要还有 DuckDuckGo 这样的「叛逆者」在波浪中奋力游动,互联网就不会变成隐私的荒漠。
包管理系统CPAN轶事
1995 年Perl发明的包管理系统CPAN。Larry Wall发明Perl的时候,目的非常单纯,帮助自己做“报告生成和日志分析”。所以他赋予了Perl无以伦比的文本处理能力,特别适合处理正则表达式、日志文件、配置文本等。

Perl也不是为了优雅,而是为了“快速地搞定事情”,所以它的表达能力、信息压缩能力非常强。Larry说:“做一件事不止一种方法”,鼓励程序员用自己舒服的方式写代码。
于是有些Perl大师就写出了这样的代码:
#!/bin/perl -s-- -export-a-crypto-system-sig -RSA-3-lines-PERL
$m=unpack(H.$w,$m."\0"x$w),$_=`echo "16do$w 2+4Oi0$d*-^1[d2%Sa
2/d0<X+d*La1=z\U$n%0]SX$k"[$m*]\EszlXx++p|dc`,s/^.|\W//g,print
pack('H*',$_)while read(STDIN,$m,($w=2*$d-1+length$n&~1)/2)
短短的几行代码就实现了RSA算法!
当时美国政府有严格的加密技术出口管制,有人将这几行代码印到了T恤上,于是T恤衫就变成了禁止出口的“军火”。如果穿着它离开美国,将被处以高额罚款和10年监禁。

1993年,Marc Andreessen发明了Mosaic浏览器,网页开始真正流行起来。为了增加网页的动态性,有人提出了CGI脚本,可以在服务器端执行,根据用户的输入产生动态内容。

例如留言板,还有访问计数器:

CGI程序员可以用各种语言编写,最早是用C语言,但很快大家就发现Perl更合适,因为CGI主要在处理HTML文本,正好是Perl擅长的领域。
早期的互联网是免费分享的天堂,大家建立了邮件列表,通过邮件的方式分享各种各样的Perl脚本。
Perl脚本多了以后,邮件分享就不方便了,有些“囤积者”就把自己收集的代码放到个人FTP站点上让大家下载。FTP站点多了以后,有人就想:大家应该合并资源啊!要不然重复代码很多,找起来很麻烦。最初,大家整理了一个列表,列出Perl模块的名称和下载地址。叫什么名称呢?有人提议“CPAN”(Comprehensive Perl Archive Network),灵感来自CTAN,即TeX和LaTex的代码库。
后来大家觉得用个人的FTP服务器不好,万一down机了,就无法下载了,干脆集中到一起吧。有两个人Andreas J. König 和 Jarkko Hietaniemi,建立了一个叫PAUSE(Perl Author’s Upload Server)的东西,即Perl作者上传服务器。
每个人都可以在这个服务器上注册,上传自己的Perl模块。系统建立了一棵分类树,从原先按人名和文件简单分组,变成了“数据库模块”、“用户界面模块”、“文件处理模块”等等,这样大家找代码更方便了。从此以后,用Perl做事,大家第一想到的是CPAN,因为那里有所有模块。如果找不到,也许你可以做一个再上传。
Perl 5发布以后,CPAN上的代码和模块激增。到 1999 年,每个月大约有 200 个包发布到 CPAN。到了 2001 年,这个数字超过了 500 个。
Perl成了首个拥有超大集中开源代码库的语言,CPAN成了一个强大的生态系统。
不过,还有一个问题还没有解决:每个月都有这么多的新模块上传,还有成千上万的模块更新,怎么才能确定它们没有问题呢?一般的Perl模块都包含测试代码,用户把模块下载以后可以测试,并且反馈是“通过”还是“失败”。
但是不可能让每个用户都这么干,于是CPAN设计了一个自动化的方案:志愿者可以贡献机器,这些机器会自动下载模块,运行测试,然后把结果传到一个叫CPAN Testers的网站。用户只需要到网站上一看,就知道哪个模块在哪些系统上运行正常。
这其实就是一个全球分布式的持续集成系统(CI),如今CI很常见,但是很少有包管理系统像CPAN Tester那样,能利用志愿者的电脑,分布式地完成Perl代码跨版本、跨环境的测试。
Perl社区确实太了不起了!
从CPAN的发展历史来看,是自然而然,水到渠成的事情,Perl适合写CGI脚本,后来又是LAMP的重要一员,在互联网早期非常流行,用户众多,随着分享代码需求的出现,CPAN这这么一步步地成熟了。

"感染"其他语言
Perl语法灵活,Perl社区黑客精神非常浓厚,这些都是好事儿,但是对很多人来说,门槛就有点高了。
2000年左右,有着更清晰语法,更现代面向对象的Python和Ruby崛起,Perl终于让出了王者宝座。
很多Perl程序员转入Python和Ruby阵营,也把Perl的优秀理念给带来过来。
2003年,Python的包管理器PyPI对外发布。
2004年,Ruby的包管理器RubyGems对外发布。
而Java经过了10年发展以后,也通过Maven在2004年建立了自己的中央仓库。
随后,CPAN就像病毒一样,感染了各个编程语言,JavaScript、Go、PHP、Rust都有了自己的包管理系统。
它甚至入侵了微软,.NET,也建立了NuGet作为包管理系统。
这其中以JavaScript的npm最吓人,2023年的一个数据说npm有300多万个软件包!
JavaScript特别自由奔放,特别推崇“一包一事”,鼓励将功能高度拆分为独立模块,哪怕只是几个字符的功能。
这导致了很多“微型”“极简”的软件包,其中只有几行甚至一行代码。例如判断一个数字是否是偶数:is-even
module.exports = function(n) {
return n % 2 === 0;
};
还有最为知名的,让真个互联网都颤抖的left-pad,它的作者Azer不但写了left-pad,还写了其他273个软件包,是npm一个相当大的贡献者。
这273个软件包中有一个叫做kik,这个名称和加拿大一家叫做Kik Interactive的公司相同,这家公司要求Azer Koçulu放弃对kik的控制权,因为该公司拥有Kik商标。
Azer当然不愿意放弃,回复了一个 fXXk you 的邮件就不搭理他了。没想到Kik公司找到了npm的CEO,也是创始人 Isaac Schlueter ,注意,npm和CPAN不同,这是一家商业实体,是要盈利的。
Kik威胁说要起诉npm,Isaac Schlueter怕了,就把所有权给了Kik公司。Azer Koçulu看到npm竟然站在对方那一边,一气之下把自己的273个软件包都删除了,其中就包括left-pad。
这一下子捅了马蜂窝,因为别看left-pad很简单,却是JavaScript的一个核心包。Babel在用它,Webpack在用它,React也在用它,left-pad被下载使用了1500万次!
left-pad被删除,“整个互联网被摧毁了”!所以集中式软件包管理给程序员们带来了无数的便利,但一旦出事儿,就是大事儿。
缺席的C和C++
有意思的是,C/C++一直没有流行的包管理系统。2008 年,Linux内核开发者Rusty Russell在开源开发者大会 和CPAN 管理员Adam Kennedy偶然相遇,相谈甚欢,回去以后就创建了CPAN的C语言版本 :CCAN(Comprehensive C Archive Network)。
但是CCAN从来没有流行起来,倒是微软,在2016年创建了vcpkg这个C和C++的包管理系统,收录了2613个知名软件包,还有JFrog创建的Conan,也有几千个,这规模完全无法和 npm 或 pip 那种“几百万包、全民使用”的盛况相比。C/C++ 是现在这个状况,可能有这么两个原因:
1.语言设计哲学不同
C 和 C++ 强调底层控制、编译独立性和平台适配性,给了程序员最大程度的控制权。
它们不是“一站式生态”,而是允许开发者自由决定怎么构建和链接依赖。
所以大家都是手动下载源码包、makefile、自定义构建。
2.二进制兼容性难以统一
脚本语言(如 Python、JavaScript)模块多为纯文本,天然跨平台。
而 C/C++ 的模块多是静态链接库(.a/.lib)和动态链接库(.so/.dll),这意味着编译器(gcc、clang、MSVC)不一致会导致兼容性问题,不同平台、架构、选项会生成不同的二进制文件,即使源代码一致,也可能因构建参数不一而行为不同。这极大增加了构建和分发的复杂性,也使得标准化包管理器难以一统江湖。
C/C++ 没有统一包管理器,可能不是一种“现代开发者习惯”的友好体验,但却是一种“系统编程者文化”的真实写照。
CPAN,首次定义了“集中式代码共享”的范式,让程序员们不再孤军奋战,而是能够站在彼此的肩膀上协作创新。它激发了Python的 PyPI,启发了 RubyGems,影响了Java的 Maven,甚至在JavaScript中演化成了如今世界最大的软件仓库 npm。整个编程世界的生态,全球程序员的工作方式,被Perl永久地改写了。
Perl在TIOBE榜单上重回前十
Perl在2025年9月重回榜单前十,而就在2024年,Perl 还排在第 27 位。TIOBE CEO Paul Jansen 表示,尽管 Perl 鼎盛时期(2005年3月)也曾排在第 3 位,但其目前的复苏仍然引人注目,值得探讨。
他认为在技术层面上,Perl 能获得如此高的排名主要归功于其在亚马逊平台上庞大的书籍数量 —— 是 PHP 的 4 倍,更是 Rust 的 7 倍。“至于 Perl 人气飙升的 '真正' 原因我并不清楚。能想到的唯一可能性是,Perl 5 现在逐渐被认为是真正的 Perl。Larry Wall 于 2000 年前后宣布开发全新的 Perl 6,其实现耗时数十年,甚至导致该语言被重新命名为 Raku。在这几十年里,Perl 5 的开发很稳定但新特性不多,这导致 Perl 社区充满了不确定性;与此同时,一个不错的替代方案 Python 逐渐成熟,一些 Perl 程序员转向了 Python。如今 25 年过去了,Perl 6/Raku 在 TIOBE 指数中排名第 129 位,在编程世界中几乎毫无存在感。另一方面,Perl 5 近期发布频率显著提升,正重新获得关注。”
TOP 20 编程语言(2025年9月)

TOP 10 编程语言 TIOBE 指数走势(2002-2024)

TIOBE 指数的定义方式,以及详细榜单信息均可查看官网。引人注目的是 R 和 Perl。R 是一种统计编程语言,长期以来一直是 Python 在数据科学领域的直接竞争对手。虽然 Python 近年来明显超越了 R,但 R 似乎正在重拾势头,并已连续数月重返 TIOBE 指数前十。Perl 曾是脚本语言领域无可争议的领导者,但由于多年的内部分裂和来自新兴语言的竞争,它一度衰落。然而,近年来,Perl 强势回归,自 2018 年 1 月以来重新跻身 TIOBE 前十。