(Translated by https://www.hiragana.jp/)
Perl - 维基百科,自由的百科全书 とべ转到内容ないよう

Perl

本页使用了标题或全文手工转换
维基百科ひゃっか自由じゆうてき百科ひゃっかぜん
Perl
编程范型多重たじゅう编程范式函數かんすう指令しれいしきめんこう对象 (類別るいべつためもと)、反射はんしゃ过程しき事件じけん驅動くどう泛型
設計せっけいしゃひしげさと·沃尔
じつ作者さくしゃひしげさと·沃尔
发行时间1987ねん12月18にち,​36ねんまえ​(1987-12-18
とうぜん版本はんぽん
  • 5.40.0 (2024ねん6がつ9にち;穩定版本はんぽん)[1]
編輯維基數據鏈接
かたたい系統けいとう动态
じつさくげんC语言
操作そうさけいまたが平台ひらだい
許可きょかしょう艺术许可协 1.0[2][3]
GNU通用つうよう公共こうきょう许可证[4]
ぶんけん扩展めい.pl, .pm, .t, .pod
あみwww.perl.org
啟發けいはつげん
AWKC语言C++LispPascal, sedSmalltalk 80Unix shell
影響えいきょうげん
CoffeeScriptECMAScriptGroovy
JavaScriptJuliaLPCPerl 6PHPPythonRubyWindows PowerShell

Perlこれ高階たかしな通用つうよう直譯ちょくやくしき動態どうたいてきほどしき语言家族かぞく最初さいしょ设计しゃひしげさと·沃尔ためりょうゆずるざいUNIXうえ進行しんこうほうひょう處理しょりてき工作こうさくへんどくさら方便ほうべん決定けってい開發かいはついち通用つうようてき腳本げん,而在1987ねん12月18にち發表はっぴょう目前もくぜん,Perl语言家族かぞく包含ほうがん两个ぶんささえPerl 5以及Perl 6。雖然Perl是正ぜせいしきてきくび字母じぼちぢみりゃく[8]ただし仍有各種かくしゅ各樣かくようてきぎゃくこうくび字母じぼ缩略词包括ほうかつ實用じつようてきひっさげ報告ほうこくげん”。[9]

Perl借用しゃくようりょうCsedawkshell脚本きゃくほんLisp以及很多其他ほどしきげんてき特性とくせい。其中さい重要じゅうようてき特性とくせいPerl内部ないぶ集成しゅうせいりょうせい则表达式てきこうのう,以及巨大きょだいてきだいさんぽうだい码库CPAN

2000ねん开始,ひしげさと·沃尔ちょしゅ開發かいはつPerl 6らい作為さくいPerlてき後繼こうけい,Perl 6げんてき語法ごほうゆう很多轉變てんぺん,也被ためPerl家族かぞくちゅうてきいちげん(Perl 6於2019ねんさらめいためRaku)。[10]

Perl语言应用广泛,涵盖CGI、图形编程、けい管理かんり、网络编程、金融きんゆう生物せいぶつとう领域。よし于其灵活せい,Perlしょう脚本きゃくほん语言なかてきみず军刀[11]

历史[编辑]

早期そうき版本はんぽん[编辑]

ひしげさと·沃尔ざい1987ねん开始うつしさくPerl,时他せいざいUnisysとうほどじょ[12],并且ざい1987ねん12月18にち1.0版本はんぽん发布いたりょうcomp.sources.miscしん闻组[13]。这个语言ざいせっらいてき几年ない很快发展おこりらい

沃尔最早もはやてき确把这个语言しょう为“Pearl”(ちんたま),いん为他希望きぼう自己じこ开发てき语言ゆう一个吉利的名字而且要尽量短小好记,甚至ごえしょうはややめこう虑过所有しょゆう三个及四个字母的词汇,以及自己じこ妻子さいしてき名字みょうじGloria。しか而另いち门语げんPEARLはややめ存在そんざい,为了防止ぼうし混淆こんこう,沃尔ざい改名かいめいPerl。

Perl 2,于1988ねん发布,特色とくしょくゆういち个更このみてきせい则表达式引擎,Perl 3,于1989ねん发布,添加てんかりょう进制すうすえりゅうてき支持しじ

从前,Perlただ一的文档是一个逐渐变长的さつざい1991ねん,《Programming Perl》(许多Perlほどじょ员因ふうめんしょう为“骆驼书”),出版しゅっぱんりょう,而且变成りょういち真正しんせいてきPerl语言てき参考さんこう资料。どう时,Perl版本はんぽんごう变成りょう4,いん为这个语げんてき重大じゅうだいあらため变,而是いん为这ほん书的特殊とくしゅ义。

早期そうきてきPerl 5[编辑]

Perl 4てきいち系列けいれつ维护てき版本はんぽんさいきさきいちはん1993ねんてきPerl 4.036。时,沃尔废弃りょうPerl 4,开始开发Perl 5。Perl 5てき最初さいしょはじめ设计续到りょう1994ねん。《perl5-porters邮件れつひょう于1994ねん5がつ为了共同きょうどう移植いしょくPerl 5而建立こんりゅう。这将主要しゅようてき论坛とめ给了Perl 5てき开发,维护,移植いしょく[14]

Perl 5.000于1994ねん10がつ17にち发布[15]。这是一个几乎完全重写了的かい释器,而且它给这个语言添加てんかりょう很多しんてき特性とくせい包括ほうかつ对象,引用いんよう局部きょくぶ变量かたぎ。很重要地ようちかたぎ提供ていきょうりょう一个不用修改直译器就可以扩展语言的方法。这使とく核心かくしんてきちょく译器非常ひじょう稳定,そく使つかい它允许一般いっぱんてきPerlほどじょ添加てんかしんてき语言特性とくせい。从此,Perl 5てき开发就活しゅうかつ跃起らいりょう

Perl 5.001于1995ねん3がつ13にち发布。Perl 5.002于1996ねん2がつ29にち发布,带有さんすう类型てき特性とくせい。这允许模块的作者さくしゃうつしぞうPerl内部ないぶ命令めいれい智能ちのうてきほどじょ。Perl 5.003于1996ねん6がつ25にちさく为一个安全更新的版本发布。

Perl 5历史ちゅうさい重要じゅうようてき事件じけんいち支持しじりょうかたぎざい1995ねん10がつ26にちCPANいち个发ぬのPerl块的网站,建立こんりゅうりょう;截至2015ねん11月,它已经有ちょう过12457个作しゃうつしてき157794个模块了[16]

Perl 5.004于1997ねん5がつ15にち发布,添加てんかりょうUNIVERSALつつめ,这给りょうPerl一个所有的类的基础和要求使用模块的特定版本的能力。另一个重要的开发是包括了CGI.pmかたぎ[17]ゆうじょ于Perl发展为一个CGI脚本きゃくほん语言[18]

Perl现在也支持しじざいMicrosoft Windowsかず其它いち操作そうさけいしも运作[17]

Perl 5.005于1998ねん7がつ22にち发布。这个版本はんぽん包括ほうかつりょういち个更このみてきせい引擎,一个编译系统(つうB::*かたぎ块),qr//せい引用いんよう操作そうさ,一个基础模块的选集,并且また支持しじりょう一些其它的操作系统,包括ほうかつBeOS[19]

2000ねんいたりいま[编辑]

主要しゅよう版本はんぽん さいきさき更新こうしん[20]
きゅう版本はんぽんさい支援しえん 5.5 2004ねん2がつ23にち (2004-02-23)
きゅう版本はんぽんさい支援しえん 5.6 2003ねん11月15にち (2003-11-15)
きゅう版本はんぽんさい支援しえん 5.8 2008ねん12月14にち (2008-12-14)
きゅう版本はんぽんさい支援しえん 5.10 2009ねん8がつ23にち (2009-08-23)
きゅう版本はんぽんさい支援しえん 5.12 2012ねん11がつ10日とおか (2012-11-10)
きゅう版本はんぽんさい支援しえん 5.14 2013ねん3がつ10日とおか (2013-03-10)
きゅう版本はんぽんさい支援しえん 5.16 2013ねん3がつ11にち (2013-03-11)
きゅう版本はんぽんさい支援しえん 5.18 2014ねん10がつ2にち (2014-10-02)
きゅう版本はんぽんさい支援しえん 5.20 2015ねん9がつ12にち (2015-09-12)
きゅう版本はんぽんさい支援しえん 5.22 2017ねん7がつ15にち (2017-07-15)
きゅう版本はんぽんさい支援しえん 5.24 2018ねん4がつ14にち (2018-04-14)
きゅう版本はんぽんさい支援しえん 5.26 2018ねん11月29にち (2018-11-29)
きゅう版本はんぽんさい支援しえん 5.28 2020ねん6がつ1にち (2020-06-01)
きゅう版本はんぽんさい支援しえん 5.30 2020ねん6がつ1にち (2020-06-01)
きゅう版本はんぽんさい支援しえん 5.32 2021ねん1がつ23にち (2021-01-23)
きゅう版本はんぽんさい支援しえん 5.34 2023ねん11月29にち (2023-11-29)
きゅう版本はんぽん,仍被支援しえん 5.36 2023ねん11月29にち (2023-11-29)
とうぜん版本はんぽん 5.38 2023ねん11月29にち (2023-11-29)
格式かくしき
きゅう版本はんぽん
きゅう版本はんぽん,仍被支援しえん
とうぜん版本はんぽん
最新さいしん预览版本はんぽん
未来みらい版本はんぽん

Perl 5.6于2000ねん3がつ22にち发布。だいてきおさむあらため包括ほうかつ64支持しじUnicodeくし支持しじだいぶんけん支持しじそくちょう过2GiBてきぶんけん)以及“our”关键[21][22]ざい开发Perl 5.6てき时候,开发组决じょう版本はんぽん名称めいしょう作成さくせい类似其它开源项目的もくてきざい5.005_63はんきさきした一个版本变成了5.5.640,计划开发版本はんぽんよう奇数きすう,稳定版本はんぽんよう偶数ぐうすう

2000ねん时,ひしげさと·沃尔询问しゃ对Perlしん版本はんぽんてきけん议。这个进程てき结果ざい361 RFC(评论请求)ぶんけんさと(这个ぶんけん以指导Perl 6てき开发)。2001ねん[23]工作こうさく开始于设计Perl 6,一系列的文件概述了新一代Perlさとてきあらため变和设计。它们さくいちRFC展示てんじてき,而不一个正式文档。这时,Perl 6てき存在そんざい还只一门语言的概述。

Perl 5.8最初さいしょ于2002ねん7がつ18にち发布,从此,每年まいとしざいゆういち更新こうしん。Perl 5.8てきさいきさきいちはん5.8.9,发布于2008ねん12月14にち。Perl 5.8あらため进了Unicode支持しじ添加てんかりょういち个新てきIO处理つくえせいしんてき线程处理,ひさげだかりょう数字すうじ精度せいど添加てんかりょう一些新模块[24]

2004ねん工作こうさく开始于提よう——ばららいてきけん议文けんただしきさきらい变成りょうPerl 6语言てき详述。2005ねん2がつから,开始开发Pugsいち个用HaskellうつしてきPerl 6ちょく译器[25]。这是最初さいしょてきいち个Perl 6实现。这个努力どりょく停止ていし于2006ねん[26]

2007ねん12月18にち,Perl 1.0てき20周年しゅうねん纪念,Perl 5.10.0发布りょう。Perl 5.10.0包括ほうかつりょう显著てきしん特性とくせい,这拉きんりょうPerl 56これ间的距离。这些特性とくせい包括ほうかついちswitch语句えいswitch statementさけべ做“given/when”),せい则表达式てき更新こうしん智能ちのうひきはい操作そうさ“~~”[27][28]どう时,另一个Perl 6てき实现,Rakudo Perlてき开发开始りょう一起かずき使用しようParrotきょ拟机开发。从2009ねん11月开始,Rakudo Perlやめ经是每月まいつきいち更新こうしん,现在やめ经是Perl 6てきさいかんせいてきいち个实现了。

