sub translate_Eily { my $name = shift; $name =~ s/ \P{isLetter}+ # Non letter chars | # or (?<= \p{isLetter} ) # Something that comes after a letter (?= \p{isUpper} ) # and comes before an uppercase letter / /xg; # \u is short for ucfirst and \L for lc $name =~ s/(\w+)/\u\L$1/g; return $name; } #### use utf8; use open OUT => ':encoding(utf8)'; use open ':std';