Module::Find - Find and use installed modules in a
(sub)category
use Module::Find;
# use all modules in the Plugins/ directory
@found = usesub Mysoft::Plugins;
# use modules in all subdirectories
@found = useall Mysoft::Plugins;
# find all DBI::... modules
@found = findsubmod DBI;
# find anything in the CGI/ directory
@found = findallmod CGI;
# set your own search dirs (uses @INC otherwise)
setmoduledirs(@INC, @plugindirs, $appdir);
# not exported by default
use Module::Find qw(ignoresymlinks followsymlinks);
# ignore symlinks
ignoresymlinks();
# follow symlinks (default)
followsymlinks();
Module::Find lets you find and use modules in categories. This can
be very useful for auto-detecting driver or plugin modules. You can
differentiate between looking in the category itself or in all
subcategories.
If you want Module::Find to search in a certain directory on your
harddisk (such as the plugins directory of your software installation), make
sure you modify @INC before you call the
Module::Find functions.
- "setmoduledirs(@directories)"
- Sets the directories to be searched for modules. If not set, Module::Find
will use @INC. If you use this function,
@INC will not be included automatically, so
add it if you want it. Set to undef to revert to default behaviour.
- "@found = findsubmod Module::Category"
- Returns modules found in the Module/Category subdirectories of your perl
installation. E.g. "findsubmod CGI" will
return "CGI::Session", but not
"CGI::Session::File" .
- "@found = findallmod Module::Category"
- Returns modules found in the Module/Category subdirectories of your perl
installation. E.g. "findallmod CGI" will
return "CGI::Session" and also
"CGI::Session::File" .
- "@found = usesub Module::Category"
- Uses and returns modules found in the Module/Category subdirectories of
your perl installation. E.g. "usesub
CGI" will return
"CGI::Session", but not
"CGI::Session::File" .
If any module dies during loading, usesub will also die at
this point.
- "@found = useall Module::Category"
- Uses and returns modules found in the Module/Category subdirectories of
your perl installation. E.g. "useall
CGI" will return
"CGI::Session" and also
"CGI::Session::File" .
If any module dies during loading, useall will also die at
this point.
- "ignoresymlinks()"
- Do not follow symlinks. This function is not exported by default.
- "followsymlinks()"
- Follow symlinks (default behaviour). This function is not exported by
default.
- 0.01, 2004-04-22
- Original version; created by h2xs 1.22
- 0.02, 2004-05-25
- Added test modules that were left out in the first version. Thanks to
Stuart Johnston for alerting me to this.
- 0.03, 2004-06-18
- Fixed a bug (non-localized $_) by declaring a loop
variable in use functions. Thanks to Stuart Johnston for alerting me to
this and providing a fix.
Fixed non-platform compatibility by using File::Spec. Thanks
to brian d foy.
Added setmoduledirs and updated tests. Idea shamelessly stolen
from ...errm... inspired by brian d foy.
- 0.04, 2005-05-20
- Added POD tests.
- 0.05, 2005-11-30
- Fixed issue with bugfix in PathTools-3.14.
- 0.06, 2008-01-26
- Module::Find now won't report duplicate modules several times anymore
(thanks to Uwe Voelker for the report and the patch)
- 0.07, 2009-09-08
- Fixed RT#38302: Module::Find now follows symlinks by default (can be
disabled).
- 0.08, 2009-09-08
- Fixed RT#49511: Removed Mac OS X extended attributes from
distribution
- 0.09, 2010-02-26
- Fixed RT#38302: Fixed META.yml generation (thanks very much to cpanservice
for the help).
- 0.10, 2010-02-26
- Fixed RT#55010: Removed Unicode BOM from Find.pm.
- 0.11, 2012-05-22
- Fixed RT#74251: defined(@array) is deprecated under Perl 5.15.7. Thanks to
Roman F, who contributed the implementation.
- 0.12, 2014-02-08
- Fixed RT#81077: useall fails in taint mode Thanks to Aran Deltac, who
contributed the implementation and test.
Fixed RT#83596: Documentation doesn't describe behaviour if a
module fails to load Clarified documentation for useall and usesub.
Fixed RT#62923: setmoduledirs(undef) doesn't reset to
searching @INC Added more explicit tests. Thanks
to Colin Robertson for his input.
- 0.13, 2015-03-09
- This release contains two contributions from Moritz Lenz: - Link to
Module::Pluggable and Class::Factory::Util in "SEE ALSO" - Align
package name parsing with how perl does it (allowing single quotes as
module separator)
Please report any bugs using the CPAN RT system. The development
repository for this module is hosted on GitHub:
<http://github.com/crenz/Module-Find/>.
perl, Module::Pluggable, Class::Factory::Util
Christian Renz, <crenz@web42.com>
Copyright 2004-2014 by Christian Renz <crenz@web42.com>. All
rights reserved.
This library is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.