On Tue, Apr 14, 2009 at 2:15 PM, Chris Prather <perig...@gmail.com> wrote:
> Roles by default will drop conflicting methods on the floor. However you can
> optionally remap method names and or exclude method names.
>
> If you were to remap thr validate methods then in you main class write a
> single validate that called them that would be the cleanest solution.

Hmm,

I tried the Piotrs solution (with one simplification) - and it worked:

{
    package Role::A;

    use Moose::Role;

    after 'validate' => sub {
        print "Role::A\n";
    }
}

{
    package Role::B;

    use Moose::Role;

    after 'validate' => sub {
        print "Role::B\n";
    }
}

{
    package Role::C;

    use Moose::Role;

    after 'validate' => sub {
        print "Role::C\n";
    }
}
{
    package MainClass;
    use Moose;
    with 'Role::A';
    with 'Role::B';
    with 'Role::C';

    sub validate {};
}

package Main;

my $object = MainClass->new();
$object->validate;

__OUTPUT__
z...@zby:~/progs/html-formhandler$ perl modifiers_in_roles.pl
Role::A
Role::B
Role::C
z...@zby:~/progs/html-formhandler$

Just what I wanted.  Or do I miss something?

Cheers,
Zbigniew

Reply via email to