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; } }