use strict; use warnings; my $file1 = <) { chomp $line; next if ! ($line =~ s/^([^:]+):\s*//); my $word = $1; for my $field (split ' ', $line) { my ($site, $count) = split /,/, $field; $sites{$word}{$site} += $count; } } } for my $word (sort {$a <=> $b} keys %sites) { print "$word: "; my $wordSites = $sites{$word}; for my $site (sort {$a <=> $b} keys %$wordSites) { print "$site,$wordSites->{$site} "; } print "\n"; } #### 0: 0,21 4,19 5,6 11,2 1: 1,3 2: 1,3 2,5 6,4 3: 0,1 2,2 3,2 5: 3,5 6,11 8,16 9,4