in reply to XSUB: pass scalar by reference and assign value

By the way, you don't need to pass references.

sub_from_xs(my $num, my $str);
void sub_from_xs(SV *num, SV *str) PREINIT: int nx; char *sx; CODE: nx = get_nx(); sx = get_sx(); sv_setiv_mg(num, nx); sv_setpv_mg(str, sx);

But I would personally prefer to see this function return a two element list.

my ($num, $str) = sub_from_xs();
void sub_from_xs() PREINIT: int nx; char *sx; PPCODE: nx = get_nx(); sx = get_sx(); EXTEND(SP, 2); PUSHs(sv_2mortal(newSViv(nx))); PUSHs(sv_2mortal(newSVpv(sx, 0)));