Acme::Dump::And::Dumper - dump data structures without seeing any object guts


    use Acme::Dump::And::Dumper;

    my $data = {
        foo => 'bar',
        ber => {
            beer => [qw/x y z/],
            obj  => bless([], 'Foo::Bar'),

    print DnD $data;

    ## Prints:
    ## $VAR1 = {
    ##      'ber' => {
    ##                 'obj' => 'obj[Foo::Bar]',
    ##                 'beer' => [
    ##                             'x',
    ##                             'y',
    ##                             'z'
    ##                           ]
    ##               },
    ##      'foo' => 'bar'
    ## };

    # All the Data::Dumper stuff is still there...
    $Data::Dumper::Useqq = 1;
    print DnD "Foo\nBar";

    # ... even the original Dumper()
    print Dumper "Foo\nBar";


A Data::Dumper, with an additional sub that's like Dumper() but doesn't dump the contents of object refs.


In addition to all the stuff available for export in Data::Dumper, this module provides DnD() function (pneumonic: "Dump'n'Dumper").


    print DnD $data;

    # Data::Dumper's vars are still available:
    $Data::Dumper::Useqq = 1;
    print DnD "Foo\nBar";

Takes the same stuff and returns the same output as Data::Dumper::Dumper(), except all of the objects will be replaced with obj[Foo::Bar], where Foo::Bar is object's class. See caveats section below.


Whenever possible, the module will try to deep clone the structure before messing with it and dumping it. However, since not everything is deep clonable, if the deep clone fails, the module will modify the original data structure, and method call on what used to be objects will obviously fail.


This module arose from my frustration of trying to get rid of object guts in my dumped data (e.g. dumping Foo::Bar that is a blessed hashref, would also dump all the contents of that hashref). Subsequently, during a conversation on IRC, tm604 came up with a hack using $Data::Dumper::Freezer, and the following comment from hoelzro made me decide to release a module I could actually use, when I don't want to see any object guts.

    <hoelzro> Data::Dumper::And::Dumper
    * hoelzro ducks
    <hoelzro> s/Dumper/Dump/ # ruined my own awful joke

P.S.: eventually I ended up using Data::Rmap instead of the Freezer.

Dumb and Dumber


Fork this module on GitHub:


To report bugs or request features, please use

If you can't access GitHub, you can email your request to bug-Acme-Dump-And-Dumper at


Zoffix Znet <zoffix at> (,


You can use and distribute this module under the same terms as Perl itself. See the LICENSE file included in this distribution for complete details.