必威电竞|足球世界杯竞猜平台

perl
來源:互聯(lián)網(wǎng)

Perl一種功能豐富的計(jì)算機(jī)程序語言,運(yùn)行在超過100種計(jì)算機(jī)平臺(tái)上,適用廣泛,從最初是為文本處理而開發(fā)的,現(xiàn)在用于各種任務(wù),包括系統(tǒng)管理,Web開發(fā),網(wǎng)絡(luò)編程,GUI開發(fā)等。

發(fā)展歷程

2021年1月,Perl 基礎(chǔ)架構(gòu)博客 Perl NOC 報(bào)道稱,Perl.com 官網(wǎng)被劫持,不再指向它原本應(yīng)該指向的地方。它不再指向 Perl 相關(guān)的新聞網(wǎng)站,而被指向了一個(gè)停車網(wǎng)站。更嚴(yán)重的是,它被用于分發(fā)惡意軟件。

主要功能

Perl最初的設(shè)計(jì)者為拉里·沃爾(Larry Wall),他于1987年12月18日發(fā)表。Perl借取了C、SEDAwk殼層 腳本語言以及很多其他程序語言的特性。其中最重要的特性是它內(nèi)部集成了正則表達(dá)式的功能,以及巨大的第三方代碼庫CPAN。

Perl它是術(shù)語,而不僅僅是簡(jiǎn)寫,Perl的創(chuàng)造者,Larry Wall提出第一個(gè),但很快又?jǐn)U展到第二個(gè)。那就是為什么‘’Perl‘’沒有所有字母都大寫。沒必要爭(zhēng)論哪一個(gè)正確,Larry兩個(gè)都認(rèn)可。

perl特點(diǎn)

Perl是由Larry Wall設(shè)計(jì)的,并由他不斷更新和維護(hù)的編程語言。

Perl具有高級(jí)語言(如C)的強(qiáng)大能力和靈活性。事實(shí)上,你將看到,它的許多特性是從c語言中借用來的。

Perl與腳本語言一樣,Perl不需要編譯器和鏈接器來運(yùn)行代碼,你要做的只是寫出程序并告訴Perl來運(yùn)行而已。

Perl提供腳本語言(如sed和Awk)的所有功能,還具有它們所不具備的很多功能。Perl還支持sed到Perl及awk到Perl的翻譯器。

簡(jiǎn)而言之,Perl像C一樣強(qiáng)大,像awk、sed等腳本描述語言一樣方便。

perl開源

Perl的解釋程序是開放源碼的免費(fèi)軟件,使用Perl不必?fù)?dān)心費(fèi)用。Perl能在絕大多數(shù)操作系統(tǒng)運(yùn)行,可以方便地向不同操作系統(tǒng)遷移。

Perl是一種能完成任務(wù)的語言。從一開始,Perl就設(shè)計(jì)成可以把簡(jiǎn)單工作簡(jiǎn)單化,同時(shí)又不失去處理困難問題能力的語言。它可以很容易操作數(shù)字,文本,文件和目錄,計(jì)算機(jī)和網(wǎng)絡(luò),特別是程序的語言。這種語言應(yīng)該很容易運(yùn)行外部的程序并且掃描這些程序的輸出獲取感興趣的東西。而且它還應(yīng)該很容易能把這些你感興趣的東西交給其它程序做特殊的處理。當(dāng)然,這種語言還應(yīng)該很容易在任何現(xiàn)代的操作系統(tǒng)上可以移植地編譯和運(yùn)行。

perl語法

變量定義,以$號(hào)開頭,如:$num =1;

數(shù)組定義,以@開頭,如:@array = (1,2,3);

數(shù)組元素調(diào)用 $array[index],其中index表示數(shù)組下標(biāo),如上例,$array的值是1

哈希定義,以%開頭,如:%hash=("a",1,"b",2);

哈希調(diào)用 %hash,其中key表示鍵,多用字符串表示,注意hash的key必須具有獨(dú)一性,但value可以不獨(dú)一,為此hash的key經(jīng)常被用來做獨(dú)一化處理,如上例中的"a", "b", values是key對(duì)應(yīng)的值,如1,2。$hash{"b"}的值是2。

perl缺點(diǎn)

也正是因?yàn)镻erl的靈活性和‘’過度‘’的冗余語法,也因此獲得了write-only的‘’美譽(yù)‘’,因?yàn)樵S多Perl程序的代碼令人難以閱讀,實(shí)現(xiàn)相同功能的程序代碼長(zhǎng)度可以相差十倍百倍。但Perl同樣可以將代碼書寫得像PythonRuby等語言一樣優(yōu)雅。

很多時(shí)候,perl.exe進(jìn)程會(huì)占用很多的內(nèi)存空間,雖然只是一時(shí),但是感覺不好。

