Module::Path - get the full path to a locally installed module
use Module::Path 'module_path'; $path = module_path('Test::More'); if (defined($path)) { print "Test::More found at $path\n"; } else { print "Danger Will Robinson!\n"; }
Module::Path provides a single function, module_path(), which will find where a module is installed locally.
module_path()
It works by looking in all the directories in @INC for an appropriately named file:
@INC
Foo::Bar becomes Foo/Bar.pm, using the correct directory path separator for your operating system.
Foo/Bar.pm
Iterate over @INC, ignoring any references (see "require" in "perlfunc" if you're surprised to hear that you might find references in @INC).
For each directory in @INC, append the partial path (Foo/Bar.pm), again using the correct directory path separator. If the resulting file exists, return this path.
If no file was found, return undef.
undef
I wrote this module because I couldn't find an alternative which dealt with the points listed above, and didn't pull in what seemed like too many dependencies to me.
Obviously this only works where the module you're after has its own .pm file. If a file defines multiple packages, this won't work.
.pm
This also won't find any modules that are being loaded in some special way, for example using a code reference in @INC, as described in "require" in "perlfunc".
There are a number of other modules on CPAN which provide the same or similar functionality. But many of them provide a lot of other things, and/or they have a number of non-core dependencies. Or they're not as robust. The following is a list of the ones I'm currently aware of.
Provides an OO interface, with a single method filename(), which provides the same mapping as Module::Path. Uses Path::Class to ensure portable handling of directory paths.
filename()
Class which provides various ways to find a module, and can then report the version and other things beyond the path.
Another class which can give you a lot of information about a module, without having to load it.
A collection of utility functions for getting information about a module's path, and source, amongst other things.
A class which can provide information about a module, similar to Module::Info, but not as much information.
A class for finding and querying modules. This is very slow, so if you're just after the path, don't use this module.
A collection of functions for handling module names and paths.
Apps for accessing module information, which include the path.
https://github.com/neilbowers/Module-Path
Neil Bowers <neilb@cpan.org>
This software is copyright (c) 2012 by Neil Bowers <neilb@cpan.org>.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install Module::Path, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Module::Path
CPAN shell
perl -MCPAN -e shell install Module::Path
For more information on module installation, please visit the detailed CPAN module installation guide.