#define PERL_NO_GET_CONTEXT #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include "ppport.h" (...) // C-Teil (...) static SV *my_callback; static int _call_perl() { dSP; int count; int retval; ENTER; SAVETMPS; PUSHMARK(SP); PUTBACK; count = perl_call_sv((SV*)my_callback, G_SCALAR); SPAGAIN; if (count != 1) croak("Error"); retval = POPi; } // XS Teil MODULE: ... PACKAGE: ... BOOT: my_callback = newSVsv(&PL_sv_undef); void set_my_callback(ctx,callback=0) MPV::Simple ctx SV * callback CODE: sv_setsv(my_callback,callback); static int call_perl(ctx) MPV::Simple ctx CODE: { int ret; ret = _call_perl(); RETVAL = ret; } OUTPUT: RETVAL