NAME

pm_which - find installed modules

SYNOPSIS

pm_which [ options ] module(s)

Returns the path to the given module(s)

OPTIONS

  -q, --quiet     Just print paths
  -p, --paths	    Just convert the module name into a relative path
  -a, --all	    Print all paths, not just the first one found
  -n, --namspace  Print all modules in the given namespace
  -m              Only print module names, not paths
  -I libpath	    Add a path to search (like perl -I)
  -d, --dump	    Dump paths that would be searched (@INC by default)
  -h, --help	    Print this message
  -               Read modules from stdin, one per line

DESCRIPTION

This tool reports the locations of installed perl modules.

By default it lists the location of each specified module that would be loaded by require.

OPTION DETAILS

quiet

Under quiet mode, module names are suppressed and missing modules are not reported.

Normal output:

$ pm_which Module::One Module::Two Missing::Module
Module::One     - /path/to/Module/One.pm
Module::Two     - /path/to/Module/Two.pm
Missing::Module - not found

Under --quiet:

$ pm_which -q Module::One Module::Two Missing::Module
/path/to/Module/One.pm
/path/to/Module/Two.pm

paths

In "paths" mode, each module is simply converted into a relative file path. This is possible even when the module is not installed.

$ pm_which -p Missing::Module
Missing/Module.pm

all

When the "all" switch is specified, all installed modules will be reported, not just the first one. This is useful for determining when there is a module installed in multiple locations.

$ pm_which -a MyModule
/path/to/MyModule.pm
/home/me/perl/MyModule.pm

namespace

Arguments are taken as namespaces to search under.

$ pm_which -n MyModule
MyModule            - /path/to/MyModule.pm
MyModule::Foo       - /path/to/MyModule/Foo.pm
MyModule::Foo::Bar  - /path/to/MyModule/Foo/Bar.pm

-m

Disables printing of module paths. This is only really useful in conjunction with --namespace.

$ pm_which -nm MyModule
MyModule
MyModule::Foo
MyModule::Foo::Bar

dump

Dumps the paths that would be searched and exits. This is @INC modified by any -I switches.

$ pm_which --dump
/usr/lib/perl5/site_perl/5.8.6
/usr/lib/perl5/vendor_perl/5.8.6
...

$ pm_which -I lib --dump -I blib/lib
lib
blib/lib
/usr/lib/perl5/site_perl/5.8.6
...

EXIT CODES

  • 0 - Everything was OK

  • 1 - Initialisation failed (bad switches?)

  • 2 - Some modules were not installed

SEE ALSO

This utility comes with Module::Util.

AUTHOR

Matt Lawrence <mattlaw@cpan.org>