问题描述
我有以下 Perl 脚本。
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my @fruits = qw(apple banana orange pear);
print Dumper \@fruits;
foreach my $fruit (@fruits) {
$fruit =~ s|apple|peach|;
}
print Dumper \@fruits;
返回以下内容。
$VAR1 = [
'apple','banana','orange','pear'
];
$VAR1 = [
'peach','pear'
];
我不明白为什么以下行将 @fruits 数组中的 apple 更改为 peach,因为我认为此行仅适用于 $fruit 变量,而不适用于 @fruits 数组。
$fruit =~ s|apple|peach|;
解决方法
在 perl 的 html 文档中,我们有以下 foreach 循环语句:
foreach 循环索引变量是您要循环的列表中每个项目的隐式别名
这意味着,您不会获得每个数组元素的副本。变量 $fruit
只是对数组元素的引用。如果可以修改数组元素,则可以修改其值。修改适用于原始数组元素。