講述了Perl的構(gòu)成和特點(diǎn),并且穿插著Perl本身實(shí)現(xiàn)的方方面面的設(shè)計(jì)思想,舉個(gè)例子來說就是引入了語言環(huán)境的做法,這種語言層次的語言環(huán)境讓程序員在寫程序的時(shí)候更多地像是在‘’說‘’,而不是在‘’解釋‘’,我甚至可以說理解語言環(huán)境是了解和掌握Perl的一個(gè)關(guān)鍵等內(nèi)容。

產(chǎn)生背景

1987年Larry Wall發(fā)布Perl1.0以來,用戶數(shù)一直急劇增加,同時(shí)越來越多的程序員與軟件開發(fā)者(商)參與Perl的開發(fā)。從最初被當(dāng)做一種跨平臺(tái)環(huán)境中書寫可移植工具的高級(jí)語言開始,Perl被廣泛地認(rèn)為是一種工業(yè)級(jí)的強(qiáng)大工具,可以在任何地方用來完成你的工作。perl的前身是Unix系統(tǒng)管理的一個(gè)工具,被用在無數(shù)的小任務(wù)里。后逐漸發(fā)展成為一種功能強(qiáng)大的程序設(shè)計(jì)語言,用作Web編程、數(shù)據(jù)庫處理、XML處理以及系統(tǒng)管理;在完成這些工作時(shí),同時(shí)仍能處理日常細(xì)小工作,這是它的設(shè)計(jì)初衷。Perl特別適合系統(tǒng)管理和Web編程。實(shí)際上已經(jīng)被用在所有unix(包括Linux)捆綁在一起作為標(biāo)準(zhǔn)部件發(fā)布,同時(shí)也用于Microsoft Windows和幾乎所有操作系統(tǒng)。Perl的應(yīng)用非常廣泛。

perl引言

Perl最初是Unix系統(tǒng)管理員的一個(gè)工具,在工作日里被用在無數(shù)的小任務(wù)中。從那以后,逐步發(fā)展成為一種全功能的程序設(shè)計(jì)語言,特別是在各種計(jì)算平臺(tái)上,用作Web編程、數(shù)據(jù)庫處理、XML處理以及系統(tǒng)管理——能夠完成所有這些工作,同時(shí)仍然是處理小的日常工作的完美工具,這是它的設(shè)計(jì)初衷。Perl快速、有趣,而且特別有用。很多人因?yàn)樾枰狿erl而使用它,又因?yàn)闊釔鬯^續(xù)使用它。

Perl是一門自由且功能強(qiáng)大的編程語言。自1987年初次登臺(tái)亮相以來,用戶數(shù)一直急劇膨脹。從最初被當(dāng)作一種在跨平臺(tái)環(huán)境中書寫可移植工具的高級(jí)語言開始,Perl就已經(jīng)被廣泛地認(rèn)為是一種工業(yè)級(jí)的強(qiáng)大工具,可以在任何地方用來完成工作。Perl特別適合系統(tǒng)管理和Web編程。Perl實(shí)際上已經(jīng)被所有Unix(包括Linux)捆綁在一起作為標(biāo)準(zhǔn)部件發(fā)布,而且也被廣泛用于Microsoft Windows和幾乎所有其他操作系統(tǒng)。Amiga、BeOS、VMS、MVS和Apple Macintosh等是Perl已經(jīng)完成移植的平臺(tái)的一小部分。

perl概述

Perl原名pearl,但是在這個(gè)語言官方發(fā)表前,拉里·沃爾發(fā)現(xiàn)已經(jīng)有個(gè)編程語言“pearl”,便將這個(gè)編程語言的名字改成Perl。對(duì)于Perl這四個(gè)字母,有一些解釋,包括充滿幽默感的“PathologicallyEclecticRubbishLister”?!癙racticalExtractionandReportLanguage”曾經(jīng)出現(xiàn)在很多有關(guān)Perl的數(shù)據(jù)里,包括官方的首頁。不過事實(shí)上這個(gè)長(zhǎng)名字是后來湊出來的。它的名字第一個(gè)字母大寫(Perl)時(shí)就指這個(gè)編程語言,無大寫字母(perl)時(shí)就指它的解釋器。將Perl寫成“PERL”是不適當(dāng)?shù)模驗(yàn)樗⒎且粋€(gè)縮寫字。

編程語言

Perl是由拉里·沃爾設(shè)計(jì)的,催生了龐大的社區(qū)。Perl社區(qū)素有“友善、樂于助人和寬容”而著稱。

Perl具有類似c語言的強(qiáng)大能力和靈活性。事實(shí)上,Perl的許多特性是從C語言中借用來的。

