has x => ( is => 'rw' ); around x => \&my_accessor; #### has x => ( is => 'rw', traits => ['MyAccessor']); #### has x => ( isa => 'MyAccessor' ); #### package Moose::Meta::Attribute::Custom::Trait::MyAccessor; sub register_implementation { return 'MyAccessor' } package MyAccessor; use Moose::Role; my $meta = __PACKAGE__->meta; #### @list = $obj-> prop; $obj->prop(@list); $array = $obj->prop; $obj->prop($array); #### has prop; around prop => \&my_accessor;