dSP; ENTER; SAVETMPS; PUSHMARK(SP); AV *arr = newAV(); // AV *arr = (AV *) sv_2mortal((SV *) newAV()); av_push( arr, sv_2mortal(newSVpv("test", 0))); XPUSHs(sv_2mortal(newRV((SV *)arr))); PUTBACK; call_sv(sv_2mortal(newSVpv("MyModule::subroutine", 0)), G_SCALAR); SPAGAIN; SV *retval = POPs; PUTBACK; FREETMPS; LEAVE; #### AV *arr = (AV *) sv_2mortal((SV *) newAV()); av_push( arr, newSVpv("test", 0));