Well, that's interesting. You're absolutely correct, but it seems odd to me that anything
would get compiled before the use CGI::Carp
is compiled, except maybe other use
declarations or the contents of BEGIN
blocks, since use
is automatically placed in an implicit BEGIN
A little experimentation reveals that perl throws syntax errors even before compilation really begins (or, at least before BEGIN blocks. This is implied in the Camel, where it says that "the Perl compiler reads through your entire program source before execution start." I guess when they say that BEGIN blocks execute as soon as possible they mean AFTER a syntax check, 'cause before that, it isn't possible. :-)
I guess this makes sense... if perl can't parse the program it has to give up without executing anything... but it does make catching syntax errors in a CGI environment (no error-log, FTP only) problematic. I guess the alternative is to install Perl on your local machine and do all your syntax checks locally.