jk2addict has asked for the wisdom of the Perl Monks concerning the following question:
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
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: :lvalue, How I Hate Thee
by BrowserUk (Patriarch) on Aug 17, 2005 at 19:38 UTC | |
by jk2addict (Chaplain) on Aug 17, 2005 at 19:40 UTC | |
by BrowserUk (Patriarch) on Aug 17, 2005 at 20:10 UTC | |
by DrWhy (Chaplain) on Aug 17, 2005 at 22:34 UTC | |
by jk2addict (Chaplain) on Aug 17, 2005 at 19:57 UTC |