Apologies in advance if this is a dumb question but I haven't been able to figure it out from the examples and my head is now fairly fried from all the meta poking. It seems a fairly simple thing - so I guess I'm missing something obvious (I'll happily write the answer up if it isn't already in the docs somewhere).
I'm trying to create a trait that will provide a default build method if one hasn't already been set (well it will do more than that, but this is the bit I'm trying to figure out). So: has 'result' => ( traits => [ 'MyTrait' ], is => 'rw', isa => 'Str', ); Would effectively be changed to: has 'result' => ( traits => [ 'MyTrait' ], is => 'rw', isa => 'Str', default => sub { "built from default subroutine provide by MyTrait" } ); But the following would be left alone: has 'result' => ( traits => [ 'MyTrait' ], is => 'rw', isa => 'Str', default => sub { "built from custom method" } ); I can get this to work by getting the trait to provide a custom attribute (e.g. 'mytrait_build') that effectively does the same job as build/default/initialize (and just getting the user to specifically override that), but it seemed neater to try and reuse the existing attributes if possible. Many thanks -- Ian Sillitoe CATH Team -- http://cathdb.info