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