Perl 5开发过程ちゅうてき一次大修改在Perl 5.11;开发しゃ使用しようりょう每月まいつき更新こうしんてき形式けいしき,这样就可以提ぜん预知3个月以内いないてき发布

2010ねん4がつ12にち,Perl 5.12.0发布りょう。显著てきひさげます包括ほうかつしんてきpackage NAME VERSION语法,Yada Yada操作そうさ有意ゆういよううらない标记ぼつゆう实现てきだい码),だまuse strict;ざいuse 5.012;时)かんせいてきY2038编译,せい则转じゅう载,DTrace支持しじUnicode5.2[29]。Perl 5.12.3于2011ねん1がつ21にち发布;它包括ほうかつりょう新版しんぱんてき块和一些文档的改变[30]版本はんぽん5.12.4于2011ねん6がつ20日はつか发布。

Perl 5.14发布于2011ねん5がつ14にち。这个ぶんささえてきさいきさきいちはん,5.14.2,发布于2011ねん9がつ26にち

Perl 5.16发布于2012ねん5がつ20日はつか。显著てきしん特性とくせい包括ほうかつ指定していいち个perlてきばん本来ほんらい拟,这允许用户更しんperlてき版本はんぽんただし以运ぎょう可能かのうかいけんようてきろう脚本きゃくほん[31]。Perl 5.16也更しんりょう核心かくしん部分ぶぶんらい支持しじUnicode 6.1[31]

