my %h = ( Flinstones => { Dad => "Fred", Mom => "Wilma", Kid => "Pebbles", Pet => "Dino" }, Simpsons => { Dad => "Homer", Mom => "Marge", Kid => "Bart", Pet => "Santas_Little_helper" }); my @desc = ("Dad", "Mom", "Kid", "Pet"); @h{TEST =>{@desc}} = ("Mr", "Mrs", "baby", "none"); foreach my $a (keys %h){ print "Key 1 => $a\n"; foreach my $b (keys %{$h{$a}}){ print "\tKey 2 => $b\n"; print "\t\tValue => $h{$a}{$b}\n"; } }