my $families = [{ name => "Flintstone", members => { Dad => { name => "Fred", pet => "Dino" }, Mom => { name => "Wilma" } } }, { name => "Rubble", members => { Dad => { name => "Barney", pet => "Hoppy" }, Mom => { name => "Betty" } } }]; # deref the arrayref $families, then transform the list of hashrefs into a new list of # hashrefs containing just one k=v pair, extracted from the input structure my @family_pets = map { {$_->{name} => $_->{members}{Dad}{pet}} } @{ $families }; say Dumper \@family_pets;