Here is a benchmark
#!/usr/bin/perl use strict; use warnings; use 5.010; use Benchmark qw(:all); my @list = ('foo')x1_000_000; my $str = join('|',@list); my $count = -2; cmpthese($count, { 'deref' => sub { my $parts = [ split( q{\|}, $str ) ]; my @res = @$parts[-1,0]; }, 'array' => sub { my @parts = split q{\|}, $str; my @res = @parts[-1,0]; }, });
I just change say to assignment.
Windows 7, perl 5.14.2
Rate deref array deref 2.02/s -- -38% array 3.23/s 60% --
Depending on the environment, I get Linux 64 bit, perl 5.14.2
Rate deref array deref 3.00/s -- -35% array 4.65/s 55% --
and Linux 32 bit, perl 5.8.4
Rate array deref array 1.96/s -- -35% deref 3.00/s 53% --
Toto source share