Chris Allen wrote: > If site::products calls functions from site::customers, do I need > a 'use site::customers' in site::products, when I have already > done a 'use' in my startup.pl?
No, but I always do. It's good documentation, to remind you that if you ever ran this code outside of mod_perl it would be necessary to have that 'use' in place. > site::products contains the line: > > @ISA=('site::base'); > > so that methods from site::base can be overridden in site::products. > > Do I need a 'use site::base' in site::products for this to work > correctly? Only if site::base has not been loaded already, but I always do it anyway, for the same reason as above. > Is $ENV{foo}='bar'; in startup.pl equivalent to PerlSetEnv foo bar > in httpd.conf? Yes. > Experience has shown that I *don't* need the 'use' statements anywhere > other than startup.pl - but I am not sure why, and would find some pointers > to a discussion of this very useful. You don't need them because the modules they would load are already loaded. > I would also be interested to know that > if the 'use' statements *are* unnecessary, does including them add any extra > overhead of processing/memory?? There is a very fast check that happens once when the module containing the 'use' is called. It checks to see if the used module is already loaded (i.e. if it is in %INC). It also calls the used module's export function, unless you pass an empty list: use Foo (); You should avoid importing symbols all over the place, as explained in the Guide, but otherwise there is no significant overhead from having use statements all over the place. - Perrin