my @words = (qw/ tom dick and harold /); my $pattern = join '|', map join('[^a-zA-Z]*', split //), @words; my $regexp = qr{$pattern}i; while (<>) { s{($regexp)}{~\U$1\E~}g; print; }