double __call( sv_class, sv_path, sv_input ) SV * sv_class SV * sv_path SV * sv_input CODE: char *class = SvPV( sv_class, PL_na ); char *path = SvPV( sv_path, PL_na ); double input = SvNV( sv_input ); int fd; door_arg_t arg; double output; fd = open(path, O_RDWR); arg.data_ptr = (char *) &input; arg.data_size = sizeof(double); arg.desc_ptr = NULL; arg.desc_num = 0; arg.rbuf = (char *) &output; arg.rsize = sizeof(double); if ( door_call(fd, &arg) == 0 ) { RETVAL = output; } else { printf("ERRNO: %d\n",errno); RETVAL = -1; } OUTPUT: RETVAL