Module::Collect - Collect sub-modules in directories
use Module::Collect; my $collect = Module::Collect->new( path => '/foo/bar/plugins', prefix => 'MyApp::Plugin', # optional pattern => '*.pm', # optional multiple => 1, # optional, see t/06_multiple.t ); my @modules = @{ $collect->modules }; for my $module (@modules) { print $module->path; # package fuke oatg print $module->package; # package name $module->require; # require package my $obj = $module->new; # aliae for $module->package->new }
Module::Collect finds sub-modules, or plugins in directories.
The following directory composition
$ ls -R t/plugins t/plugins: empty.pm foo foo.pm pod.pm withcomment.pm withpod.pm t/plugins/foo: bar.pm baz.plugin
The following code is executed
use strict; use warnings; use Module::Collect; use Perl6::Say; my $c = Module::Collect->new( path => 't/plugins' ); for my $module (@{ $c->modules }) { say $module->package . ', ', $module->path; $module->require; }
results
MyApp::Foo, t/plugins/foo.pm With::Comment, t/plugins/withcomment.pm With::Pod, t/plugins/withpod.pm MyApp::Foo::Bar, t/plugins/foo/bar.pm
Kazuhiro Osawa <ko@yappo.ne.jp>
lopnor
gfx
mattn
Plagger, Module::Pluggable
Module::Collect::Package
git clone git://github.com/yappo/p5-Module-Collect.git
Module::Collect is git repository is hosted at http://github.com/yappo/p5-Module-Collect. patches and collaborators are welcome.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Module::Collect, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Module::Collect
CPAN shell
perl -MCPAN -e shell install Module::Collect
For more information on module installation, please visit the detailed CPAN module installation guide.