(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げんてき中心ちゅうしん思想しそう整合せいごうためいちばなし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]

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). 

まいり

[編輯へんしゅう]

外部がいぶ連結れんけつ

[編輯へんしゅう]

ちゅうぶん資源しげんしゃぐん

[編輯へんしゅう]

英文えいぶん資源しげんしゃぐん

[編輯へんしゅう]