my $string = "zero one two three"; $number = (split /\s+/, $string,3)[1]; #### use Benchmark 'cmpthese'; our $string = "zero one two three four five six seven eight nine ten"; my $bench={ list => '$number = ( split /\\s+/, $string ) [1]', array => '$number = [ split /\\s+/, $string ]->[1]', list3 => '$number = ( split /\\s+/, $string,3) [1]', }; while (my ($key,$expr)=each %$bench) { printf "%s : %s\n",$key,eval($expr)||die $@; } for my $i (1..3) { cmpthese -3,$bench; sleep(1); } __END__ list : one list3 : one array : one Benchmark: running array, list, list3, each for at least 3 CPU seconds... array: 3 wallclock secs ( 3.06 usr + 0.00 sys = 3.06 CPU) @ 54729.26/s (n=167581) list: 2 wallclock secs ( 3.24 usr + 0.00 sys = 3.24 CPU) @ 85398.45/s (n=276264) list3: 4 wallclock secs ( 3.03 usr + 0.00 sys = 3.03 CPU) @ 224004.62/s (n=679182) Rate array list list3 array 54729/s -- -36% -76% list 85398/s 56% -- -62% list3 224005/s 309% 162% -- Benchmark: running array, list, list3, each for at least 3 CPU seconds... array: 3 wallclock secs ( 3.11 usr + 0.00 sys = 3.11 CPU) @ 53543.26/s (n=166466) list: 3 wallclock secs ( 3.25 usr + 0.00 sys = 3.25 CPU) @ 85733.23/s (n=278633) list3: 4 wallclock secs ( 3.11 usr + 0.00 sys = 3.11 CPU) @ 226976.21/s (n=705896) Rate array list list3 array 53543/s -- -38% -76% list 85733/s 60% -- -62% list3 226976/s 324% 165% -- Benchmark: running array, list, list3, each for at least 3 CPU seconds... array: 3 wallclock secs ( 3.02 usr + 0.00 sys = 3.02 CPU) @ 55106.76/s (n=166202) list: 3 wallclock secs ( 3.05 usr + 0.00 sys = 3.05 CPU) @ 84117.16/s (n=256305) list3: 3 wallclock secs ( 3.14 usr + 0.00 sys = 3.14 CPU) @ 223896.50/s (n=703035) Rate array list list3 array 55107/s -- -34% -75% list 84117/s 53% -- -62% list3 223896/s 306% 166% --