引自here :
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 意味着什么?
我试着把它修改成我想要的任何东西,但没有任何改变..
在 C 中,argv[0]
是正在执行的程序的名称。在大多数情况下,嵌入式 Perl 解释器并不关心您放在那里的内容,这就是为什么您在更改它时不会注意到任何内容。
请记住,Perl 主要是一个独立的解释器;将其嵌入到其他程序中是次要用途。 Perl 的 main()
函数只是将它接收到的相同的 argc
和 argv
传递给 perl_parse
,因为这是最简单的.当你在程序中调用 perl_parse
时,你必须为 argv[0]
提供一些东西,但我认为它唯一的用途是设置 $^X
。 ,大多数 Perl 代码不使用它。
我是一名优秀的程序员,十分优秀!