Perl では、Perl sub を呼ぶことを許している C の関数がたくさんあります。 それは、
I32 perl_call_sv(SV* sv, I32 flags) ; I32 perl_call_pv(char *subname, I32 flags) ; I32 perl_call_method(char *methname, I32 flags) ; I32 perl_call_argv(char *subname, I32 flags, register char **argv) ;
中心となる関数は、 perl_call_sv
です。他の関数は、自分のやりたい
ことに合わせて、 perl_call_sv
を利用します。 perl_call_sv
は、2 つの引数をとり、最初の引数は、 `SV*' です。これによって、呼び
出される Perl sub を C の文字列 (まず、SV に変換されています) か、sub へ
のリファレンスで指定することができます。例 7 では、自ら
perl_call_sv
を利用する方法を示します。2 番目のパラメータ
`flags' は、汎用のオプションコマンドです。このパラメータは、すべて
の perl_call_*
関数に共通です。詳しくは、次の節で述べます。
関数 perl_call_pv
は、ほぼ perl_call_sv
と同じですが、最初
の引数として呼び出したい Perl sub を示す C の char *
を指定します。
例: `perl_call_pv("fred", 0)'
関数 perl_call_method
は、最初の引数に、 bless
された、ク
ラスへのリファレンスを指定しなければなりません。そのリファレンスを使って
検索し、該当クラスから methname
を呼び出します。
See section 例 9: perl_call_method を使う, を参照。
perl_call_argv
は、 `subname' パラメータで指定された Perl
sub を呼び出します。これはまた、通常の `flags' パラメータも指定しま
す。最後のパラメータ `argv' には、Perl sub に渡される C の文字列の
リストを指定します。 See section 例 8: perl_call_argv を使う, を参照してくださ
い。
すべての関数は、数を返します。これは、Perl sub がスタック上に置いた、返 却物の数を示します。
一般論として、これらの関数からの返却値は「常に」チェックしてください。 Perl sub から特定の数が返って来ることを期待している場合にも、誰かがなに か期待以外のことをしないとは限りません。「そんなの聞いていない」とは言わ ないでください。
Go to the first, previous, next, last section, table of contents.