#include "EXTERN.h" #include "perl.h" #include "XSUB.h" MODULE = calltest PACKAGE = calltest void hello( ) CODE: printf("hello"); void getValue( self ) SV * self PPCODE: if (SvROK(self) && SvTYPE(SvRV(self))==SVt_PVHV) self = SvRV(self); else Perl_croak(aTHX_ "%s: %s is not a hash reference", "calltest::getValue", "self"); if(!(self = (SV *)hv_fetch((HV *)self, "value", sizeof("value")-1,0))){ self = NULL; Perl_croak(aTHX_ "hash has no value slice????"); } else {self = (SV *)SvUV(*((SV **)self));} printf("from getValue value is %u, package is %s\n", self, CopSTASHPV(PL_curcop)); if(self) XSRETURN_UV((UV)self); else XSRETURN_UNDEF;