#!/usr/bin/perl -wl use strict; my %repl = ( cat => 'dog', foo => 'bar', ); sub repl { my $word = shift; my $lookup = lc $word; return $word unless exists $repl{$lookup}; # nothing to replace my $is_up = $word =~ /^[[:upper:]]/; # determine caps style my $repl = $repl{$lookup}; $repl = ucfirst $repl if $is_up; # apply caps style return $repl; } my $s = 'cat Cat foo Foo Blah blub'; $s =~ s/\b(\w+)\b/repl($1)/eg; print $s; # dog Dog bar Bar Blah blub