in reply to $foo->bar = 14;

And no,I don't like using the hash reference for my external API.

Which is exactly what you are doing when you think about it, isn't it? ;-) As a result using lvalue breaks encapsulation just as bad as allowing (the other, more common way of) direct access to your attributes.

As it is, I see no use for lvalue.

— Arien