名称めいしょう[编辑]

Perl原名げんめいさけべ“Pearl”。ひしげさと·沃尔そう给这个语げんおこり一个有正面意思的短的名字;こう虑了(并且否定ひていりょう字典じてんさとごといち个3—4个字ははてき词。也考虑用てき妻子さいしGloriaてき名字みょうじ命名めいめい。沃尔ざいPerlかんかた发布ぜん发现りょう现有てきPEARL语言,并且あらため变了这个名字みょうじ[32]

とうゆびだい这个语言てき时候,名字みょうじ通常つうじょうだいうつしてきPerl),就像专有めい词一样。とうゆびだい这个ちょく译器本身ほんみてき时候,这个名字みょうじ通常つうじょうしょううつしてきperl),いん为大部分ぶぶん类Unixぶんけんけい统都区分くぶん大小だいしょううつしてきざいProgramming PerlえいProgramming Perlてきだいいちはん发布まえようperlゆびだい这个语言也很普遍ふへんRandal L. SchwartzえいRandal L. Schwartzはいばん时将这个语言てき名字みょうじざい书中うつしなりだいうつしてき以便理解りかいきさきらい,这个大小だいしょううつしてき别就なり为正规的りょう[33]

ぜんだいうつしてき“PERL”ゆうそう议的,而文档中说明“PERL”对的[33],一些核心的社区成员将其视为外行的标志[34]。这个名字みょうじ偶尔かい视为“Practical Extraction and Report Language”てき缩写,就像ぶん[32]顶端一些纸质书本说的那样[35]。一些全称被建议作为正式名称,包括ほうかつ沃尔自己じこてきかそけだまてき“Pathologically Eclectic Rubbish Lister”[36]てき确,沃尔要求ようきゅう这个名字みょうじ启示许多不同ふどうてき扩展[37]

