my $one = 1; my $two = 2; my $three = 3; sub direct { $_[0] += 10; $_[1] += 9; } sub indirect { my ($a,$b,$c) = @_; $a += 99; $b += 99; } print "\$one = $one\n"; # 1 direct($one, $two, $three); print "\$one = $one\n"; # changed to 11. $_[0] was an alias to $one. indirect($one, $two, $three); print "\$one = $one\n"; # still 11. The $a was assigned a copy of the value. It's not an alias