The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use Test::More tests => 5;

{
    package Animal;
    use Mouse::Role;
    requires 'bark';
    sub eat { 'delicious' }
    has food => ( is => 'ro' );
}

{
    package Dog;
    use Mouse::Role;
    with 'Animal';
}

{
    package Chihuahua;
    use Mouse;
    with 'Dog';
    sub bark { 'bow-wow' }
}

ok !Animal->can('food');
ok !Dog->can('food');

my $c = Chihuahua->new(food => 'bone');
is $c->eat(), 'delicious';
is $c->food(), 'bone';
is $c->bark(), 'bow-wow';