package MyRole; use Moo::Role; sub foo { return 'bar'; } 1; #### use 5.016; package MyClass; use Moo; use FindBin qw($Bin); use lib $Bin; with 'MyRole'; around foo => sub { my ($orig, $self) = @_; return 'Wrapped ' . $self->$orig; }; package main; package MyRole { sub foo { return 'baz' }; }; my $obj = MyClass->new; my $res = $obj->foo; if ($res =~ /baz$/) { say qq{OK, got $res}; } else { say qq{Not OK, got $res}; }