use Modern::Perl; use Benchmark qw[ cmpthese ]; sub deref { my $r = shift; ++$r->[$_][1] for 0..$#$r; } sub alias { our @a; local *a = shift; ++$a[$_][1] for 0 .. $#a } sub deref_iter { my $r = shift; $_->[1]++ for @$r; } sub alias_iter { our @a; local *a = shift; $_->[1]++ for @a; } my @a = map[1..3],1..1e6; cmpthese -1, { deref => sub { deref( \@a ) }, alias => sub { alias( \@a ) }, deref_iter => sub { deref_iter( \@a ) }, alias_iter => sub { alias_iter( \@a ) }, };