in reply to PerlEmbed convert C value to perl value

One way would be to create a new Perl scalar (SV) and initialize it with the char* contents.

newSVpv() does both in one call.

Replies are listed 'Best First'.
Re^2: PerlEmbed convert C value to perl value
by qt1zzle (Initiate) on Nov 15, 2010 at 22:50 UTC
    Thanks! One last question: is there a way I can name it so I can use it in a perl script? Say, for instance: char* string = "This is a string"; // Convert to perl val $string eval_pv("print \"$string\n\";");

      Using eval_pv, you'd have to initialise the string as Perl code.

      eval_pv("$string = \"This is a string\"; print(\"$string\\n\");");

      What you really want is call_*. Look at "Passing Parameters" in perlcall.

      static void call_some_perl_sub(const char* s) { dSP; ENTER; SAVETMPS; PUSHMARK(SP); XPUSHs(sv_2mortal(newSVpv(s, strlen(s)))); PUTBACK; call_pv("some_perl_sub", G_DISCARD); FREETMPS; LEAVE; }

      Where some_perl_sub does your printing. eval_pv can be used to create the sub in the first place.

      Update: Added code.