use Unicode::UCD qw(charinfo); my %category_map = ( Lu => 'U', # letter, upper Ll => 'L', # letter, lower ); my $r = 'SomEThingWithMIXEDRegiSter'; $r =~ s { (.) # capture the character } { $category_map{ charinfo(ord $1)->{category} } }egmsx; # ULLUULLLLULLLUUUUUULLLULLL