Find(3)
π Find(3) β Module::Find π
okay so this is the Find(3) page from the User Contributed Perl Documentation section, and it's literally about one of the most useful little modules ever: Module::Find π (yes that's the manual name, and yes it slays)
β¨ 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 π¦
So Module::Find lets you, bestie, find and use modules that live in categories. Lowkey iconic for auto-detecting driver modules or plugin modules β like, it does the "who's in this folder" homework for you π«Ά. And you get to pick whether you look just in the category itself or in all the subcategories too. Different vibes, different functions.
okay important one π β if you wantModule::Findto search in a certain directory on your harddisk (say, the plugins directory of your software installation), make sure you modify@INCbefore you call theModule::Findfunctions. No cap, order matters.
π FUNCTIONS π
setmoduledirs(@directories)β sets the directories that get searched for modules. If you don't set them,Module::Findwill just use@INC. And heads up: if you do use this function,@INCis not included automatically β so add it yourself if you want it in the mix π§. Set it toundefto revert to the default behaviour.@found = findsubmod Module::Categoryβ returns the modules found in theModule/Categorysubdirectories of your perl installation. Like,findsubmod CGIwill returnCGI::Session, but notCGI::Session::File. Surface level only, bestie β¨@found = findallmod Module::Categoryβ returns the modules found in theModule/Categorysubdirectories of your perl installation. Sofindallmod CGIwill returnCGI::Sessionand alsoCGI::Session::File. It goes deep π@found = usesub Module::Categoryβ uses and returns the modules found in theModule/Categorysubdirectories of your perl installation.usesub CGIwill returnCGI::Session, but notCGI::Session::File.
and if any module dies during loading, usesub will also die at this point π like it goes down with the ship. fr fr.
@found = useall Module::Categoryβ uses and returns the modules found in theModule/Categorysubdirectories of your perl installation.useall CGIwill returnCGI::Sessionand alsoCGI::Session::File.
same deal: if any module dies during loading, useall will also die at this point. drama follows it π
ignoresymlinks()β do not follow symlinks. This function is not exported by default πfollowsymlinks()β follow symlinks (this is the default behaviour). This function is not exported by default either π
π HISTORY π
the whole glow-up timeline, periodt:
- 0.01, 2004-04-22 β original version; created by
h2xs1.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. Also fixed non-platform compatibility by usingFile::Spec. Thanks to brian d foy. Addedsetmoduledirsand 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::Findnow 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::Findnow 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.ymlgeneration (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:
useallfails 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 foruseallandusesub. 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::PluggableandClass::Factory::Utilin SEE ALSO, and align package name parsing with how perl does it (allowing single quotes as module separator). Also, added a test formeta.yml. - 0.14, 2019-12-25 β a long overdue update. Thank you for the many contributions! Fixed RT#99055: removed file readability check (pull request contributed by Moritz Lenz). Now supports
@INChooks (pull request contributed by Graham Knop). Now filters out filenames starting with a dot (pull request contributed by Desmond Daignault). Now usesstrict(pull request contributed by Shlomi Fish). Fixed RT#122016:test/files show up in metacpan (bug report contributed by Karen Etheridge). π - 0.15, 2019-12-26 β fixed RT#127657 (bug report contributed by Karen Etheridge):
Module::Findnow uses@ModuleDirs(if specified) for loading modules. Previously, when usingsetmoduledirs()to set an array of directories that did not contain@INC,Module::Findwould find the modules correctly, but load them from@INC. sneaky π - 0.16, 2022-08-01 β fixes an issue where symlink tests failed on systems that do not support creation of symlinks. The issue appears on Windows systems due to changed behaviour in
File::Finddescribed inperl5/issue #19995<https://github.com/Perl/perl5/issues/19995>. Symlink tests were previously skipped ifsymlink()is not available, and now also if creation of a symlink is not possible. Fixesissue #9<https://github.com/crenz/Module-Find/issues/9>. Note that on Windows system, the patch toFile::Findfromperl5/PR #20008<https://github.com/Perl/perl5/pull/20008> will be required for proper operation. π - 0.17, 2025-02-16 β fixes
issue 13<https://github.com/crenz/Module-Find/issues/13> /148978<https://rt.cpan.org/Ticket/Display.html?id=148978> where warnings where produced upon extracting the installation archive, which prevented installation undercpanmand other tools. π
π§ DEVELOPMENT NOTES π§
The development repository for this module is hosted on GitHub: <http://github.com/crenz/Module-Find/>. Please report any bugs by opening an issue there π
β SEE ALSO β
perl, Module::Pluggable, Class::Factory::Util
π AUTHOR π
Christian Renz, <crenz@web42.com>
π COPYRIGHT AND LICENSE π
Copyright 2004-2025 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.
and that's the whole page bestie π perl v5.42.0, dated 2025-07-25 β go find some modules, you got this π¦
π¦ where this page comes from
- fedora 43: perl-Module-Find 0.17-2.fc43 Β· GPL-1.0-or-later OR Artistic-1.0-Perl
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms