Perl 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
Perl 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
Perl 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 GPL
开发语言 Perl
操作系统 跨平台
软件类型 开源软件
所属分类 编程语言
开源组织
地区 不详
投 递 者 不详
适用人群 未知
收录时间 2008-09-13

软件简介

Perl是一种动态解释型的脚本语言。 最初的设计者为拉里·沃尔(Larry Wall),它于1987年12月18日发表。Perl借取了C、sed、awk、shell scripting 以及很多其他编程語言的特性。其中最重要的特性是他内部集成了正则表达式的功能,以及巨大的第三方代码库 CPAN。

2000年开始,拉里·沃尔着手开发Perl 6来作为Perl的后继,Perl 6语言的语法有很多转变,也被视为Perl家族中的另一个语言(Perl 6于2019年更名为Raku)。目前,Perl语言家族包含两个分支Perl 5以及Perl 6。

Perl语言应用广泛,涵盖CGI、图形编程、系统管理、网络编程、金融、生物等领域。由于其灵活性,Perl被称为脚本语言中的瑞士军刀。鉴于Perl在实际工程应用中广泛使用,MacOS,Linux,FreeBSD等现代化操作系统默认安装Perl。

Perl原名pearl,但是在这个语言正式发表前,拉里·沃尔发现已经有个语言“pearl”,便将这个语言的名字改成Perl。对于Perl 这四个字母,有一些解释,包括充满幽默感的“Pathologically Eclectic Rubbish Lister”。 “Practical Extraction and Report Language”曾经出现在很多有关Perl的资料里,包括官方的主页。不过事实上这个长名字是后来凑出来的。它的名字第一个字母大写(Perl)时就指这个编程语言,无大写字母(perl)时就指它的编译器。将Perl写成“PERL”是不适当的,因为它并非一个缩写词。

Perl 语言的中心思想可以集成为一句话「TMTOWTDI」:

There's More Than One Way To Do It.(不只一种方法來做这件事。)

Perl 的作者 Larry Wall 建议可以把这个缩写词念成「Tim Toady」。

另一个 Perl 程序员常常想起的 Perl 俗语是:

Easy things should be easy, and hard things should be possible.

Perl骆驼是O'Reilly设计给Perl语言的图标。它也是一种黑客的象征,出现在某些T-shirt和其他衣服标签上。

O'Reilly拥有此图标的商标,并且宣称,唯有在捍卫「符号之完整性」时,才会行使其法律上的权力。O'Reilly允许此商标在非商业目的之前提下被使用,并同时供了 Programming Republic of Perl 的图像以及 Powered by Perl 的按钮图。然而,骆驼其实从未被考虑成为 Perl 的官方识别符号,真要说有的话,其识别符号其实是洋葱。

为了实现这样的目标,并且又因为 Larry Wall 本人也是一个语言学家,他设计Perl语言时使用了很多语言学的思维。相比 C、Pascal 这样的“高级”语言而言,Perl语言直接提供泛型变量、动态数组、Hash表等更加便捷的编程元素。Perl 具有动态语言的强大灵活的特性,并且还从C/C++、Basic、Pascal 等语言中分别借鉴了语法规则,从而提供了许多冗余语法。使得程序员可以忽略计算机内部数据存储、类型、处理方法、运算规则、甚至内存越界等等的细节,而将思考中心放在所需要的程序逻辑上。就这一点而言,很多 Perl 程序员认为目前只有 Perl、Python等泛型语言才能称为“高级”语言,而 C、Pascal 甚至 C++ 这些只能称为“中高级”语言而已。可以说,在统一变量类型和掩盖运算细节方面,Perl 做得比 Python 更为出色。

由于从其他语言大量借鉴了语法,使得从其他编程语言转到 Perl 语言的程序员可以迅速上手写程序并完成任务,这使得 Perl语言是一门容易用的语言。但问题是这样写出来的“类xx语言”的 Perl 程序对不熟悉这种语言的程序员却如同天书,这使得 Perl 语言易写不易读。

也正是因为 Perl 的灵活性和“过度”的冗余语法,也因此获得了 write-only 的“美誉”,因为许多 Perl 程序的代码令人难以阅读,实现相同功能的程序代码长度可以相差十倍百倍。 但 Perl 同样可以将代码书写得像 Python 或 Ruby 等语言一样优雅。

