while (my($tagkey, $tagvalue) = each %{$my_hash_of_hashes}) { if (ref $tagvalue eq 'HASH') { print "TAG:::> $tagkey value $tagvalue\n"; push(@tag_name, "$tagkey"); } foreach my $hash_tag_names (@tag_name) { while (my ($tagkey1, $tagvalue1) = each %{$my_hash_of_hashes->{$hash_tag_names}}) { if (ref $tagvalue1 eq 'HASH') { print "TAG:::> $tagkey1 value $tagvalue1\n"; } } } }