एक भी सबरूटीन डंप करने के लिए आप
B::Concise::compile($sub)->()
उपयोग कर सकते हैं जहां $ उप एक उप के संदर्भ में है।
यदि आप अग्रिम में subs की सूची जानते हैं, तो आप कर चुके हैं, बस उनमें से प्रत्येक के लिए उपरोक्त करें।
no strict 'refs';
for my $k (keys %{"$pkgname\::"}) {
if (*{${"$pkgname\::"}{$k}}{CODE}) {
print "$k\n"; # sub name
}
}
अपडेट::
अन्यथा, एक विशिष्ट पैकेज में मौजूदा सबरूटीन नाम की सूची प्राप्त करने, आप हमेशा कि पैकेज के लिए प्रतीक तालिका चल सकता है मेरी पहली लाइन एक गलती निहित है, जो निश्चित अब तय करें। और यहाँ पूर्ण उदाहरण स्क्रिप्ट है:
package Blah;
sub x { return "x"; }
sub hehe { print 2*2, "\n"; }
sub meme { die "ouch" }
our $varvar; # to illustrate the {CODE} thingy
package main;
use warnings;
use strict;
use B::Concise;
my $pkgname = "Blah";
no strict 'refs';
for my $k (keys %{"$pkgname\::"}) {
if (*{${"$pkgname\::"}{$k}}{CODE}) {
my $sub = \&{${"$pkgname\::"}{$k}};
print "Dump of $pkgname\::$k():\n";
B::Concise::compile($sub)->();
}
}
यह "संक्षिप्त", एक पूंजी 'सी' के साथ वर्तनी रूप में अच्छी तरह से महत्वपूर्ण है (मैं अब देखते हैं - धन्यवाद) – Roboprog