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
.至于它是如何工作的 - 它有点像操作员,但只有操作员$
和@
操作员一样多.将其视为特殊语法.数组的最后一个索引恰好是"有一个名字".这是一个可以读取和分配的变量.
在perldata的第一个例子中提到了该用途.它表示数组中最后一项的索引.
顺便说一句,你也可以使用
$array[-1]
Run Code Online (Sandbox Code Playgroud)
得到最后一项.