interp is declared within ifdef ITHREADS but is referenced without at rlm_perl.c:~760 Like so if (!interp) { #ifdef USE_ITHREADS if ((interp = perl_alloc()) == NULL) { radlog(L_DBG, "rlm_perl: No memory for allocating new perl !"); return -1; } perl_construct(interp); PL_perl_destruct_level = 2; #endif }