in reply to
Re^2: How to de-reference a coderef? (B tricks)
in thread How to de-reference a coderef?
use strict;
use warnings;
use feature qw( say );
use Inline C => <<'__EOI__';
SV* coderef2name(CV* cv) {
const GV * const gv = CvGV(cv);
const HV * const stash = GvSTASH(gv);
const char * const pkg_name = HvNAME(stash);
const char * const func_name = GvNAME(gv);
SV * const fqn = newSVpvn("", 0);
sv_catpv(fqn, pkg_name);
sv_catpv(fqn, "::");
sv_catpv(fqn, func_name);
return fqn; // Mortalised by Inline
}
__EOI__
sub f {}
say coderef2name(\&f);