I don't claim to know a lot about the internals of module behavior, but I believe that this is what happens:
Perl loads the module first
Scans for any other commands you wanted executed on it. IE: Version check... or exported commands
Executes the commands
The thing is, even if it doesn't export the subroutines, it still has them all loaded into memory usually, under the package's namespace. IE: MyPackage::non_exported_sub() would still call it under most circumstances. There are modules designed to only load the subs that you ask for, but most are not.
I hope this helps
"Wierd things happen, get used to it"
Flame ~ Lead Programmer: GMS
http://gms.uoe.org