int conn = socket(.....);
[...]
ENTER;
SAVETMPS;
PUSHMARK(SP);
XPUSHs(sv_2mortal(newSViv(conn)));
PUTBACK;
cpretval = call_sv(the_coderef, G_SCALAR|G_EVAL|G_KEEPERR);
SPAGAIN;
if(SvTRUE(ERRSV)) {
STRLEN n_a;
log_helper(1,kidno,SvPV(ERRSV, n_a));
POPs;
real_retval = 0;
}
else {
if(cpretval != 1)
croak("Return count from coderef callback != 1");
real_retval = POPi;
}
PUTBACK;
FREETMPS;
LEAVE;
####
sub the_callback_function {
my ($conn) = @_;
open(my $c,"+<&=$conn");
bless $c, 'IO::Socket::INET';
$c->autoflush(1);
$c->send("Network data!\n");
.....
####
PerlIO* conn_pio;
conn_pio = PerlIO_fdopen(conn,"r+");