$VAR1 = { 'component1' => { 'name' => 'command4', 'id' => '004' }, 'component2' => { 'name' => 'command8', 'id' => '014' } }; #### %component_tree = ( component1 => [ { name => 'command1', id => '001' }, { name => 'command2', id => '002' }, { name => 'command3', id => '003' }, { name => 'command4', id => '004' }, ], component2 => [ { name => 'command5', id => '011' }, { name => 'command6', id => '012' }, { name => 'command7', id => '013' }, { name => 'command8', id => '014' }, ], ); #### for my $comp (keys %component_tree) { print "Checking $comp...\n"; for my $data (@{$component_tree{$comp}}) { print " Found ", $data->{name}, " (id [", $data->{id}, "])\n"; } } #### Checking component1... Found command1 (id [001]) Found command2 (id [002]) Found command3 (id [003]) Found command4 (id [004]) Checking component2... Found command5 (id [011]) Found command6 (id [012]) Found command7 (id [013]) Found command8 (id [014])