Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re^2: How to de-reference a coderef? (B tricks)

by Anonymous Monk
on Aug 24, 2011 at 01:14 UTC ( #922026=note: print w/ replies, xml ) Need Help??


in reply to Re: How to de-reference a coderef? (B tricks)
in thread How to de-reference a coderef?

How do you do this in XS? Given a CV how do you get the name for the corresponding named sub?


Comment on Re^2: How to de-reference a coderef? (B tricks)
Re^3: How to de-reference a coderef? (B tricks)
by Anonymous Monk on Aug 25, 2011 at 01:14 UTC
    You call coderef2name from XS, that is how you do it
Re^3: How to de-reference a coderef? (B tricks)
by ikegami (Pope) on Aug 25, 2011 at 04:29 UTC
    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);

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://922026]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (16)
As of 2015-07-06 20:37 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (83 votes), past polls