and when I ran it on a perl module like Tie::Scalar (path supplied by perldoc -l) it gave me nothing, since the module doesn't export globals.

Well, the script I provided is for the case you mentioned - just a file with subs in it, without any package declaration whatsoever (and inspecting the symbol table hasn't anything to do with what is exported - the ad-hoc package Query doen't export anything, either). Now, Tie::Scalar has a package declaration - package Tie::Scalar; - and the script isn't suitable for that case. You would have to inspect %Tie::Scalar. I'd reach for something else for the general case, maybe even PPI.

I think the right answer to this is to simply grep the file for /^sub/, unless you're trying to get a list of dynamically generated coderefs??

That heavily depends on what is "right" for you and the task at hand. More general would be grepping for /^\s*sub/. But that won't give you not only dynamically generated subrefs, but also typeglob-bound code generated at module use, such as generated by Class::Accessor:

package Foo; BEGIN { our ($VERSION, @ISA, @METHODS); @METHODS = qw(foo bar quux); for my $field (@METHODS) { *{__PACKAGE__.'::'.$field} = sub { my $self = shift @_; if (@_) { return $self->set($field, @_); } else { return $self->get($field); } }; } for (qw(set get)) { *{__PACKAGE__.'::'.$_} = sub { my $self = shift @_; if (@_ == 1) { return $$self{$_[0]}; } elsif (@_ > 1) { return $self->{$_[0]} = $_[1]; } else { $self->_croak('Wrong number of arguments received'); } }; } }

In reply to Re^3: List of subs defined by a file? by shmem
in thread List of subs defined by a file? by exodist

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.