use warnings; use strict; my $str = "some special chars like € ™ © ®"; $str =~ s/&#x([[:xdigit:]]+)/'&#' . hex($1)/eg; print "$str\n"; __END__ some special chars like € ™ © ®