我看到当我循环遍历数组的元素,并测试$#_时,每个元素得到-1。我希望有人可以解释这个变量的作用,以及最常用的是什么。
答案 0 :(得分:10)
就像$#foo
是数组@foo
的最后一个现有索引一样,$#_
是数组@_
的最后一个现有索引。如果@_
为空,则$#_
为-1
。
听起来你的意思是使用$_
。 $_
由foreach,map
和grep
别名处理到正在处理的元素当前。 while (<>)
也设置了$_
(因为它被重写为while (defined($_ = <>))
)。因此,$_
被许多内置函数用作默认参数(例如say
)。
# Print each element on its own line
say for @a;
是
的缩写 # Print each element on its own line
say $_ for @a;
是
的简洁形式 # Print each element on its own line
for my $ele (@a) {
say $ele;
}
答案 1 :(得分:0)
我相信你的意思是$_
这是Perl中的一个特殊变量。它在循环遍历列表元素时保持当前值。例如,下面将打印出@foo的每个元素,一次一个。
foreach (@foo) {
print $_;
}