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