file 1
A RACK 2 2 2 2
B RACK 2 2 2 2
A CACK 2 2 2 2
B CACK 2 2 2 2
file 2
A KACK 2 2
B KACK 2 2
file 3
E TACK 4 2
F TACK 4 2
####
foreach my $file (@file_handles) {
open FILE, "<$file" or die "file not exists\n";
while (chomp ( my ($id, $type, $val1, $val2, $val3, $val4) = split /\t/, ) ) {
$data{in}{$type}{$id}{val1} += $val1;
$data{in}{$type}{$id}{val2} += $val2;
$data{in}{$type}{$id}{val3} += $val3;
$data{in}{$type}{$id}{val4} += $val4;
$data{subtotal}{$type}{val1} += $val1;
$data{subtotal}{$type}{val2} += $val2;
$data{subtotal}{$type}{val3} += $val3;
$data{subtotal}{$type}{val4} += $val4;
$data{total}{val1} += $val1;
$data{total}{val2} += $val2;
$data{total}{val3} += $val3;
$data{total}{val4} += $val4;
}
}
close FILE;
for my $type (sort keys %{$data{in}}) {
print "$type\n";
for (sort keys %{$data{in}{$type}}) {
print join("\t" => $_, @{$data{in}{$type}{$_}}{qw{val1 val2 val3 val4}})."\n";
}
print join("\t" => 'Sub', @{$data{subtotal}{$type}}{qw{val1 val2 val3 val4}})."\n";
}
print join("\t" => 'Tot', @{$data{total}}{qw{val1 val2 val3 val4}})."\n";
####
A 2 2 2 2
Sub 2 2 2 2
KACK
A 2 2 0 0
B 2 2 0 0
Sub 4 4 0 0
RACK
A 2 2 2 2
B 2 2 2 2
Sub 4 4 4 4
TACK
E 4 2 0 0
F 4 2 0 0
Sub 8 4 0 0
Tot 18 14 6 6
####
A 2 2 2 2
Sub 2 2 2 2
KACK
A 2 2 0 0
B 2 2 0 0
Sub 4 4 0 0
RACK
A 2 2 2 2
B 2 2 2 2
Sub 4 4 4 4
Tot1 10 10 6 6
TACK
E 4 2 0 0
F 4 2 0 0
Sub 8 4 0 0
Tot 18 14 6 6