in reply to Re: PerlEmbed convert C value to perl value
in thread PerlEmbed convert C value to perl value

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\";");
  • Comment on Re^2: PerlEmbed convert C value to perl value

Replies are listed 'Best First'.
Re^3: PerlEmbed convert C value to perl value
by ikegami (Patriarch) on Nov 15, 2010 at 22:53 UTC

    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.