in reply to Question regarding hash with multiple values

Here is an AoH solution.
use strict; use warnings; use Data::Dumper; my %celebs = ( 'Bob Dole' => { 'address' => '123 peach st.', 'spouse' => 'Bill Clinton', 'father' => 'Frank Dole' }, 'Al Pacino' => { 'address' => '123 orange st.', 'spouse' => 'Robert Deniro', 'father' => 'Marlon Brando' } ); my @people = map { { name => $_, address => $celebs{$_}{address}, spouse => $celebs{$_}{spouse}, father => $celebs{$_}{father}, } } keys %celebs; print Data::Dumper->Dump( [\@people],[qw(*people)] );
OUTPUT:
@people = ( { 'spouse' => 'Robert Deniro', 'father' => 'Marlon Brando', 'name' => 'Al Pacino', 'address' => '123 orange st.' }, { 'spouse' => 'Bill Clinton', 'father' => 'Frank Dole', 'name' => 'Bob Dole', 'address' => '123 peach st.' } );
Bill

Replies are listed 'Best First'.
Re^2: Question regarding hash with multiple values
by Skeeve (Parson) on Jul 10, 2013 at 18:35 UTC
    I'd apply a small change:
    use strict; use warnings; use Data::Dumper; my %celebs = ( 'Bob Dole' => { 'address' => '123 peach st.', 'spouse' => 'Bill Clinton', 'father' => 'Frank Dole' }, 'Al Pacino' => { 'address' => '123 orange st.', 'spouse' => 'Robert Deniro', 'father' => 'Marlon Brando' } ); my @people = map { { name => $_, %{$celebs{$_}}, # <- Change is here } } keys %celebs; print Data::Dumper->Dump( [\@people],[qw(*people)] );
    So you don't need to "hard code" the celeb's keys.

    s$$([},&%#}/&/]+}%&{})*;#$&&s&&$^X.($'^"%]=\&(|?*{%
    +.+=%;.#_}\&"^"-+%*).}%:##%}={~=~:.")&e&&s""`$''`"e