一、基础知识
1.Perl 程序由声明与语句组成,程序自上而下执行,包含了循环,条件控制,每个语句以分号 ; 结束。如果语句结束没有 加;,那么会报如下的错:
2.普通单行注释使用#; 3.perl 也支持多行注释,最常用的方法是使用 POD(Plain Old Documentations)来进行多行注释,如下左图。这里=pod、=cut只能在行首,且以=开头,以=cut结尾,=后面紧接一个字符,=cut后面可以不用
4.如果空格和分行出现在字符串内,他会原样输出,如下图的输出结果。
5.所有类型的空白如:空格,tab ,空行等如果在引号外解释器会忽略它,如果在引号内会原样输出。
6.Perl双引号和单引号的区别: 双引号可以正常解析一些转义字符与变量,而单引号无法解析会原样输出。如下两个例子,单引号会输出\n并且不会换行,双引号正常输出。
7.单引号可以用来定义多行文本,因为它会原样输出。
二、Perl基本数据类型
Perl 有三个基本的数据类型:标量、数组、哈希。
1.标量的数据类型的变量可以是数字,字符串,浮点数,不作严格的区分,是一个单一的变量,写法是在变量的名字前面加上一个 $
2.数组变量以字符 @ 开头,索引从 0 开始,如:@arr=(1,2,3);或者以qw开始定义。qw//;或者按照索引给数组赋值。
3.哈希是一个无序的 key/value 对集合。可以使用键作为下标获取值。哈希变量以字符 % 开头
4.数组是用于存储一个有序的标量值的变量。要访问数组的变量,可以使用美元符号($)+变量名,并指定下标来访问,如果要取其中多个元素(也叫切割数组),可写多个下标,使用逗号将其隔开即可,如果是连续的索引,可使用..。举例如下:
5.哈希是一个 key/value 对的集合,哈希以 % 开始,如果要访问哈希值,可以使用 $ + {key} 格式来访问,如下例子。
三、perl常用转义字符
四、变量上下文
上下文是由等号左边的变量类型决定的,等号左边是标量,则是标量上下文,等号左边是列表,则是列表上下文,如下例子,数组@names被赋值了两次,第一次赋值给数组,第二次赋值给标量,那么最终的打印结果类型由等式左边决定,第一个打印出数组的值,第二个打印出数组的长度。
五、标量运算
标量的简单运算举例如下:
这里注意如果一个标量定义了之后但是在后面的脚本里面没有用到也会报错,提醒你只定义了一次。
六、特殊字符
1.如__FILE__, __LINE__, 和 __PACKAGE__ 分别表示当前执行脚本的文件名,行号,包名,其中下划线__由两个短下划线组成。
如下图,这些特殊字符是单独的标记,不能写在字符串中,写在字符串中将不能被识别。
2.v字符
一个以 v 开头,后面跟着一个或多个用句点分隔的整数,会被当作一个字串文本。
七、数组
7.1 数组序列号
数组序列号是指可以按序列输出的数组形式,格式为 起始值 + .. + 结束值。
起始值和结束值中间的点不能为一个或三个以上,只有一个点时效果是拼接的效果,三个点以上会报语法错误
7.2 数组大小
数组大小由数组中的标量上下文决定,如下例1中返回的是数组的物理长度; 例2中如果要返回数组的最大索引。
7.3 使用函数在数组中添加元素
使用函数在数组中添加元素时常见的函数如下:
举例如下:
7.4 替换数组元素——splice()
数组元素替换使用 splice() 函数,语法格式为:splice @ARRAY, OFFSET [, LENGTH [ , LIST ] ],其中,@ARRAY是要替换的数组;OFFSET是起始位置,LENGTH是替换的元素个数,LIST:替换元素列表。
Example:对数组@num中的元素进行替换,从第6个数开始,替换5个数,替换的内容是21 22 23 24 25
7.5 将字符串转化为数组——split()
将字符串转换为数组使用 split() 函数,语法格式如下:split [ PATTERN [ , EXPR [ , LIMIT ] ] ],PATTERN:分隔符,默认为空格,EXPR:指定字符串数,LIMIT:如果指定该参数,则返回该数组的元素个数。
7.6 将数组转换为字符串——join()
将数组转换为字符串使用 join() 函数,语法格式如下:join EXPR, LIST,EXPR表示连接符,LIST表示列表或数组
7.7 数组排序——sort()
sort [ SUBROUTINE ] LIST,SUBROUTINE:指定规则,LIST:列表或数组。默认的排序是按ASCII来排序,所以建议在对数组进行排序时将每个元素都转换为小写。
特殊变量
一般情况下数组的索引值默认从0开始,但是在perl里面如果将 $[ 设置为 1,则数组的第一个索引值为1,第二个为 2,以此类推。如下例子,该例子中的google对应的索引值变成了1。
7.8 合并数组
1.数组的元素以逗号分隔,同样可以使用逗号来合并数组,如下例子:
2.在新的数组里嵌套数组,如下例子:
7.9 从列表中选择元素
一个列表也可以当数组用,在列表后指定索引值可以读取指定的元素,如下例子中的列表后紧跟的[4],即索引到列表里的第4个元素;
同样我们可以在数组中使用 .. 来读取指定范围的元素
八、哈希
哈希变量的写法以%开始,表示的是键值对的关系,访问哈希元素的格式:${key}
8.1 创建哈希
1.为每个值单独分别设置value,如例1;
2.通过列表设置,列表中第一个元素为 key,第二个为value,如例2;
3.也可以使用 => 符号来设置 key/value,如例2;
4.使用 - 代替单引号,如例3;
8.2 访问哈希元素
访问哈希元素${key},其中key的形式与创建哈希时键值的写法保持一致。
哈希值提取到数组语法格式:@{key1,key2}。
读取哈希的key和value:使用 keys 函数读取哈希所有的键,语法格式为:keys %HASH,该函数返回所有哈希的所有 key 的数组。同样的,哈希的value也可以使用keys函数来读取。
8.2 检查元素是否存在——exists函数
如果你在哈希中读取不存在的 key/value 对 ,会返回 undefined 值,且在执行时会有警告提醒,为了避免这种情况,我们可以使用 exists 函数来判断key是否存在,存在的时候读取,不存在时输出一个自定义信息。
获取哈希大小
哈希的大小为元素的个数,可以通过先获取 key 或 value 的所有元素数组,再计算数组元素多少来获取哈希的大小
哈希中添加或删除元素
添加key/value对可以通过简单的赋值来完成,但是删除哈希元素需要使用delete函数
8.3 迭代哈希
可以使用foreach和while来迭代哈希:
比较运算符
九、其他
use strict,该指令的作用是提示在编写perl的时候要遵守一些编码规范,否则编译器会报错。比如每一句语句后面要加上;等
use warnings,该指令的作用是帮助在编写过程中找到打字错误。
=>表示键值对,左键右值