in reply to Re: Debugging objects
in thread Debugging objects

Nope,

$ perl -MIO::All -MData::Printer -e " p( io(2) ); " Can't use string ("") as a symbol ref while "strict refs" in use at .. +./site/lib/Data/Printer.pm line 702.

Replies are listed 'Best First'.
Re^3: Debugging objects
by zakame (Pilgrim) on Aug 24, 2017 at 09:01 UTC

    Thanks, that's right. Its because io() will emit an overloaded object so stringification would trigger.

    You'll have to "peel off" the overloading, so to speak, by invoking overload::Overloaded (though funny, the perldoc says this should "true if 'arg' is subject to overloading...", wasn't expecting an actual GLOB object there.)

    % perl -de 0 -MIO::All -MData::Printer Loading DB routines from perl5db.pl version 1.51 Editor support available. Enter h or 'h h' for help, or 'man perldebug' for more help. main::(-e:1): 0 DB<1> $io = io '.zshrc' DB<2> x overload::Overloaded( $io ) 0 GLOB(0x17a4378) -> *IO::All::(( DB<3> $o = overload::Overloaded( $io ) DB<4> Data::Printer::p($o) \ *IO::All::(( (layers: ) DB<5>

    It would probably make a nice exercise to implement a Data::Printer filter for this.