展开阅读全文

评论

点击加入讨论🔥(3) 发布并加入讨论🔥
发表了资讯
2023/07/04 11:15

Perl 5.38 发布

Perl 5.38 已正式发布,以下为此版本部分新特性: 新 class 功能 现在可以使用新的实验性语法来定义对象类,其中每个实例的数据存储在行为类似于词汇的“字段”变量中。 use feature 'class'; class Point { field $x; field $y; method zero { $x = $y = 0; } } 这是一个新的实验性功能,并且仍在开发中。 支持 Unicode 15.0 有关 Unicode 15.0 的详细信息,请参阅 https://www.unicode.org/versio...

5
1
发表了资讯
2022/06/01 07:00

Perl 5.36 已发布,终于不用写一堆 “use feature” 了

Perl 5.36 发布啦,这是自 Perl 5.34.0 以来大约一年的大版本更新,带来了多项便利的新功能。比如新引入的 use x.xx 功能省略了代码顶部繁琐的功能模块声明,其次稳定了布尔跟踪、正则表达式集、支持 Unicode 14.0 等功能,还新增了内置函数、单次迭代多个值、try/catch语法支持finally关键字等实验性功能。 下面来介绍一下该版本的主要功能改动: use v5.36 版本包捆绑功能 Perl 5.36.0 稳定了版本包捆绑(Version bundles)功...

6
2
发表了资讯
2022/05/27 08:53

Perl 指导委员会谈发展战略: Perl 7 没那么快发布

随着 Perl 5.36 即将发布,Perl 指导委员会在一篇博客中谈论了 Perl 语言当前的发展策略以及未来的发展计划,同时也解答了一些常见的问题。 谁在决定 Perl 的方向? 2020 年 6 月,Perl 官方宣布 Perl 7 计划。Perl 7 的一个关键想法是通过启用许多广泛使用的模块/编译指示,来减少代码顶部所需的样板,但这将以破坏一些向后兼容性为代价。 该想法引发了很多激烈的讨论,有些人认为抛弃 Perl 的关键优势“向后兼容性”是非常糟糕...

3
0
发表了资讯
2020/06/25 09:09

官方宣布 Perl 7 计划

Perl 官方宣布了 Perl 7 计划。Perl 7 目前已经在开发中,但是在代码与语法上不会有太大的改变,其本质上是具有现代默认设置的 Perl 5,并为之后进行更大的更改奠定了基础。 具体来说,新的 Perl 7 实际上约等于前两天发布的 Perl 5.32。这里边有个有趣的事实是,Perl 6 已经与 Perl “分家”,并且还变成了名为“Raku”的项目。至于分开 v5 与 v6 的原因,相信大家已经不陌生了:Perl 5 与 Perl 6 存在难以调合的兼容性问题,使...

27
7
发表了资讯
2020/06/23 07:09

Perl 5.32 发布

Perl 5.32 已发布,此版本引入了 isa 运算符,用于测试给定的对象是否“是”给定类的实例或为其派生类。Perl 5.32 还添加了对 Unicode 13.0 的支持,脚本运行也已不再是实验性阶段,此外还包括至少有三个安全修复,以及部分性能的提升。 isa 运算符 isa 是新的实验性 infix 运算符,用于测试给定的对象是否“是”给定类的实例或为其派生类。 if( $obj isa Package::Name ) { ... } 详情查看"Class Instance Operator" in perl...

6
0
发表了资讯
2019/10/12 09:41

Larry Wall 已批准将 Perl 6 重命名为 Raku

Perl 6 最初被认为是 Perl 的下一版本。花费很长时间才能成熟并有了初始版本。而与此同时,对 Perl 5 感兴趣的人希望夺回统治并继续开发Perl 5。 两种编程语言完全不同以至于在源码级别不能做到兼容,可是许多人认为两者只是版本号上有所不同,这会导致损害世界上 Perl 5 和 Perl 6 的形象。由于“ Perl” 一词在世界上仍然被视为“ Perl 5”,因此“ Perl 6”更改其名称似乎很公平。 拉里(Larry)在 PerlCon 2019 活动的视频消...

4
11
发表了资讯
2019/08/31 08:13

Perl 6 到底要不要改名?

