Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
Discussion Groups
General
GeneralPortable MacsHardwareNetworking
Applications
Mac ApplicationsEudoraFirefox / MozillaInternet ExplorerOutlook ExpressMS OfficeEntourageExcelPowerPointWordVirtual PCMedia PlayerOther MS Products
Programming
Mac ProgrammingCodeWarriorPerl
Country Specific
Australian Mac GroupUK Mac Group

Mac Forum / Programming / Perl / September 2006



Tip: Looking for answers? Try searching our database.

How to know if a module is installed

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Nobumi Iyanaga - 27 Sep 2006 16:00 GMT
Hello,

This is a newbie question: how can I determine if a specific module  
is installed on a client machine?

I would like to do something like this:

if (MacPerl installed is true) {
    do this...;
}
else {
    do nothing...;
}

Thank you in advance for any help.

Best regards,

Nobumi Iyanaga
Tokyo,
Japan
David Cantrell - 27 Sep 2006 16:25 GMT
> This is a newbie question: how can I determine if a specific module  
> is installed on a client machine?

if(eval "use Whatever::Module") {
   do this;
} else {
   do that;
}

Signature

David Cantrell | Reality Engineer, Ministry of Information

EIN KIRCHE! EIN KREDO! EIN PAPST!

Ken Williams - 28 Sep 2006 14:07 GMT
>> This is a newbie question: how can I determine if a specific module
>> is installed on a client machine?
[quoted text clipped - 4 lines]
>     do that;
> }

use() isn't documented to have a return value, so you need to do this:

if(eval "use Whatever::Module; 1") {
    do this;
} else {
    do that;
}

 -Ken
Sherm Pendley - 27 Sep 2006 16:31 GMT
> This is a newbie question: how can I determine if a specific module  
> is installed on a client machine?
[quoted text clipped - 9 lines]
>
> Thank you in advance for any help.

Wrap a require() in an eval block, and then check to see if the eval
() succeeded. Untested, typed in Mail, etc.:

my $has_modulename;

BEGIN {
    eval {
        require Module::Name;

        # If you'd ordinarily "use Module::Name qw(foo bar baz);", pass
        # the qw(foo bar baz) to import here.

        import Module::Name qw(foo bar baz);
    };

    # If the eval failed, we don't have the module
    if ($@) {
        $ has_modulename = 0;
    } else {
        $ has_modulename = 1;
    }
}

That's if you want to check within a script - if you want to quickly  
check from a command-line, there's an easier way:

perl -MModule::Name -e 'print $Module::Name::VERSION, "\n"'

sherm--

Web Hosting by West Virginians, for West Virginians: http://wv-www.net
Cocoa programming in Perl: http://camelbones.sourceforge.net
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.