Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re: Re: Re: Embedding Perl in C -- access to builtins?

by derby (Abbot)
on May 31, 2002 at 11:01 UTC ( [id://170670]=note: print w/replies, xml ) Need Help??


in reply to Re: Re: Embedding Perl in C -- access to builtins?
in thread Embedding Perl in C -- access to builtins?

I don't know about better ... but you could create a c function that evaluates strings (ala perlembed):
#include <EXTERN.h> #include <perl.h> 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); }

-derby

Replies are listed 'Best First'.
Re: Re: Re: Re: Embedding Perl in C -- access to builtins?
by premchai21 (Curate) on May 31, 2002 at 19:27 UTC

    That's about the same as the proxy module I was talking about, but with more stuff in C and less in Perl. You still run into problems with things like (for instance) splice.

    And your particular example doesn't work if the input scalar contains any single quotes... though that could be fixed with a substitution.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://170670]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others musing on the Monastery: (4)
As of 2024-04-13 00:34 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found