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 .= '.';
}
}
####
while(my($key,$val) = each(%ret)) {
$id = $key;
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';
}
## Though this doesn't do much?
$ret{$id}{'count'} += $ret{$key}{'count'};
}
####
my @keys = sort keys %cats;
my $cnt = scalar @keys;
...
@keys = keys %ids;
$cnt = scalar @keys;
...
@keys = keys %ret;
$cnt = scalar @keys;
####
my $cnt = keys %cat;
...
$cnt = keys %ids;
...
$cnt = keys %ret;