$ cat pm_1055846_name_id_data.txt bananas 456 oranges 23 peaches 897236 kiwis 3726 banana 25 bana 20 bana-na 15 na 10 #### $ cat pm_1055846_name_replace_data.txt bananas,oranges peaches,peaches,peaches kiwis oranges kiwis,oranges,bananas,bananas bananas,oranges,pineapples,peaches,kiwis bana-na,banana ba-na-na,bana-bana,bana-nana #### $ cat pm_1055846_name_replaced_out.txt 456,23 897236,897236,897236 3726 23 3726,23,456,456 456,23,pineapples,897236,3726 15,25 ba-10-10,20-20,20-nana #### my $re = '\b(' . join('|', keys %id_for) . ')\b'; #### my $re = '\b(' . join('|', sort { $b cmp $a } keys %id_for) . ')\b'; #### $ cat pm_1055846_name_replaced_out.txt 456,23 897236,897236,897236 3726 23 3726,23,456,456 456,23,pineapples,897236,3726 15,25 ba-na-na,bana-bana,bana-nana #### my $re = '\b(' . join('|', keys %id_for) . ')\b'; #### my $re = '(^|,)(' . join('|', sort { $b cmp $a } keys %id_for) . ')(?=,|$)'; #### s/$re/$id_for{$1}/g; #### s/$re/$1$id_for{$2}/g;