在Perl中,数组索引-1表示最后一个元素:
@F=(1,2,3); print $F[-1]; # result: 3
您也可以使用$#表示法,这里是$#F:
@F=(1,3); print $F[$#F]; # result: 3
因此,当我想指定范围中的最后一个元素时,为什么-1和$#F不会给出相同的结果:
print @F[1..$#F]; # 23 print @F[1..-1]; # <empty>
数组@F [1 ..- 1]应该包含从元素1到最后一个元素的所有元素,不是吗?
解决方法
你的问题是@a [b..c]语法涉及两个不同的操作.首先评估b..c,返回一个列表,然后使用该列表评估@a [].范围运算符..不知道它被用于数组下标,所以就它而言,1和-1之间没有任何内容.它返回空列表,因此数组返回一个空切片.