今天我遇到了一个问题,需要我确定perl中数组的最大索引。我曾经这样做过:
my @array = (1, 2, 3);
print $array[@array - 1];
但今天我偶然发现了这段代码:
my @array = (1, 2, 3);
print $array[$#array];
我在文档中找不到任何关于此事的内容。 $#
构造究竟是什么?那是运营商吗?它是如何工作的,它比第一段代码更快吗?它总是返回最大数组索引吗?是否已弃用?
我知道这是很多问题,但它们都可以用一个来概括,这就是我真正想知道的:它是如何工作的?
答案 0 :(得分:24)
perldoc perldata, section "Scalar Values"中记录了这一点。简而言之,$#array
是@array
的最后一个索引。至于它是如何工作的 - 它有点像运算符,但只有$
和@
是运算符。将其视为特殊语法。数组的最后一个索引恰好是“有一个名字”。这是一个可以读取并分配给它的变量。
答案 1 :(得分:7)
答案 2 :(得分:3)
这会给你最后一个索引。它已在perldata中记录 - http://perldoc.perl.org/perldata.html