Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Re: A more elegant way to filter a nested hash?

by mr_ron (Chaplain)
on May 31, 2018 at 19:22 UTC ( [id://1215565]=note: print w/replies, xml ) Need Help??


in reply to A more elegant way to filter a nested hash?

I came across CPAN Deep::Hash::Utils giving the approach below which seems simple enough. I also looked at the modules suggested by Re: A more elegant way to filter a nested hash? ( data xpath, dpath, diver, walk, walker, visitor, jquery, pquery, json path, css csel, MarpaX::xPathLike) and like the suggestions on existing art.

use Deep::Hash::Utils qw(reach nest deepvalue); sub hash_filter { my ($source, $filter) = @_; my %rc; while (my @l = reach($filter)) { pop @l; if (defined( my $source_val = deepvalue($source, @l) ) ) { # hint: work around nest behavior on even vs odd key count nest(\%rc, @l)->{ $l[$#l] } = $source_val; } } \%rc; }
Ron

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others wandering the Monastery: (6)
As of 2024-04-23 19:25 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found