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. DPM(Deformable Parts Model)--原理(一)(转载)

    DPM(Deformable Parts Model) Reference: Object detection with discriminatively trained partbased mode ...

  2. ios多语言设置,操作

    多语言在应用程序中一般有两种做法:一.程序中提供给用户自己选择的机会: NSArray *languages = [NSLocale preferredLanguages]; NSString *cu ...

  3. 使用isInEditMode解决可视化编辑器无法识别自定义控件的问题

    如果在自定义控件的构造函数或者其他绘制相关地方使用系统依赖的代码, 会导致可视化编辑器无法报错并提示:Use View.isInEditMode() in your custom views to s ...

  4. codeforces 192b

    link: http://codeforces.com/contest/330/problem/B I think the problem is hard at first. However, whe ...

  5. leetcode 114 Flatten Binary Tree to Linked List ----- java

    Given a binary tree, flatten it to a linked list in-place. For example,Given 1 / \ 2 5 / \ \ 3 4 6 T ...

  6. 1-4-1 Windows应用程序组成及编程步骤

    主要内容:介绍Windows应用程序的组成以及编程步骤 1.应用程序的组成 <1>一个完整的应用程序通常由五种类型的文件组成 1.源程序文件 2.头文件 3.模块定义文件 4.资源描述文件 ...

  7. hdu5441(2015长春赛区网络赛1005)类最小生成树、并查集

    题意:有一张无向图,一些点之间有有权边,某条路径的值等于路径上所有边的边权的最大值,而某个点对的值为这两点间所有路径的值的最小值,给出多个询问,每个询问有一个值,询问有多少点对满足其值小于等于询问值. ...

  8. 越狱Season 1-Episode 8: The Old Head

    Season 1, Episode 8: The Old Head -Michael: 17 days from now they strap my brother to an electric ch ...

  9. Jquery实现图片的预加载与延时加载

    有很多项目经常会需要判断图片加载完成后执行相应的操作,或者需要图片延迟加载,网上虽然已经有很不错的插件,但要为这些效果还得单独加载一个插件的话总感觉有点不舒服,干脆自己写了个方法: 1 2 3 4 5 ...

  10. jquery.ajaxfileupload.js

    jquery.ajaxfileupload.js上传插件,利用iframe提交不刷新页面功能完成. /* // jQuery Ajax File Uploader // // @author: Jor ...