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

Igo*_*yev 21 syntax perl operators

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

my @array = (1, 2, 3);
print $array[@array - 1];
Run Code Online (Sandbox Code Playgroud)

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

my @array = (1, 2, 3);
print $array[$#array];
Run Code Online (Sandbox Code Playgroud)

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

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

hob*_*bbs 27

这在perldoc perldata中记录,"标量值"部分.简而言之,$#array是最后一个指数@array.至于它是如何工作的 - 它有点像操作员,但只有操作员$@操作员一样多.将其视为特殊语法.数组的最后一个索引恰好是"有一个名字".这是一个可以读取和分配的变量.


bvr*_*bvr 7

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

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

$array[-1]
Run Code Online (Sandbox Code Playgroud)

得到最后一项.