c:\@Work\Perl\monks>perl -wMstrict -le "my %dic = qw(Abc Zyx Abcd Zyxw Abcde Zyxwv); ;; use constant S => 'AbcAbcdAbcdeAbcdeAbcdAbc'; ;; print '------------'; my ($rx_A) = map qr{ $_ }xms, join ' | ', sort map quotemeta, keys %dic ; print qq{rx_A: $rx_A}; ;; my $s = S; print qq{'$s'}; $s =~ s{ ($rx_A) }{$dic{$1}}xmsg; print qq{'$s'}; ;; print '------------'; my ($rx_D) = map qr{ $_ }xms, join ' | ', reverse sort map quotemeta, keys %dic ; print qq{rx_D: $rx_D}; ;; $s = S; print qq{'$s'}; $s =~ s{ ($rx_D) }{$dic{$1}}xmsg; print qq{'$s'}; " ------------ rx_A: (?^msx: Abc | Abcd | Abcde ) 'AbcAbcdAbcdeAbcdeAbcdAbc' 'ZyxZyxdZyxdeZyxdeZyxdZyx' ------------ rx_D: (?^msx: Abcde | Abcd | Abc ) 'AbcAbcdAbcdeAbcdeAbcdAbc' 'ZyxZyxwZyxwvZyxwvZyxwZyx'