How can I view the contents of a hash in Perl6 (in a fashion similar to the Perl 5 modules Data::Dump or Data::Show)?

Perl6 docs seem to recommend using .perl on the data structure, but it looks like pretty-printing requires extra work:

Given:

my @array_of_hashes = (
    { NAME => 'apple',   type => 'fruit' },
    { NAME => 'cabbage', type => 'no, please no' },
);

Perl 5

use Data::Dumper;
$Data::Dumper::Useqq = 1;
print Dumper \@array_of_hashes; # Note the backslash.

Perl 6

say @array_of_hashes.perl; # .perl on the array, not on its reference.

I have since made a PrettyDump module that might be handy:

use v6;
use PrettyDump;

my %title_for = (
  "Book 1" => { "Chapter 1" => "Introduction", "Chapter 2" => "Conclusion" },
  "Book 2" => {
                "Chapter 1" => "Intro",
                "Chapter 2" => "Interesting stuff",
                "Chapter 3" => "Final words",
              },
);

say PrettyDump.new.dump: %title_for;

With output:

Hash={
    :Book 1(Hash={
        :Chapter 1("Introduction"),
        :Chapter 2("Conclusion")
    }),
    :Book 2(Hash={
        :Chapter 1("Intro"),
        :Chapter 2("Interesting stuff"),
        :Chapter 3("Final words")
    })
}

There are some formatting options you can give to PrettyDump too.


dd for Data Dump in rakudo.

my @array_of_hashes = (
    { NAME => 'apple',   type => 'fruit' },
    { NAME => 'cabbage', type => 'no, please no' },
);
dd @array_of_hashes;

Tags:

Hash

Perl

Raku