$#_变量的Perl意义

时间:2013-08-12 14:12:04

标签: perl

我看到当我循环遍历数组的元素,并测试$#_时,每个元素得到-1。我希望有人可以解释这个变量的作用,以及最常用的是什么。

2 个答案:

答案 0 :(得分:10)

就像$#foo是数组@foo的最后一个现有索引一样,$#_是数组@_的最后一个现有索引。如果@_为空,则$#_-1

听起来你的意思是使用$_$_由foreach,mapgrep别名处理到正在处理的元素当前。 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 $_;
}