Perl與腳本語言一樣,Perl不需要編譯器和鏈接器來運(yùn)行代碼,要做的只是寫出程序并告訴Perl來運(yùn)行而已。這意味著Perl對(duì)于小的編程問題的快速解決方案和為大型事件創(chuàng)建原型來測(cè)試潛在的解決方案是十分理想的。

Perl提供腳本語言(如sed和Awk)的所有功能,還具有它們所不具備的很多功能。Perl還支持sed到Perl及awk到Perl的翻譯器。

簡(jiǎn)而言之,Perl像C一樣強(qiáng)大,像awk、sed等腳本描述語言一樣方便。

perl特點(diǎn)

Perl的解釋程序是自由開放免費(fèi)軟件,采用GNU GPL版權(quán)。使用Perl不必?fù)?dān)心版權(quán)費(fèi)用且Perl源代碼自由獲取。

Perl能在幾乎任何現(xiàn)代的操作系統(tǒng)上編譯和運(yùn)行,同時(shí)具有極高可移值性,可以方便地向不同操作系統(tǒng)遷移。

Perl是任務(wù)驅(qū)動(dòng)性語言。從一開始,Perl設(shè)計(jì)成可以把“復(fù)雜工作簡(jiǎn)單化,簡(jiǎn)單工作容易化”。使用Perl很容易操作數(shù)字,文本,文件、目錄和網(wǎng)絡(luò)等,很容易運(yùn)行外部的程序并且掃描這些程序的輸出獲取感興趣的信息,很容易將感興趣的信息交給其它程序做進(jìn)一步處理。

基本語法

變量定義,以$號(hào)開頭,如:$num=1;

數(shù)組定義,以@開頭,如:@array=(1,2,3);

數(shù)組元素調(diào)用@array[index],其中index表示數(shù)組下標(biāo),如上例,@array的值是1;

散列定義,以%開頭,如:%hash=("a",1,"b",2);

散列調(diào)用%hash,其中keys表示鍵值,多用字符串表示,注意hash的key必須具有唯一性,但value可以不唯一,為此hash的key經(jīng)常被用來做唯一化處理,如上例中的"a","b",values是keys對(duì)應(yīng)的值,如1,2。%hash{"b"}的值是2。

perl優(yōu)點(diǎn)

Perl追求的是簡(jiǎn)單。解決一個(gè)普通問題用它幾行代碼就完成了。一個(gè)稍復(fù)雜一點(diǎn)的問題代碼也不會(huì)超過一屏!在軟件測(cè)試中,Perl通常是非常重要的角色。一般一個(gè)測(cè)試通用函數(shù)庫就要分十幾個(gè)文件,甚至更多,包含多達(dá)上千個(gè)定制功能。而這些函數(shù)將在主函數(shù)運(yùn)行時(shí),不定數(shù)量的被調(diào)用。幾乎可以說,一切自動(dòng)過程都是由Perl自己完成的,可見其功能的強(qiáng)大和在當(dāng)今計(jì)算機(jī)技術(shù)高速發(fā)展的時(shí)期仍然發(fā)揮著重要的作用。Perl最初是當(dāng)做一種Unix的腳本語言設(shè)計(jì)的,但是它早就移植到大多數(shù)其它操作系統(tǒng)里了。因?yàn)镻erl幾乎可以在任何地方運(yùn)行,所以Perl可以說是當(dāng)今最具有移植性的編程環(huán)境;要想寫可移植的C/C++程序,你得在程序里加上一大堆#ifdef標(biāo)簽來區(qū)分不同的系統(tǒng);要想寫可移植的Java程序,你必須理解每種新的Java實(shí)現(xiàn)的特質(zhì);要想寫可移植的殼層,你可能要記住每條命令在每種操作系統(tǒng)上的語法,走運(yùn)的時(shí)候你可能可以找到一些公共的東西;要想寫可移植的Visual Basic程序,需要對(duì)“移植”有個(gè)更靈活的定義。讓我們很高興的是Perl避免了所有這些問題,同時(shí)還保留了這些語言中的許多優(yōu)點(diǎn),同時(shí)還有一些自己的特色。Perl的特色來自許多方面:它的特性集的工具,Perl社區(qū)的創(chuàng)造性,以及開源運(yùn)動(dòng)的大環(huán)境。不過,許多這些特性都是混合的東西;Perl的身世復(fù)雜,它總是把事物看成是優(yōu)點(diǎn)的不同方面,而不是弱點(diǎn)。Perl是“背黑鍋我來”的語言。如果你覺得自己陷入一團(tuán)亂麻之中,非??释杂?,那么請(qǐng)使用Perl。Perl是跨文化的。Perl的爆炸性增長(zhǎng)很大程度上是因?yàn)槟切┣癠nix系統(tǒng)程序員的渴望,他們希望從他們的“老家”帶著盡可能多的東西。對(duì)于他們而言,Perl是可移植的Unix文化蒸餾器,是"此路不通"的沙漠中的綠洲。從另外一個(gè)角度來看,Perl還可以從另外一個(gè)方向運(yùn)轉(zhuǎn):在Windows上工作的web設(shè)計(jì)者通常會(huì)非常開心地發(fā)現(xiàn)他們的Perl程序可以不加修改地在Unix服務(wù)器上跑。盡管Perl在系統(tǒng)程序員和web設(shè)計(jì)師中間非常流行,但這只是因?yàn)槭撬麄冏钤绨l(fā)現(xiàn)Perl的,Perl可以用于更廣泛的用途。從Perl最早的文本處理語言開始,它已經(jīng)發(fā)展成為一種非常復(fù)雜的,通用的編程語言,以及完整的集成開發(fā)環(huán)境,包括調(diào)試器,調(diào)節(jié)器,交叉引用,編譯器,庫,語法提示編輯器,以及所有其它“真正”的編程語言所具有的所有掛勾,只要你需要。當(dāng)然這些東西都是讓我們可能處理難的問題的東西,而且很多其它語言也可以做到這一點(diǎn)。

