天天看點

新手入門簡介

關于學習Perl

Perl是一門很有用的語言,可以用它來做很多事。然而,它也僅是一門語言,掌握了Perl,你隻是掌握了Computer領域的一小塊知識。在學習Perl前,請明确你的學習目的,并采用正确的學習方法和資源。

(一)學習目的

你學Perl的目的是什麼?要實作你的目的,光有Perl夠嗎?讓偶幫你分析看看。

1. 我想當一名System Administrator,并将Perl用于SA工作。

想法很好,優秀的SA,Perl能力必備。Perl自身的靈活文法,強大的正規表達式,良好的shell結合能力,以及CPAN的衆多子產品,會使你的SA

工作如魚得水,工作量倍減。然而,SA工作的本質還在于System,也許值得你花更多時間的,是System自身穩定和安全的維護。你要學習

Unix,Linux等OS的操作,學習Apache,Sendmail,Bind,Squid,Mysql等應用配置,還要學習awk,sed等

shell script。這些中的每一樣要搞熟,都值得你付出很多努力呀。

2. 我想成為Web Programmer,并将Perl用于web development。

想法很好,請努力學習Perl。不要被一些所謂的流行概念迷惑,也不要整天費心思去想CGI什麼時候會過時。至少從偶的觀點看,有WEB的一天,CGI就

永有用武之地。偶不列舉國外用CGI driver的大站點,因為那太多了。國内最大的2個Email Services

Provider,Sina和網易,他們的webmail就是用CGI實作的,并且每天承擔着千萬級的通路。

然而你也該認識到,光掌握Perl,對從事web

develop來說,還是很不夠的。你要學習HTTP協定,學習HTML,XML,JavaScript等web呈現語言,學習

mod_cgi,mod_perl等Apache子產品,學習SQL語句和database。甚至還要學習PHP,JAVA或.net技術,畢竟這三樣很流

行,你不一定要愛好它們,但掌握了它們,在國内找工作相對有利。偶很少聽說有web development單招Perl

Programmer的,這點與國外不一樣。同樣的,上述偶提到的各個方面,也需要你花很多心思去學習,而絕不是隻學好Perl那麼簡單。

3. 我想成為一名Applications Programmer,将Perl用于applications development

如果是這樣,偶勸你還是先學好C/C++吧,畢竟那才是計算機語言的根本。雖然一些簡單的applications可以用Perl來編寫,雖然

Lincoin

Stein先生說,他用Perl開發的WEB伺服器比Apache還快,但是,Perl開發的Program要想産品化,還有很多problems--它

畢竟隻是一種解釋性Script,底層的很多東西還是基于C的。要想追求高性能和産品化,為什麼不用C呢?

當然,如果你隻是為自己或自己的company編寫applications,那用Perl無可厚非。偶們公司有個LOG部門,每天的工作就是分析海量數

據,這用Perl來做足夠了。處理文本,Perl強過任何一門語言。然而即使這樣,該部門招人時,還是要求你會C/C++.

4. 我想做一名Perl Hacker,并為CPAN貢獻modules.

精神很可嘉,希望你能堅持下去。偶達不到這個層次,是以也不好說什麼。往這方面發展時,希望你能徹底了解OOP,了解各類引用傳遞和符号表的概念,否則也就談不上寫modules了。

(二)學習方式

如果沒有老師教的話(據偶所知,國内的University/College,很少有開Perl課程的),那麼唯一的學習方式就是多看書,多動手寫code.

1. 是要多看書,還是多看其他人的Code?

當然是前者。隻有你了解原理了,才可靈活運用,寫出清晰的code,并形成自己的Code Style(代碼風格)。

一味的看别人的code,而不注重基礎知識,會使你迷惘而不知所措。因為這樣你所學的知識會很散亂,行不成自己的知識體系。

當然,一邊看書,一邊看别人的Code,也是好的學習方式。但請記住,你看别人的Code,是有助于你去了解書本中的基礎知識,不要本末颠倒了。

2. 剛看完了基礎書,我想看"Perl進階程式設計"和"Perl技術内幕"

最近在CU

Forum看到很多這種topics,偶一聽到就faint。請先保證你徹底了解基礎知識了,再去看那些Books吧。曾經有人問偶關于Perl的進階

data

structure,一聊之下發現他對Perl的基本reference都不甚明了,那還有什麼好談的呢?有多少人分不清楚$var與($var)的區

别?又有多少人還不明白${$hash{key}}與$$hash{key}的不同?永遠不要太心急,請循序漸進來。偶的老師在Perl界也算有點名氣,

他說完全掌握Perl用了3年時間。多看書,多動手,不要好高骛遠哦。

(三)學習資源

偶看過的3本書,覺得都very good,它們是"Learning Perl","Programming Perl","Network

Programming with Perl".還有一本好像是"CGI Programming with

Perl",沒怎麼仔細看,就不提了。前2本是Oreilly出版的,别名大小Camel

Book(駱駝書),是Perl入門和提高的經典書籍。第3本是Lincoin

Stein先生的經典力作,他也是mod_cgi的開發者,其精湛的技術令偶受益終生。這3本書好像都有中文版,去書店看看能否買到。如果你閱讀

English沒問題,那偶建議你還是閱讀原版的好。

另外,訂閱Perl Mailing List也可令你從中受益,這裡列出了所有知名的Perl Mailing List: http://lists.cpan.org/

其中的beginners和beginners-cgi也許對你有用。modperl-user是讨論mod_perl的。

站點方面:

http://learn.perl.org/  這個站點是為學習Perl的People準備的

http://perl.apache.org/docs/  這裡有mod_perl的完整Docs

新手入門簡介