すべての perl_call_* 関数のパラメータ flags は、以下に定義するシンボルを 「論理和」で組み合わせて用います。
perl_call_*
関数の返却値は、
`1' か `0' になります。 `1' ならば、Perl subが実際に返し
た値は、スタックのトップにあります。 `0' ならば、 sub
で
die
を呼んだか、 G_DISCARD
フラグを設定したことを示します。
Perl sub がリストを返すときにも、 perl_call_*
関数は、 `0'
か `1' を返します。 `1' であれば、リストの要素の数がスタックの
トップに置かれます。実際のリストの値には、アクセスできなくなります。
G_SCALAR
は、すべての関数で、デフォルトで設定されているフラグです。
perl_call_*
関数からの返却値は、積まれた配列がスタックを何要素使っ
たかを示します。
G_SCALAR
や
G_ARRAY
よりも優先されます。
このフラグを設定しなかった場合には、一時的な値を明示的に自分で処分する必
要があるかもしれません。詳細は、See section 例 3: スカラを返す,を参照してくだ
さい。
@_
を生成しないという効果があります。
言うまでもないことですが、このフラグが指定された場合にも、呼び出された
Perl sub からは、上位の Perl sub の @_
をアクセスすることができ
ます。この機能は、以下のような perl コードで確かめることができます。
sub fred { print "@_\n" } sub joe { &fred } &joe(1,2,3) ;とすると
1 2 3と表示します。 `joe' に属している配列
@_
を `fred' か
らアクセスしたのです。
die
を呼んだり、実際に exit
するな
ど、通常ではない終了の仕方をすることがあり、そのようなイベントを捕捉した
いようなときに、このフラグを設定します。 sub
の呼び出しを
eval {
} で囲ったような状態にする働きがあります。
perl_call_*
関数から制御が戻ったときには、通常 Perl スクリプトで
行なうように、変数 $@ をチェックする必要があります。チェックの仕
方については、See section 例 6: G_EVAL を使う,を参照してください。
Go to the first, previous, next, last section, table of contents.