Perl の参照

Perl ってリファレンスじゃないのに、妙なところで C++ のリファレンスみたいな挙動することがあって、気持ち悪いとか思うのだが、同じことを思う人はいないだろうか。

use strict;
use warnings;

use YAML;

my @a = (1..10);
for my $a (@a) {
    $a = $a * $a;
}

print Dump(\@a);

my %hash = map { ($_, $_) } 1..10;
for my $v (values %hash) {
    $v = $v * $v;
}

print Dump(\%hash);

まぁ、この辺の代入に関するセマンティクスが RubyPython とは大きく違うわけだが、その辺が論じられることってあんまりないような気がする。自分が知らないだけかもしれないが。