美元和数字如何在perl中一起工作?

时间:2011-12-23 17:20:29

标签: perl syntax operators

今天我遇到了一个问题,需要我确定perl中数组的最大索引。我曾经这样做过:

my @array = (1, 2, 3);
print $array[@array - 1];

但今天我偶然发现了这段代码:

my @array = (1, 2, 3);
print $array[$#array];

我在文档中找不到任何关于此事的内容。 $#构造究竟是什么?那是运营商吗?它是如何工作的,它比第一段代码更快吗?它总是返回最大数组索引吗?是否已弃用?

我知道这是很多问题,但它们都可以用一个来概括,这就是我真正想知道的:它是如何工作的?

3 个答案:

答案 0 :(得分:24)

perldoc perldata, section "Scalar Values"中记录了这一点。简而言之,$#array@array的最后一个索引。至于它是如何工作的 - 它有点像运算符,但只有$@是运算符。将其视为特殊语法。数组的最后一个索引恰好是“有一个名字”。这是一个可以读取并分配给它的变量。

答案 1 :(得分:7)

perldata中的第一个示例中提到了该用法。它表示数组中最后一项的索引。

顺便说一句,您也可以使用

$array[-1]

获取最后一项。

答案 2 :(得分:3)

这会给你最后一个索引。它已在perldata中记录 - http://perldoc.perl.org/perldata.html