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 操作符