Perl 替换值而不更新数组
Perl replace value without updating array
我有以下 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',
'banana',
'orange',
'pear'
];
我不明白为什么下面这行将 @fruits 数组中的 apple 更改为 peach,因为我认为这行仅适用于 $fruit 变量,而不适用于 @fruits 数组。
$fruit =~ s|apple|peach|;
在 perl 的 html 文档中,我们有以下 foreach 循环语句:
the foreach loop index variable is an implicit alias for each item in the list that you're looping over
这意味着,您不会获得每个数组元素的副本。变量 $fruit
只是对数组元素的引用。如果可以修改数组元素,则可以修改其值。修改适用于原始数组元素。
我有以下 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',
'banana',
'orange',
'pear'
];
我不明白为什么下面这行将 @fruits 数组中的 apple 更改为 peach,因为我认为这行仅适用于 $fruit 变量,而不适用于 @fruits 数组。
$fruit =~ s|apple|peach|;
在 perl 的 html 文档中,我们有以下 foreach 循环语句:
the foreach loop index variable is an implicit alias for each item in the list that you're looping over
这意味着,您不会获得每个数组元素的副本。变量 $fruit
只是对数组元素的引用。如果可以修改数组元素,则可以修改其值。修改适用于原始数组元素。