Perl简介 - IDC资讯网_站长学院 - Java PHP Flex Python Ajax CSS 编程 开源 学习 总结 分享

Perl简介

[ 2008-06-10 18:55 | by 草山湖 ]
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 可以做什么
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诗歌 的例子。
Tags:
编程语言 | 评论(0) | 引用(0) | 阅读(3734)