BEGIN { my %n= ( 0..9, 'a'..'f', 1..9, 'a'..'f', 10 ); sub incHex { s{ ( [0-9a-fA-F] ) # Any hex digit followed by ( [fF]* )\b # (always) trailing (optional) 'f's }{ $n{ lc $1 } . '0' x length($2); }gex for @_; } }