( A => { count => 3,
B => { count => 2, values => ["n1", "n2"] },
C => { count => 1, values => ["n1" ] } },
D => { count => 3,
E => { count => 2, values => ["n2", "n4"] },
F => { count => 1, values => ["n1" ] } } )
####
my %hoh = ( A => { B => [ "n1", "n2" ],
C => [ "n1" ] },
D => { E => [ "n2", "n4" ],
F => [ "n1" ] }, );
foreach my $col1 (keys %hoh) {
my $count1 = 0;
foreach my $col2 (keys %{$hoh{$col1}}) {
my $count2 = scalar @{$hoh{$col1}{$col2}};
$hoh{$col1}{$col2} = { count => $count2,
values => $hoh{$col1}{$col2} };
$count1 += $count2;
}
$hoh{$col1}{count} = $count1;
}
####
my %hoh;
while () {
chomp;
my ($c1, $c2, $c3) = split;
$hoh{$c1}{count}++;
$hoh{$c1}{$c2}{count}++;
push @{$hoh{$c1}{$c2}{values}}, $c3;
}
__DATA__
A B n1
A B n2
A C n1
D E n2
D E n4
D F n1