骆驼标志[编辑]

骆驼标志

Programming Perl》,ゆかりおく莱利媒体ばいたい发布,特色とくしょくふうめんゆういち骆驼てき图片,いん而被しょうさく“骆驼书”[38]。这张骆驼てき图片やめ经成为了Perlかんかたてき标志いちくろきゃくてき标志,这出现在T恤衫其它衣服いふくじょう

おく莱利ようゆう此圖ぞう商標しょうひょうなみ且宣たたえただゆうざい捍衛「符號ふごうかんせいせいざいかい行使こうし法律ほうりつじょうてき權力けんりょく[39]おく莱利允許いんきょ商標しょうひょうざい商業しょうぎょう目的もくてき前提ぜんてい使用しようなみ同時どうじきょうりょうProgramming Republic of Perlてき圖像ずぞう以及Powered by Perlてき按鈕[40]Perlてきいち識別しきべつ符號ふごうひつじよし为《Intermediate Perl》一书的封面是一只羊驼[41]

ようねぎ标志[编辑]

ようねぎ标志

Perl基金ききんかい拥有一个可选的标志,いち个洋ねぎまこと许它てき站点,Perl MongersPerlMonks,Perl.org其它网站使用しよう[42]

Perl简介[编辑]

Perl语言てき中心ちゅうしん思想しそう[编辑]

Perl语言てき中心ちゅうしん思想しそう集成しゅうせいいち话「TMTOWTDI」:

There's More Than One Way To Do It.
ただ一种方法來做一件事。)

Perlてき作者さくしゃひしげさと·沃尔けん议可以把这个缩写词念なり「Tim Toady」。这句话后扩充なり:

There's more than one way to do it, but sometimes consistency is not a bad thing either.
ただ一种方法來做一件事,ただしゆう保持ほじいち致也错。)

  • TIMTOWTDIBSCINABTE,发音为“Tim Toady Bicarbonate”[43].

另一个Perlほどじょ员常つね想起そうきてきPerlぞく语是:

Easy things should be easy, and hard things should be possible.
(简单てき事情じじょう应该简单てき,复杂てき事情じじょう应该つき可能かのう变得简单。)

优点[编辑]

为了实现这样てき标,并且またいん为Larry Wall本人ほんにん也是いち个语げんがく设计Perl语言时使ようりょう很多语言学的がくてきおもえ维。そうCPascal这样てきこう级”语言而言,Perl语言直接ちょくせつ提供ていきょう泛型變數へんすう、动态すう组、Hashひょうとうさら便びんとしてき编程元素げんそ。Perl具有ぐゆう动态语言てき强大きょうだい灵活てき特性とくせい,并且还从C/C++、Basic、Pascalとう语言中分なかぶん别借鉴了语法规则,从而提供ていきょうりょう许多冗餘语法。使つかいとくほどじょ员可以忽りゃく计算つくえ内部ないぶ資料しりょうそん储、类型、处理方法ほうほう、运算规则、甚至ないそんえつかいとうとうてき细节,而将思考しこう中心ちゅうしん在所ざいしょ需要じゅようてきほどじょ逻辑じょう。就这いちてん而言,很多Perlほどじょ员认为目まえただゆうPerl、Pythonひとし泛型语言才能さいのうしょう为“こう级”语言,而CPascal甚至C++这些ただのうしょう为“中高なかだか级”语言而已。以说,ざい统一變數类型和掩盖运算细节方面,Perl做得Pythonさら为出しょく

よし于从其他语言大量たいりょう鉴了语法,使つかいとく从其ほか编程语言转到Perl语言てきほどじょ员可以迅そくじょう手写しゅしゃほどじょ完成かんせいにん务,这使とくPerl语言一门容易用的语言。

缺点けってん[编辑]

也正いん为Perlてき灵活せい“过度”てき冗余语法,也因此获とくりょう仅写(write-only)てきよしほまれ”,いん为Perlほどじょ以写とく随意ずいいれい如,变量声明せいめい就可以直接ちょくせつ使用しよう),ただし可能かのうしょううつし一些字母就会得到意想不到的结果(而不报错),许多Perlほどじょてきだい码令じん难以阅读,实现しょうどうこうのうてきほどじょだい码长以相じゅうばいひゃくばい,这就れいほどじょてき维护しゃ(甚至编写しゃ)难以维护。

どう样的,いん为Perl这样随意ずいいてきとくてん可能かのうかい导致いち些Perlほどじょ员遗忘语ほう,以至于不とく经常查看Perlしゅさつ。对此,《Learning Perl》一书里建议经常使用Perl编程。

