package Point; use Moose; use namespace::autoclean; has 'x' => ( isa => 'Int', is => 'rw', required => 1 ); has 'y' => ( isa => 'Int', is => 'rw', required => 1 ); package Named; use Moose::Role; use namespace::autoclean; has 'name' => ( isa => 'Str', is => 'rw', required => 1 ); package main; use Moose::Util; my $p = Point->new( x => 1, y => 1 ); my $role = 'Named'; $role->meta->apply( $p ); # <-- line 41 print $p->dump; #### Attribute (name) is required at /nfs/pdx/disks/nehalem.pde.077/perl/5.12.2/lib64/site_perl/x86_64-linux/Moose/Meta/Attribute.pm line 514 ..... Moose::Meta::Role::apply('Moose::Meta::Role=HASH(0x114b110)', 'Moose::Meta::Class::__ANON__::SERIAL::1=HASH(0xfc2748)') called at /nfs/pdx/disks/nehalem.pde.077/scripts/test3.pl line 41