Um ein einzelnes Unterprogramm-Dump Sie
B::Concise::compile($sub)->()
wobei $ Unter der Verweis auf eine Unter ist verwenden können.
Wenn Sie die Liste der U-Boote im Voraus kennen, Sie sind fertig, tun Sie einfach das obige für jeden von ihnen.
Andernfalls wird die Liste der vorhandenen Subroutinennamen zu erhalten in einem bestimmten Paket, können Sie immer den für das Paket Symbol Tisch gehen:
no strict 'refs';
for my $k (keys %{"$pkgname\::"}) {
if (*{${"$pkgname\::"}{$k}}{CODE}) {
print "$k\n"; # sub name
}
}
Update: meine erste Zeile enthielt einen Fehler, das ist behoben jetzt. Und hier ist das komplette Beispielskript:
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)->();
}
}
Es ist wichtig, „Concise“ mit einem großen „C“ zu buchstabieren, wie gut (ich sehe jetzt - dank) – Roboprog