#! perl -slw use strict; use Benchmark qw [cmpthese]; our @data = map{ join' ', '2004-05-13', '14:02:00', ('blah') x (1 + rand (9)) } 1 .. 1000; our (@greedy, @explicit, @unpack); cmpthese (-1, { greedy => '@greedy = map {/(^\S*)\s(\S*)\s(.*$)/} @data', explicit => '@explicit = map {/(^\d{4}\-\d{2}\-\d{2})\s (\d{2}:\d{2}:\d{2})\s(.*$)/x} @data', unpack => '@unpack = map {unpack "A10 x A8 x A*" => $_} @data', }); die unless "@greedy" eq "@explicit" && "@greedy" eq "@unpack"; __END__ Rate explicit greedy unpack explicit 86.1/s -- -6% -25% greedy 91.6/s 6% -- -20% unpack 114/s 33% 25% --