So I'm trying to build an interpreter for a certain non-perl bytecode, and I think I'll be able to represent classes in that system as perl packages.

Method invocations in that system are by method name (OK to overload) and argument types. When the bytecode says to call a method "foo" with descriptor "EGXX", I'd like my code to first check whether a sub "foo__EGXX" exists in the target package (or any of its base packages, recursively); if it doesn't find it, I'd like to check for a sub "foo" (also recursively).

Is there a (standard or easy-to-install) module that does the "find a sub, don't invoke it yet" part? If I have to roll my own, I guess I'd do recursive ascent through @ISA, but how do I test if a sub is defined? Is it as simple as

if (${ $package . '::' }{ $longName }) { $value = eval '$objectref->' . $longName . '( @args )'; } else { $value = eval '$objectref->' . $shortName . '( @args )'; }
?


In reply to How to determine if a sub is defined in a package, without calling it? by lamber45

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.