Perl 6 GitHub 仓库中的一个 issue "Perl" in the name "Perl 6" is confusing and irritating (Perl 使用 Perl 6 的名字令人困惑和反感)引起了广泛的关注,这个 issue 由 Perl 6 的核心开发者 Elizabeth (Liz) Mattijsen 创建(同时也是 Perl 5 的长期开发者),主要是建议对 Perl 6 进行重命名。 ▲(此前进行过相关报道) 顶着 Perl 6 核心开发者的身份,虽然 lizmat 的这一行为有 "Troll"(发起一个话题,通过引起争论来获...

4
1
发表了资讯
2019/08/28 07:34

MongoDB 将弃用 Perl 驱动,Perl 还能行吗?

由于使用者过少,MongoDB 宣布弃用 Perl 驱动。 MongoDB 高级产品经理 Scott L'Hommedieu 表示,在过去几年中,团队调查了用户群体,并与使用 Perl 驱动的公司进行交流,得到的反馈是,用户对于通过 Perl 驱动支持 MongoDB 新功能的要求极少。另一边,MongoDB 社区自 2018 年以来,没有用户询问过 Perl 驱动相关的问题。 这就意味着,现在只有极少数人在使用 MongoDB Perl 驱动,而只有当人们使用的时候,驱动才有存在的意义。对...

17
8
发表了资讯
2019/07/07 08:24

TIOBE 7月排行:Perl 成为过分炒作 Python 的受害者?

TIOBE 编程语言排行榜 7 月更新已公布,排名前十的分别是:Java, C, Python, C++, C#, Visual Basic .NET, JavaScript, PHP, SQL 和 Objective-C。 和上个月的不同之处主要是 C# 以微弱的优势超过了 Visual Basic .NET 的排名,再次进入 TOP 5。 与上个月相比,Python 的指数又增加了不少,由 8.530% 上升到 9.260%。 我们还留意到,TIOBE 对这期榜单的标题描述是“Perl is one of the victims of Python's hype”,大意是说 Pe...

31
6
发表了资讯
2018/02/01 12:05

Perl 6 发布新版本 Rakudo Star 2018.01

1 月 29 日,Rakudo 和 Perl 6 开发组在官方博客 http://rakudo.org/ 发布消息,宣布 Rakudo Star 2018.01 生产版本正式发布。其源码包已经可下载, 下载地址:https://rakudo.perl6.org/downloads/star/ Windows 二进制安装包,MAC 二进制安装包稍后会在同一地址提供下载。 这是 Perl 6 圣诞版本 v6.c 版本后,第一个生产版本,支持官方 MoarVM 虚拟机向后全功能兼容(对支持平台所有模块的测试都通过)。 目前 Perl 6 版本发布...

7
3
发表了资讯
2017/06/01 08:15

Perl 5.26.0 发布,Perl 5.26 系列的首个稳定版

Perl 5.26.0 已发布,这是 Perl 5.26 系列的首个稳定版。该版本中包含的许多变更始于 Perl 核心包含的 CPAN 模块。 自 Perl 5.24.0 发布以来,Perl 5.26.0 的开发时间大约为 13 个月,包括了来自 86 位作者的 2,600 个文件中大约 36 万行的更改。 排除掉自动生成的文件、文档和发布工具,对 1,800 .pm, .t, .c 和 .h文件进行了大约 23 万行的更改。 主要变化包括: 出于安全理由,模块搜索路径 (@INC)的末尾不再默认含有"." do ...

6
1
发表了资讯
2017/04/28 07:53

2017 Perl 开发者调查,vim 是他们最爱的编辑工具

bip blog 在今年3月7日-4月14日期间针对 Perl 开发者进行了一项调查,收到了来自世界各地开发者的 849 份回复。调查结果显示了 2017 年 Perl 的状况,以及一些有趣的趋势,可供参考。 Q1 使用 Perl 5 已有多长时间? Q2 是否有尝试过 Perl 6 或有无兴趣尝试? Q3 正在使用哪个版本的 Perl 5? Perl 5.24(251) Perl 5.22(186) Perl 5.18(104) Perl 5.20(90) Perl 5.16(79) Perl 5.10(71) Perl 5.14(58) Q4 还使用哪...

7
3
发表了资讯
2015/12/25 00:00

Perl 6 语言正式发布

开发了十多年的Perl 6语言在圣诞节正式发布。Larry Wall以Perl 6吉祥物Camelia的名义宣布Perl 6可以在产品中使用,但强调她仍然处于青春期,也就是她有几分成熟了,但还是会有问题。我们知道的青春期的人有时候会表现的很成熟,但有时候也会很幼稚,比如一个15岁的人有时候会像25岁,有时候会像5岁。 Perl 6 网站:http://www.perl6.org/ via Solidot...

69
25
发表了资讯
2015/10/08 00:00

Larry Wall 介绍 Perl 6,计划在圣诞节发布

Perl 6 语言的开发持续了十多年,有一个古老的笑话说,Perl 6 将在圣诞节发布,但不知道是哪一年的圣诞节。这个笑话即将成为过去,Perl 作者 Larry Wall 证实,Perl 6 将在 2015 年圣诞节发布,这一次的时间是明确无误而不是含糊其辞。此外,新的Perl 6网站也已经上线。在旧金山科学家探索馆举行的一个会议上Larry Wall谈论了Perl 6的新特性,他开玩笑的说,他们现在的最优先级工作是修正bug,以避免被错误当成特性。他介绍了一...

22
6
发表了资讯
2015/07/16 00:00

为什么 Perl 6 花了如此长时间开发

Perl 6 用了15年时间开发,它计划在今年底正式发布。Perl 作者 Larry Wall 接受了《Linux Voice》的采访, 谈论了管理一个项目的难处,他的语言学背景如何影响 Perl 的设计,Perl 6 为什么花了如此长时间的设计和开发。Larry Wall 说,Perl 6一开始有很多绝妙点子,但你必须在其中有所取舍,否则只会变得一团糟。他承认Perl 6的开发伊始存在大量问题,早期版本看起来像是面向对象的汇编语言,唐凤(发起了Perl 6实现Pugs项目)因...

21
11
发表了资讯
2015/06/03 00:00

Perl 5.22.0 发布

Perl 5.20.0 发布后经过大约 12 个月的开发,终于发布了 Perl 5.22.0 版本,此版本包括大约 590,000 行的代码改进,跨越了 2,400 个文件,包括 94 名贡献者。此版本详细改进请看发行汇总列表和 Perl Delta。 此版本现已提供下载:perl-5.22.0.tar.gz。

6
2
发表了资讯
2015/02/16 00:00

Perl 5.20.2 发布下载

Perl 5.20.2 发布下载,官方现已提供源代码下载(perl-5.20.2.tar.gz),尚未提供相关发行说明,详情请看这里。 Perl是一种脚本语言。 最初的设计者为拉里·沃尔(Larry Wall),它於1987年12月18日發表。Perl借取了C、sed、awk、shell scripting 以及很多其他程式語言的特性。其中最重要的特性是他内部集成了正则表达式的功能,以及巨大的第三方代码库 CPAN。...

2
5
发表了资讯
2015/02/02 00:00

Perl6 1.0 版本将会在今年圣诞节发布

当你看到这篇文章时肯定是特别吃惊,因为 Larry 发表声明说 Perl 6 开发者计划在其 61 岁生日之时发布 Perl6 1.0 开发版本,在 2015 年圣诞节正式发布 1.0 版本。 之前已经有新闻说 2015 将是 Perl 之年,但是并未说明具体的发布时间。 为什么 Perl 开发者会这样尝试呢,这不仅仅是个承诺,他们面对着实际的问题,代码隐藏的复杂度,计划可能不会预期进行,等等可能导致失败的原因,但是他们想秉着“'Murphy doth exist' 的态度...

12
5
发表了资讯
2014/11/08 00:00

2015 将是 Perl 6 之年

在多年的设计和实现之后,2015将是Perl 6正式发布可供生产使用之年。Perl作者Larry Wall将于明年1月31日在布鲁塞尔举行的FOSDEM 2015会议上,谈论Perl 6的开发历史,开发团队如何将事情做正确,如何从错误中吸取教训。更重要的是他们如何在设计者都认为不可能的情况下完成语言实现这一非同寻常的任务。Perl 6的开发始于2000年,2005年唐凤发起了Perl 6语言的首个完整实现Pugs项目,2010年7月Perl 6实现Rakudo Star发布了首个版本...

25
15
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
3 评论
82 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部