my @List = qw/ Mac Mc De /; my @NAMES = map ucfirst, qw/ mcginley macgee develera/; for my $name (@NAMES) { for my $match( grep {$name =~/^$_/} @List ) { warn $name; $name =~ s/^\Q$match\E(.*)$/$match.ucfirst($1)/e; warn $name; } }