Import plugins into your module dynamically
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib/Plugin
t
.gitignore
.travis.yml
Changes
MANIFEST
MANIFEST.SKIP
Makefile.PL
README
ignore.txt

README

NAME

    Plugin::Simple - Load plugins from files or modules.

SYNOPSIS

        use Plugin::Simple;
    
        # load a plugin module from a file
    
        @plugins = plugins('/path/to/MyModule.pm');
    
        # load all modules under '__PACKAGE__::Plugin' namespace
    
        my @plugins = plugins(); # call in scalar context to retrieve the first one
    
        # load all plugins under a specific namespace (note the trailing ::)
    
        @plugins = plugins('Any::Namespace::');
    
        # load/return only the plugins that can perform specific functions
    
        @plugins = plugins(can => ['foo', 'bar]); # foo and bar
    
        # instead of importing 'plugins()', change the name:
    
        use Plugin::Simple sub_name => 'foo';
        @plugins = foo(...);
    
        # set a default fallback plugin if searching turns up nothing
    
        use Plugin::Simple default => 'My::Module::Plugin::DefaultPlugin'
    
        # do something with the plugins
    
        for my $plugin (@plugins){
            $plugin->plugin_func(@args);
        }
    
        # works in OO modules too simply by using it
    
        my @plugins = $self->plugins();

DESCRIPTION

    There are many plugin modules available on the CPAN, but I wrote this
    one just for fun. It's very simple, extremely lightweight, and is
    extremely minimalistic in what it does.

    It searches for modules in installed packages or non-installed files,
    and loads them (without string eval). You can optionally have us return
    only the plugins that can() perform a specific task.

LOAD OPTIONS

    By default, we force plugins() into your namespace. To change this
    name:

        use Plugin::Simple sub_name => 'other_name';

    If searching fails, you can ensure a default known plugin gets loaded:

        use Plugin::Simple default => 'My::Plugin';

    To use both options, simply separate them with a comma.

FUNCTIONS/METHODS

    None. We simply install a plugin() function within the namespace of the
    package that used us.

AUTHOR

    Steve Bertrand, <steveb at cpan.org>

 CONTRIBUTING

    Any and all feedback and help is appreciated. A Pull Request is the
    preferred method of receiving changes
    (https://github.com/stevieb9/p5-plugin-simple), but regular patches
    through the bug tracker, or even just email discussions are welcomed.

BUGS

    https://github.com/stevieb9/p5-plugin-simple/issues

SUPPORT

    You can find documentation for this script and module with the perldoc
    command.

        perldoc Plugin::Simple;

SEE ALSO

    There are far too many plugin import modules on the CPAN to mention
    here.

LICENSE AND COPYRIGHT

    Copyright 2016 Steve Bertrand.

    This program is free software; you can redistribute it and/or modify it
    under the terms of either: the GNU General Public License as published
    by the Free Software Foundation; or the Artistic License.

    See http://dev.perl.org/licenses/ for more information.