http://qs1969.pair.com?node_id=520592


in reply to way to pass command line arguments in perl embed

The perl_parse() function probably does what you're looking for. From perlapi:
perl_parse Tells a Perl interpreter to parse a Perl script. See perlembed. int perl_parse( PerlInterpreter* interp, XSINIT_t xsinit, int argc, char** argv, char** env)
perlembed has some examples using; the argv parameter in perl_parse(). Another bare one could be something like this (vaguely inspired by the PerlPower example but omitting all the surrounding stuff):
#include <EXTERN.h> #include <perl.h> static PerlInterpreter *my_perl; int main (int argc, char *argv[], char *env[]) { char *private_argv[] = { "", "script.pl", "some", "args" }; my_perl = perl_alloc(); perl_construct(my_perl); perl_parse(my_perl, NULL, 4, private_argv, NULL); perl_run(my_perl); /* ... */ } /* ... */
Note that these are arguments as you would find in a real command line; this means that -e, for example, gets caught by the perl_parse() function, which looks for the next argument to find an inline sequence of statements. There are a couple of examples in perlembed that use this feature.

Flavio
perl -ple'$_=reverse' <<<ti.xittelop@oivalf

Don't fool yourself.