in reply to Re: Reducing Perl's memory footprint depending on run mode
in thread Reducing Perl's memory footprint depending on run mode

This is not going to work as written. use statements get executed in the compilation phase. if statements are executed at runtime. Even inside a BEGIN block the code gets compiled first before being executed.

The following might work:

BEGIN { if (completely_boring()) { eval <<USE; use Module::A; use Module::B; use Module::Etc; USE } else { eval "use Module::C"; } die $@ if $@; }

Putting the use statements inside an eval postpones their evaluation till runtime. This only works if the code is in a string rathern than a block. I've also used this trick to set up END blocks conditionally.

I vaguely recall that there might be a CPAN module that would let you do this more cleanly, but don't quote me on that.

--DrWhy

"If God had meant for us to think for ourselves he would have given us brains. Oh, wait..."