my %subs = ( foo => 'bar', bar => 'baz', ); #### s/(foo|bar)/$subs{$1}/g #### s/(Xaa11|Xaa1)/$subs{$1}/g #### my $pat = join '|', map quotemeta, sort { length($b) <=> length($a) } keys(%subs); s/($pat)/$subs{$1}/g; #### my $pat = join '|', map quotemeta, keys(%subs); s/\b($pat)\b/$subs{$1}/g;