>perl -wMstrict -le "print qq{ver $]}; for (@ARGV) { my $name = $_; $name =~ s{ \b Ma?c \K (\w) }{ \u$1}xmsg; print qq{'$_' -> '$name'}; } " Mcdonald Macdonald ver 5.010001 'Mcdonald' -> 'Mc Donald' 'Macdonald' -> 'Mac Donald'