sub value : lvalue { my $self = shift; return $self->{value} } .... $obj->value() = 42; # compare with boring assignment ... $obj->value(42)