use strict; use warnings; use Devel::Peek; use Inline C => Config => BUILD_NOISY => 1, ; use Inline C => <<'EOC'; SV * foo(SV * arg) { SV * keysv; keysv = NEWSV(0, 32); /* Make sure arg is an NV */ if(!SvNOK(arg)) croak("Not a valid arg passed to foo for this demo"); sv_setpvf(keysv, "%.19" NVgf, SvNV(arg)); return keysv; } SV * bar(SV * arg) { SV * keysv; char buff[30]; keysv = NEWSV(0, 32); /* Make sure arg is an NV */ if(!SvNOK(arg)) croak("Not a valid arg passed to bar for this demo"); sprintf(buff, "%.19" NVgf, SvNV(arg)); sv_setpvf(keysv, "%s", buff); return keysv; } EOC my $sv_foo = foo(2 ** 63); my $sv_bar = bar(2 ** 63); Dump $sv_foo; print "#####################\n"; Dump $sv_bar;