in reply to Re: readline on closed filehandle error
in thread readline on closed filehandle error

open I16S, '<', $in16S;

You don't test that open succeeded so this code has the same problem as the OP's code.

my %r_genus16S;

You don't use this variable anywhere so why are you creating it?

my ($genus16s) = <I16S>;

That reads the entire file and assigns the first line to $genus16s.

while ( defined( ${'genus16S'} = readline(*I16S) ) ) {

Which means that this loop will never execute because I16S is already at EOF at this point.    And WTF is up with ${'genus16S'}?