Perl之所以成為Perl是因?yàn)樗鼜膩聿粫?huì)因?yàn)楸3趾?jiǎn)單事情簡(jiǎn)單化而丟失其他方面的特性。因?yàn)镻erl既強(qiáng)大又好用,所以它被廣泛地用于日常生活的方方面面,從宇航工程到分子生物學(xué),從數(shù)學(xué)到語言學(xué),從圖形處理到文檔處理,從數(shù)據(jù)庫操作到網(wǎng)絡(luò)管理。很多人用Perl進(jìn)行快速處理那些很難分析或轉(zhuǎn)換的大批量數(shù)據(jù),不管你是處理脫氧核糖核酸序列,網(wǎng)頁,還是豬肚皮的未來都無所謂。實(shí)際上,在Perl社區(qū)有一個(gè)笑話就是,下次股市大崩盤就很有可能是哪個(gè)家伙寫的腳本里頭有bug造成的。(不過,樂觀點(diǎn)來看就是,任何還在失業(yè)的股票分析師仍然有可以利用的技巧。)Perl的成功有許多原因。Perl早在開源軟件的名字出現(xiàn)之前就已經(jīng)是一個(gè)成功的開源項(xiàng)目了。Perl是自由的,并將永遠(yuǎn)自由下去。你可以在任何合適的場(chǎng)合使用Perl,只需要遵守一個(gè)非常自由的版權(quán)就可以了。如果你在從事商業(yè)活動(dòng)并且還想使用Perl,那么用就是了。你可以把Perl嵌入到你寫的商業(yè)軟件中而不需要支付任何費(fèi)用也沒有任何限制。如果你碰上一個(gè)Perl社區(qū)解決不了的問題,那你也還有最后的一招:源程序本身。Perl社區(qū)不會(huì)在“升級(jí)”的偽裝下租給你它們的商業(yè)秘密。而且Perl社區(qū)也不會(huì)“停業(yè)”,更不會(huì)讓你孤立無援。Perl是自由軟件這一點(diǎn)無疑對(duì)它是有幫助的。但這一條并不足以解釋Perl現(xiàn)象,因?yàn)樵S多自由軟件包沒有能繁榮起來。Perl不僅自由;而且好玩。人們覺得自己在Perl里可以有創(chuàng)造力,因?yàn)樗鼈冇斜磉_(dá)的自由:他們可以選擇是為計(jì)算機(jī)速度優(yōu)化還是為程序員的速度優(yōu)化,是冗長(zhǎng)還是簡(jiǎn)潔,是選擇可讀性還是可維護(hù)性,或者選擇復(fù)用性,移植性,接受性和傳授性等等。假如你進(jìn)入一次模糊的Perl比賽,甚至你還可以為模糊性做優(yōu)化。Perl可以給予你所有這些自由,因?yàn)樗且婚T有著分裂人格的語言。Perl同時(shí)是很簡(jiǎn)單并且很富有的語言。Perl從其它地方拿來好主意,然后把它們安裝到易用的框架里面。對(duì)于只是喜歡她的人來說,Perl是實(shí)用抽取和報(bào)表語言(PracticalExtractoinandReportLanguage)。對(duì)那些熱愛她的人而言,她是變態(tài)電子垃圾制造者(PathologicallyElectricRubbishLister)。在少數(shù)人眼里,Perl是毫無意義的重復(fù)練習(xí)。不過世界需要一點(diǎn)點(diǎn)冗余。精簡(jiǎn)主義者總是想把事物分隔開。而我們則總是企圖把它們合并到一起。Perl之所以是簡(jiǎn)單的語言是有很多原因的。比如你用不著知道什么特殊的指令就可以編譯Perl程序--只要把它當(dāng)做批處理或者殼層腳本執(zhí)行就可以了。Perl的類型和結(jié)構(gòu)很容易使用和理解。Perl對(duì)你的數(shù)據(jù)沒有任何限制--你的字串和數(shù)組可以要多長(zhǎng)就多長(zhǎng)(只要你有足夠的內(nèi)存),而且它們都會(huì)自動(dòng)增長(zhǎng)。

