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

Re: Conditional use of Win32::TieRegistry

by haukex (Bishop)
on Nov 13, 2017 at 19:54 UTC ( #1203288=note: print w/replies, xml ) Need Help??

in reply to Conditional use of Win32::TieRegistry

use warnings; use strict; my $have_tie_registry = defined eval q{ use Win32::TieRegistry Delimiter=>"/"; 1 }; if ($have_tie_registry) { print "Have module\n"; our $Registry; my $IEKey = $Registry->{'HKEY_CURRENT_USER/Software/' .'Microsoft/Internet Explorer/Main/'}; print "<$_>\n" for keys %$IEKey; } else { chomp( my $err = $@//'unknown' ); die $err if $^O eq 'MSWin32'; print "On $^O, don't have module (reason: '$err')\n"; } print "Continuing program...\n"; __END__ #### Linux: On linux, don't have module (reason: 'Can't locate Win32/TieRegistry.p +m in @INC (you may need to install the Win32::TieRegistry module) (@I +NC contains: ...) at (eval 1) line 1. BEGIN failed--compilation aborted at (eval 1) line 1.') Continuing program... ### Windows: Have module <...> <...> ... Continuing program...

(Update: Note that as opposed to several of the other solutions here, this uses slightly different logic: if Win32::TieRegistry is available, it is used no matter which OS this is being run on; otherwise, if it's not available, that's only a fatal error if this is being run on Windows. Of course that logic can be changed, my point was mostly to show the my $have_module = eval q{ use Module; 1 }; technique.)

See also:

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (5)
As of 2022-05-19 09:08 GMT
Find Nodes?
    Voting Booth?
    Do you prefer to work remotely?

    Results (71 votes). Check out past polls.