use Benchmark qw(cmpthese); my @array; make_accessor1(code1, 0); make_accessor2(code2, 0); cmpthese(-10, { lexicals => sub { code1(5) }, no_lexic => sub { code2(5) }, }); sub make_accessor1 { my ($name, $index) = @_; *{$name} = sub { $array[$index] = $_[0] }; } sub make_accessor2 { my $index = $_[1]; *{$_[0]} = sub { $array[$index] = $_[0] }; }