Perl学习笔记(第三章.列表与数组)

1.列表与数组

1.列表与数组的关系:列表是指标量的有序集合,而数组是存储列表的变量

2.Perl中对于数组的访问和C语言一样,下标也是从0计数。数组变量的名称以字符@开头

2.列表直接量

列表直接量可以由圆括号内用逗号隔开的一串数据表示,而这些数据就称为列表元素。例如:

(1, 3, 5)  #包含1、3、5这三个元素的列表
("fred",4.5)  #两个元素,"fred"和4.5
()  #空列表--0个元素
(1..100)  #从1到100步长为1构成的列表

最后的范围操作符(range operator)  ..,实现把从左边的数字计数到右边,每次加一,注意:这个操作符只能用于递增。

3.qw直接量

使用qw(quoted word)简写来创建简单的单词列表(Perl会把里面当做单引号内的字符串来处理,所以也就不能使用\n之类的转义字符了,并且其中空白符都会被抛弃)。

据以上,下面的两种表示完全相同:

qw(fred barney betty wilma)   #第一种表示
qw(fred 
    barney betty
wilma)  #与上面的表示相同,但是看上去比较奇怪

前面的例子都是使用一对圆括号作为定界符,Perl允许你使用任何的标点作为定界符,但必须左右匹配!如:

qw(fred barney betty wilma)
qw!fred barney betty wilma!
qw/fred barney betty wilma/
qw#fred barney betty wilma#

4.列表的赋值

对列表赋值,多出来的值会被忽略;

如果变量个数多于列表值的个数,多出的变量会被设成undef。

5.pop和push操作符

pop操作符取出数组中最后一个元素并且将它作为返回值返回;

push操作符将一个元素添加到数组的尾端。

@array = 1..5;  #(1,2,3,4,5)
$fred = pop @array;  #fred变成5,@array变成(1,2,3,4)
pop @array;  #@array变成(1,2,3)
@array = 1..5;
push @array,6;  #@array现在是(1,2,3,4,5,6)

6.shift和unshift操作符

shift操作符取出数组中的第一个元素并且把它作为返回值返回;

unshift操作符将一个元素添加到数组的头部。

@array = qw#dino fred barney#;
$m = shift @array;  #$m变成dino,@array现在是("fred","barney")
@array = qw#dino fred barney#;
unshift @array,"hello";@array现在是("hello","dino","fred","barney")

7.splice操作符

splice的四个参数:

splice(目标数组,操作元素的起始位置,操作元素长度,替换列表)

@array = qw(pebbles bino fred barney betty);  #不删除的插入元素:把第三个参数设为0
@removed = splice @array,1,0,qw(wilma);  # 什么元素都不删除
                                         # @removed = qw()
                                         # @array 变为 qw(pebbles wilma dino
                                         #               fred barney betty)

8.字符串的数组内插

注意:数组的索引表达式都会被当做普通字符串表达式来处理。

@fred = qw(eating rock is wrong); 
$fred = "right";  #我们想说的是"this is right[3]"
print "this is $fred[3]\n";  #用到了$fred[3],打印"wrong"
print "thid is ${fred}[3]\n";  #正确打印(使用花括号避免歧义)
print "thid is $fred"."[3]"\n";  #正确打印(使用分开的字符串避免歧义)
print "this is $fred\[3]\n";  #正确打印(使用反斜杠避免歧义)

9.foreach控制结构

通过foreach遍历列表中的值。

@fred = qw(eating rock is wrong);
foreach $rock(@fred){       
	print $rock."\n";
	};

#输出:
eating
rock 
is 
wrong

10.Perl最喜欢的默认变量:$_

@fred = qw(eating rock is wrong);
foreach (@fred){       
	print $_."\n";
	}

这段代码与上面的输出是一样的,如果没有告诉Perl使用哪个变量,都会自动使用 $_。

11.reverse操作符

reverse操作符会读取列表的值,然后以相反的次序返回这个列表。

@fred = 6..10;
@barney = reverse(@fred); #得10,9,8,7,6

12.sort操作符

sort操作符会读取列表的值,并且根据内部的字符编码顺序对其排序。

13.each操作符

每次对数组调用each都会返回数组下一个元素所对应的索引和该元素的值。

@fred = qw(eating rock is wrong);
while(($index,$value) = each @fred){
	print "$index:$value\n";
	}

 

你可能感兴趣的:(perl)