NAME

Module::Locate - locate modules in the same fashion as require and use

SYNOPSIS

use Module::Locate qw/ locate get_source /;

plugin( locate "This::Module" );
munge(  get_source "Another::Module::Here" );

if(locate "Some::Module") {
  ## do stuff
}

DESCRIPTION

Using locate(), return the path that require would find for a given module (it can also return a filehandle if a reference in @INC has been used). This means you can test for the existence, or find the path for, modules without having to evaluate the code they contain.

FUNCTIONS

import

Given function names, the appropriate functions will be exported into the caller's package.

If :all is passed then all subroutines are exported.

If Global => BOOL is passed, then the results for module searches i.e using locate, will also be stored in %INC, like require. This is on by default.

If Cache => BOOL is passed, then every subsequent search for a module will just use the path stored in %INC, as opposed to performing another search. This is off by default.

locate

Given a module name as a string (in standard perl bareword format) locate the path of the module. If called in a scalar context the first path found will be returned, if called in a list context a list of paths where the module was found. Also, if references have been placed in @INC then a filehandle will be returned, as defined in the require documentation. An empty return is used if the module couldn't be located.

get_source

When provided with a package name, retrieve the source of the module that is found.

acts_like_fh

Given a scalar, check if it behaves like a filehandle. Firstly it checks if it is a bareword filehandle, then if it inherits from IO::Handle and lastly if it overloads the <> operator. If this is missing any other standard filehandle behaviour, please send me an e-mail.

is_mod_loaded

Given a module (like locate()), return true if the module has been loaded (i.e exists in the %INC hash).

is_pkg_loaded

Given a package name (like locate()), check if the package has an existing symbol table loaded (checks by walking the %main:: stash).

Changes

1.5
  • added the ubiquitous Makefile.PL (thanks Module::Build!)

1.4
  • now backward compatible with 5.00503

1.3
  • Tidied up POD.

  • acts_like_fh() now tests plain globs i.e *FH

1.2
  • No longer croak()s when locate() fails to find the module (which is much nicer and is consistent with the documentation).

  • Build.PL should now play nice with CPAN installs

1.1
  • fixed $PkgRe to be functional

  • added is_mod_loaded() and is_pkg_loaded() functions

  • added ':all' import() option

  • hopefully fixed b0rken CPAN make process ...

1.0
  • Initial release

AUTHOR

Dan Brook <broquaint@hotmail.com>

SEE ALSO

perl, use, require