in reply to Overloading oddity
I'm a bit confused because when overload is triggered, it appears to be passing 'undef':
#!/usr/local/bin/perl + package SomeClass; use Data::Dumper; + use overload '""' => \&name; sub new { return bless {}, shift; } + sub name { print Dumper \@_; my $self = shift; $self->{NAME} = shift if @_; return $self->{NAME}; } + package main; my $thing = SomeClass->new; $thing->name('TestObj'); print "Implicit: my name is $thing\n";
That gives the following output:
$VAR1 = [ bless( {}, 'SomeClass' ), 'TestObj' ]; $VAR1 = [ bless( { 'NAME' => 'TestObj' }, 'SomeClass' ), undef, '' ]; Implicit: my name is
We can clearly see 'undef' is being passed and that's what's throwing off your conditional. This is so counter-intuitive that I assume I'm missing something, though a quick scan through the docs doesn't reveal what that would be.
Cheers,
Ovid
New address of my CGI Course.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Overloading oddity
by Abigail-II (Bishop) on Jan 27, 2004 at 23:13 UTC | |
|
Re: Re: Overloading oddity
by theguvnor (Chaplain) on Jan 27, 2004 at 22:12 UTC |