2010-01-08 117 views

回答

37

你想

my @slice = @rainbow[0 .. $#rainbow - 5]; 

注意,1是第二个元素,而不是第一个。

+3

万一任何人需要查找什么$#数组意味着http://stackoverflow.com/questions/8618858/how-do-dollar-and-number-sign-together-work-in-perl – 2015-02-19 01:03:04

+0

谢谢@Chas,它为我工作 – 2016-02-15 06:17:30

18

..操作形成从左至右价值range - 如果权大于或等于剩下。另外,在Perl中,数组索引从零开始。

这个怎么样?

@slice = @rainbow[0..$#rainbow-5]; 

$#array给出了数组中最后一个元素的索引。

5

从开头两句为range operator,在perlop记载:

二进制“”是的范围内操作,这是根据上下文实际上是两个不同的运营商。在列表上下文中,它返回从左值到右值计数(由1开始)的值列表。如果左侧值大于右侧值,则返回空列表。

当代码不起作用时,分解它以查看发生了什么。举例来说,你会尝试的范围内操作,看看它产生:

my @indices = 1 .. -5; 
print "Indices are [@indices]\n"; 

当你有一个空的列表,并意识到有一些事情,你不明白,检查无论你是文档试图去检查它是否在做你认为应该做的事情。 :)

相关问题