in reply to called too early to check prototype
According to the perldiag man page (if you add the line use diagnostics; to the top of your program, it'll print the relevant explanation when any error occurs), you're calling subroutines with prototypes before the program actually reaches the prototype declaration.
What the other two posts say is correct -- you could either use a forward declaration at the top of your program to inform Perl about the prototypes, or you could call the subroutines with the leading ampersand to disable prototype checking.
A better idea is to get rid of the prototypes, as you're not really taking advantage of them. For example, check_gene_seq() expects a single scalar as an argument, but you never use a passed-in argument. You're just lucking in to working with the magic global $_. (Further, your returns are broken and your if/else block is extremely broken.)
|
|---|