I use a similar technique for a very simple plugin system. The main object is a Moose object, and all of the plugins are Moose roles. With in the main class (call it MyApp), I have a method:
sub create_with_roles { my ($class, $roles, %args) = @_; for my $role (@$roles) { next if $role =~ /::/; $role = 'MyApp::Role::' . $role; } Moose::Util::ensure_all_roles( $class, @$roles ); return $class->new( %args ); }
... and within the drive program, I can write:
my $app = MyApp->create_with_roles( [qw( List Of Role Names )], %constructor_arguments );
... and get back an object which is an instance of MyApp which performs all of the named roles. It's been working very well.
Improve your skills with Modern Perl: the free book.
In reply to Re: Adding a method to an existing object
by chromatic
in thread Adding a method to an existing object
by forgot_other_usrname
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |