Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw

Re: Using perl module if env is enabled

by tobyink (Canon)
on Dec 09, 2019 at 15:20 UTC ( #11109881=note: print w/replies, xml ) Need Help??

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 (

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.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://11109881]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (4)
As of 2020-11-26 20:56 GMT
Find Nodes?
    Voting Booth?

    No recent polls found