s/(key1|key2|key3)/$hash{$1)/g; #### my $re = join '|', keys %dict; $re = qr|($re)|; s/$re/$hash{$1}/g; #### use Regexp::Assemble; my $ra = Regexp::Assemble->new; $ra->add($_) for keys %dict; #### s/(\w+)/$dict{$1}||$1/ge; #### s/(\w+)(?(?{$dict{$1}})|(?!))/$dict{$1}/g;