Re: How to know if a module is installed

2006-09-28 Thread Ken Williams


On Sep 27, 2006, at 10:25 AM, David Cantrell wrote:


On Thu, Sep 28, 2006 at 12:00:34AM +0900, Nobumi Iyanaga wrote:


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;
}



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


Re: How to know if a module is installed

2006-09-27 Thread David Cantrell
On Thu, Sep 28, 2006 at 12:00:34AM +0900, Nobumi Iyanaga wrote:

 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;
}

-- 
David Cantrell | Reality Engineer, Ministry of Information

EIN KIRCHE! EIN KREDO! EIN PAPST!


Re: How to know if a module is installed

2006-09-27 Thread Sherm Pendley

On Sep 27, 2006, at 11:00 AM, Nobumi Iyanaga wrote:

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.


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