Boysenberry Payne wrote: >> But what if the module Module::Name "use" or "require" other modules? >> Are they also loaded before the server forks, or I need to load them >> with "PerlModule ..." in httpd.conf? > > Good question. I think it might depend on how the requires/uses are scoped > in the scripts that are included. I'm pretty sure any use statements > that are > scoped globally will be included in each forked copy of the server. To > insure > they are included it is suggested you add your use statements to the > startup.pl > file. Probably including your use/require statements in a BEGIN {} > block will > help to insure they are pre-compiled.
"use" is not scoped. It's a compile time pragma, so it happens at compile time, not when the code is executed. A "use" anywhere in Perl program is the same as a "use" at the top. We just normally put them at the top for organization. If you have a question about whether or not a module has been loaded by Perl before Apache forks, print out the contents of %INC. Anything in there has been loaded by Perl. If I use A which uses B which uses C, then they should all be in %INC. There's no trickery involved or anything special about mod_perl. If Perl knows about the module and has loaded it, it's in memory. -- Michael Peters Developer Plus Three, LP