foreach(@array,$var)在Perl中是如何工作的?

8i9zcol2  于 2022-11-15  发布在  Perl
关注(0)|答案(2)|浏览(206)

我正在尝试理解其他人编写的一些Perl代码,但我对foreach循环的以下语法感到困惑

foreach (@array, $var){
 ....
}

这段代码可以运行,但是根据我的google搜索结果,没有其他人使用它。而且它的工作方式与更常见的foreach使用数组的方式不同,即:

foreach $var (@array){
 ....
}

有人能解释一下这个语法吗?

06odsfpq

06odsfpq1#

foreach (@array, $var){ .... }

是...的简称

foreach $_ (@array, $var){ .... }

简称

foreach $_ ($array[0], $array[1], ... $array[N], $var){ .... }

因此在循环的每次迭代中,$_被设置为数组的每个元素,最后被设置为$var。$_变量只是一个普通的Perl变量,但它在Perl语法中的许多地方被用作默认变量,如果没有显式提到它的话。

ht4b089n

ht4b089n2#

Perl的for()不是对数组进行操作,而是对列表进行操作。

for (@array, $var) {...}

...将@array$var扩展为单个标量元素列表,然后一次迭代该列表中的一个元素。
这和你必须做的事情没有什么不同:

my @array = (1, 2, 3);
my $var = 4;

push @array, $var;

for (@array) {...}

另外,for my $var (@array, $var) {...}也能很好地工作,因为使用my,您将本地化一个新的$var标量,而外部的预定义标量保持不变。perl知道其中的区别。
您应该始终使用use strict;,并使用my声明变量。

相关问题