动态解释型编程语言 Perl

动态解释型编程语言 Perl

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 等语言一样优雅。

加载中

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

Perl 5.36 发布啦,这是自 Perl 5.34.0 以来大约一年的大版本更新,带来了多项便利的新功能。比如新引入的 use x.xx 功能省略了代码顶部繁琐的功能模块声明,其次稳定了布尔跟踪、正则表达式...

06/01 07:00

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

随着 Perl 5.36 即将发布,Perl 指导委员会在一篇博客中谈论了 Perl 语言当前的发展策略以及未来的发展计划,同时也解答了一些常见的问题。 谁在决定 Perl 的方向? 2020 年 6 月,Perl 官方...

05/27 08:53

官方宣布 Perl 7 计划

Perl 官方宣布了 Perl 7 计划。Perl 7 目前已经在开发中,但是在代码与语法上不会有太大的改变,其本质上是具有现代默认设置的 Perl 5,并为之后进行更大的更改奠定了基础。 具体来说,新的 ...

2020/06/25 09:09

Perl 5.32 发布

Perl 5.32 已发布,此版本引入了 isa 运算符,用于测试给定的对象是否“是”给定类的实例或为其派生类。Perl 5.32 还添加了对 Unicode 13.0 的支持,脚本运行也已不再是实验性阶段,此外还包...

2020/06/23 07:09

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

Perl 6 最初被认为是 Perl 的下一版本。花费很长时间才能成熟并有了初始版本。而与此同时,对 Perl 5 感兴趣的人希望夺回统治并继续开发Perl 5。 两种编程语言完全不同以至于在源码级别不能做...

2019/10/12 09:41

Perl 6 到底要不要改名?

Perl 6 GitHub 仓库中的一个 issue "Perl" in the name "Perl 6" is confusing and irritating (Perl 使用 Perl 6 的名字令人困惑和反感)引起了广泛的关注,这个 issue 由 Perl 6 的核心开...

2019/08/31 08:13

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

由于使用者过少,MongoDB 宣布弃用 Perl 驱动。 MongoDB 高级产品经理 Scott L'Hommedieu 表示,在过去几年中,团队调查了用户群体,并与使用 Perl 驱动的公司进行交流,得到的反馈是,用户对...

2019/08/28 07:34

如果 perl6 重新命名,叫 Camlia 可好?

最近,perl6 的 GitHub 仓库上进行了一场讨论,关于 perl6 应不应该重新命名。 perl6 的大多数用户认为,perl5 的印象留给人的太深了,人们无法区分 perl5 和 perl 6,并且这些人都认为 perl...

2019/08/12 08:07

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

TIOBE 编程语言排行榜 7 月更新已公布,排名前十的分别是:Java, C, Python, C++, C#, Visual Basic .NET, JavaScript, PHP, SQL 和 Objective-C。 和上个月的不同之处主要是 C# 以微弱的优势...

2019/07/07 08:24

Perl 6 发布新版本 Rakudo Star 2018.01

1 月 29 日,Rakudo 和 Perl 6 开发组在官方博客 http://rakudo.org/ 发布消息,宣布 Rakudo Star 2018.01 生产版本正式发布。其源码包已经可下载, 下载地址:https://rakudo.perl6.org/do...

2018/02/01 11:58

没有更多内容

加载失败,请刷新页面

2
回答
如何使用perl脚本处理excel的边框粗细?

各位大神好: 最近领导让做个code和excel的互相转换的perl脚本,调整格式的时候,发现,如果对某一行进行边框着色加粗,发现并没有加粗的选项,这种情...

2017/01/19 13:42
1
回答
perl不能安装Spreadsheet::ParseExcel与Spreadsheet::ParseExcel::Workbook模块

公司要用perl程序去读取excel中的文件内容,我用cpan Spreadsheet::ParseExcel安装总是显示安装失败 C:\Document...

2013/08/14 08:30
9
回答
Java开发相关工作

本人80后,在公司用Java SE,Python,Perl做桌面程序开发,自学过JavaScript,Xml,Html,css,用Js+css+div为公...

2014/09/20 16:22
1
回答
【一周】sudo漏洞、Fuchsia新进展 | AWS赞助Rust、Python 3.8、Perl 6新名

回顾一周社区热门资讯 第【四十四】期:20191012-20191018 点击相应标题,跳转阅读全文。 VS Code 1.39 发布,Web 版 VS ...

2019/10/19 22:49
2
回答
【一周】将Julia引入Firefox | IBM收购Red Hat | 色情应用repo被移除 | 微软量子开发包

回顾一周社区热门资讯 第【三十一】期:20190706-20190712 点击相应标题,跳转阅读全文。 OpenWrt 18.06.4 发布,开源路由器项...

2019/07/14 08:02
2
回答
如何避免 out of memory ,或是运行程序之前估计程序所需的内存

求指教 自己写了一个perl 程序,目的是生成50万*8千的矩阵。 可能是内存或是CPU不足导致out of memory 如何避免 out of mem...

2019/05/30 15:24
2
回答
Perl语言主要用来做什么,为什么总看到这种语言,却没见身边人用?
tcxu 的回答 2018/12/10 17:22
最佳答案
Perl 来自开源革命的声音, 它是第一个后现代计算机语言,显示出开源中的勤奋,耐心和谦逊。 Larry Wall (1988年1月)宣布,他编写了另一个软件工具,以替代UNIX下的awk和sed等工具,他将它称为“Perl”。 1987 – Perl Unix平台上开发出来的语言,做文字处理...
1
回答
perl调用shell脚本问题

我尝试在perl里面调用另外一个perl脚本,因为这个脚本执行的时间比较长,而且顺序也是放在后面执行的。在脚本里面是这样被调用的: system("noh...

2017/08/09 15:03
8
回答
Perl 模块安装不上

@沙枣 你好,想跟你请教个问题: 我想在windows 环境下编译一个perl程序,安装perl模块很多不成功。 怀疑是网络问题,需要repository...

2017/06/19 19:19
1
回答
linux集群,在A机器上执行脚本或语句,把B机器上的文件拷贝到C机器上?

不执行ssh到B上,如何完成操作?求教大神。

2017/05/19 10:33

没有更多内容

加载失败,请刷新页面

暂无博客

返回顶部
顶部