I haven't been able to find an answer to this in my (probably limited) reading of perlvar and perldebguts. I'm trying to provide access to the text of subroutines from within a program. I can get the line numbers of the defined routines just fine using the %DB::sub hash and setting bits in $^P. But there doesn't seem to be anything in the source text arrays (the ones that are named @{"_<$filename"} for a given $filename) unless I also specify the -d switch. Is there some way to get this text into my program without -d? (Yes, I realize that I could go and read the files, but this is a speed optimization I'd like to do).

The following program prints the source text when called with -d, but not without it:

use strict; package DB; BEGIN { $^P |= 0x310 } package main; sub a { print "this is a test"; } printf("\$^P is %x\n", $^P); while (my ($name, $range) = each(%DB::sub)) { my ($filename, $start, $end) = $range =~ /(.+):(\d*)-(\d*)/; next if $filename =~ /^\(/; print "$name\t$filename\t$start - $end\n"; no strict 'refs'; my $lines = \@{'_<' . $filename}; foreach my $lineNumber ($start .. $end) { my $line = $$lines[$lineNumber]; print $line; } }

Edit ar0n -- fixed title

In reply to Using @{"_<$filename"} by bikeNomad

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.