1.数组的访问
使用下表访问
$fred[0]="yabba";
且任何能得到数字的表达式都可以做下标。如不是整数,则会自动舍弃小数位
$number=2.71828;
print $fred[$number-1]; #与print $fred[1]想等价
$y=2*4;
$number[$y-1]代表$number[1],因为索引的表达式只会被当做普通字符串处理。
数组的最后一个元素的索引值是$#数组名,如$#number,但索引是从0开始计算的,所以整个数组的长度是$#number+1。
数组还有另一种索引法,即负数数组索引值,如果此时数组number有三个元素:$number[0],$number[1],$number[2]。
那么可用负数索引:
$number[-1]--->$number[2]
$number[-2]--->$number[1]
$number[-3]--->$number[0]
2.列表直接量
(1,2,3)同(1,2,3,)末尾逗号省略
可以使用表达式
..范围操作符(range operator)
(1..10)表示1到10十个数字
(1.7..5.7)同(1..5)
($m..$n)
(0..$#number)
3.qw的用法(quoted by whitespace)
qw(fred barney betty)
qw!fred barney betty!
qw<fred barney betty>
qw#fred barney betty#
(,!,<,#称为定界符delimiter,注意起始和结束的定界符必须一样
qw中的字符会根据空白字符自动生成列表。空白字符包括:空格,制表符以及换行符。
注:qw中的/n和$fred不起作用。
4.列表赋值
($fred,$barney)=("first","second");
列表是在赋值前创立,所以可以如下使用
($betty[0],$betty[1])=($betty[1],$betty[0]);
交换两个变量值
@number=qw/1 2 3/;
@number=();空列表
@number=1..1e5;包含100,000个元素的列表
支持差额赋值,如果左边比右边少,则抛弃右边多余的值;如果左边比右边多,则左边多余的被赋值为undef。
空列表和列表有元素但是为undef是两种不同清况。
因为空列表无元素。
5.pop,push,shift,unshift
pop @array;
push @array,8;
pop,push针对数组末尾操作
shift @array;
unshift @array,9;
shift,unshift针对数组开头操作
6.数组可在字符串中进行内插
print "these element are @number";
但是如果是特殊情况,如输入邮件地址就需要转义
print "fred/@hotmail.com";
7.foreach
foreach的控制变量在循环结束后会被还原为循环之前的值,所以控制变量在foreach前是否已被定义无关紧要
如不指定控制变量,则会用默认变量名$_来代替。
8.上下文
同样的操作符,不同的上下文得出的结果就不一样。
@array=qw(fred barney betty);
@sorted=sort @array;列表上下文,得到排序的列表
$num=42+@array;标量上下文,得到42和列表长度的和
强制制定标量
scalar @array;得到array的长度。

3万+

被折叠的 条评论
为什么被折叠?



