译者/作者:qiang
出处:中国Perl协会 FPC(Foundation of Perlchina)
Perl 简介
Perl 最初只是 Unix 系统管理员的一个工具,在工作日里被用在无数的小任务中。从那以后,它逐步发展成为一种全功能的程序设计语言,特别是在各种计算平台上,它被用作 Web 编程、数据库处理、XML 处理以及系统管理 —— 它能够完成所有这些工作,同时仍然是处理小的日常工作的完美工具,这是它的设计初衷。Perl 快速、有趣,而且特别有用。很多人因为需要 Perl 而使用它,又因为热爱它而继续使用它。 _摘自 Perl 语言入门 Oreilly_ * Perl是一门自由且功能强大的编程语言。自 1987 年初次登台亮相以来,它的用户数一直急剧膨胀。从最初被当作一种在跨平台环境中书写可移植工具的高级语言开始,Perl 就已经被广泛地认为是一种工业级的强大工具,可以在任何地方用来完成你的工作。 Perl 特别适合系统管理和 Web 编程。Perl 实际上已经被所有 Unix(包括 Linux )捆绑在一起作为标准部件发布,而且也被广泛用于 Microsoft Windows 和几乎所有其他操作系统。Amiga、BeOS、VMS、MVS 和 Apple Macintosh 等也只是 Perl 已经完成移植的平台的一小部分。 _摘自 Perl 语言编程 Oreilly_
Perl 可以做什么
Perl 能做的事太多了!你应该问Perl不能做什么。:) 使用Perl可以轻松完成下列任务: * 处理文本数据. * 网络编程 * 数据库处理 * XML 处理 * 系统维护 * 图像处理 * ....
很多人使用 Perl 来替代 shell, 很多人使用 Perl 来避免编写繁琐的 C , C++ 或 Java 程序. 如果你的程序要求高效率, 你可以把费时部分用 C 写, 然后与 Perl 结合使用.
你几乎可以使用 Perl 来解决所有问题. 使用 Perl 与否完全是你的决定 :)
谁在使用 Perl
著名网站:amazon.com * bbc.com * slashdot.org * imdb.com * macromedia.com
以上只是使用 Perl 做 CGI 的网站. 众多华尔街的金融机构也都在使用 perl 来做金融数据的处理, 生物工程科学也都在很大程度上使用 perl. 网络上成千上万的系统管理员都在依靠 perl 让他们那的工作更容易,更有效.
你也可以访问 jobs.perl.org , 看看有谁在招聘 Perl 程序员 (yahoo, BBC, amazon, 卡耐基大学, 银行等), 也可以了解市场上对 Perl 有什么要求.
Perl 成功软件
"Webmin"、 "AWstats"、 "MRTG" 、"Spamassassin"、 "Movable Type"、 "Slashcode"
很多时候 perl 在开发之中只是其中的一个工具. 虽然最终产品没有丝毫 perl 的痕迹, 但 perl 的作用是无可抹杀的.
怎么学习 Perl
首先,寻找和你志同道合的人们,是你能否成功学习Perl的关键。一个良好的编程氛围有助于你在Perl的道路上走得更远,Perlchina ( www.perlchina.org 中国Perl用户推广组 )就是一个好的选择。 ** 其次,学习Perl要找本好书。很多参差不齐的教材很可能会把你代入歧途。 ** 更多有关于学习/使用 Perl 的方法, 资源等. 请参阅qiang 的 Perl学习指南。
Perl 常见问题和误解。
Perl 就是 CGI
嘘... 小声. 说这样的话会让懂 Perl 的人笑掉大牙 :) CGI 是 Common Gateway Interface 的简称。其主要的功能是在 WWW 环境下,藉由从客户端传递一些讯息给 WWW Server,再由 WWW Server 去启动所指定的程序码来完成特定的工作. PHP / Python / Perl 都可以撰写基于 CGI 的程序. 另外, Perl 可以做太多东西, 把它的功能仅限制在网络上实在是暴胗天物. *
Perl 难学么?
不难. Perl 很容易上手,整个学习过程也都相对容易. Perl 看起来和其他的编程语言类似. 如果你有写过 C, awk , shell 或 BASIC 程序, 你对 Perl 就不会感到陌生.
你并不需要对 Perl 完全了解来解决大部分的问题. Perl 有一句名言, TMTOWTDI "there's more than one way to do it" ( perl 可以用不同方法来解决同一个问题 ). 可以说,学习 Perl 很容易但如果你要想使用 Perl 来解决更多问题, 就要准备一些时间了.
最后, Perl 很多时候是一个即时编译的语言. 你可以很容易,迅速的测试,调试写出的程序而不用考虑再编译. 这会让学习 Perl 的过程变的更简单. *
Perl 程序难以维护
看情况而定. Perl 的语法和参数多种多样, 变量定义灵活, 由此允许程序员通过很多捷径使用很短代码解决问题, 上面提到的那句 Perl 名言在一定程度上验证了这一点. 正确利用 Perl 的这些特性, 有经验有纪律的程序员一样可以写出易于维护的代码, 但又有多少程序员可以划到上面那一类的?
如果你对 Perl 了解不够, 编程经验不足, 使用 Perl 来开放大型项目往往是个灾难的选择. 这就好像,正确使用火药,你可以达到自己的目的, 但错误使用很可能就会伤及自身. Perl 就是这样. * _我想成为一个 Perl 程序员么?
把自己的知识只局限为 Perl 不是一个明智的职业选择. 实际上, 你可以把上面那一句里的 Perl 换成任何一个电脑语言. 将来,你可能会因为公司不在使用 perl 了, 市场上不在追捧 Java 了,而失去工作机会. 往往是那些懂得几种技术,并可以结合使用的人最容易找到工作.
Perl 不代表一切. 同样的问题你可以用 Perl 或 PHP 或 Python 来解决. "Perl good, others bad", 因为对 Perl 的喜好而排斥其他语言实在是狭隘的让人可笑.
很多时候 Perl 被用作粘合工具,沟通不同程序,语言,另些时候 Perl 是系统管理员的手中法宝. 你的名片不一定写着 Perl 程序员, 但你会时不时的使用 Perl 来让你的工作变得更容易.
Java /C / Perl_
大部分语言都有自己的设计目的,擅长领域.
C / C++ 常被用来开发底层程序, 程序员要自己做内存管理,就算是非常有经验的 C 程序员也难免犯 overflow 的问题. 但这并不代表 C 设计的不好, 不安全. 因为正是 C 的这些特性才让我们写出高效的程序, 内核,驱动等. 作为程序员你就需要了解 C 的这些特性,尽量避免犯这些错误.
Java 和其他 strongly typed 语言, 在程序设计上就把程序员禁锢在一个保险箱里,使他们避免犯错误. 在开发大型工程时,Java 程序员写出的程序就容易一致化, 由此降低工程开发的成本. 这大概解释了市场上对 Java 程序员的需求.
而 Perl 是 loosly typed, 语法和参数多种多样, 变量定义灵活. 由此给了程序员很大的自由,大大缩短了程序开发时间. 但如何让十几个 Perl 程序员写出一致,易维护的程序就困难多了.
使用任何语言都可以写出糟糕的程序, 只是 Perl 让程序员更容易的写出糟糕的程序罢了.
但很多时候只要能够 *解决* 问题, 没人在乎你用的什么语言. 对一门电脑语言爱好但不盲目. 选择 C 而不是 Java 去写底层系统. 选择 Perl 而不是 Java 来分析 log.
我可以用 Perl 来做【某种差事】吗?
Perl 有足够的弹性和扩充性,从只需要写短短一行的档案处理工作到复杂的系统,几乎没有什麽做不到的。对有些人来说,Perl 被用来做 shell 程式的理想替代品。其他人则用高阶的 Perl 替代许多原先需要用 C 或 C++ 一类的低阶语言来达到的程式。哪些差事决定要用 Perl 来处理,这一切都得看你(或许还有你的经理...)。
如果您有一个提供 API 的程式库的话,您可用 C 或 C++ 来写一个 Perl 延伸,然后便可透过它将程式库中的任何一部分动态载入您的 Perl 主程式中。您也可以反过来,用 C 或 C++ 来写主程式,然后以即时动态载入的方式插入一些 Perl 程式码,产生一个威力强大的应用程式。
话虽如此,对解决某些特定的问题,使用小型、专精,专为特殊用途设计的语言总是比较方便的。 Perl 的设计是尽力地满足各种不同人的需要,因而不特别偏颇任何人。至於特殊功能语言的例子,随便举两个,譬如 prolog 和 matlab 便是。
Perl 的文化及其他
编程本应是有趣的事情.
Perl 就象一门自然语言. 你可以用它说简单的 '你好' '再见' , 也可以写出莎士比亚式的文章. Perl 博大精深,没有人可以完全透彻的理解 Perl. 就算 Perl 的发明者 Larry Wall 也不一定可以这么说. Larry 发明了 Perl, 成千上万的开发者成就了今天的 Perl.
就像艺术家一样, 编程也需要灵感和创造力. 而 Perl 给了程序员最大的自由来表达自己, 编程真正变成了有趣的事情. 使用 Perl 语言来创作诗歌就是属于Perl文化中的一个奇迹. JackyCheng为我们提供了一个 perl诗歌 的例子。
下载 Perl
下载 Windows 版本的 "Perl"。关于 windows 下的 perl 安装网上的教材已经很多,请"查阅" 。
最新版的Unix/Linux Perl "源代码": 你也可以通过自己的 Linux/Unix 的包管理程序来安装.