因有时需要在linux服务器上进行一些数据处理的工作,自学了一下perl,发现其功能的确非常强大,以下是一些简单介绍:
最经典的入门书当属《Perl語言入門》(《Learning Perl》、小骆驼书),可以查看此书介绍:[url]http://book.douban.com/subject/4088038/[/url]
亦可以到以下网站学习:
[url]http://www.cbi.pku.edu.cn/chinese/documents/perl/index.htm[/url]
以下摘自《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 有学多做法来节约程序员的时间。例如学多函数都有默认值;通常,这些默认行为就是你需要的。因此,你将节约学多时间来写像下面这样的代码:
如果不利用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:
“你可以利用代码做这个,不能做那个。如果违反这个规则,那我们将有律师找你的麻烦,保证让你后悔”。
最经典的入门书当属《Perl語言入門》(《Learning Perl》、小骆驼书),可以查看此书介绍:[url]http://book.douban.com/subject/4088038/[/url]
亦可以到以下网站学习:
[url]http://www.cbi.pku.edu.cn/chinese/documents/perl/index.htm[/url]
以下摘自《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:
“你可以利用代码做这个,不能做那个。如果违反这个规则,那我们将有律师找你的麻烦,保证让你后悔”。