my $html = "foo & bar"; my %Map = ( '&' => '&', '"' => '"', '<' => '<', '>' => '>', "'" => ''' ); my $RE = join '|', keys %Map; # This of course encodes everything. #$html=~s!($RE)!$Map{$1}!g; # Returns ]*)($RE))/$Map{$1}/g; print $html;