Perl不會(huì)強(qiáng)迫你學(xué)習(xí)新的語法和語意,Perl改從許多其它你已經(jīng)熟悉的語言里(比如C,awk,BASIC和Python,英文,希臘語等)借來語法。實(shí)際上,任何程序員都可以從書寫良好的Perl代碼段中讀懂它的含義。最重要的是,你不用先學(xué)習(xí)所有Perl的東西就可以開始寫有用的程序。你可以寫很小的Perl程序。你也可以象小孩那樣寫Perl程序,我們保證不會(huì)笑話你。或者更準(zhǔn)確地說是,我們絕不會(huì)笑話小孩做事情的創(chuàng)造性。Perl里的許多觀點(diǎn)都是從自然語言中借來的,其中一條最好的觀點(diǎn)就是只要你能把自己的意思表述清楚,那么你就可以使用這些語言的一個(gè)子集。Perl文化可以接受任何熟練程度的成員。我們不會(huì)在你背后放個(gè)語言警察。如果你的老板不炒你,而且你的Perl腳本也能完成工作,那么它就是“正確”的。盡管Perl很簡(jiǎn)單,但它仍然是一種特性很豐富的語言,如果你想用那些特性的話,那你就要學(xué)習(xí)一些東西。這也是把難題變簡(jiǎn)單的學(xué)費(fèi)。雖然你要想把所有Perl能做的事情吸收還需要一些時(shí)間,但到你需要這些功能的時(shí)候你就會(huì)非常開心地發(fā)現(xiàn)Perl已經(jīng)可以做這些事情了。由于Perl的繼承性,就算它只是用做數(shù)據(jù)歸納語言的時(shí)候也有豐富的特性,Perl一開始就設(shè)計(jì)成可以瀏覽文件,掃描大量文本并且生成動(dòng)態(tài)數(shù)據(jù)以及打印出這些數(shù)據(jù)的良好格式化的報(bào)表。不過,隨后Perl就開始風(fēng)行,于是它就成了可以操作文件系統(tǒng),進(jìn)程管理,數(shù)據(jù)庫管理,進(jìn)行C/S編程和安全編程,web信息管理,甚至可以進(jìn)行面向?qū)ο蠛兔嫦蚬δ艿木幊痰恼Z言。而且這些功能并非只是在Perl這邊,每種新功能都和其它東西交流得很好,別忘了Perl從一開始就是設(shè)計(jì)成膠水語言的。而且Perl并不僅僅只能黏合它自己的特性。Perl是設(shè)計(jì)成可以用模塊擴(kuò)展的語言。

你可以用Perl快速設(shè)計(jì),編寫,調(diào)試和部署Perl應(yīng)用,并且你還可以在需要的時(shí)候很方便地?cái)U(kuò)展這些應(yīng)用。你可以在其它語言里嵌入Perl,而且你也可以在Perl里嵌入其它語言。通過模塊輸入機(jī)制,你可以把這些外部的擴(kuò)展當(dāng)做內(nèi)置于Perl的特性。那些面向?qū)ο蟮耐獠繋煸赑erl內(nèi)部仍然保持面向?qū)ο蟮奶卣?。Perl還在許多其它方面協(xié)助你。和嚴(yán)格的每次執(zhí)行一條命令的命令文件和shell腳本不同的是,Perl先把你的程序快速編譯成一種內(nèi)部格式。和其它任何編譯器一樣,這個(gè)時(shí)候還進(jìn)行各種優(yōu)化,同時(shí)把碰到的任何問題反饋給你。一旦Perl的編譯器前端對(duì)你的程序表示滿意了,它就把這些中間代碼交給解釋器執(zhí)行(或者是給其它的能生成C或者字節(jié)碼的模塊后端)。聽起來挺復(fù)雜,不過Perl的編譯器和解釋器干這些活效率相當(dāng)高,我們的編譯-運(yùn)行-修改的過程幾乎都是以秒計(jì)。再加上Perl的許多其他開發(fā)特性,這種快速的角色轉(zhuǎn)換很適合做快速原型設(shè)計(jì)。然后隨著你的程序的成熟,你可以逐步擰緊身上的螺母,減少散漫增強(qiáng)紀(jì)律。如果你做得好,Perl也能幫你這個(gè)忙。Perl還可以幫你寫更安全的程序。除了其它語言提供的典型的安全接口之外,Perl還通過一種跟蹤數(shù)據(jù)的機(jī)制給你提供預(yù)防意外安全錯(cuò)誤的保護(hù),這樣就可以在災(zāi)害發(fā)生之前預(yù)防其發(fā)生。最后,Perl還可以讓你設(shè)置一個(gè)特殊的防護(hù)隔段運(yùn)行那些來源不明的Perl代碼,以此來杜絕危險(xiǎn)操作。不過,偏執(zhí)一點(diǎn)兒說,Perl幫你的大部分內(nèi)容和Perl本身沒有什么關(guān)系,而是和使用Perl的人有關(guān)。坦率地說,Perl社區(qū)的人們可以說是地球上最熱心的人了。如果Perl運(yùn)動(dòng)里面有那么一點(diǎn)點(diǎn)宗教色彩的話,那么這就是它的核心了。Larry希望Perl社區(qū)像一小片天堂那樣運(yùn)轉(zhuǎn),目前看來他的愿望基本上是實(shí)現(xiàn)了。我們也請(qǐng)你為此做出自己的努力。Perl之所以強(qiáng)大,是因?yàn)橛蠧PAN,CPAN上面有無數(shù)的開源模塊,從科學(xué)計(jì)算到桌面應(yīng)用到網(wǎng)絡(luò)等等各個(gè)方面都有大量的模塊!并且世界上也還有無數(shù)的人在向上面添加模塊!如果你想要用PERL實(shí)現(xiàn)某功能,不用自己做,在CPAN上面搜一搜,多半都會(huì)得到已有的結(jié)果!

