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/// 是匹配操作符的扩展,使用新的字符串替换指定的字符串。基本格式如下:
s/PATTERN/REPLACEMENT/;
PATTERN 为匹配模式,REPLACEMENT 为替换的字符串。
八、 Perl 目录操作
1.
opendir DIRHANDLE, EXPR # 打开目录
readdir DIRHANDLE # 读取目录
rewinddir DIRHANDLE # 定位指针到开头
telldir DIRHANDLE # 返回目录的当前位置
seekdir DIRHANDLE, POS # 定位指定到目录的 POS 位置
closedir DIRHANDLE # 关闭目录
2. 显示目录下的所有文件,使用 glob 操作符