while (my $seq = <$IN>) { if ($seq =~ /^>(\w+).+\((\d+)\s+aa\)$/) { %sequence = ( $1 => $2, ); my $max = max(values %sequence); for (keys %sequence) { delete $sequence{$_} unless $sequence{$_} == $max } print Dumper(\%sequence); while ( my ($key, $value) = each(%sequence) ) { print $OUT "$key $value\n"; } } } #### CIMG_00046 => 399 CIMG_00047 => 865 CIMG_00048 => 330 CIMG_00048 => 506 CIMG_00053 => 167 CIMG_00063 => 468 #### CIMG_00046 => 399 CIMG_00047 => 865 CIMG_00048 => 506 CIMG_00053 => 167 CIMG_00063 => 468