CPAN("theComprehensivePerlArchiveNetwork"全面的Perl存檔網(wǎng)絡(luò))是查找任何Perl有關(guān)的東西的中心倉庫。它包含從整個(gè)Perl社區(qū)收集來的智慧:成百上千的Perl模塊和腳本,相當(dāng)于好幾本書的文檔,以及整個(gè)Perl發(fā)布。如果有東西是用Perl寫的,而且這個(gè)東西很有用而且是自由的,那么它很有可能就在CPAN上。缺點(diǎn)也正是因?yàn)镻erl的靈活性和“過度”的冗余語法,也因此獲得了write-only的“美譽(yù)”,因?yàn)樵S多Perl程序的代碼令人難以閱讀,實(shí)現(xiàn)相同功能的程序代碼長(zhǎng)度可以相差十倍百倍。但Perl同樣可以將代碼書寫得像PythonRuby等語言一樣優(yōu)雅。很多時(shí)候,perl.exe進(jìn)程會(huì)占用很多的內(nèi)存空間,雖然只是一時(shí),但是感覺不好。

相關(guān)文化

時(shí)勢(shì)造英雄為了理解Perl為什么用現(xiàn)在這樣的樣子定義(或者為什么不定義成其他的樣子),我們必須首先明白為什么會(huì)有Perl。所以,讓我們先挖掘一下布滿塵灰的歷史書....

