$stuff = { production => { windows => { Hostname => { targetname1 = { total_capacity = value, free_capacity = value }, targetname2 = { total_capacity = value, free_capacity = value } } }, unix => { Hostname => { targetname1 = { total_capacity = value, free_capacity = value }, targetname2 = { total_capacity = value, free_capacity = value } } }, database => { Hostname => { targetname1 = { total_capacity = value, free_capacity = value }, targetname2 = { total_capacity = value, free_capacity = value } } } }, development => { windows => { etc. etc.}, unix => { etc. etc.}, database => { etc. etc.} } } ; #### while(my($env,$platform_href) = each %{$stuff}) { while(my($platform,$host_href) = each %{$platform_href}) { while(my($host,$target_href) = each %{$host_href}) { while(my($target,$capacity_href) = each %{$target_href}) { # Do stuff with # $env # $platform # $host # $target # $capacity_href->{'total_capacity'}; # $capacity_href->{'free_capacity'}; } } } }