1. 關於Perl
當你翻開這本書的時候,你也就進入了一個奇幻的世界。Perl確實是一種非常吸引人的程式語言,而之所以這麼引人入勝的原因不單單在於他的功能,也在於他寫作的方式,或說成為一種程式寫作的藝術。即使你只是每天埋首於程式寫作的程式設計師,也不再讓生活過份單調,至少你可以嘗試在程式碼中多一些變化。而且許多Perl的程式設計師已經這麼作了,這也是Perl的理念-「There is more than one way to do it」。
常常遇到有人問我:「Perl到底可以拿來作甚麼呢?」,不過後來我慢慢的發現,這個問題的答案卻是非常的多樣化。因為在不同的領域幾乎都有人在使用Perl,所以他們會給你的答案就會有很大的差異了。有人會覺得Perl拿來用在生物資訊上真是非常方便,有人也來進行語料的處理,資料庫,網頁程式設計更是有著廣泛的運用。當然,還有許多人把Perl拿來當成系統管理的利器,更是處理系統日誌的好幫手。
1.1 Perl的歷史
由Larry Wall創造出來的Perl在1987年時最早出現在usenet的新聞群組comp.source。從當時所釋出的1.0版本,到3.0版為止,幾乎維持著一年有一次大版本的更新,也就是說在1989年時,Perl已經有了3.0 版。而1991年,Perl開發團隊發展出相當關鍵的4.0版。因為隨著4.0版的釋出,Perl發表了新的版權聲明,也就是Perl Artistic Licence(藝術家授權)。Perl4跟Perl5之間相隔了有三年之久,漸漸的,Perl的架構已經日趨穩定。一直到最近,Perl釋出了新的Perl 5.8版,並且同時進行新一代版本的開發。
1.2 Perl的概念
Perl是非常容易使用的程式語言,或者我們應該說他是方便的程式語言,你可以隨手就寫完一支Perl的程式,就像你在命令列中打一個指令一樣 (註一)。因為Perl的誕生幾乎就在於讓使用者能夠以更好方便的方式去撰寫程式碼,卻不必像寫C一樣的考慮很多細節。
另外,Perl的黏性非常的強 (註二),你可以用Perl把不同的東西輕易的連接起來。而且你可以用Perl解決你大部份的問題,雖然有些時候你並不想這麼作,但這並不表示Perl作不到。
1.3 特色
很多人對Perl的印象就是一種寫CGI(註三)的程式語言,或者直覺的認為Perl只是拿來處理文字的工具。不過就像我們所說的,Perl幾乎可以完成大部份你希望達成的工作。但是不可否認的,正規表示式顯然是Perl足以傲人的部份,這也就是Perl大量被拿來使用作為文字處理的原因之一。
而且Perl對於你希望快速的完成某些工作確實可以提供非常大的幫助。甚至在Unix-like的環境下,還可以直接使用Perl為基礎的Shell,讓你用Perl當指令。而不必像許多程式語言,在還沒正式工作之前,你必須先準備一堆事情,包括你的變數定義,你的資料結構等等。也因此,許多Unix-like系統的管理員都喜歡拿Perl來進行系統管理。畢竟沒人希望要處理一個郵件紀錄檔還要先花一堆時間搞清楚該怎麼把紀錄檔內的東西轉成合適的資料結構。
1.4 使用Perl的環境
雖然大多數的Unix-like系統管理員選擇Perl來幫助他們管理他們的伺服器,可是這絕對不表示Perl只能在這些系統上執行。相反的,Perl可以在絕大多數的作業系統上執行。而目前Windows上的Perl則是以Active Perl(http://www.activeperl.com)這家公司所提供的直譯器為主。Perl的使用在不同的作業系統下會略有不同,本書則以unix-like為執行環境。
1.5 開始使用 Perl
在開始使用Perl之前,必須先確定你的機器上是否已經安裝Perl。在許多unix-like的作業系統中,都預設會安裝Perl,你也可以先執行下面的指令來確定目前系統內的Perl版本。
[hcchien@Apple]% perl -v
This is perl, v5.8.2 built for darwin-2level
Copyright 1987-2003, Larry Wall
Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on
this system using `man perl' or `perldoc perl'.If you have access to the
Internet, point your browser at http://www.perl.com/, the Perl Home Page.
我們看到在版本的部份,這裡使用的是Perl 5.8.2的版本,然後有著作者Larry Wall的名字,也就是版權擁有著。接下來是Perl的版權說明。另外,你應該要注意 `perldoc perl' 這個部份:直接在你的終端機下打這行指令,就可以看到Perl內附的文件,而且內容非常詳細。
在這裡,我們建議使用Perl 5.8以上的版本,如果你的版本過於老舊,或是系統中還沒有安裝Perl,可以從http://www.perl.com/下載,並且安裝Perl。
如果你的系統已經有Perl,並且正常運作,那麼你可以開始使用你的Perl。你可以試著使用所有程式語言都會使用的範例來作為使用Perl的開端:
[hcchien@Apple]% perl -e 'print "hello world!\n"'
hello world!
不過在Windows上,因為命令列不能使用單引號,所以得這樣寫:
[hcchien@Apple]% perl -e "print \"Hello world\n\""
hello world!
1.6 你的第一支Perl程式
事實上,你剛剛已經有了你的第一支Perl程式。當然,你可以不承認那是一支Perl程式。不過讓我們真正來寫一支程式吧。如果你習慣於使用許多整合性程式開發工具,你大概會希望知道要安裝甚麼樣的工具來寫Perl。不過你可能要失望了,因為我們全部所需要的就只是一個文字編輯器。你在unix上,可以選擇vi(vim),joe或任何你習慣的編輯器,在Windows上可以使用記事本,或下載UltraEdit(http://www.ultraedit.com/)。不過請不要使用類似Word的這樣的文書處理工具,因為這樣子你只是讓事情更複雜了。當然,即使你在Windows上,你還是可以選擇Vim或是Emacs這些在Unix世界獲得高度評價的文字編輯器,而且他們還是自由軟體。
現在,我們可以打下第一支程式了:
#!/usr/bin/perl
print "hello world\n";
相信大家很快就打完了這支程式。先別管裡面到底說了甚麼(雖然妳們應該都看懂了),我們先來執行他吧!
[hcchien@Apple]% perl ch1.pl
hello world
好極了,結果就像我們直接用命令列執行的樣子。不過至少我們知道了,只要用Perl去執行我們寫出來的程式就可以了,當然,你還可以有更簡單的辦法。你可以讓你的檔案變成可以執行,在Unix下,你只需要利用chmod來達成這樣的目的。當然,我們假設你已經可以操作你的系統,至少能夠了解檔案權限。修改完權限之後,你只需要在檔案的所在目錄打:
[hcchien@Apple]% ./ch1.pl
hello world
那麼第一行又是甚麼意思呢?其實這是Unix系統中,表明這支程式該以甚麼方式執行的表達方式。在這裡,我們希望使用"/usr/bin/perl"這個程式來執行。所以請依照你系統內的實際狀況適時改寫。否則當你在執行的時候,很可能會看到"Command not found"之類的錯誤訊息。
不過在真正開始寫Perl之前,我們還要提醒幾件事情,這些事情對於你要開始寫Perl的程式是非常的重要的。
1. Perl的敘述句是用分號(;)隔開的,因此只要你的敘述句還沒出現分號,Perl就不會把他當成一個完整的結束,除非你的這個敘述句是在一個區塊的最後一句。我們可以在perldoc裡面找到這樣的範例;
"hello world\n"
;
而且這樣的寫法對 Perl來說並沒有什麼不同,只是對於需要維護你的程式的人來說顯然並不會特別高興。適時的空白確實可以提高程式的可讀性,不過記得不要濫用,造成自己遭受埋怨。
2. Perl是以井字號(#)作為程式的註解標示,也就是只要以井字號開始,到敘述句結束前的內容都會被當成程式註解,Perl並不會嘗試去執行他,或編譯他。對於有些習慣於C程式寫作的程式員而言,能夠使用(/* .... */)來進行程式的註解確實是相當方便的。Perl並沒有正式的定義方式來進行這樣整個區塊的註解,不過卻可以利用其他方式來達到同樣的目的。例如使用pod(plain-old documentation format,簡明文件格式):
#!/usr/bin/perl
print "hello world\n";
=head1
這裡其實是註解,所以也是很方便的
主要是可以一次放很多行註解
=cut
如果你還想找出其他可能的替代方案,可以直接看perlfaq這份文件,而方法就是直接執行perldoc perlfaq(註四)就可以了。
接下來,我們便要真正進入Perl的環境中了。
習題:
1. 試著找出你電腦上的Perl版本為何。
2. 利用perldoc perl找出所有的perl文件內容
3. 利用Perl寫出第一個程式,印出你的名字
註一:事實上,Perl有所謂的單行模式,你就只需要在命令列中執行Perl的敘述句。
註二:因此也有人戲稱Perl是「膠水程式語言」。
註三:就是所謂的「Common Gateway Interface」,動態網站程式的設計界面。
註四:perldoc裡有著許多非常有用的文件,你可以考慮試著看看perldoc perldoc。
In this classic work of economic history and social theory, Karl Polanyi analyze...
如何在婚姻爱情中拥有一份完美的两性关系?一本基于生物学、社会学、心理学等社会调查和科学实验的择偶指南告诉你藏在人类基因里的婚恋法则新浪情感大V、门萨中国前主席、...
陆彦(网名阿伦特),小说作者、专栏作家、业余马拉松运动员。先后在《东方早报》《外滩画报》担任记者10多年,有大量艺文人物专访以及书评、影评和专栏发表于《东方早报...
“有钱人和你想的不一样”系列最新作,充满争议的话题性作品,一经出版便席卷日本各大书店排行榜。中野祐治帮你打破财富壁垒,拥有富人格局!4类典型财务现状:①薪酬不低...
香菇半熟料菌柱栽培新技术图解-(种植业篇) 节选 bsp;五、栽培技术 香菇菌柱栽培模式是采用半熟料开放式的栽培方法。它的诸多栽培措施都是和气候条件有密切...
Saystheauthor:"Iwanttocapturetheheartofwhatitmeanstobeafamily.Theyallencountercr...
民法研究(一)(增订版) 本书特色 本书是作者从事民法研究以来一系列重要文章的结集。其内容以侵权行为法为主,还涉及了民法方法论、民法的体系、债法的体系、合同法,...
Fewauthor-spanwritingstylesofpoems,shortstories,essays,songsandprose,BillyRandal...
蔡骏,作家、编剧。已出版《镇墓兽》《谋杀似水年华》《最漫长的那一夜》《天机》等三十余部作品,累计发行1400万册。作品发表于《收获》《人民文学》《当代》《上海文...
中国金属活字印刷技术史 本书特色 纸、印刷术、火药和指南针是中国古代科学技术的四大发明,在推动人类文明的发展中起了巨大作用.中国发明的印刷术包括木版印刷、铜版印...
“我经手过12000颗心脏。”作者在心外科暨胸外科从业数十年,手术成绩卓著。本书即汇集了作者经历的一些经典案例(多数发生在1970年代至2000年代之间),也剖...
中医历代医话选-王新华精品医书三种 本书特色 本书是在查阅了2000多种中医药书籍的基础上, 从其中400多种医籍里选录了医话2500余则,并经分 类整理而成...
材料科学技术名词-2010 内容简介 本书是全国科学技术名词审定委员会审定公布的材料科学技术名词,内容包括材料科学技术基础、金属材料、无机非金属材料、高分...
作品目录一、偈语妙谛此身不向今生度,更向何生度此身?忏悔此身多业障,不见如来金色身云在青天水在瓶归来偶把梅花嗅,春在枝头
田耳,男,1976年10月生,土家族,大专文化。四年时间,他从一名电器推销员成长为《人民文学》力推的重点作家。他的作品有责任感、有力度,不乏叙事、结构技巧上的探...
傅雷家人编定的精选本(1954—1966),以轻松风格反映家书精神,独有傅家照片、傅聪家信和英法文信中文版,权威呈现至深至美的亲子双向交流。《傅雷家书》(新课标...
跟着节气过日子 本书特色 本书将现代医学知识与传统养生理念有机融合,指导人们在四季节气中科学合理地安排日常饮食起居。融趣味性、经典性、知识性与实用性为一体,让读...
毕业于卡内基梅隆大学(Carnegie Mellon University)产品设计专业,曾就职于AOL纽约总部,2017年初归国加入社交短视频创业公司musi...
石约翰(John E. Schrecker),师从汉学大师费正清,布兰代斯(Brandeis)大学历史系教授,同时在美国哈佛大学费正清东亚研究中心从事研究工作。...
美国传奇女诗人艾米莉·迪金森,被后世称为“诗歌界的梵高”!她生前只发表过七首诗,却成为美国文学的佼佼者;她一生闭门不出,却将孤独写成世间最美的诗。《西方正典》作...