けん议的かい决方ほうざいほどじょうら使用しようuse strict;以及use warnings;,并统いちだい码风かく使用しよう库,而不自己じこ使用しようかた编码」。Perlどう样可以将だい码书うつしとくぞうPythonあるRubyとう语言いち样优みやび

Perlてき语法[编辑]

PerlてきHello Worldほどしき[编辑]

下面かめん一个在標準輸出設備上輸出Hello Worldてき簡單かんたんほどしき,這種ほどしき通常つうじょう作為さくい開始かいし學習がくしゅうほどしきげんてきだいいちはんれい

#!/usr/bin/env perl
print "Hello, world!\n";

如果ゆうperl 5.10以上いじょうてき版本はんぽん,也可以这样:

#!/usr/bin/env perl
use 5.010;
say "Hello, world!";

这个ほどじょはた输出いちぎょうくし:“Hello, world!”,以及いち个换ぎょう

变量[编辑]

Perlいち无类がた语言(untyped),换句话说,ざい语言层面じょう,Perl和大かずひろ多数たすう编程语言不同ふどう变量ぶんなり整数せいすう浮点すうひとしひとし,而只ゆう一种能接受各种类型数据的“无类がた”变量。Perlてき变量以$开头。れい$a=5;$b="Hello";$c=3.2;$d='\n这里并不换行';みやこただし合法ごうほうてきPerl语句。

Perlちゅうかく种变量的りょうてき运算也很自由じゆうすう含有がんゆうすうてきくしとうこうてき以把数字すうじくし参与さんよ数学すうがく计算,也可以反,让数字すうじ参与さんよくしてき构成操作そうさ

じょ单个变量(Perlしょう为标りょうScalar」)これがい,Perl还有两种集合しゅうごう类型,ふん别是すう组(Arrayよう@开头)かず关联すう组(Associative arrayあるものたたえHashよう%开头。类似C++11てきSTL 无序ひょうunordered_mapPythonてき字典じてんDictionary」)。かず组可以内いない任意にんい变数目的もくてき变量,并以其存储顺じょさく为索引以完成かんせい常数じょうすう时间てき定位ていい;而Hashひょう,则可以在变量建立こんりゅういちいちうつ,就像字典じてんいち样,不同ふどうてき变量按照们的逻辑关系组织おこりらい,并以さく为“键”てき变量进行索引さくいん完成かんせい常数じょうすう时间てき定位ていい

另外,Perl还有一种特殊的类型,引用いんよう(reference),类似于指针,とうさく标量处理,指向しこう标量(含引よう)、かず组、Hashとうにんなん类型。如:

$foo = \$bar; print $$foo;
$foo = \@bar; print @$foo;
$foo = \%bar; print %$foo;
$foo = \&bar; print $foo->(); print &$foo;

引用いんようてきこう处在于,はた它传递给函数かんすうきさき函数かんすう以修あらため指向しこうてき变量。而如はて传递普通ふつう变量,おさむあらためてき值只ざい函数かんすうない有效ゆうこう

sub foo
{
    my $var = shift;
    $$var = '1';
}
my $foo = '2';
my $var = \$foo;
print $$var;
foo ($var);
print $foo;

输出“21”,そくfoo()ないあらため变了$foo。

判断はんだん语句[编辑]

いん为Perl大量たいりょうてき创造冗余てき语法,并且从其语言ちゅう大量たいりょうてき鉴语ほう使つかいとくPerlてき语法极其丰富灵活。Perl共有きょうゆうれつ几种判断はんだん语句:

  • if
if ($hour > 22) {
    print "should sleep...\n";
}
  • if语句
print "hello" if $guest >= 1;
  • unless
unless ($credit > 100) {
    print "You can not graduate!\n";
}
  • unless语句
print "eat\n" unless $food == 0;
  • given/when(语句及区块)
use 5.010;
given ($foo)
{
    say 'a' when 'a';
    when (/b/) { say 'b'; } #when以写なり语句ある
    default { say 'not match'; } #ただ以写なる块。
}

よし逻辑運算うんざんもとてき作用さよう,还可以写不用ふよう关键ifあるunlessてき判断はんだん语句,如常用じょうようてき开文けん语句:

open DATA, '<', $filename or die "Can't open $filename: $!\n";

循环语句[编辑]

Perlちゅうてき循环语句也是非常ひじょうてき丰富。主要しゅようゆう

Perl自己じこてきforあるものforeach循环(两个完全かんぜんいち样):

@group = 1 .. 10;
for (@group) {
    print "$_\n";
}
print "$_\n" for @group;
foreach (@group) {
    print "$_\n";
}

从C语言鉴来てきfor循环(またうつしさくforeach,两个完全かんぜんいち样):

for ($i = 0; $i < 10; $i++) {
    print "$group[$i]\n";
}

while循环:

$i=0;
while ($i < 10) {
    print "$group[$i]\n";
    $i++;
}

