in reply to Moose and default values
...but the downside is that the default-value is not declared with the attribute but buried in the BUILDer-code and to make this work the attribute has to be "rw".
How about using the initializer option?
use strict; use warnings; use 5.012; package Dog; use Moose; has color => ( is => "ro", initializer => sub { my ($self, $attr_val, $setter) = @_; defined $attr_val or $setter->('black'); } ); my $dog = Dog->new(color => undef); say $dog->color; --output:-- black
I am not so much interested in the feature itself, but it is interesting to see some examples of Moose-metaprogramming at work...
Never mind.
In Section
Seekers of Perl Wisdom