#define IIII(sv) (SvIOK(sv) ? SvIV(sv) : SvNV(sv)) #define UUUU(sv) (SvUOK(sv) ? SvUV(sv) : SvNV(sv)) void test2 ( SV *sv ) { double d = IIII( sv ); double d2 = UUUU( sv ); return; }