# My/Role.pm package My::Role; use Moo::Role; use MooX::Role::Parameterized; role { my ($params, $mop) = @_; $mop->has($params->{name} => is => $params->{is}); } #### # My/Obj.pm package My::Obj; use Moo; use My::Role; 'My::Role'->apply({ name => 'size', is => 'ro', }); #### package My::Obj; use Moo; use MooX::Role::Parameterized::With 'My::Role' => { name => 'size', is => 'ro', }; #### package My::Obj; use Moo; use MooX::Role::Parameterized::With 0.501; with 'My::Role' => { name => 'size', is => 'ro', }; #### package My::Role; use Moo::Role; use MooX::Role::Parameterized 0.501; parameter name => (is => 'ro'); parameter is => (is => 'ro'); role { my ($params, $mop) = @_; $mop->has($params->name => is => $params->is); }