http://www.perlmonks.org?node_id=1017992

dd-b has asked for the wisdom of the Perl Monks concerning the following question:

I've got a simple case working exactly as I expect and as documented, but a more complicated case NOT working. The main difference is that in the more complicated case, I'm accessing a child class of where I did the overload.

In the parent class I do:

use overload '""' => \&_stringify; sub _stringify { my $this = shift; # Actually operator arg, NOT a "this" $this->row->ID; };

I use it like this:

$logger->trace("Zep is " . ref($zep) . " stringifies as $zep" . " but +_stringify returns " . $zep->_stringify );

The resulting log line comes out like this: 20130209 15:27:30.041 TRACE TrafCon.pl 158 6070: Zep is OT::Zeppelin::AddVendorKey stringifies as OT::Zeppelin::AddVendorKey=HASH(0x378d480) but _stringify returns OT::DB::Result::Upload|upload|upload_id=1

OT::Zeppelin::AddVendorKey is a direct child of OT::Zeppelin, which is where the operator overload was done.

My head hurts, and the wall seems to still be fine. Any ideas?