http://qs321.pair.com?node_id=580747


in reply to Re: What magic is this?
in thread What magic is this?

You have an interesting take on the word 'interesting' :-)

Expat.pm has use Carp in it, when I added it to my first script it made no difference. It still ran without complaining.

Line 451...

if (defined $arg) { if (ref($arg) and UNIVERSAL::isa($arg, 'IO::Handler')) { $ioref = $arg; } else { eval { --> $ioref = *{$arg}{IO}; }; undef $@; } }
I've tried eval'ing the call in my code but the error message still gets through. As its stands I'm going to have to amend my log_die sub-routine to ignore messages with Expat in them (which is horrible).

Replies are listed 'Best First'.
Re^3: What magic is this?
by shmem (Chancellor) on Oct 26, 2006 at 12:46 UTC
    That code block in my Expat.pm (version 2.34) looks like
    if (defined $arg) { if (ref($arg) and UNIVERSAL::isa($arg, 'IO::Handle')) { $ioref = $arg; } elsif (tied($arg)) { my $class = ref($arg); no strict 'refs'; $ioref = $arg if defined &{"${class}::TIEHANDLE"}; } else { require IO::Handle; eval { no strict 'refs'; $ioref = *{$arg}{IO} if defined *{$arg}; }; undef $@; } }

    but to me it looks equally scary. undef $@ after eval? wtf?

    At least, there's no strict 'refs'; inside the eval (but isn't it another wtf?)

    --shmem

    _($_=" "x(1<<5)."?\n".q·/)Oo.  G°\        /
                                  /\_¯/(q    /
    ----------------------------  \__(m.====·.(_("always off the crowd"))."·
    ");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}