轉載自:http://club.topsage.com/thread-464914-1-3.html
關於學習Perl
Perl是一門很有用的語言,可以用它來做很多事。然而,它也僅是一門語言,掌握了Perl,你只是掌握了Computer領域的一小塊知識。在學習Perl前,請明確你的學習目的,並採用正確的學習方法和資源。
(一)學習目的
你學Perl的目的是什嗎?要實現你的目的,光有Perl夠嗎?讓偶幫你分析看看。
1. 我想當一名System Administrator,並將Perl用於SA工作。
想法很好,優秀的SA,Perl能力必備。Perl自身的靈活文法,強大的Regex,良好的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