my %a; $a{key1}{a}{key2}{b}{key3}{c}{key4}{d}=1; $a{key1}{a}{key2}{b}{key3}{d}{key4}{c}=1; foreach my ($a, $b, $c, $d) (keys_it $a{key1}{*}{key2}{*}{key3}{*}{key4}{*}) { whateveryouwant with your elements of %a; } #### foreach my $key1 (keys %{$a{key1}...}) { my $level1=$a{key1}{$key1}; foreach my $key2 (keys %{$level1->{key2}}) { ... } } #### %a={a => {b => c}, b => 3}; open FILE, "myhash.txt"; print FILE Dumper (%a); cloes FILE