因有时需要在linux服务器上进行一些数据处理的工作,自学了一下perl,发现其功能的确非常强大,以下是一些简单介绍:
最经典的入门书当属《Perl語言入門》(《Learning Perl》、小骆驼书),可以查看此书介绍:
http://book.douban.com/subject/4088038/
亦可以到以下网站学习:
http://www.cbi.pku.edu.cn/chinese/documents/perl/index.htm
以下摘自《Perl語言入門》的概述部分(向老一辈资本主义程序员致敬!):
1、Larry 为什么发明Perl?
Larry 在80 年代中期发明了Perl 语言,当时他想从像新闻组邮件那样的文件中产生一些有用的报表给一个bug 报告系统,awk 语言不能胜任这任务。Larry,作为一个懒惰的程序员,为了彻底的解决这个问题,决定发明一种一般用途的工具,至少还能在一个不同的地方使用。这次努力的结果就是Perl V0。
2、为什么Larry 不采用别的语言?
程序语言本身没有缺陷,有吗?但是,在Larry 那个时候,他没有找到满足需要的语言。如果现在的某种语言在那个时代就已产生,很可能Larry 就会采用它。他需要能像shell 或awk 那样快速编码,同时具有如grep, cut, sort, sed等这些高级工具的强大功能,但又不采用像C 那样的语言。
Perl 填补了低级语言(如C,C++,汇编语言)和高级语言(如shell 编程)的空白。低级语言通常难于编码,并且丑陋,但速度快,且无限制;高级语言,在速度上,很难超过书写良好的低级语言。在低级语言里,你几乎能完成任何 事。高级语言,正好相反,一般速度慢,困难,丑陋,有限制;如果没有系统提供的函数,shell,批处理语言能完成的工作相当有限。Perl 简单,几乎是无限制的,速度快,也有些丑陋。
让我们从另一个角度来看关于Perl 的这四点:
第一,Perl 简单。如你将要见到的,这意味着容易使用。但不是特别容易学习。如果学习开车,你花数周或数月学习,然后就很容易的开车了。当你花了许多时间来学习 Perl 时,Perl 对你来说就简单了,Perl 几乎没有限制。几乎没有什么事不能由Perl 来完成。你一般不希望用Perl 来书写内核级的中断驱动程序(虽然Perl能完成)。但针对一般工作中遇到的问题,从一次性程序到工业级的运用,Perl 都能出色的完成。
Perl 速度快。那是由于,所有的Perl 开发者都使用Perl,他们希望它快。如果某人想加一个很酷的功能到Perl 中,但它会降低其它程序的速度,Larry 基本上会拒绝添加它除非找到一个方法使它足够快。Perl 有些丑。这是事实。O 'Reilly 给Perl 的图标是骆驼,这种动物是著名的骆驼书(也被称为Perl 语言编程)的封面,还有它的兄弟-本书(它的姐妹,羊驼书(Alpaca))。骆驼有些丑。但是它们努力工作,即便在艰苦的环境中。无论什么困难骆驼都能 完成任务,虽然他们不好看,不好闻,有时还向你吐唾沫。Perl 有些像它。
3、Perl 容易学习吗?
Perl 容易使用,但有些难学。当然,这具有普适性。设计Perl 时,Larry 做了学多权衡。当遇到能让程序员更容易使用,但对于初学者难于学习时,Larry 通常倾向于前一种。那是因为,你只学习一次,而将重复使用。Perl 有学多做法来节约程序员的时间。例如学多函数都有默认值;通常,这些默认行为就是你需要的。因此,你将节约学多时间来写像下面这样的代码:
while(<>){
chomp;
print join(“\n”,(split /:/))[0,2,1,5]),”\n”;
}
如果不利用Perl 的默认值和简写,本段代码大约会长10~12 倍,这将花更多时间来阅读和书写。并且由于有更多的变量,将难于维护和调试。如果你懂一点Perl,没有看见代码中的变量,那只是部分问题。它们都使用的 默认值。为了减轻程序员的负担,不得不增加学习的代价,因此你因当学习这些默认值和简写。
一个很好的类比,是英语中的单词。例 如,“will not”和“won’t”含义相同。但大多数人说“won’t”而非“will not”,因为这将节约时间,并且每个人都知道它们有相同含义。同样的,Perl 也把一些常用的语句以一种更简略的形式来表达,就像语言那样更快的“说”出来,并且被同行所理解。
一旦熟悉了Perl,将发现比shell 引用(或C 声明)花更少的时间,你将有更多的时间在网上冲浪,因为Perl 的强大能力。Perl 设计成能让你仅用数行就能漂亮的解决问题。你可以把这些工具带到下一份工作中,因为Perl 具有很高的移植性,因此你将有更多的时间冲浪。
Perl 是高级语言。这意味着,代码很紧凑,通常Perl 程序大约是它对应的的C 程序的1/4 到3/4 长。这使得Perl 程序的读,写,调试,维护速度都更快。当整个程序在一屏中,不需要向上向下滚动查看时,编程将更容易。并且,由于程序中bugs的数量大致和它的长度成正 比(而非和程序的函数),这就意味着,平均起来,短一些的Perl 程序意味着更少的bugs。
4、Perl 擅长什么?
Perl 擅长写那些需要在短时间内完成的程序。对于那些需要数十个程序员,花费数年的程序,Perl 也能很好的胜任。当然,更多的情况是你将写那些从开始构思到实际测试代码只需几十分钟的程序。Perl 被设计为:90%处理文本,10%针对其它情况。这种能力基本上能满足当今的编程任务。在理想情况下,每一个程序员懂得每一种语言;对于不同的项目将采用 最合适的语言。大多数情况,你要选择Perl。当Larry 发明Perl 的时候,TimBerners-Lee 还没有web 的丝毫想法,但它们是互联上的完美联姻。许多人声称90 年代初Perl 的发展使得内容能快速转换为HTML 格式在网上传输,而没有内容Web 是不存在的。当然,Perl 是一种优秀的书写CGI 脚本(由web 服务器运行的
程序)的语言,因此许多人如今仍说:“CGI 仅是Perl 吗?”或者“为什么不说Perl 而说CGI?”,这些论述很有意思。
5、Perl 不擅长什么?
Perl 擅长许多事,那么什么是它不擅长的呢?不应当使用Perl 来产生二进制码。那些程序可以给别人,或卖给别人,而他们不能看到程序内部的秘密,同时也不能维护和调试代码。当把Perl 程序给别人时,通常给他们的是源代码而非二进制程序。
当想要二进制程序时,我们没告诉你不可能。如果人们能安装和运行你的程序,它们也能反编译出来,无论是哪种语言。当然,这可能和你最初的源代码不同,但它们在某种程度上类似。要保护你的程序,最好的方法是,找些律师,写一份license:
“你可以利用代码做这个,不能做那个。如果违反这个规则,那我们将有律师找你的麻烦,保证让你后悔”。
分享到:
相关推荐
**ActivePerl介绍** ActivePerl是Perl语言的一个预编译版本,由ActiveState公司开发,旨在为Windows环境提供更好的兼容性和易用性。它包含了所有必要的组件,使得Perl可以在Windows系统上无缝运行,包括编译器、...
本书采用了易于理解的语言和结构清晰的章节布局来介绍Perl 6的各项特性。通过实例和练习帮助读者巩固所学知识。 #### 1.3 Perl 6与Perl 5的关系 尽管Perl 6与Perl 5在语法上有许多相似之处,但两者之间存在本质的...
Perl,全称“Practical Extraction and Reporting Language”,是一种高级、通用、解释型、动态的编程语言。它在1987年由Larry Wall开发,最初设计用于文本处理,但随着时间的发展,Perl的应用范围已经远远超出了这...
接下来,我们要介绍的是"LPERL.ADD"。这个术语可能有些误导,因为在标准的Perl语言中并没有一个名为"LPERL.ADD"的官方扩展。然而,根据上下文推测,这可能是对Perl库或者特定模块的引用,或者是用户自定义的一个工具...
"perl 模块介绍" Perl 模块是 Perl 编程语言中最基本的组成部分,每个模块都是一个独立的单元,定义在一个同名文件(以.pm 结尾)里面的包。在 Perl 中,模块是重复使用的基本单元。 Perl 安装时附带了许多模块,...
本文将详细介绍如何在Linux环境中安装Perl模块,并探讨两种主要的安装方式:自动安装(通过CPAN模块)与手动安装。 #### 二、自动安装Perl模块——使用CPAN ##### 2.1 CPAN简介 CPAN(Comprehensive Perl Archive ...
这本书详细介绍了Perl语言的基础知识、高级特性以及实际应用案例,对于希望深入了解Perl语言特性的开发者来说是一本不可或缺的参考书。 #### 作者介绍 - **Larry Wall**:Perl语言的创始人,同时也是本书的主要...
本文将详细介绍如何在CentOS系统上离线安装Perl RPM包,以及它在PostGIS安装过程中的作用。 首先,让我们了解Perl RPM包的安装步骤: 1. **获取Perl RPM包**:在有网络的环境中,你可以通过`yum download`命令或...
书中可能会介绍如何打印输出,读写文件,以及简单的文本处理。正则表达式,虽然在Perl中极其重要且相对复杂,但在入门教程中会被简化为更易理解的形式。此外,基础的错误处理和调试技巧也会被讲解,帮助新手避免常见...
1. **Perl软件介绍** 2. **Perl在Linux下的重要性** 3. **获取Perl源码包** 4. **解压与配置** 5. **编译与测试** 6. **安装与验证** #### Perl软件介绍 Perl是一种解释型的脚本语言,它具有强大的文本处理能力,在...
它会深入浅出地介绍如何读写文件、处理正则表达式以及进行基本的错误处理。Perl的正则表达式是其一大亮点,它们提供了极其强大的文本匹配和替换功能。 "Perl_语言编程.chm"文件则可能是更深入的Perl编程指南,通常...
本书循序渐进、深入浅出地介绍了Perl的主要特性及用Perl进行CGI编程的知识。全书包括24个学时内容和一个附录,共分四部分。第一部分主要讲述Perl的基本概念,第二部分重点介绍Perl的一些高级特性,第三部分介绍如何...
- **书籍格式**:采用章节式结构,从基础语法到高级特性,循序渐进地介绍PERL6的各种功能。 - **PERL6与PERL5的关系**:虽然PERL6是PERL5家族的一员,但它在设计上进行了许多革新,以解决PERL5的一些问题,并引入了...
1. **Perl简介**:介绍Perl的历史、特点和适用领域,让读者对Perl有一个全面的认识。 2. **Perl安装与环境设置**:指导如何在不同的操作系统上安装Perl解释器,并设置开发环境。 3. **Perl语法基础**:包括变量、...
本文将详细介绍MTK主要的Perl脚本及其应用场景。 一、初始化脚本 在MTK的开发流程中,初始化脚本通常是项目启动的第一步。这些脚本负责设置工作环境,包括安装依赖库、配置路径、创建必要的目录结构等。例如,`init...
以下是对Perl语言及其相关知识点的详细介绍: 1. **变量与数据类型**:Perl支持多种数据类型,包括标量(如字符串和数字)、数组(一维或多维)和哈希(关联数组)。Perl的变量以符号"$", "@", 或 "%"开头,分别...
本文将详细介绍 Perl 如何调用 C 代码的方法,以便读者能够更好地理解和掌握这种跨语言调用技术。 #### Perl 与 C 的接口:XS 扩展 XS (X Subroutine) 是一种用于创建 Perl 与 C 之间接口的语言。通过 XS,我们...
下面我们将详细介绍如何在Linux上离线安装`perl-IPC-Cmd`,以及提供的相关依赖文件的作用。 首先,离线安装通常涉及到手动下载所需的RPM包,并使用`rpm`命令进行安装。在这个例子中,我们有一系列与Perl相关的RPM包...