【本文原创,转载请说明】
List是标量的有序集合(数据),array是存储列表的变量。列表的值不一定要放在数组里,但是每个数组变量都一定包含一个列表。
数组或者列表的头一个元素是第0个。任何求值能得到数字的表达式都可以用作下标
结果:
最后一个元素的索引值为$#XX,也存在从数组尾端往回计数的“负数数组索引值”。-1”最后一个元素,-2:倒数第二个元素,以此类推。
..范围操作符(range operator)该操作符会从左边的数字计数到右边,每次加1。
(5..1) #空列表
建立简单的单词列表:qw(quoted word) or(quoted by whitespace)不能将注释放在qw列表中。
定界符可以不同, qw( ),qw< >,qw / /, qw# #; 如果你要在被圈引的字符串内使用定界符,可以通过反斜线转义来引入这个字符。
列表值也可以被赋值:
在数组前加上@,可以引用整个数组。
Pop操作符负责取出数组中最后一个元素并将其作为返回值返回
Push:添加一个或者一串元素到数组的尾端。注意:push的第一个参数或者pop的唯一参数都必须是要操作的数组变量——对列表直接量进行压入(push)或者弹出(pop)操作是没有意义的。
Push和pop是处理数组的尾端,相似地,unshift 和 shift是对数组的开头。
Splice 第一个参数为目标数组,第二个为操作的一组元素的开始位置。如果只给出这两个参数,那么perl会把从给定位置开始一直到末尾的全部元素取出来并返回。
第三个参数指定要操作的元素长度。
第四个参数是要替换的列表:
注意数组内插:
Foreach能逐项遍历列表中的值,依次迭代:
Perl会自动存储foreach循环的控制变量并在循环结束之后还原。在循环执行期间,我们无法访问或改变已存储的值,所以当循环结束时,变量仍然保持循环前的值;如果它之前从未被赋值,那就仍然是undef。
Perl最喜欢用的默认变量:$_
Reverse操作符会读取列表的值,并按照相反的次序返回该列表。但他不会修改传进来的参数,假如返回值无处可去,那种操作也就变得毫无意义:
Sort操作符会读取列表的值(也可能来自组数),而且会根据内部的字符编码顺序对它们进行排序。和reverse一样不会修改参数。
以数组的“名称”为例:在列表的上下文中,它会返回元素的列表;在标量上下文中,则返回数组中的元素个数:
在perl想要列表上下文的地方我们要强制引入标量上下文,可以使用伪函数scalar。
本章习题:
第一题:
第二题:
第三题:
以上代码已测试成功,但是和答案给的相比,还是有不少的差距:
第一题:
第二题:
第三题:
觉得自己的代码不够精简,foreach语句的用法没有用到位,这和编程思想有关系,看来我是编程编少了,仍需大量努力啊。