Benchmark: timing 1000000 iterations of hsh, reg, var... hsh: 0 wallclock secs ( 1.25 usr + 0.00 sys = 1.25 CPU) @ 798084.60/s (n=1000000) reg: 2 wallclock secs ( 0.85 usr + 0.00 sys = 0.85 CPU) @ 1175088.13/s (n=1000000) var: 1 wallclock secs ( 0.77 usr + 0.00 sys = 0.77 CPU) @ 1297016.86/s (n=1000000) Benchmark: timing 1000000 iterations of hsh, reg, var... hsh: 2 wallclock secs ( 1.17 usr + 0.00 sys = 1.17 CPU) @ 852514.92/s (n=1000000) reg: 1 wallclock secs ( 0.85 usr + 0.01 sys = 0.86 CPU) @ 1161440.19/s (n=1000000) var: 0 wallclock secs ( 0.75 usr + 0.00 sys = 0.75 CPU) @ 1331557.92/s (n=1000000) Benchmark: timing 1000000 iterations of hsh, reg, var... hsh: 2 wallclock secs ( 1.18 usr + 0.00 sys = 1.18 CPU) @ 845308.54/s (n=1000000) reg: 1 wallclock secs ( 0.85 usr + 0.00 sys = 0.85 CPU) @ 1175088.13/s (n=1000000) var: 1 wallclock secs ( 0.77 usr + 0.00 sys = 0.77 CPU) @ 1297016.86/s (n=1000000) #!/usr/bin/perl -w use strict; use Benchmark; my @foo = (1 .. 30); my %foo; my $foo = 10000; for (1.30) { $foo{$_} = $_; } timethese(1000000,{ var=>q( my $v = $foo; ) , reg=>q( my $v = $foo[30];), hsh=>q( my $v = $foo{'30'};) }); 1;