Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: Using perl module if env is enabled

by tobyink (Canon)
on Dec 09, 2019 at 15:20 UTC ( [id://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
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11109881]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others avoiding work at the Monastery: (None)
    As of 2024-04-25 04:25 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?

      No recent polls found