in reply to Using perl module if env is enabled
use happens at compile time, so before the if gets checked.
Yes, I know you've put it in a BEGIN { ... } block, so the if also happens at compile time, but the use is happening at a compile-time within compile-time, if you see what I mean.
One solution is to not use use and use require;import instead.
BEGIN { if ($ENV{USE_XYZ} == 1) { require XYZ; XYZ->import(); } }
Another option is to take advantage of the core module if (if.pm).
use if $ENV{USE_XYZ}, "XYZ";
In rare cases, if you're loading something that does weird funky stuff at compile time, the first option won't work well. The second option should generally be okay.
|
---|
In Section
Seekers of Perl Wisdom