The Perl "interpreter" "compiles" your Perl script before "running" it. This happens in a number of phases with stuff in BEGIN blocks being processed first, INIT block code is processed following compilation, then the main code is executed then, at exit time, the stuff in END blocks. require statements are processed at run time, but use statements are processed before any other main code statements.
Note that the location of a use statement doesn't alter when it is processed, only their order in the file affects the order that use statements are processed. In particular, you can not prevent a use statement from being processed by putting it inside an if, it is processed regardless.
DWIM is Perl's answer to Gödel