#!/usr/bin/perl use strict; use warnings; use Data::TreeDumper; my $s = {'name' => 'Homer', 'surname' => 'Simpson', 'kids' => [ { 'name' => 'Bart', 'surname' => 'Simpson' }, { 'name' => 'Lisa', 'surname' => 'Simpson' }, { 'name' => 'Maggie', 'surname' => 'Simpson' }], 'wife' => { 'name' => 'Marge', 'surname' => 'Simpson' }}; my $OnlyName = sub { my $s = shift ; if('HASH' eq ref $s) { # TODO return('HASH', undef, grep { /^name$/} keys %$s) ; } return(Data::TreeDumper::DefaultNodesToDisplay($s)) ; }; print DumpTree($s, 'The Simpsons', DISPLAY_ADDRESS => 0, FILTER => $OnlyName) ; ############################################################ # UNFILTERED OUTPUT ############################################################ #The Simpsons #|- kids #| |- 0 #| | |- name = Bart #| | `- surname = Simpson #| |- 1 #| | |- name = Lisa #| | `- surname = Simpson #| `- 2 #| |- name = Maggie #| `- surname = Simpson #|- name = Homer #|- surname = Simpson #`- wife # |- name = Marge # `- surname = Simpson ############################################################ # FILTERED OUTPUT (only name) ############################################################ #The Simpsons #|- kids #| |- 0 #| | |- name = Bart #| |- 1 #| | |- name = Lisa #| `- 2 #| |- name = Maggie #|- name = Homer #`- wife # |- name = Marge #### return('HASH', undef, grep { /^name$/} keys %$s) ;