Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re: Recursively search nested hash/array structures

by Joost (Canon)
on Dec 09, 2004 at 19:37 UTC ( #413668=note: print w/replies, xml ) Need Help??


in reply to Recursively search nested hash/array structures

Maybe Data::Rmap is what you want. see treemap.

  • Comment on Re: Recursively search nested hash/array structures

Replies are listed 'Best First'.
Re^2: Recursively search nested hash/array structures
by mp (Deacon) on Dec 09, 2004 at 21:02 UTC
    Thank you. Data::Rmap was exactly what I needed. The example script below converts every value corresponding to a key of 'b' to an array unless it already is an array.
    use strict; use warnings; use Data::Rmap qw(rmap_hash); use Data::Dumper; $Data::Dumper::Sortkeys = 1; $Data::Dumper::Indent = 1; my $data = { a => { b => 1, x => 3, }, b => 1, c => { d => [ { b => 3 }, { b => [5, 6, 7] }, { x => 3}, ], }, }; my $key = 'b'; my @to_fix = rmap_hash { exists($_->{$key}) && (ref($_->{$key}) ne "ARRAY") ? $_ : () } $data; for my $h(@to_fix) { $h->{$key} = [ $h->{$key} ]; } warn Dumper($data);
    Output:
    $VAR1 = { 'a' => { 'b' => [ 1 ], 'x' => 3 }, 'b' => [ 1 ], 'c' => { 'd' => [ { 'b' => [ 3 ] }, { 'b' => [ 5, 6, 7 ] }, { 'x' => 3 } ] } };

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (3)
As of 2022-05-25 22:08 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Do you prefer to work remotely?



    Results (90 votes). Check out past polls.

    Notices?