#include #include static PerlInterpreter *my_perl; SV* my_eval_sv(SV *sv, I32 croak_on_error) { dSP; SV* retval; STRLEN n_a; PUSHMARK(SP); eval_sv(sv, G_SCALAR); SPAGAIN; retval = POPs; PUTBACK; if (croak_on_error && SvTRUE(ERRSV)) croak(SvPVx(ERRSV, n_a)); return retval; } main (int argc, char **argv, char **env) { STRLEN n_a; char *embedding[] = { "", "-e", "0" }; SV *var, *cmd; my_perl = perl_alloc(); perl_construct( my_perl ); perl_parse(my_perl, NULL, 3, embedding, NULL); perl_run(my_perl); var = newSVpvf( "%s", "ybred" ); printf( "var is %s\n", SvPV(var,n_a) ); cmd = newSVpvf( "reverse('%s');", SvPV(var,n_a) ); var = my_eval_sv( cmd, TRUE ); printf( "var is %s\n", SvPV(var,n_a) ); perl_destruct(my_perl); perl_free(my_perl); }