I had reason to use the perl functionality built into a vendors software package today. The package comes with 5.8.3, and it's own set of perl modules to do software related tasks like tweaking data records.
At one point, I have to figure out why this didn't work:
$valobj->value = undef;
but this did:
$valobj->value = '';
After looking into the source code, the object and it's methods use the :lvalue attribute.
sub value : lvalue { my $this = shift; $this->{VALUE}; }
So, that doesn't work if lvalue is undef, but does work if lvalue is an empty string. Is that a 'feature' of the lvalue attribute, or something about the method?
I wouldn't expect this traditional setup to work:
sub value { my ($self, $value) = @_; if (defined $value) { $self->{value} = $value; }; }; $valobj->value(undef);
But I would've expected all the work behind :lvalue to fix that.
Updated: Yes, I've read the pod. It's experimental. Good thing they're using it. The pod doesn't really mention what would happen in the case of setting undef though.
-=Chris
In reply to :lvalue, How I Hate Thee by jk2addict
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |