Perl初级教程 - 第二天


 

 

 

 

第一页:数组变量

数组变量是标量的集合。数组变量与标量有相同的形式,除了其前缀为@符号。下面的语句把三个元素赋给数组变量@food,把两个元素赋给数组变量@music。

数组通过以0开始的索引进行访问,方括号内为索引值。表达式

$food[2]

返回的结果为ells。注意上式中为$,而不是@,因为其引用的是一个标量。

数组赋值

在Perl中,相同的表达式在不同的上下文中会产生不同的结果。下面的第一个赋值语句引用了@music变量,所以结果与第二个赋值语句相同。

这也是把元素加入数组的一种方式。一种更简洁的把元素加入数组的方式是:

push(@food,"eggs");

- 把eggs推入数组@food的结尾。把两个或更多元素推入数组可以用下面方式中的一种:

push(@food, "eggs", "lard");
push(@food, ("eggs", "lard"));
push(@food, @morefood);

push函数返回新的列表的长度。

可以用pop函数移去一个列表中的最后一个元素,然后返回这个元素。在最初的列表中,pop函数返回eels,然后@food中有两个元素:

$grub = pop(@food); # Now $grub = "eels"

也可以把数组赋给一个标量。通常上下文是很重要的。$f=@food;得到@food的长度,但是$f="@food";把列表转换成以空格隔开每个元素的字符串。通过改变特殊变量$"的值可以把空格用其它任何字符串代替。这个变量只是Perl中很多特殊变量中的一个,它们中的很多都有奇怪的名字。

数组也可以用来为多个标量进行赋值:

($a, $b) = ($c, $d);		# Same as $a=$c; $b=$d;
($a, $b) = @food;		# $a and $b are the first two
				# items of @food.
($a, @somefood) = @food;	# $a is the first item of @food
				# @somefood is a list of the
				# others.
(@somefood, $a) = @food;	# @somefood is @food and
				# $a is undefined.

最后一个赋值语句的发生是因为数组是贪婪的,@somefood会吞掉@food中的任何值。因此应尽量避免这种方式。

最后,你可能想知道列表中最后一个元素的索引值,可以用这个表达式:$#food。

打印数组:

既然上下文很重要,就不要奇怪下面的表达式产生不同的结果:

print @food;	# By itself
print "@food";	# Embedded in double quotes
print @food."";	# In a scalar context

>>

Perl初级教程
第一页 数组变量
第二页 文件处理
第三页 控制结构

[第1天][第2天][第3天][第4天]

 



本文根据 网猴 相关文章改编,版权归原作者所有。