退回到1986年,Larry是一個(gè)系統(tǒng)程序員,在做一個(gè)多層安全的廣域網(wǎng)項(xiàng)目的開發(fā)。他負(fù)責(zé)這么一個(gè)系統(tǒng),這個(gè)系統(tǒng)由西海岸的三臺(tái)VAX和三臺(tái)sun機(jī)器,通過一條加密了的1200波特的串行線路和東海岸類似配置的系統(tǒng)連接組成的,因?yàn)長(zhǎng)arry的主要工作是支持(他不是該項(xiàng)目的程序員,只是系統(tǒng)專家),所以他就有機(jī)會(huì)利用他的三種優(yōu)點(diǎn)(懶惰,不耐心,和狂傲)來開發(fā)和提高所有有用的工具——比如rn,Patch,和warp。(注:正是在這個(gè)時(shí)候,Larry被劃入了“計(jì)算機(jī)動(dòng)物”的范疇,這是以那些人的不可遏止的“再加一個(gè)特性”的渴望為基礎(chǔ)評(píng)判的,因?yàn)檫@種行為幾乎成了生物必須。畢竟,如果生活就是太復(fù)雜的話,難道程序就不會(huì)嗎?尤其是想rn這樣的程序,它真是應(yīng)該當(dāng)作一個(gè)高級(jí)的人工智能項(xiàng)目來看待,因?yàn)樗麄兙涂梢詾槟汩喿x新聞。當(dāng)然,有些人已經(jīng)在說patch程序太復(fù)雜了。)一天,Larry剛剛把rn撕成碎片,把它一片一片地放在他的目錄里,大管理員就跑進(jìn)來說,“Larry,我們需要一個(gè)管理配置,用它控制所有六臺(tái)VAX和六臺(tái)sun。我們想在一個(gè)月里就要它。你做一個(gè)吧!”所以,從不逃避工作的Larry,開始問自己做一個(gè)兩個(gè)海岸的CM系統(tǒng)的最好的方法是什么,它必須不用自己從頭開始寫,并且還可以查閱兩個(gè)海岸的問題報(bào)告以及核準(zhǔn)和控制。他想到的答案只有一個(gè)詞:B-news。(注:也就是Usenet傳輸軟件的第二種實(shí)現(xiàn)。)??Larry著手在這些機(jī)器上安裝了新聞軟件并且增加了兩條控制命令:一條“append”命令用于向現(xiàn)有的文章追加內(nèi)容,和一條“synchronize”命令保持兩個(gè)海岸的文章數(shù)目相同。CM可以用美國(guó)廣播資訊化服務(wù)公司(版本控制系統(tǒng))做,而核準(zhǔn)和控制可以用新聞和rn來做。然后大管理員讓他生成報(bào)告。新聞是在核心機(jī)器里的一個(gè)獨(dú)立的文件里維護(hù)的,里面有許多文件間的交叉引用。Larry的第一個(gè)反應(yīng)是“用Awk?!痹愀獾氖?,那個(gè)時(shí)候的awk無法做到以文件里的信息為基礎(chǔ)打開和關(guān)閉多個(gè)文件。Larry不想編寫一個(gè)特殊目的的工具。結(jié)果就是產(chǎn)生了一種新的語言。最初這種新的語言并不叫Perl。Larry和他的同事及親友(DanFaigin,寫這段歷史的人,和MarkBiggar,他的妻弟,在初始設(shè)計(jì)階段幫了大忙)交換了一大堆名字。實(shí)際上Larry考慮并拋棄了字典里的所有三個(gè)或四個(gè)字母的單詞。最早的名字是“Gloria”,以他的寶貝(和老婆)命名。但他很快就發(fā)現(xiàn)這樣會(huì)產(chǎn)生太多家庭混亂。然后名字就成了“Pearl”,它變成了“Perl”,部分原因是Larry看到另外一種叫PEARL的語言的介紹,但最主要的原因是他懶得總要敲五個(gè)鍵。當(dāng)然,這樣Perl就可以用做一個(gè)四字母的詞。(不過,你會(huì)注意到,這里有以前首字縮寫的殘余:“PracticalExtractionAndReportLanguage”。)最早的Perl沒有今天的Perl那么多的特性。那時(shí)候有模式匹配和文件句柄,有標(biāo)量,有格式化,但是很少有函數(shù),沒有相關(guān)的數(shù)組,而且只有一個(gè)實(shí)現(xiàn)得不怎么樣的正則表達(dá)式,(從rn借來的)。手冊(cè)頁也只有15頁。但是Perl比sed和awk快,并且開始在該項(xiàng)目的其他應(yīng)用里使用。但是其他地方又開始需要Larry了。有一天另外一個(gè)大經(jīng)理來了并且說:“Larry,給R&D做支持。”并且Larry說,好吧。他帶上Perl并且很快發(fā)現(xiàn)它逐漸成為系統(tǒng)管理的好工具。他借來HenrySpencer漂亮的正則表達(dá)式軟件包并且把它變成更有男人味(不過Henry可能不會(huì)愿意在正餐的時(shí)候考慮這些特性。)然后Larry增加了大部分他想要的特性,以及一些別人想要的特性。然后它就把Perl發(fā)布到網(wǎng)絡(luò)上。(注:更讓人吃驚的是,他先后工作于噴氣推進(jìn)實(shí)驗(yàn)室(JPL),然后是NetLabs?和Seagate之后,仍然不斷發(fā)布新Perl。其他人做了大部分工作,而Larry假裝為O'Reilly&Associates(一個(gè)小公司,印刷關(guān)于計(jì)算機(jī)和相關(guān)事物的小冊(cè)子。)其余的就是歷史了。(注:而這些東西,是歷史的一個(gè)注解。當(dāng)開始Perl的工作的時(shí)候,Larry已經(jīng)把rn分解成碎片,并且準(zhǔn)備做一次全面的重寫。但因?yàn)樗_始在Perl上干活,所以Larry沒有再碰rn。它仍然是碎片。有時(shí)候Larry說要用Perl重寫rn,但是從來沒當(dāng)真。)

然后事情的發(fā)展就是這樣的:

Perl1.0在1987年十二月十八日發(fā)布;有些人仍然很認(rèn)真地對(duì)待Perl的生日。

Perl2.0在1988年六月發(fā)布,并且RandalSchwartz開始了“另外一個(gè)Perl黑客”的簽名的傳奇。

在1989年,TomChristiansen在巴爾的摩Usenix拿出了第一個(gè)公開的Perl教程。1989年十月的Perl3.0開始,這門語言第一次以GNU公眾版權(quán)(GPL)發(fā)布和分發(fā)。

1990年三月,Larry寫了第一首Perl小詩(見下一節(jié))。然后他和Randal寫了本書的第一版,ThePinkCamel;該書在1991年早期發(fā)行。

然后Perl4.0就立即發(fā)布了;除GPL之外,它還包括了ArtisticLicense(藝術(shù)版權(quán))。

萬眾期待的Perl5在1994年十月發(fā)布。這是一個(gè)完全重寫的Perl版本,它包括對(duì)象和模塊。Perl5的到來甚至連TheEcomomist雜志都提到。到了1995年,正式向Perl社區(qū)引入CPAN。

在1996年,Jon Orwant開始出版The Perl Journal雜志。在長(zhǎng)時(shí)間的猜測(cè)之后,本書的第二版,TheBlueCamel,在那年的年末出版。第一次O'ReillyPerl大會(huì)(TPC)1997年夏季在加州SanJose舉行。

重大事件幾乎是每天都在發(fā)生,所以,關(guān)于歷史的其他部分,請(qǐng)檢查CPAST(ComprehensivePerlArcanaSocietyTapestry(history.perl.org))上的Perl紀(jì)年表。

Perl詩歌

APPEAL:listen(please,please);open?yourself,wide;join(you,me),connect(us,together),tell?me.do?something?if?distressed;@dawn,dance;@evening,sing;read(books,$poems,stories)?until?peaceful;study?if?able;write?me?if-you-please;sort?your?feelings,reset?goals,seek(friends,family,anyone);do*not*die(like?this)if?sin?abounds;keys?(hidden),open(locks,doors),tell?secrets;do?not,?I-beg-you,?close?them,yet.accept(yourself,changes),bind(grief,despair);require?truth,goodness?if-you-will,each?moment;select(always),length(of-days).

下載安裝

在Linux系統(tǒng)下、大部分類UNIX系統(tǒng)(包括Mac OS),perl是隨系統(tǒng)安裝的,可在命令行終端輸入命令perl-v,查看版本,對(duì)于Windows有兩種版本可用:Strawberry Perl與Active Perl。其他信息Perl語言誕生25周年?1987年12月18日,拉里·沃爾在新聞組comp.sources.misc發(fā)布了Perl腳本語言1.0版,當(dāng)時(shí)他是Unisys公司的一名程序員。Perl借鑒了sh、Awk和Sed等腳本語言的特性,試圖成為一個(gè)能簡(jiǎn)化報(bào)告處理的通用Unix腳本語言。Perl2在1988年發(fā)布,增加了更多特性,擁有更好的正則表達(dá)式引擎。Perl3和Perl4分別在1989年和1991年發(fā)布,而1994年發(fā)布的Perl5則是最重要的一個(gè)版本,至今仍在開發(fā)中。2000年啟動(dòng)的Raku則完全重寫了Perl,基于不同的原則,開發(fā)者決定先制定語言規(guī)格。Perl6的發(fā)布日期被認(rèn)為是圣誕節(jié),但沒有指定哪一年的圣誕節(jié)。Perl5公布了16個(gè)版本,Perl5.6在2000年發(fā)布,Perl5.8的持續(xù)開發(fā)貫穿了2002-2008年,5.10在2007年發(fā)布,5.12在2010年發(fā)布,此后Perl開始采用每月發(fā)布一個(gè)版本,每年發(fā)布一個(gè)穩(wěn)定版本的發(fā)布周期。5.14在2011年發(fā)布,5.16于2012年發(fā)布,5.18于2013年發(fā)布。

Perl書籍

美國(guó))施瓦茨(RandalL.Schwartz)(美國(guó))福瓦(BrianDFoy)(美國(guó))菲尼克斯(TomPhoenix)譯者:盛春。RandalL.Schwartz、briandfoy和DTomPhoenix共同編著了數(shù)本Perl編程方面的“必讀”圖書,包括

《Effective Perl Programming》(由Addison—Wesley出版)、

《LearningPerl》、《ProgrammingPerl》、《IntermediatePerl》以及《MasteringPerl》(原版均由O’Reilly出版)。

常見問題

Perl 就是 CGI噓...小聲。說這樣的話會(huì)讓懂Perl的人笑掉大牙。CGI是CommonGatewayInterface的簡(jiǎn)稱。其主要的功能是在WWW環(huán)境下,藉由從客戶端傳遞一些訊息給WWWServer,再由WWWServer去啟動(dòng)所指定的程序碼來完成特定的工作。PHP/Python/Perl都可以撰寫基于CGI的程序。另外,Perl可以做太多東西,把它的功能僅限制在網(wǎng)絡(luò)上實(shí)在是暴胗天物。

參考資料 >

perl 基本語法介紹.www.jb51.net.2015-08-03

生活家百科家居網(wǎng)