X => { count => n, [ ... ] }
####
X => { count => n, values => [ ... ] }
####
#!/usr/bin/env perl -l
use strict;
use warnings;
use autodie;
use Text::CSV;
my $csv = Text::CSV::->new({sep_char => "\t"});
my %data;
while (my $row = $csv->getline(\*DATA)) {
++$data{$row->[0]}{count};
++$data{$row->[0]}{values}{$row->[1]}{count};
push @{$data{$row->[0]}{values}{$row->[1]}{values}}, $row->[2];
}
use Data::Dump;
dd \%data;
__DATA__
A B n1
A B n2
A C n1
D E n2
D E n4
D F n1
####
{
A => {
count => 3,
values => {
B => { count => 2, values => ["n1", "n2"] },
C => { count => 1, values => ["n1"] },
},
},
D => {
count => 3,
values => {
E => { count => 2, values => ["n2", "n4"] },
F => { count => 1, values => ["n1"] },
},
},
}