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


Reply via email to