0 简介Perl是Practical Extraction and Report Language的缩写,也有人戏称它为Pathological Eclectic Rubbish Lister(反常、折衷的垃圾陈列器);它是由Larry Wall开发并维护的;Perl的目标是帮助Unix用户完成一些常见任务,而这些常见任务对于Shell又太复杂;Perl也可以作为一种WEB开发中的CGI语言;Perl的许多特性来源于C语言;Perl是一种脚本语言,由固定的解释器运行;Perl一般位于/usr/local/bin/perl或者/usr/bin/perl;Perl可以免费用FTP获取,解压并编译到目标目录;每个Perl脚本都是由#!/usr/local/bin/perl(这是Perl所在的目录)开头的;Perl的简单语句以分号(;)结束;在Perl脚本里,#号后面的是注释内容;Perl运行时需要有x权限,由命令$chmod +x filename实现;1 数据类型Perl的数据类型有三种:标量,列表数组和关联数组1.0 标量标量就是单一的,非矢量非数组的数据;Perl中的标量是以美元符号$和一个字母标识的,并且其后可以是若干个字幕,数字和下划线;Perl变量名区分大小写;Perl中的标量无论初始化还是引用都要有$;Perl的标量分为数字跟字符串两类;Perl的所有数值都由浮点型表示,形如1.3e5;Perl的字符串类型的取值来自全部ASCII表,字符串的长度”无内置限制”;Perl的字符串变量分为单引号字符串和双引号字符串;单引号字符串取消两个单引号之间所有内容的特殊含义,\和’例外,当在单引号字符串内需要表示时需要输入\在单引号字符串内需要表示单引号时需要用’;Perl的双引号字符串内支持转义字符,由开头,如n表示换行,t表示一个制表符table;Perl支持一般的算数运算,如 + – * / ** %;Perl支持逻辑运算,如 < > = == != ;Perl支持字符串运算,如 . x eq ne lt gt le ge cmp;Perl在对字符串进行数值运算时,会将字符串转换成十进制浮点数进行运算,如果字符串的开头或结尾有非数字,则将其去掉;Perl对数值进行字符串操作的时候会将上面的过程反过来进行;Perl同样支持三元运算符’ ? : ‘;1.1 列表数组列表数组的命名规则同标量相同,并以@符号开头;列表数组是圆括号内由逗号隔开的一系列标量;列表数组内支持..运算符,这个运算符的意思是生成一个从..左边到..右边的一些列连续值,如果不能生成,则生成空的列表数组;列表数组可以用=直接赋值;如果列表数组赋值时如果左右两个数组元素数不同,则在右边元素多时截去多余元素,左边元素多时多余的量被赋值undef(未定义);列表数组可以用@变量名[索引]的方式单独所以其中的每个元素;列表数组支持push()和pop()操作,结果同一个堆栈的同名操作;shift()和unshift()操作跟上面两个操作结果相似,其操作目标是列表数组左边元素而非右侧;reverse()运算符可以将列表数组内元素反向后的结果返回并保持原列表数组不变;sort()是排序运算符,返回按ASCII字符串字典顺序排序的列表数组,并保持原列表数组不变;chop()操作跟名字一样,去掉最后一个元素;1.2 关联数组关联数组的命名规则跟标量相同,以%%u5F00头;关联数组与列表数组类似,区别是其元素的索引可以是非数值,并且可以自定义;这些索引值成为关键字,可以方便的实现哈希散列;关联数组内的元素没有特定顺序,它可以是任意的;关联数组%array可以用$array{$key}引用;keys()操作生成由关联数组中所有关键字组成的列表数组,可用foreach(流控部分会讲到)遍历;在标量环境里keys()返回的是关联数组中名值对的个数;values()操作返回由关联数组中值组成的列表数组;each()返回关联数组中的一个名值对,连续使用则可遍历关联数组中的所有名值对,对数组赋值后将返回初始位置;delete()操作是用于删除名值对的;