use 5.010; use Math::BigInt; use Moose (); # quite big!! my $seven = Math::BigInt->new('7'); # $seven cannot "speak", so this warns eval { $seven->speak } or warn $@; my $speaker = Moose::Meta::Role->create_anon_role( methods => { speak => sub { CORE::say($_[0]) }, }, ); Moose::Util::apply_all_roles($seven, $speaker); # $seven can now "speak" eval { $seven->speak } or warn $@;