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初级教程
|
|