Perl 是一種能完成任務(wù)的語(yǔ)言。

當(dāng)然,如果你的工作就是寫(xiě)程序,那么從理論上來(lái)講,你可以使用任何“完整”的計(jì)算機(jī)語(yǔ)言來(lái)完成任務(wù)。但是從我們的經(jīng)驗(yàn)來(lái)看,計(jì)算機(jī)語(yǔ)言的區(qū)別很大程度上不在它能干什么,而是在它做事情的時(shí)候是否簡(jiǎn)單。從一個(gè)極端來(lái)說(shuō),那些所謂的第四代語(yǔ)言做某些事情的時(shí)候相當(dāng)容易,但是做其它一些事情的時(shí)候幾乎不可能。從另外一個(gè)極端來(lái)看,那些所謂的工業(yè)級(jí)的語(yǔ)言在做任何事情的時(shí)候都幾乎一樣困難。

Perl 是不同的語(yǔ)言。從一開(kāi)始,Perl 就設(shè)計(jì)成可以把簡(jiǎn)單工作簡(jiǎn)單化,同時(shí)又不失去處理困難問(wèn)題能力的語(yǔ)言。

那什么是“簡(jiǎn)單工作”呢?當(dāng)然就是那些你每天都要干的。你需要一種可以很容易操作數(shù)字,文本,文件和目錄,計(jì)算機(jī)和網(wǎng)絡(luò),特別是程序的語(yǔ)言。這種語(yǔ)言應(yīng)該很容易運(yùn)行外部的程序并且掃描這些程序的輸出獲取感興趣的東西。而且它還應(yīng)該很容易能把這些你感興趣的東西交給其它程序做特殊的處理。當(dāng)然,這種語(yǔ)言還應(yīng)該很容易在任何現(xiàn)代的操作系統(tǒng)上可以移植地編譯和運(yùn)行。

Perl 做到了上述所有需求,甚至更多。

Perl 最初是當(dāng)做一種 Unix 的膠水語(yǔ)言設(shè)計(jì)的,但是她早就移植到大多數(shù)其它操作系統(tǒng)里了。因?yàn)?Perl 幾乎可以在任何地方運(yùn)行,所以 Perl 可以說(shuō)是當(dāng)今最具有移植性的編程環(huán)境。要想寫(xiě)可移植的 C/C++ 程序,你得在程序里加上一大堆 #ifdef 標(biāo)簽來(lái)區(qū)分不同的系統(tǒng)。要想寫(xiě)可移植的 Java 程序,你必須理解每種新的 Java 實(shí)現(xiàn)的特質(zhì)。要想寫(xiě)可移植的

shell,你可能要記住每條命令在每種操作系統(tǒng)上的語(yǔ)法,走運(yùn)的時(shí)候你可能可以找到一些公共的東西。而要想寫(xiě)可移植的 Visual Basic 程序,那么你只需要對(duì)“移植”有個(gè)更靈活的定義就可以了。

我們很高興的是 Perl 避免了所有這些問(wèn)題,同時(shí)還保留了這些語(yǔ)言中的許多優(yōu)點(diǎn),同時(shí)還有一些自己的特色。Perl 的特色來(lái)自許多方面:它的特性集的工具,Perl 社區(qū)的創(chuàng)造性,以及開(kāi)源運(yùn)動(dòng)的大環(huán)境。不過(guò),許多這些特性都是混合的東西;Perl 的身世復(fù)雜,它總是把事物看成是優(yōu)點(diǎn)的不同方面,而不是弱點(diǎn)。Perl 是“背黑鍋我來(lái)”的語(yǔ)言。如果你覺(jué)得自己陷入一團(tuán)亂麻之中,非常渴望自由,那么請(qǐng)使用 Perl。

Perl 是跨文化的。Perl 的爆炸性增長(zhǎng)很大程度上是因?yàn)槟切┣?Unix 系統(tǒng)程序員的渴望,他們希望從他們的“老家”帶著盡可能多的東西。對(duì)于他們而言,Perl 是可移植的 Unix 文化蒸餾器,是"此路不通"的沙漠中的綠洲。從另外一個(gè)角度來(lái)看,Perl 還可以從另外一個(gè)方向運(yùn)轉(zhuǎn):在 Windows 上工作的 web 設(shè)計(jì)者通常會(huì)非常開(kāi)心地發(fā)現(xiàn)他們的 Perl 程序可以不加修改地在 Unix 服務(wù)器上跑。

對(duì)于只是喜歡她的人來(lái)說(shuō),Perl 是實(shí)用抽取和報(bào)表語(yǔ)言(Practical Extractoin and Report Language)。對(duì)那些熱愛(ài)她的人而言,她是變態(tài)電子垃圾制造者(Pathologically Electric Rubbish Lister)。在少數(shù)人眼里,Perl 是毫無(wú)意義的重復(fù)練習(xí)。不過(guò)世界需要一點(diǎn)點(diǎn)冗余。

/Files/xiaomage234/perl-zh-third.rar