酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

C/C++からPerlを使ってみよう

MFCからPerlスクリプトをコールしてみたくなったので関連記事を探してみました。

上記のサイトを参考に適当なスクリプトを作ってみました。2つの引数を表示するんで"print_arg.pl"という名前をつけましょう。

#引数を2つ受け取って表示するスクリプト 
if (@ARGV != 2) {
  print "引数の数が一致しません\n";
  exit;
}

$argv1 = shift @ARGV;
$argv2 = shift @ARGV;

printf("引数その1: %s\n", $argv1);
printf("引数その2: %s\n", $argv2);

__END__

さて、呼び出し側のC/C++をサンプルを元に作ります。名前は"callperl.c"でええっか。

/* from the Perl distribution */
#include <EXTERN.h> 
#include <perl.h>   

#pragma comment(lib, "perl58.lib") //!< ★1

/* The Perl interpreter */
static PerlInterpreter *my_perl;

void main()
{
  char *perl[] = { "", "C:\\print_arg.pl", "そのいち", "そのに" };
  my_perl = perl_alloc ();
  perl_construct (my_perl);
  perl_parse (my_perl, NULL, 4, perl, (char **)NULL);
  perl_run (my_perl);
  perl_destruct (my_perl); //!< ★2 
  perl_free (my_perl);
}

★1・・・おそらく使用しているActive Perlのバージョンが違うので、参考にしたページとはライブラリの名前が違います。"perl56.lib"から"perl58.lib"に変わっています。
★2・・・ここでブレークしてやれば、print_arg.plがコールされたのが判ると思います。