#!/usr/bin/perl -wl
use strict;
use Inline C => <<'END_C';
SV* GenerateSessionID() {
char uuid[16]; // buffer
// fill buffer, i.e. mimic your XSessionID()
int i;
for (i=0; i<16; i++) {
uuid[i] = 0xA0 + i;
}
return newSVpvn(uuid, 16);
}
END_C
my $uuid = GenerateSessionID();
print join ' ', unpack("(H2)*", $uuid);
####
$ ./962624.pl
a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af
####
SV *
GenerateSessionID()
PREINIT:
char uuid[16];
CODE:
XSessionID((uuid_t*)uuid);
RETVAL = newSVpvn(uuid, 16);
OUTPUT:
RETVAL
####
void
GenerateSessionID()
PREINIT:
char uuid[16];
PPCODE:
XSessionID((uuid_t*)uuid);
ST(0) = newSVpvn(uuid, 16);
sv_2mortal(ST(0));
XSRETURN(1);