way to pass command line arguments in perl embed
jithoosin
created: 2006-01-03 05:56:29
Hi monks,

I have read in perlembed that we can execute a perl file using "perlrun" by giving the value of argv(1) as the name of the perl file to be executed. I also want pass arguments to the perl file .I want to pass arguments in the same way as we pass command line arguments to perl file.To make things clear, let me say that i cannot use a subroutine inside the perl file to accept the arguments( as in case of "call_pv" ). Is there any way by which i could pass arguments to perl file

Thanks
Kiran
Re: way to pass command line arguments in perl embed
created: 2006-01-03 08:43:52
The perl_parse() function probably does what you're looking for. From [doc://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)
[doc://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 
#include 

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' << Don't fool yourself.

perlmonks.org content © perlmonks.org and frodo72, jithoosin

prlmnks.org © 2006 edmund von der burg (eccles & toad)

v 0.03