NAME

Module::Find - Find and use installed modules in a (sub)category

SYNOPSIS

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();

DESCRIPTION

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.

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 .

@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 .

ignoresymlinks()

Do not follow symlinks. This function is not exported by default.

followsymlinks()

Follow symlinks (default behaviour). This function is not exported by default.

HISTORY

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 Völker 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).

DEVELOPMENT NOTES

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/.

SEE ALSO

perl

AUTHOR

Christian Renz, <crenz@web42.com>

COPYRIGHT AND LICENSE

Copyright 2004-2008 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.