in reply to Confused by a Conditional

Because strings are true. You're checking to see if $key is 'ID', or if 'TITLE' is true, or if 'GENE' is true, etc. string constants are always true.

I think you're trying to see if $key is one of those strings. In that case, you could use:
if ( grep { $key eq $_ } qw(ID TITLE GENE CYTOBAND LOCUSLINK CHROMOSOM +E SCOUNT) ) { # do your stuff }
... which will check to see if $key matches at least one of those.

ar0n ]