in reply to Re^4: How do I test the validity of a CODE reference?
in thread How do I test the validity of a CODE reference?

Looks like they both operate on the same thing (the CV*) to me

Yes - when you descend to that level they become very similar, indeed :-)

So the question is why does Perl and your function use different tests to determine the same thing?

Good question. My approach won't work on perl-5.6.2, so perhaps history and portability might be part of the explanation. But there could, of course, be other reasons. (I couldn't even get correct results on perl-5.6.2 with CvROOT and CvXSUB.)

Cheers,
Rob
  • Comment on Re^5: How do I test the validity of a CODE reference?

Replies are listed 'Best First'.
Re^6: How do I test the validity of a CODE reference?
by ikegami (Patriarch) on Aug 08, 2008 at 20:03 UTC

    Yes - when you descend to that level they become very similar, indeed :-)

    At a high level:
    validate $xdefined &$xref $x && defined &$x
    code refreturns resultreturns resultreturns result
    sub namediesreturns resultreturns false
    other refsdiesdiesdies
    undefined?stringifiedreturns false

    I couldn't even get correct results on perl-5.6.2 with CvROOT and CvXSUB

    That's odd, because defined and sub calls use CvROOT(cv) || CvXSUB(cv) in 5.6.2 as well.