Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

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 (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.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (9)
As of 2020-11-24 21:13 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?