do...while循环:

$i = 0;
do {
    print "$group[$i]\n";
    $i++;
} while ($i < 10);

until循环:

$i = 0;
until ($i == 10) {
    print "$group[$i]\n";
    $i++;
}

从PASCAL语言鉴来てきdo...until循环:

$i = 0;
do {
    print "$group[$i]\n";
    $i++;
} until ($i == 10);

甚至还有利用りよう动态语言特性とくせいようmap函数かんすう也可以做循环:

map { print "$_\n" } @group;

其实还有其他てき循环方式ほうしき。总而ごと,就是TMTOWTDI

Perlてき应用[编辑]

Perl主要しゅよう应用ざいUnix平台ひらだいかず网页ちゅうPHPCGI)。Perl拥有海あるみ量的りょうてきかたぎ支持しじざいかい决问题时非常ひじょう方便ほうべんCPANゆう很多Perl块。

以Perl编写てき软件[编辑]

Perl Data Language[编辑]

Perl Data Language(简称PDL)Perlてきいち外接がいせつかたぎ,也是对Perlこうのうてきいち重要じゅうようひらけてん。它使とくPerl语言直接ちょくせつ对2いたり维的のり直接ちょくせつ操作そうさ,进行快速かいそくてきのり阵运さん完成かんせいもと础的Perlしょ不能ふのう完成かんせいてき运算,だいだいつぶせてんりょうPerlてき适用范围。所以ゆえんPDL本身ほんみ也是很多其他块的もと础。

而且PDL提供ていきょうりょうあずか很多其他软件つつみてきせっこうれいFFTWいち快速かいそくでんたてかのう变换てき软件つつみ),またあるものこれMesaLinuxうえてきOpenGL三维图形渲染包),这些つつみげん来往らいおう往仅提供ていきょうC/C++语言せっこう。这一こうのう使PDLなり为拓てんPerlこうのうてきいち个中间层。

Perlてきしゃ文化ぶんか[编辑]

Perl诗经[编辑]

CげんいちようざいPerlかいなん以讀懂的ほどしき碼大さい有名ゆうめいてき活動かつどう近似きんじなん以讀懂的ほどしき碼,ただし方向ほうこう不同ふどう,Perl Poetry以被perlへんやくてきしんてき詩經しきょう通常つうじょうかいざい[1]页面そん档备份そん互联网档あんもう發表はっぴょう[44]

JAPH[编辑]

Just another Perl hacker(另一个Perlくろきゃくいち个和くに际C语言混乱こんらんだい码大赛ゆうちゃくしょうどう精神せいしんてきしゃ文化ぶんか。Perlほどじょつう过写JAPHだい码,ぶんとおる自己じこてき编程わざ术。[45]

競爭きょうそうたい[编辑]

いんため許多きょたPerlほどじょてきだい碼難以閱讀,じょう它的めんこう对象こうのうため真正しんせいてきめんこう对象(ただぐみてき模擬もぎ),於是很多じん拿Perl其他動態どうたいげんらい比較ひかく

さい常見つねみてき比較ひかく對象たいしょうPython有人ゆうじんうつしりょうへん文章ぶんしょうさけべ《What's wrong with Perl》[46]指出さしでPerlてき缺點けってんつづみ勵別じんがくPython。著名ちょめいくろきゃくほこりさとかつ·斯蒂芬·かみなりこうむうつしりょう《Why Python?》[47],該文ちゅう一個重要的比較對象就是Perl。《A Byte Of Python》[48]さとてき《Why Not Perl?》[49]也把PythonPerl较。

Rubyてき作者さくしゃ松本まつもと行弘ゆきひろ,Matz)甚至ちょくみとめそうRuby作為さくいPerlてき後繼こうけいしゃ[50]

Raku旧名きゅうめいPerl 6)[编辑]

Camelia,Raku项目的もくてき标志[51]

2000ねん开始,ひしげさと·沃尔ちょしゅ開發かいはつPerl 6らい作為さくいPerlてき後繼こうけい,2019ねんさらめいためRaku

ざいPerlてきかん网介绍中,RakuPerl 5てきいち版本はんぽん,而是あずかPerl 5并行开发てき另一种编程语言[52] Rakuさら好地こうち支持しじめんこう对象,ゆう专用于定义类てき語法ごほう

class Foo is Universal { # inherit form Universal
    has $.member_variable

    method member_function {
        print "some string";
    }
}

Raku以明确定义变りょう类型,とう类型ひきはい,编译时报错[53]

另外,Raku提供ていきょうりょう不同ふどうてきせい则表达式语法,しんてき语法しょうさく規則きそく」,并且まこと使用しようしゃざいせい则表达式ちゅう加入かにゅうそらかくとう以便阅读,还可以命名めいめい一个正则表达式方便调用[54]

Rakuちゅうてきひかえせいりゅうほど循环てき判断はんだん条件じょうけんてきくくごう选:

