Hi bash,
I haven't yet looked at the internals of Data::Dumper, but on the surface it seems that it does always escape Unicode. Which kind of makes sense to me, because its purpose is to output Perl data in Perl's syntax, which doesn't support Unicode characters in its source, at least not without utf8. Which leads me to ask what you're trying to accomplish overall, since there might be a better solution than Data::Dumper?
Regards, -- Hauke D
| [reply] |
Only for debugging
So data should be human readable.
Yep, i can use Data::Printer. But it isn't core and requires many other packages.
| [reply] |
Hi bash,
Only for debugging So data should be human readable.
I think that's a tricky situation, because if you're debugging, it may be important to be able to see the differences between, for example, various Unicode whitespace characters. I suspect you only want to prevent certain characters from being escaped? That means you'd have to pick and choose.
Personally I don't find Data::Printer's dependency tree to be too bad. But just in case you're looking for something else, it might be possible to roll your own with Data::Dump::Filtered:
use warnings;
use strict;
use open qw/:std :utf8/;
my $str = "\$\x{2142}\x{1D1A}\x{018E}\x{0500}\x{2003}\"";
use Data::Dump 'pp';
use Data::Dump::Filtered qw/add_dump_filter/;
add_dump_filter( sub {
my ($ctx, $objref) = @_;
if ($ctx->is_scalar) {
#TODO: this doesn't escape, not really that great!
return { dump => "\"$$objref\"" };
}
return; # normal dumping
} );
print '$str=',pp($str),";\n";
Hope this helps, -- Hauke D | [reply] [d/l] |