my @Data = ( {person => "CC", who => "My name ", func => \&p_CC }, {person => "AB", who => "AB ", func => \&p_AB }, {person => "CD", who => "friend", func => \&p_CD }, ); PERSON: foreach $person ( keys %house ) { foreach ( @Data ) { if ( $_->{ person } eq $person ) { print $_->{ who }; &{ $_ }->{ func }(); next PERSON; } } # Handle else here. }