use strict;
use warnings;
my $fileName = 'data.txt';
# Create the sample data file
open my $outFile, '>', $fileName or die "Failed to create $fileName: $
+!";
print $outFile <<SAMPLEDATA;
Db10g029860.2 7
Db10g029860.2 1
Db10g029860.2 2
Db10g029860.2 1
Db10g029860.2 4
Db10g029860.2 2
Db10g029860.2 6
Db10g029860.2 11
Db96g938791.0 5
Db96g938791.0 9
Db96g938791.0 1
Db96g938791.0 3
Db96g938791.0 7
Db04g787390.1 6
Db04g787390.1 5
Db04g787390.1 5
Db04g787390.1 12
SAMPLEDATA
close $outFile;
# Process the input file
open my $fileIn, '<', $fileName or die "Unable to open $fileName: $!";
my %counts;
while(<$fileIn>) {
chomp;
my ($id, $count) = split /\s+/;
next if ! $count;
$counts{$id} += $count;
}
# Print the result
for my $id (sort keys %counts) {
printf "%-12s: %5d\n", $id, $counts{$id};
}
Prints:
Db04g787390.1: 28
Db10g029860.2: 34
Db96g938791.0: 25
True laziness is hard work
|