my $string = "Weird char: " . chr(0x2a) . ".\n"; $string =~ s/([\x00-\x1f])/sprintf('&#x%02X;', ord($1))/ge;