Help language development. Donate to The Perl Foundation

OO::Plugin cpan:VRURG last updated on 2019-04-16

OO::Plugin – framework for working with OO plugins.


    use OO::Plugin;
    use OO::Plugin::Manager;

    class Foo is pluggable {
        has $.attr;
        method bar is pluggable {
            return 42;

    plugin Fubar {
        method a-bar ( $msg ) is plug-around( Foo => 'bar' ) {
            $msg.set-rc( pi ); # Will override &Foo::bar return value and prevent its execution.

    my $manager =;
    my $instance = $manager.create( Foo, attr => 'some value' );
    say $;  # 3.141592653589793


With this framework any application can have highly flexible and extensible plugin subsystem with which plugins would be capable of:

  * method overriding

  * class overriding (inheriting)

  * callbacks

  * asynchronous event handling

The framework also supports:

  * automatic loading of plugins with a predefined namespace

  * managing plugin ordering and dependencies

Not yet supported but planned for the future is plugin compatibility management.

Read more in [OO::Plugin::Manual](


[OO::Plugin::Manual](, [OO::Plugin](, [OO::Plugin::Manager](, [OO::Plugin::Class](


Vadim Belman <[email protected]>