如何在perl程序中使用c进行evalexpression打印?

时间:2014-12-04 04:01:32

标签: c perl

尝试将varnishlog的输出传递给C语言中的perl。

代码如下:

如何显示evalExpression的信息?

e.g。

      evalExpression("open(my $file,'varnishlog -u -c -i ReqStart,RxURL,RxHeader |') or die $!; \
                      while (<$file>) {$data = $_;}; \
                      close $file; \
                      ");

      printf("data = %s\n", SvPV(perl_get_sv("data", FALSE), length));

以上数据仅在运行时显示...这意味着如果正在运行,它将永远不会显示...

帮助表示赞赏。感谢

#include <stdio.h>
#include <EXTERN.h>
#include <perl.h>

static PerlInterpreter *my_perl;

    int evalExpression(char *evaluatedString)
    {
      char *argv[2];
      argv[0] = evaluatedString;
      argv[1] = NULL;
      perl_call_argv("_eval_", 0, argv);
    }

 main (int argc, char **argv, char **env)
 {

      char *codeToUse[] = { "", "-e", "sub _eval_ { eval $_[0] }" };
      STRLEN length;

      my_perl = perl_alloc();
      perl_construct( my_perl );

      perl_parse(my_perl, NULL, 3, codeToUse, env);


      evalExpression("open(my $file,'varnishlog -u -c -i ReqStart,RxURL,RxHeader |') or die $!; \
                      while (<$file>) {$data = $_;}; \
                      close $file; \
                      ");

      printf("data = %s\n", SvPV(perl_get_sv("data", FALSE), length));


      perl_destruct(my_perl);
      perl_free(my_perl);
 }

0 个答案:

没有答案