use strict; use warnings; my @A = (0) x 20; PrintA(); ChangeArray5(\@A); PrintA(); sub ChangeArray5 { my $B = shift; # I don't understand this, but it works :P foreach my $X (@$B) { $X = 5; } } sub PrintA { print "\n".join('', @A); } __END__ Prints: 00000000000000000000 55555555555555555555