C言語でPerlを使ってみるテスト。
perlinc.c
#include <EXTERN.h> #include <perl.h> int main(){ // Perlインタプリタ PerlInterpreter* perl; // Perlインタプリタの確保 // Perlを利用するための領域(メモリ)を確保 perl = perl_alloc(); // Perlインタプリタを初期化 perl_construct(perl); // perl_parseに渡すコマンドライン引数的なもの char *perl_argv[] = {"", "hello.pl"}; // PerlインタプリタにPerlスクリプトを解析することを伝える // 第一引数 // Perlインタプリタ // 第二引数 // よくわかりません。NULLでいいと思う。 // 第三引数 // 第四引数の要素数を入れる。 // Perlっぽく書くならscalar(@ARGV) // 第四引数 // Perlを実行するためのコマンドライン要素を入れる。 // argvをそのまま使ってもいい。 // argvとはPerlでいうところの@ARGVのこと。 // 第五引数 // 通常、envと呼ばれる特殊変数を入れる。 // envとはmain関数の第三引数のことで // 環境変数が入ってくる。 // 環境によって対応しているかどうかまちまち。 perl_parse(perl, NULL, 2, perl_argv, (char**)NULL); // Perlインタプリタに実行を伝える perl_run(perl); // Perlインタプリタの終了処理 perl_destruct(perl); // Perlインタプリタのメモリ解放 perl_free(perl); return 0; }
hello.pl
#!/usr/bin/perl use strict; BEGIN { print "--- BEGIN $0 ---\n"; } END { print "--- E N D $0 ---\n"; } print "Hello, World!!\n";
$ cc -o perlinc perlinc.c `perl -MExtUtils::Embed -e ccopts -e ldopts`
実行
$ ./perlinc
結果
--- BEGIN hello.pl --- Hello, World!! --- E N D hello.pl ---