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;