c:\@Work\Perl\monks>perl -wMstrict -le "my $s = '& &lt; &gt; < > &< &&'; print qq{'$s'}; ;; my %replace = ( amp => '&', lt => '<', gt => '>', ); my ($find) = map qr{ & ($_) ; }xms, join '|', keys %replace ; $s =~ s{$find}{$replace{$1}}xmsg; print qq{'$s'}; " '& &lt; &gt; < > &< &&' '& < > < > &< &&'