If you do this:
has 'attr' => (
is => 'rw',
isa => 'Int',
lazy => 1,
default => 10,
clearer => '_clear_attr',
);
then you can do:
my $obj = Class->new;
print $obj->attr; # 10
$obj->attr(5);
print $obj->attr; # 5
$obj->_clear_attr;
print $obj->attr; # 10
The combination of lazy
and clearer
is important here.