可能重复:
for loop in perl
use warnings;
my @a = (1, 2, 3, 4, 5);
for $x (@a)
{
print $x*=2;
print "\n";
}
print "outside the loop \n";
print "@a";
键盘链接:http://codepad.org/D2Aa74nZ
$x
上的任何操作都会改变原始数组的内容。 $x
表现得像引用/指针而不是变量吗?
答案 0 :(得分:11)
这是"Foreach Loops" in perlsyn中记录的行为。循环变量别名到循环的列表中的每个元素。它不像Perl引用,但它有点像指针,如果你认为每个 Perl变量实际上是一个将名称与一段数据相关联的指针,并且可以通过以下方式找到一条数据:多个名称 - 例如$x
和$a[0]
- 同时。
答案 1 :(得分:3)
是的,循环变量是循环数组内容的别名,可用于更改它。这使您可以执行$_ += 1 for @numbers;
等内容。
有关Foreach循环的部分perldoc perlsyn中记录了此功能。