我知道@array[0,2,6]
是一个包含多个值的数组。
我认为$scalar=3
是一个具有单个标量值的变量。
然而,$array[3, 4]
是什么?它是带有两个值的标量变量吗?
答案 0 :(得分:10)
@array[0,2,6]
(或更一般地@array[ EXPR ]
)是数组切片。 (参见perldata)索引表达式在列表上下文中计算,返回的列表被视为索引列表,并且切片返回由这些索引标识的元素。
$array[ EXPR ]
是数组元素。索引表达式在标量上下文中计算,返回的值被视为索引,并返回由该索引标识的元素。
代码3,4
在标量上下文中评估为4
- 请参阅perlop中的逗号运算符 - 因此$array[3,4]
与$array[4]
相同,除了无效背景警告。
答案 1 :(得分:5)
试试看:
perl -E '@ar = (10,11,12,42);say $ar[1,2,3]'
42
1,2,3是一个清单。在标量上下文中,它返回其最后一个成员。