新手入门简介
关于学习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