while (chomp(@field = split (/\t/, ))) { next unless ($field[0] =~ /^$USG_REC_IND/); foreach my $key ( keys %load_data ) { { if (length($key) == 0) { next; } } } $fulllookupKey = $field[1]."\t". $field[2]."\t". $field[3]."\t".$field[4]."\t".$field[5]; $RescatKey = $field[1]; $RessubcatKey = $field[2]; $MasterSrkey = $field[3]; $field[4] =~ s/^\s+//; $field[21] =~ s/^\s+//; $Count = $field[6]; $Amount = $field[7]; if (exists($output{$RescatKey}{$RessubcatKey}{$fulllookupKey})) { $output{$RescatKey}{$RessubcatKey}{$fulllookupKey}->[0] += $field[6]; $output{$RescatKey}{$RessubcatKey}{$fulllookupKey}->[1] += $field[7]; } else { $output{$RescatKey}{$RessubcatKey}{$fulllookupKey}->[0] = $field[6]; $output{$RescatKey}{$RessubcatKey}{$fulllookupKey}->[1] = $field[7]; } } for my $k1 (sort keys %output){ print "$k1\n"; for my $k2 ( sort keys %{ $output{$k1} } ) { print "\t$k2\n"; for my $k3 ( sort keys %{ $output{$k1}{$k2} } ) { my $Source = substr($k3,16,100); print "\t\t$Source $output{$k1}{$k2}{$k3}->[0]\t$output{$k1}{$k2}{$k3}->[1]\n"; print "\t\t$Source1\t TOTAL \t$output{$k1}{$k2}{$k3}->[1]\t$output{$k1}{$k2}{$k3}->[0]\n"; } } } close (OUT); }