Dos cosillas...
Los números en la tabla vienen con coma (,), por lo que Perl no puede sumarlos, ya que Perl sigue (por defecto) la notación anglosajona de separar los decimales con punto (por cierto, en la última ortografía de la RAE (diciembre 2010) se aconseja usar esta notación).
Así que hay que hacer una breve transformación de comas a puntos.
Y la acumulación por género, pues para eso, acertadamente, usamos un
hash, indexado por el género.
Lo que pasa es que no haces la acumulación mientras vas leyendo la tabla, cosa que sí puedes hacer como te pongo más abajo. Solo te faltaría hacer un bucle final -que sí tienes- para recorrer las claves y sacarlas al archivo resultado.
Esta es mi versión:
Using perl Syntax Highlighting
#!/usr/bin/perl
use v5.14; # activa modo estricto y say()
my $archivo = 'BASAL_11 Families.txt';
my %generos; # aquí haremos las sumas, por género
open my $IN, '<', $archivo or die "No puedo leer [$archivo]: $!\n";
while (<$IN>) {
chomp;
my($protein, $emPAI, $nemPAI, $genus, $family) = split /\t/;
next if not $emPAI or $emPAI !~ /^[0-9.,]+$/; # saltamos a la siguiente línea si no tenemos un número
$emPAI =~ s/[,]/./; # lo pasamos a notación de punto decimal
$emPAI += 0; # nos aseguramos que es un número
$generos{ $genus } += $emPAI; # acumulamos $emPAI segun el $genus al que pertenece
}
close $IN;
#use Data::Dumper;
#say Dumper \%generos;
open my $OUT, '>', 'Resultado.txt' or die "No puedo escribir [Resultado.txt]: $!\n";
for my $genus (sort keys %generos) {
say $OUT "$genus $generos{$genus}";
}
close $OUT;
Coloreado en 0.003 segundos, usando
GeSHi 1.0.8.4
Esta es la salida que obtengo:
Using text Syntax Highlighting
Achromobacter 0.63
Acidaminococcus 1.27
Actinobacillus 0.21
Actinomyces 0.08
Aeromonas 0.14
Aggregatibacter 0.08
Akkermansia 0.23
Alistipes 4.03
Anaerococcus 0.32
Anaerofustis 2.17
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4