1. Perl 是 Practical Extraction and Report Language 的缩写,可翻译为 "实用报表提取语言"。
Perl 是高级、通用、直译式、动态的程序语言。
Perl 最初的设计者为拉里·沃尔(Larry Wall),于1987年12月18日发表。
Perl 借用了C、sed、awk、shell脚本以及很多其他编程语言的特性。
Perl 最重要的特性是Perl内部集成了正则表达式的功能,以及巨大的第三方代码库CPAN。
二. perl 基础语言
1. Perl 程序有声明与语句组成,程序自上而下执行,包含了循环,条件控制,每个语句以分号 (;) 结束。
2. perl 注释的方法为在语句的开头用字符#
3. Perl双引号和单引号的区别: 双引号可以正常解析一些转义字符与变量,而单引号无法解析会原样输出
三、perl 数据类型
1. Perl 有三个基本的数据类型:标量、数组、哈希。
标量
标量是Perl语言中最简单的一种数据类型。这种数据类型的变量可以是数字,字符串,浮点数,不作严格的区分。在使用时在变量的名字前面加上一个"$",表示是标量
数组
数组变量以字符"@"开头,索引从0开始,如:@arr=(1,2,3)
哈希
哈希是一个无序的 key/value 对集合。可以使用键作为下标获取值。哈希变量以字符"%"开头。
四、 perl 运算符
1. 引号运算
运算符
|
描述
|
实例
|
q{ }
|
为字符串添加单引号
|
q{abcd} 结果为 'abcd'
|
qq{ }
|
为字符串添加双引号
|
qq{abcd} 结果为 "abcd"
|
qx{ }
|
为字符串添加反引号
|
qx{abcd} 结果为 `abcd`
|
2.
运算符
|
描述
|
实例
|
&
|
如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中。
|
($a & $b) 将得到 12,二进制为 0000 1100
|
|
|
如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中。
|
($a | $b) 将得到 61 ,二进制为 0011 1101
|
^
|
如果存在于其中一个操作数中但不同时存在于两个操作数中,二进制异或运算符复制一位到结果中。
|
($a ^ $b) 将得到 49,二进制为 0011 0001
|
~
|
二进制反码运算符是一元运算符,具有"翻转"位效果,即0变成1,1变成0。
|
(~$a ) 将得到 -61 ,二进制为 1100 0011 ,一个有符号二进制数的反码形式。
|
<<
|
二进制左移运算符。左操作数的值向左移动右操作数指定的位数。
|
$a << 2 将得到 240 ,二进制为 1111 0000
|
>>
|
二进制右移运算符。左操作数的值向右移动右操作数指定的位数。
|
$a >> 2 将得到 15 ,二进制为 0000 1111
|
五、perl 数组
数组变量以 @ 开头。访问数组元素使用
$ + 变量名称 + [索引值]
格式来读取
1. 添加和删除数组元素
序号
|
类型和描述
|
1
|
push @ARRAY, LIST
将列表的值放到数组的末尾
|
2
|
pop @ARRAY
弹出数组最后一个值,并返回它
|
3
|
shift @ARRAY
弹出数组第一个值,并返回它。数组的索引值也依次减一。
|
4
|
unshift @ARRAY, LIST
将列表放在数组前面,并返回新数组的元素个数。
|
六、 perl 语句
Perl UNLESS 语句
unless(boolean_expression){
# 在布尔表达式 boolean_expression 为 false 执行
}
七、Perl 正则表达式
1. 正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
Perl语言的正则表达式功能非常强大,基本上是常用语言中最强大的,很多语言设计正则式支持的时候都参考Perl的正则表达式。
Perl的正则表达式的三种形式,分别是匹配,替换和转化:
-
匹配:m//(还可以简写为//,略去m)
-
替换:s///
-
转化:tr///
这三种形式一般都和
=~
或
!~
搭配使用, =~ 表示相匹配,!~ 表示不匹配。
2.
模式匹配修饰符
模式匹配有一些常用的修饰符,如下表所示:
修饰符
|
描述
|
i
|
忽略模式中的大小写
|
m
|
多行模式
|
o
|
仅赋值一次
|
s
|
单行模式,"."匹配"\n"(默认不匹配)
|
x
|
忽略模式中的空白
|
g
|
全局匹配
|
cg
|
全局匹配失败后,允许再次查找匹配串
|
3.
正则表达式变量
perl处理完后会给匹配到的值存在三个特殊变量名:
-
$`:
匹配部分的前一部分字符串
-
$&:
匹配的字符串
-
$':
还没有匹配的剩余字符串
4.
替换操作符
替换操作符 s/// 是匹配操作符的扩展,使用新的字符串替换指定的字符串。基本格式如下:
PATTERN 为匹配模式,REPLACEMENT 为替换的字符串。
八、 Perl 目录操作
1.
opendir DIRHANDLE, EXPR # 打开目录
readdir DIRHANDLE # 读取目录
rewinddir DIRHANDLE # 定位指针到开头
telldir DIRHANDLE # 返回目录的当前位置
seekdir DIRHANDLE, POS # 定位指定到目录的 POS 位置
closedir DIRHANDLE # 关闭目录
2. 显示目录下的所有文件,使用 glob 操作符