$outkey =~ s/\f/\\f/sgo;
$outkey =~ s/\r/\\r/sgo;
$outkey =~ s/\n/\\n/sgo;
- $outkey =~ s/(\pM)/sprintf('\u%0.4x',ord($1))/sgoe;
+ $outkey =~ s/(\pM|\pS)/sprintf('\u%0.4x',ord($1))/sgoe;
+ $outkey =~ s/[\x80-\xff]//sgoe;
$output .= '"'.$outkey.'":'. perl2JSON(undef,$$perl{$key}, $strict);
$c++;
$perl =~ s/\f/\\f/sgo;
$perl =~ s/\r/\\r/sgo;
$perl =~ s/\n/\\n/sgo;
- $perl =~ s/(\pM|\pC)/sprintf('\u%0.4x',ord($1))/sgoe;
+ $perl =~ s/(\pM|\pC|\pM)/sprintf('\u%0.4x',ord($1))/sgoe;
+ $perl =~ s/[\x80-\xff]//sgoe;
if (length($perl) < 10 and $perl =~ /^(?:\+|-)?\d*\.?\d+$/o and $perl !~ /^(?:\+|-)?0\d+/o ) {
$output = $perl;
} else {
$perl =~ s/\r/\\r/sgo;
$perl =~ s/\n/\\n/sgo;
$perl =~ s/(\pM|\pC)/sprintf('\u%0.4x',ord($1))/sgoe;
+ $perl =~ s/[\x80-\xff]//sgoe;
$output .= " "x$depth unless($nospace);
if (length($perl) < 10 and $perl =~ /^(?:\+|-)?\d*\.?\d+$/o and $perl !~ /^(?:\+|-)?0\d+/o ) {
$output = $perl;