in reply to Is ": lvalue" attribute usefull or something to avoid?

Actually that sub won't work. For lvalue subs you should not use a return statement. You need something like:

sub value : lvalue { my $self = shift; $self->{value}; }
use Moops; class Cow :rw { has name => (default => 'Ermintrude') }; say Cow->new->name