《Perl编程24学时教程》笔记第4课 perl堆栈:列表与数组

发布时间:2021-01-15编辑:脚本学堂
本节内容为《Perl编程24学时教程》笔记的第4课时,学习下perl的基本构件的堆栈:列表与数组,有需要的朋友参考下。

本节开始分享下《Perl编程24学时教程》第4课时的学习笔记。

第4课时  基本构件的堆栈:列表与数组

3种表示列表数据的方法:列表、数组、哈希结构。
列表由一组标量组成,各标量之间用逗号隔开。
数组变量名由一个@跟一个有效的变量名组成,可以存放一个列表。数组中的项目成为数组元素,元素位置成为索引。

一、将数据放入列表和数组
qw运算符将每个字符串用单引号括起来,元素之间用白空间(空格、制表符、换行符)隔开。
..范围运算符,构成一个左边的操作数和右边的操作数之间所有数的列表,若左边的操作数大于右边的操作数,则生成一个空列表。
创建数组只要将列表赋给数组即可。

数组赋值使用等号,数组原有的元素将会丢失,若直接量的列表包含列表,则合并成一个列表。
若赋值数组左边的列表只包含变量名,则列表可用来对其元素进行初始化。
若赋值数组左边的列表包含数组,则数组接受右边列表的剩余值。

如果左边包含的变量比它拥有的元素多,那么多余的变量将接受undef这个值。如果右边的变量比左边的元素少,那么右边多余的元素将被忽略。

二、从数组中取数据
使用句法$arrayname[index]访问数组元素。
可以将数组划分成片,使用@标号,使用方括号指明数组的各元素。

1,寻找结尾
$#arrayname 返回数组最后一个有效索引的号码,修改其值,就会改变数组的长度。
$size = @arrayname,在期望存在标量的位置上使用数组变量,得到数组元素的个数,比$#arrayname大1。
可以为数组设定负索引,从结尾开始计数,然后反向递增。

2,上下文
两个重要的上下文是列表上下文和标量上下文,此外还有布尔上下文和无效上下文。
Perl可以根据上下文,在列表和标量之间自动转换。

3,其他
scalar函数用来强制在标量上下文中进行运算。
chomp函数以标量为参数,则从标量结尾处删除记录分隔符;以数组为参数,则从数组的每个标量结尾处删除分隔符。
<>运算符在标量上下文中,读取来自终端的一行输入;在列表上下文中,读取来自终端的所有输入,直到文件结尾,并将数据放入列表。
x运算符左边的操作数是标量时,返回一个字符串,是列表时,返回一个数组。
,运算符在列表上下文中,返回列表,在标量上下文中,返回最右边的元素。

三、对数组进行操作
1,遍历数组
 

复制代码 代码示例:
for($index=0;$index<@arrayname;$index++){$arrayname[$index];}
foreach $element (@arrayname){$element;}

2,数组和标量间转换
split函数,第一个参数是模式,第二个参数是要分割的标量,使用模式将标量分割。
join函数,第一个参数是连接字符串,第二个参数是要组合的标量,使用连接字符串将标量组合。

3,数组排序
sort函数接受一个列表作参数,按照ASCII码的顺序排序,返回一个排定顺序的新列表。
sort函数还可以接受第二个参数,指定排序的顺序,大于0正叙排列,否则倒叙排列。
<=>飞船运算符,左边的操作数小于右边的,返回-1,等于返回0,大于返回1。
cmp运算符,用于比较字母字符串,用法同飞船运算符。
reverse运算符,标量参数时,返回倒序后的字符串,列表参数时,返回倒序后的列表元素。