for my $a (@foo) { if ($a->[0] eq 'bill') { $a->[1] += 3; # add 3 to second field $a->[2] .= "!"; # add ! to third field } } #### for my $i (0 .. $#foo) { my $a = $foo[$i]; if ($a->[0] eq 'bill') { my $b = [ @$a ]; # copy a's data to b $b->[1] += 3; # add 3 to second field $b->[2] .= "!"; # add ! to third field $foo[$i] = $b; } }