为什么Perl foreach变量赋值修改数组中的值?

前端之家收集整理的这篇文章主要介绍了为什么Perl foreach变量赋值修改数组中的值?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
好的,我有以下代码
use strict;
my @ar = (1,2,3);
foreach my $a (@ar)
{
  $a = $a + 1;
}

print join ",",@ar;

输出

2,3,4

有没有搞错?为什么这么做?这会永远发生吗?是$a不是一个本地变量?他们在想什么?

解决方法

Perl有很多这些几乎奇怪的语法,大大简化了常见的任务(比如迭代列表,以某种方式改变内容),但是如果你不知道这些任务的话可以帮助你.

$a被别名为数组中的值 – 这允许您修改循环内的数组.如果你不想这样做,不要修改$a.

猜你在找的Perl相关文章