%hash=("$country"=>{ "$errorcode=>{ $messagetype=>{ "count"=>"value"}}}) #### if (defined $hash{$country}{$errorcode}{$message}{$count}) { $hash{$country}{$errorcode}{$message}{$count}+=1; } else { $hash{$country}{$errorcode}{$message}{$count}=1; } #### for $varctry(keys %hash) { for $varerror(@$hash{$varctry}) { for $varmsgtype(@$hash{$varctry}{$varerror}) { print "Country $varctry with error $varerror for msg $varmsgtype has $hash{$varctry}{$varerror}{$varmsgtype}{count} errors\n"; } } }