【发布时间】:2014-06-07 12:23:50
【问题描述】:
我知道 perl 中的子例程通过引用传递 arg。但是在下面的代码中,子例程中的 foreach 循环不应该更改 @list 的值,因为 my $i 应该创建一个新的词法范围 var $i。对$i 的任何赋值都应该是词法范围,但不能更改@list 的值。
谁能解释导致值更改为@list 的foreach 循环内部发生了什么?
sub absList {
foreach my $i (@_) {
$i = abs($i);
}
}
@list = (-2,2,4,-4);
absList(@list);
print "@list";
输出:
2 2 4 4
【问题讨论】:
标签: perl foreach subroutine