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

关于学习Perl的更多相关文章

  1. 像学历史课本一样学习Perl

    第一次接触Perl,还是2008年10月份的时候,当时因为项目重构,需要进行大量的文本操作,于是便拾起了以“文本操作为己任”的Perl语言.当然,带我入门的还是那本赫赫有名的The Llama  Bo ...

  2. 和TransDecoder 学习perl 自定义模块的路径问题

    TransDecoder 软件是用perl 原因写的,其中包含了一些自定义的模块,通过一个脚本来进行调用,为了能够正常访问自定义的perl 模块, 在其源代码中利用了FindBin 这个模块 use ...

  3. 学习 Perl(一) —— 安装及 hello world

    所谓存在的即是合理的,尤其适用于琳琅满目的编程语言界.每种编程语言在设计之初均只为解决特定领域的特定问题而生,没有语言擅长所有的领域能够完美地解决所有的问题. 这里推荐一本经典的 perl 入门书:P ...

  4. Perl 学习笔记-高级控制结构

    1.unless控制结构 类似于独立的else语句; 要么条件为真, 要么执行语句块内的代码;  unless(<condition>){code...;} 等价于  if(<con ...

  5. Perl 学习笔记-标量数据

    最近学习Perl, 准备看一遍入门指南,关键的东西还是记录下来,以便以后复习和查看参考. 笔记来自<<Perl语言入门第5版>> 1. 在Perl内部,不区分整数值和浮点数值, ...

  6. 精通Perl(第2版)

    精通Perl(第2版)(通往Perl大师之路必读经典书籍,体现了一种编程思维,能够帮你解决很多实际的问题) [美]brian d foy(布瑞恩·D·福瓦)著   王兴宇 刘宸宇 译 ISBN 978 ...

  7. 【转】perl如何避免脚本在windows中闪一下就关闭

    写好了perl程序,运行后,准备等待结果输出时,结果双击后,看到屏幕闪了一下,然后什么都没有了,根本没有机会然你看到输出的结果 当你刚开始学习perl的时候,写好了程序,准备兴高采烈的等待结果输出时, ...

  8. Chapter 1. Hello, Perl/Tk

    Chapter 1. Hello, Perl/Tk 内容: Perl/Tk Concepts Some Perl/Tk History Getting Started with Perl/Tk Hel ...

  9. [置顶] perl脚本中defined,exists和delete关键字的用法和区别

    刚学习perl脚本的时候,喜欢频繁使用defined关键字判断一个hash中某个key是否存在,后来程序出了问题才去perl官方文档查看关于defined关键字的准确使用方法.因此,这里我把perl中 ...

随机推荐

  1. Spring 框架获取 datasource对象的方法

    1,使用org.springframework.jdbc.datasource.DriverManagerDataSource  2.使用org.apache.commons.dbcp.BasicDa ...

  2. XUtils解析

    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);      ...

  3. 用过sessionid防钓鱼

    http://www.cnblogs.com/BearsTaR/archive/2010/08/24/URL_SESSION_ID_LEEK.html DisableUrlSessionFilter

  4. SpringMVC List绑定

    需求:成绩录入(录入多门课成绩,批量提交) 使用List接收页面提交的批量数据,通过包装pojo接收,在包装pojo中定义list<pojo>属性 public class ItemsQu ...

  5. Spring的声明试事务

    1 在配置文件中加入: <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.spring ...

  6. 02java语法基础问题总结

    S和t引用的不是同一个对象 不是原始数据类型 结论: 枚举类型是引用类型,枚举不属于原始数据类型.它的每一个具体值都引用一个特定的对象. 2. 以下代码的输出结果是什么? int X=100; int ...

  7. HDU 1061 Rightmost Digit --- 快速幂取模

    HDU 1061 题目大意:给定数字n(1<=n<=1,000,000,000),求n^n%10的结果 解题思路:首先n可以很大,直接累积n^n再求模肯定是不可取的, 因为会超出数据范围, ...

  8. Web服务器IPtables配置

    #允许SSH流量(重要) iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 222 -j A ...

  9. NodeJS记录

    https://nqdeng.github.io/7-days-nodejs/#3.3.4

  10. windows7旗舰版激活密钥永久版免费分享

    windows7之家不仅提供精品Win7教程 给大家,加上这个windows7激活密匙还帮大家解决windows7系统激活问题,包括win7旗舰版 windows7安装版这些. 用的是Windows7 ...