Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re: In need of a Dumper that has no pretentions to being anything else.

by grinder (Bishop)
on Feb 23, 2005 at 10:47 UTC ( #433637=note: print w/ replies, xml ) Need Help??


in reply to In need of a Dumper that has no pretentions to being anything else.

dump a perl data structure in a compact, human readable format

I wrote the following pair of functions for debugging Regexp::Assemble. It only deals with hashes, arrays and undef, but it sounds like that that's all you need.

The display is about as minimal and compact as I can get it.

sub _dump { my $path = shift; return _dump_node( $path ) if ref($path) eq 'HASH'; my $dump = '['; my $d; my $nr = 0; for $d( @$path ) { $dump .= ' ' if $nr++; if( ref($d) eq 'HASH' ) { $dump .= _dump_node($d); } elsif( ref($d) eq 'ARRAY' ) { $dump .= _dump($d); } elsif( defined $d ) { $dump .= ( ($d =~ /\s/ or not length $d) ? qq{'$d'} : $d ); } else { $dump .= '*'; } } $dump . ']'; } sub _dump_node { my $node = shift; my $dump = '{'; my $nr = 0; my $n; for $n (sort keys %$node) { $dump .= ' ' if $nr++; if( $n eq '' and not defined $node->{$n} ) { $dump .= '*'; } else { $dump .= "$n=>" . ( ref($node->{$n}) eq 'ARRAY' ? _dump($node->{$n}) : $node->{$n} ); } } $dump . '}'; }

I wasn't able to make complete sense of your data structure; I suspect you just invented it off the top of your head. Nevertheless:

my $ref = { a => [ 1, 2, 3 ], b => [ { X => 1, Y=> 2 }, { X => [ 1, 2, 3 ], Y => [ 4, 5, 6 ], Z => [ 7, 8, 9 ] }, ], }; print _dump($ref);

produces

{a=>[1 2 3] b=>[{X=>1 Y=>2} {X=>[1 2 3] Y=>[4 5 6] Z=>[7 8 9]}]}

- another intruder with the mooring in the heart of the Perl


Comment on Re: In need of a Dumper that has no pretentions to being anything else.
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://433637]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (15)
As of 2015-07-03 12:24 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (53 votes), past polls