my $re_mac_bUK = '(?: ( [0-9A-Z]{1,2} ) : )' x 5 . '( [0-9A-Z]{1,2} )'; sub replace_bUK { s[^ $re_mac_bUK $] [ sprintf '%02s' x 6, $1, $2, $3, $4, $5, $6 ]ex; }