Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

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?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (1)
As of 2021-08-04 19:06 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My primary motivation for participating at PerlMonks is: (Choices in context)








    Results (43 votes). Check out past polls.

    Notices?