in reply to Data::Dumper with unicode

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

Replies are listed 'Best First'.
Re^2: Data::Dumper with unicode
by bash (Scribe) on Oct 11, 2016 at 09:29 UTC
    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.

      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

        Yep, it could be solution. Thank you