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 ]