void GenerateSessionID(session_id) SV *session_id PREINIT: char *array = ""; STRLEN len; session_id = NULL; PPCODE: len = 17; session_id = newSVpvn(array,17); //allocating memory 16 + 1 for null if(!SvPOK(session_id)){ XSRETURN_UNDEF; } sv_setpvn(session_id, "\0",len); //Intializing it to NULL? Don't know if this wrks array = SvPV(session_id,len); /*convert the scalar into a char*/ if(XSessionID((uuid_t*)array)){ //uuid is unsigned char[16] EXTEND(SP,17); PUSHs(sv_2mortal(newSVpv((char*)array,(int)len))); }