use Regexp::Subst::Parallel; $_ = "Man Honoured at Harbour Centre by the Lift\n"; print; $_ = subst($_, qr/\b(h)arbour\b/i => '$1arbor', qr/\b(h)onour(.*?)\b/i => '$1onor$2', qr/\b(c)entre\b/i => '$1enter', qr/\b(L|l)ift\b/ => sub{$_=$_[1]=~/L/?"E":"e";$_."levator"} ); print; __END__ Man Honoured at Harbour Centre by the Lift Man Honored at Harbor Center by the Elevator