@my_array = ; use Benchmark ':all'; sub regex_method { my $array = [@_]; for (@$array) { next unless /^\d{6}\s*$/; ## validate data s:(\d{2})(?!$):$1/:g; } } sub sprint_method { my $array = [@_]; for (@$array) { next unless /^\d{6}\s*$/; ## validate data $_ = sprintf "%d%d/%d%d/%d%d", split('',$_); } } sub unpack_method { my $array = [@_]; for (@$array) { next unless /^\d{6}\s*$/; ## validate data $_=join '/', unpack 'A2' x 3, $_ for @arr; } } cmpthese( 50000, { 'regex' => sub { regex_method(@my_array) }, 'sprintf' => sub { sprint_method(@my_array) }, 'unpack' => sub { unpack_method(@my_array) }, }); __DATA__ 010203 020304 012398 122399