foreach my $id (0..$x)
{
my $cat = $ids{$id};
if(!$ret{$ids{$id}}{'count'})
{
$ret{$ids{$id}}{'count'} = 0;
$ret{$ids{$id}}{'head_count'} = 'head_count';
$ret{$ids{$id}}{'cat_count'} = 'cat_count';
$ret{$ids{$id}}{'subcat_count'} = 'subcat_count';
}
$ret{$ids{$id}}{'count'}++;
}
####
while(my($key,$val) = each(%ret))
{
my @parts = split(/\./, $key);
my $id = '';
foreach my $add (@parts)
{
$id .= $add;
if($id eq $key)
{
next;
}
if(!$ret{$id}{'count'})
{
$ret{$id}{'count'} = 0;
$ret{$id}{'head_count'} = 'head_count';
$ret{$id}{'cat_count'} = 'cat_count';
$ret{$id}{'subcat_count'} = 'subcat_count';
}
$ret{$id}{'count'} += $ret{$key}{'count'};
$id .= '.';
}
}
####
Loop #1: a
Loop #2: a.b
Loop #3: a.b.c
Loop #4: a.b.c.d. (skipped)