我正在尝试理解其他人编写的一些Perl代码,但我对foreach循环的以下语法感到困惑
foreach (@array, $var){ .... }
这段代码可以运行,但是根据我的google搜索结果,没有其他人使用它。而且它的工作方式与更常见的foreach使用数组的方式不同,即:
foreach $var (@array){ .... }
有人能解释一下这个语法吗?
06odsfpq1#
是...的简称
foreach $_ (@array, $var){ .... }
简称
foreach $_ ($array[0], $array[1], ... $array[N], $var){ .... }
因此在循环的每次迭代中,$_被设置为数组的每个元素,最后被设置为$var。$_变量只是一个普通的Perl变量,但它在Perl语法中的许多地方被用作默认变量,如果没有显式提到它的话。
ht4b089n2#
Perl的for()不是对数组进行操作,而是对列表进行操作。
for()
for (@array, $var) {...}
...将@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声明变量。
for my $var (@array, $var) {...}
my
use strict;
2条答案
按热度按时间06odsfpq1#
是...的简称
简称
因此在循环的每次迭代中,$_被设置为数组的每个元素,最后被设置为$var。$_变量只是一个普通的Perl变量,但它在Perl语法中的许多地方被用作默认变量,如果没有显式提到它的话。
ht4b089n2#
Perl的
for()
不是对数组进行操作,而是对列表进行操作。...将
@array
和$var
扩展为单个标量元素列表,然后一次迭代该列表中的一个元素。这和你必须做的事情没有什么不同:
另外,
for my $var (@array, $var) {...}
也能很好地工作,因为使用my
,您将本地化一个新的$var
标量,而外部的预定义标量保持不变。perl知道其中的区别。您应该始终使用
use strict;
,并使用my
声明变量。