Что означает первый элемент dummy_argv для perl_parse? - PullRequest
1 голос
/ 14 сентября 2011

Цитируется здесь :

static PerlInterpreter *my_perl;

main (int argc, char **argv, char **env)
{
   STRLEN n_a;
   char *dummy_argv[] = { "", "-e", "0" };

   my_perl = perl_alloc();
   perl_construct( my_perl );

   perl_parse(my_perl, NULL, 3, dummy_argv, NULL);
   perl_run(my_perl);

   /** Treat $a as an integer **/
   eval_pv("$a = 3; $a **= 2", TRUE);
   printf("a = %d\n", SvIV(get_sv("a", FALSE)));

   /** Treat $a as a float **/
   eval_pv("$a = 3.14; $a **= 2", TRUE);
   printf("a = %f\n", SvNV(get_sv("a", FALSE)));

   /** Treat $a as a string **/
   eval_pv("$a = 'relreP kcaH rehtonA tsuJ'; $a = reverse($a);", TRUE);
   printf("a = %s\n", SvPV(get_sv("a", FALSE), n_a));

   perl_destruct(my_perl);
   perl_free(my_perl);

Что означает первый элемент dummy_argv (здесь "") для perl_parse?

Я пытался его изменитьна все, что я хочу, и ничего не меняется ..

1 Ответ

1 голос
/ 14 сентября 2011

В C argv[0] - имя выполняемой программы. В большинстве случаев встроенный интерпретатор Perl не заботится о том, что вы там поместили, поэтому вы ничего не замечаете, когда меняете его.

Помните, что Perl - это прежде всего автономный интерпретатор; встраивание его в другие программы - вторичное использование. Функция main() в Perl просто передает те же argc и argv, которые она получила, в perl_parse, потому что это самое простое. Когда вы вызываете perl_parse в своей программе, вы должны указать что-то для argv[0], но я думаю, что единственное, для чего он используется, это установка $^X, что не используется большинством кода Perl .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...