Perl简介

Perl语言是一种解释型的脚本语言。Perl语言由Larry wall于1986年开发成功。当初的目的主要是在Unix环境下,用于处理面向系统任务而设计的脚本编程语言。Perl对文件和字符有很强的处理、变换能力,它特别适用于有关系统管理、数据库和网络互联以及WWW程序设计等任务,这样使得Perl称为系统维护管理者和CGI编制者的首选工具语言。
Perl具有高级语言(如C)的强大能力和灵活性。事实上,你将看到,它的许多特性是从C语言中借用来的。
Perl与脚本语言一样,Perl不需要编译器和链接器来运行代码,你要做的只是写出程序并告诉Perl来运行而已。这意味着Perl对于小的编程问题的快速解决方案和为大型事件创建原型来测试潜在的解决方案是十分理想的。
Perl提供脚本语言(如sed和awk)的所有功能,还具有它们所不具备的很多功能。Perl还支持sed到Perl及awk到Perl的翻译器。
简而言之,Perl像C一样强大,像awk、sed等脚本描述语言一样方便。

Perl优点

相比C、Pascal这样的"高级"语言而言,Perl语言直接提供泛型变量、动态数组、Hash表等更加便捷的编程元素。
Perl具有动态语言的强大灵活的特性,并且还从C/C++、Basic、Pascal等语言中分别借鉴了语法规则,从而提供了许多冗余语法。
在统一变量类型和掩盖运算细节方面,Perl做得比其他高级语言(如:Python)更为出色。
由于从其他语言大量借鉴了语法,使得从其他编程语言转到Perl语言的程序员可以迅速上手写程序并完成任务,这使得Perl语言是一门容易用的语言。
Perl 是可扩展的,我们可以通过CPAN("the Comprehensive Perl Archive Network"全面的 Perl 存档网络)中心仓库找到很多我们需要的模块。
Perl 的 mod_perl 的模块允许 Apache web 服务器使用 Perl 解释器。

Perl缺点

也正是因为Perl的灵活性和"过度"的冗余语法,也因此获得了仅写(write-only)的"美誉",因为Perl程序可以写得很随意(例如,变量不经声明就可以直接使用),但是可能少写一些字母就会得到意想不到的结果(而不报错),许多Perl程序的代码令人难以阅读,实现相同功能的程序代码长度可以相差十倍百倍,这就令程序的维护者(甚至是编写者)难以维护。
同样的,因为Perl这样随意的特点,可能会导致一些Perl程序员遗忘语法,以至于不得不经常查看Perl手册。
建议的解决方法是在程序里使用use strict;以及use warnings;,并统一代码风格,使用库,而不是自己使用"硬编码"。Perl同样可以将代码书写得像Python或Ruby等语言一样优雅。
很多时候,perl.exe进程会占用很多的内存空间,虽然只是一时,但是感觉不好。

Perl变量

Perl语言中的变量有3种:纯变量(scalar variable)、数组(array)和关联数组(associative array)。
纯变量
纯变量又称标量变量,是Perl语言处理的最简单的数据类型。标量可以是数字(如2、3、2.5e6),也可以是字符串(如“hello”、“生物信息”)。
Perl语言中的标量变量以$和一个字母开始,以后可以是字母、数字和下划线,大小写有区别,而且所有字母、数字和下划线都有效。如:$a和$A是不同的变量。
Perl语言中的变量可以通过操作符(如+或.等)来产生新的变量。可以从文件和设备中读取变量,也可以将其输出。使用纯量变量时要在前面加上$符号。
标量数据可分为数字和字符串两种,数字又可分为整型变量和浮点变量。
整型变量,如2、-200、3568等。Perl语言支持8进制和16进制变量,8进制以0开头(如0255,表示8进制的255),16进制以0x或0X开头(如一0xlA,代表负的1A)。浮点变量,如2.5、一6.3e5、一2.3e一6等。
最短的字符串可以没字符,称为空字符,最长可以把内存填满,这与Perl语言的“无内置限制”的原则一致。
字符串有两种格式:单引字符串和双引字符串。
单引字符串(single-quoted string)就是用单引号括起来的一串字符。
双引字符串(double-quoted string)就是用双引号括起来的一串字符。
数组
数组是标量数据的有序列表。数组可以含任意多个元素,最小的数组可以不含元素,而最大的数组可以占满全部可用内存。数组实量(array literal)是位于括号内用逗号分开的一系列值。如:(1,2,3,4,5)表示有5个数值的数组。
数组变量具有单独的数组值,要以@打头。如:@zmd
数组的赋值和标量赋值一样,也用等号表示。Perl语言根据赋值对象是标量还是数组变量来确定赋值操作是标量赋值还是数组赋值。
若数组实量中只含有变量引用(不是表达式),则此数组实量也可作为变量使用。它可以用在赋值运算符的左边。例如:($a,$b,$c)一(1,2,3)表示将1赋给$a,2赋给$b,3赋给$c。
关联数组
关联数组和数组类似,它包含标量数据,可用索引值来单独选择这些数据;和数组不同的是,关联数组的索引值不是非负的整数而是任意的标量。这些标量称为关键字(key),可以在以后用于检索数组中的数值(value)。关联数组的元素没有特定的顺序,可以把它们想像为一组卡片。每张卡片上半部分是索引而下半部分是数值。
关联数组是Perl语言中特有的,关联数组是一个功能强大的数组。使用关联数组时要在前面加上%号,关联数组的格式如:ARRAY=(key1,valuel,key2,Value2,key3,value3),其中每一个关键字都有一个相对应的值。