if $percent > 100  {
    say "weird mathematics";
}
for 1..3 {
    # using $_ as loop variable
    say 2 * $_;
}
for 1..3 -> $x {
    # with explicit loop variable
    say 2 * $x;
}
while $stuff.is_wrong {
    $stuff.try_to_make_right;
}

ただし如果加入かにゅうくくごう不能ふのう緊跟ざい关键きさきめん,而要そらいちかくいん为用foo()這樣てき形式けいしき,编译识别为调よう函数かんすうfoo,而不かん它是关键[55]

if ($hour > 22) { #正確せいかく
    say 'should sleep...';
}
if($hour > 22) { #錯誤さくご
    say 'should sleep...';
}

参考さんこう文献ぶんけん[编辑]

  1. ^ "perl v5.40.0 is now available"; 作者さくしゃせい名字みょうじくし: Graham Knop; 出版しゅっぱん: 2024ねん6がつ9にち; 检索: 2024ねん6がつ10日とおか.
  2. ^ The "Artistic License" - dev.perl.org. dev.perl.org. [2018-12-17]. (原始げんし内容ないようそん档于2018-07-24). 
  3. ^ Artistic页面そん档备份そん互联网档あん) - file on the Perl 5 git repository
  4. ^ Perl Licensing. dev.perl.org. [2011-01-08]. (原始げんし内容ないようそん于2011-01-22). 
  5. ^ perl 5.36.0 is now available. www.nntp.perl.org. [2022-05-28]. (原始げんし内容ないようそん于2022-07-05). 
  6. ^ Perl 5.34.1 is now available!. www.nntp.perl.org. [2022-03-13]. (原始げんし内容ないようそん档于2022-04-11). 
  7. ^ perl 5.37.0 is now available. www.nntp.perl.org. [2022-05-28]. (原始げんし内容ないようそん于2022-07-05). 
  8. ^ Lapworth, Leo. General Questions About Perl. Perl FAQ. Perl.org. [February 24, 2012]. (原始げんし内容ないようそん于2013-06-22). 
  9. ^ perl(1): Practical Extraction/Report Language - Linux man page. Linux.die.net. [2013-07-23]. (原始げんし内容ないようそん于2013-06-22). 
  10. ^ Perl Core Development - Perl 6. [2006-02-10]. (原始げんし内容ないようそん于2006-02-07). 
  11. ^ Sheppard, Doug. Beginner's Introduction to Perl. O'Reilly Media. 2000-10-16 [2008-07-27]. (原始げんし内容ないようそん于2008-06-04). 
  12. ^ Wall, Larry, Tom Christiansen and Jon Orwant. Programming Perl, Third Edition. O'Reilly Media. July 2000. ISBN 0-596-00027-8. 
  13. ^ comp.sources.unix. Google Groups. Google. 1988-02-01 [2011-01-13]. (原始げんし内容ないようそん于2013-05-10). 
  14. ^ perl.perl5.porters archive. perl.org. [2011-01-13]. (原始げんし内容ないようそん于2011-05-01). 
  15. ^ perlhist - the Perl history records. Perl 5 version 12.2 documentation. perldoc.perl.org. [2011-01-21]. (原始げんし内容ないようそん于2011-01-13). 
  16. ^ CPAN. CPAN. [2012-04-14]. (原始げんし内容ないようそん档于2011-02-26). 
  17. ^ 17.0 17.1 perl5004delta - what's new for perl5.004. Perl 5 version 12.2 documentation. perldoc.perl.org. [2011-01-08]. (原始げんし内容ないようそん于2011-02-27). 
  18. ^ Patwardhan, Nathan; Siever, Ellen; Spainhour, Stephen. Perl in a Nutshell, Second Edition. O'Reilly Media. 2002 [2011-01-08]. ISBN 978-0-596-00241-1. 
  19. ^ perl5005delta - what's new for perl5.005. Perl 5 version 12.2 documentation. perldoc.perl.org. [2011-01-21]. (原始げんし内容ないようそん于2011-02-03). 
  20. ^ Perl Source. cpan.org. [2023-11-26]. (原始げんし内容ないようそん于2024-05-21). 
  21. ^ perl56delta - what's new for perl v5.6.0. Perl 5 version 12.2 documentation. perldoc.perl.org. [2011-01-21]. (原始げんし内容ないようそん于2011-02-02). 
  22. ^ perl56delta - what's new for perl v5.6.x. Perl 5 version 12.2 documentation. perldoc.perl.org. [2011-01-21]. (原始げんし内容ないようそん于2010-11-18). 
  23. ^ Wall, Larry. Apocalypse 1: The Ugly, the Bad, and the Good. [2011-01-08]. (原始げんし内容ないようそん于2010-11-23). 
  24. ^ perl58delta - what is new for perl v5.8.0. Perl 5 version 12.2 documentation. perldoc.perl.org. [2011-01-21]. (原始げんし内容ないようそん于2010-11-21). 
  25. ^ A Plan for Pugs. O'Reilly Media. 2005-03-03 [2011-01-27]. (原始げんし内容ないようそん于2012-09-08). 
  26. ^ Tang, Audrey. Re: How to Implement Perl 6 in Ten Years. PerlMonks. 2010-04-21 [2011-01-03]. (原始げんし内容ないようそん于2011-05-11). 
  27. ^ perl5100delta - what is new for perl 5.10.0. Perl 5 version 12.2 documentation. perldoc.perl.org. [2011-01-08]. (原始げんし内容ないようそん于2010-12-21). 
  28. ^ perlsyn - Perl syntax. Perl 5 version 12.2 documentation. perldoc.perl.org. [2011-01-21]. (原始げんし内容ないようそん于2013-08-26). 
  29. ^ perl5120delta - what is new for perl v5.12.0. Perl 5 version 12.2 documentation. perldoc.perl.org. [2011-01-08]. (原始げんし内容ないようそん于2011-01-04). 
  30. ^ perldelta - what is new for perl v5.12.3. Perl 5 version 12.2 documentation. perldoc.perl.org. [2011-01-08]. (原始げんし内容ないようそん于2011-06-08). 
  31. ^ 31.0 31.1 perldelta - what is new for perl v5.16.0. Perl 5 version 16.0 documentation. search.cpan.org. [2012-05-21]. (原始げんし内容ないようそん于2012-05-24). 
  32. ^ 32.0 32.1 Richardson, Marjorie. Larry Wall, the Guru of Perl. Linux Journal. 1999-05-01 [2011-01-03]. (原始げんし内容ないようそん档于2011-01-26). 
  33. ^ 33.0 33.1 perlfaq1: What's the difference between "perl" and "Perl"?. perldoc.perl.org - Perl 5 version 12.2 documentation. [2012-07-02]. (原始げんし内容ないようそん于2012-07-12). 
  34. ^ Schwartz, Randal. PERL as shibboleth and the Perl community. PerlMonks. [2007-06-01]. (原始げんし内容ないようそん于2007-09-27). 
  35. ^ Steve McConnell (2004) Code Complete, 2nd ed., Microsoft Press, p. 65.
  36. ^ Wall, Larry. perl - The Perl language interpreter. Perl 5 version 12.2 documentation. [2011-01-26]. (原始げんし内容ないようそん于2011-01-20). 
  37. ^ Wall, Larry. Re^7: PERL as shibboleth and the Perl community. PerlMonks. [2011-01-02]. (原始げんし内容ないようそん于2011-05-11). 
  38. ^ Schwartz, Randal L; Phoenix, Tom; foy, brian. Learning Perl, Third Edition. ISBN 978-0-596-00132-2. 
  39. ^ O'Reilly—The Perl Camel Usage and Trademark Information. [2008-11-12]. (原始げんし内容ないようそん于2005-12-26). 
  40. ^ Index of /images/perl
  41. ^ Intermediate Perl. [2012-07-03]. (原始げんし内容ないようそん于2012-06-26). 
  42. ^ Perl Trademark. The Perl Foundation. [2011-01-09]. (原始げんし内容ないようそん档于2011-05-03). 
  43. ^ Can EPO (or TPF) tame TIMTOWTDI?. dev411.com. 2009-01-24 [2012-07-03]. (原始げんし内容ないようそん档于2012-06-25). 
  44. ^ The Lighter Side of Perl Culture (Part V): Poetry. [2015-11-19]. (原始げんし内容ないようそん于2015-11-19). 
  45. ^ The Lighter Side of Perl Culture (Part II): JAPH. [2015-11-19]. (原始げんし内容ないようそん于2015-11-19). 
  46. ^ What's wrong with Perl页面そん档备份そん互联网档あん
  47. ^ Why Python?页面そん档备份そん互联网档あん
  48. ^ A Byte Of Python页面そん档备份そん互联网档あん
  49. ^ Why Not Perl?页面そん档备份そん互联网档あん
  50. ^ わがみとめためRuby這個名字みょうじ作為さくいPerlこれてき一門語言的名字真是再恰當不過了。」--摘錄てきろくO'Reilly訪問ほうもんMatz。页面そん档备份そん互联网档あん
  51. ^ Perl 6. The Perl 6 Project. [2011-02-27]. (原始げんし内容ないようそん档于2011-02-21). 
  52. ^ About Perl. [2015-11-19]. (原始げんし内容ないようそん于2015-11-06) えい语). "Perl" is a family of languages, "Perl 6" is part of the family, but it is a separate language which has its own development team. 
  53. ^ Perl 5 to 6. [2012-07-04]. (原始げんし内容ないようそん于2012-07-03). 
  54. ^ Perl 5 to 6. [2012-07-04]. (原始げんし内容ないようそん于2012-07-03). 
  55. ^ Perl 5 to 6. [2012-07-04]. (原始げんし内容ないようそん于2012-07-03). 

まいり[编辑]

外部がいぶ链接[编辑]

ちゅうぶん資源しげんしゃぐん[编辑]

英文えいぶん資源しげんしゃぐん[编辑]