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. SAP自定义打印机纸张

    1 执行Spad,->点击"完全管理"->点击"设备类型" 2 点击"页格式" 3 新增两个页格式,  点击 更改->创建 ...

  2. javabean实现serializable有什么用?为什么数据库持久就Bean实现这个接口?

    Java的"对象序列化"能让你将一个实现了Serializable接口的对象转换成一组byte,这样日后要用这个对象时候,你就能把这些byte数据恢复出来,并据此重新构建那个对象了 ...

  3. 标准盒模型与ie盒模型

    ff(标准的盒模型) Box的宽高包括 padding .border.margin.content区域 ie Box的宽度包括  margin  content区域(content区域包含paddi ...

  4. ExtJS布局方式(layout)图文详解

    Auto默认布局 不给下级组件指定大小和位置 Absolute绝对布局 可使用坐标(x.y)进行布局 Accordion手风琴布局 实现Accordion效果的布局,也可叫可折叠布局.也就是说使用该布 ...

  5. 设置iframe背景透明

    <iframe allowtransparency="true" src="page.htm" frameborder="0" > ...

  6. A Complete Tutorial on Tree Based Modeling from Scratch (in R & Python)

    A Complete Tutorial on Tree Based Modeling from Scratch (in R & Python) MACHINE LEARNING PYTHON  ...

  7. JSBinding + SharpKit / 安装SharpKit以及添加SharpKit工程

    本文说明如何往 sln 中添加 SharpKit 工程,以及配置. SharpKit 工程用于将 C# 源代码编译成 JS  代码. QQ群 189738580 1. 安装SharpKit 到 sha ...

  8. wikioi 1430 素数判定

    /*====================================================================== 题目描述 Description 质数又称素数.指在一 ...

  9. Tkinter颜色方案举例

    效果图: 示例代码: # _*_ coding: utf-8 _*_ from Tkinter import * colors = '''#FFB6C1 LightPink 浅粉红 ,#FFC0CB ...

  10. Ext is not defined

    最近由于项目设计到Extjs所以也准备研究一下,可是谁知道刚写好一个demo,运行的时候死活出不来界面,于是用firebug看了一下,出现:Ext is not defined,因为刚开始学也不知道是 ...