来源:linux宝库作者:linux宝库 发布时间:2007-09-30 00:00:00


假如您曾使用过linux,无论时间长短,都必定听说过perl;甚至可能在不知道的情况下运行了不少perl的脚本。很多服务程式,象 “inews”、“mirror”、“debconf”、“majordomo”、“sirc”等等,都是纯粹用perl写的。在Debian区域的 “Packages.gz”文档里做一个简单的的“zgrep”,您就能够知道有382个包需要perl的支持(也就是意味着这些包都至少有一部分是用 perl写的。),其他28个软件包也建议或推荐使用perl支持。
但是Perl语言有什么出色之处呢?
"Perl语言在文本处理方面很突出,他把不同的内容联成一个整体。对于这种脚本语言来说任何的那些不同的元素,看起来都是相同的。”??John Ousterhout,Tcl脚本语言的作者
Perl即“Practical Extraction and Report Language”(实用析取报表语言)。是的,比较粗,但是我想那就是您所得到的??假如您打算确信$HUNN NGOUS CORP并且使用他的话。事实上,Larry Uall< Larry@wall org >(Perl的创立者)在Perl的帮助手册页里提出:“Perl实际上代表的是Pathologically Edectic Rubbish Lister,但不要告诉任何人我这样说过。”唔,他是Larry,对此我又能再说些什么呢?
Perl已被广泛的认为是“一种拥有各种语言功能的梦幻脚本语言”、“Unix 中的王牌工具”。连同其他的一些类似的称呼,这些都是赞誉之辞,Perl被用来写单行脚本,快速执行程式,大的规划项目(Amazon.com的任何评论产品和控制系统,Netscape的内容策划管理和传送系统,人类整组基因工程的DNA排序连同计划管理等等)。更有数以百万计的令我们惊讶的各种各样的事情的高速程式。Perl还能够实现许多UNIX的公共系统工具的功能(提示:假如您正在学或必须学awk, sed, grep和 tr,我建议您以Perl来代替他们。任何的功能,更快的执行效率,相信您将永远不会因为他的性能发展太快而不适应他。)
就像您对任何的现代语言所期望的那样,Perl允许您建立面向对象的程式。他也能够进行网络操作(例如socket等等),并且有良好的可移植性(一个写得好的脚本能够在Linux,BSD,Solaries,Dos,Win9x,NT,MacOS,OS/2, AnugaOS,VMS等操作系统中无需任何修改的运行),编写和调试周期很短??由于没有编译的需要,您只需将变化的部分写出,就能够运行脚本。更有数目庞大的可适用于执行任何一项任务的模块(即预建立Perl的例程),Comprehensive Perl Archiue Network (CPAN)就是每一个Perl程式员所能拥有的最好的模块库之一。
哦,但那是真的吗?
问得好,我希望在您使用Perl大约一年之后,就能告诉我答案。相同东西的描述就像一个容器……,我仍旧在试图寻找一个适合Perl的足够大的容器(要是带有能锁的盖子就更好了)。
那Perl不适用的方面呢?
我不会用Perl去写一个GUI文字处理程式,一个图像游戏,或一个图像浏览器。Perl能通过和许多其他语言的接口真正的交互,所以您能够实现刚才所说的全部程式。但在我看来,在其他编程语言里有许多更有效的方法去做那些事情。“对一个拿着锤子的人来说,任何的问题看上去都像是钉子”??程式员们小心了。
值得注意的是,Perl本身并不是用Perl写成的,也不是Linalx的内核。那些底层的事务用C/C++来处理会更好的。“用最适合的工具去做最适合的工作”应成为每个程式员的座佑铭。
在拉开跳伞索之前的最后一次告诫。
假如您对Perl有一点了解,或看过《Aint The Way I Learned It》系列内容的话,一定记得Perl的口号:“做事总有不止一种办法(There’s More Than One Way To Do It)”。这常被缩写为TMTOMDI,并称为“tim-today”,是Perl的核心观点之一。当然,任何对明显的错误的订正都很欢迎。
那些看过我早些时间写的关于Shell脚本的丛书的人也许记得,一个脚本开始都有被称作hash-bang或shebang的行:
#!/bin/ bash
这行告诉外壳(shell)派生一个subshell(子shell),随后的代码将被这个特定的subshell程式解释执行。Perl脚本也相同,第一行必须是:
#!/usr/bin/Perl
或任何一个正确的Perl解释器的路径。
注意到Hash-bang的必要条件:
1) 他必须是在脚本中的第一行。
2) #号必须是本行的第一个字母,并且在#号和!号之间不能有任何字母或符号。
3) 必须使用绝对的路径,而不是只有可执行程式的名称。
下面,让我们试着写出我们的第一个 Perl脚本:
#!/ usr/bin/Perl
# "goodbye" - a modern, high-angst replacement for "Hello World"
print "Goodbye, cruel world!
";
unlink $0;
嗯,至少在离开以前说了“再见”;礼貌夫人都会为此骄傲的。我们在这个脚本里做了什么呢?有几件事情是相当明显的:第一,“hash-bang”,第二,一行告诉我们脚本要做什么的说明?从shell脚本发展出来的另一个东东,并且这是个不错的想法(在代码中并没有过多的解释!)。第三,我们用 “print”函数打印出所要的信息。注意,在一串字符末尾的“ ”:Perl不会自动为您提供一个换行,所以您必须自己决定要还是不要。还要注意,在每一行代码末尾的分号:就像C语言,Perl也有同样的需要,不幸的是这常被编程者所忘记。实际上,由于有着相对易懂的信息,Perl的错误检查十分容易,作为代码语句的分隔标志,分号常被认为是下一行的前导符。假如您注意到这个问题,并不麻烦,最好记住使用分号。
最后一行的意思是删除 “goodbye cruel world”文档,符号“$0”仅仅是被运行堵塞的脚本的名字的引用,“unlink”做了和“rm”相同的事。注意,“$0”比“goodbye”甚至是“/goodbye”有用的多,不管文档是什么名字,“$0”将返回这个文档名。
|
还没有关于此文章的相关评论!