use Benchmark qw( cmpthese ); our $data = '0:13:46:b:4:31'; cmpthese(-3, { ike_orig => 'my $mac = $data; $mac =~ s/(^|:)(?=[0-9a-fA-F](?::|$))/${1}0/g; $mac;', ike_fast => 'my $mac = $data; $mac =~ s/(?<=:)(?=[0-9a-fA-F](?::|$))/0/g; $mac =~ s/^(?=[0-9a-fA-F](?::|$))/0/; $mac;', skeeve => 'my $mac = $data; $mac = join ":", map substr("0$_",-2), split/:/, $mac; $mac;', jwkrahn1 => 'my $mac = $data; $mac =~ s/([^:]+)/ sprintf "%02s", $1 /eg; $mac;', jwkrahn2 => 'my $mac = $data; $mac = join ":", map sprintf( "%02s", $_ ), split /:/, $mac; $mac;', });