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

Re: require different modules per OS?

by gwadej (Chaplain)
on Nov 18, 2009 at 14:57 UTC ( #807927=note: print w/ replies, xml ) Need Help??


in reply to require different modules per OS?

To expand on keszler's comment, use happens at compile time and the if happens at run time.

By moving the use into a string eval, you put off its execution until run time.

G. Wade


Comment on Re: require different modules per OS?
Select or Download Code
Re^2: require different modules per OS?
by ambrus (Abbot) on Nov 19, 2009 at 20:00 UTC

    I downvoted for the string eval. Don't use string eval unless necessary.

    If you want to do something which is not easy enough to write with the if module, you can still use require in a begin-block:

    BEGIN { if ($^O =~ /win32/) { require Win32::TieRegistry; import Win32 +::TieRegistry Delimiter=>"/", ArrayValues=>0; } }

      I was wondering how eval EXPR compares. We have the following without eval EXPR:

      BEGIN { if ($^O =~ /win32/) { require Win32::TieRegistry; import Win32::TieRegistry Delimiter=>"/", ArrayValues=>0; } }

      The following would be the equivalent using eval EXPR and a minimal expression:

      BEGIN { if ($^O =~ /win32/) { my @import = ( Delimiter=>"/", ArrayValues=>0 ); eval "use Win32::TieRegistry \@import; 1" or die $@; } }

      Or if you extended the expression beyond the necessary:

      BEGIN { if ($^O =~ /win32/) { eval 'use Win32::TieRegistry Delimiter=>"/", ArrayValues=>0; 1 +' or die $@; } }

      So it looks like there's no gain from using eval EXPR.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (13)
As of 2014-10-30 23:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (211 votes), past polls