私はむしろ XS の初心者であり、15 年以上前の基になる C ライブラリを大量に使用する既存の XS モジュールを変更することを検討しています (実際、モジュールは基本的にこのライブラリに接着されています)。問題は、次のような PerlIO 文字列トリックを使用できるようにしたいということです。
open($fh, '<', \$string);
$fh
次に、ライブラリが予期している XS グルーに渡しFILE
ます。問題は、XS には次のようなものがあることです。
int
_parse (entry_ref, filename, file, preserve=FALSE)
SV * entry_ref;
char * filename;
FILE * file;
boolean preserve;
そして、私はそれが必要であると仮定します:
PerlIO * file;
それ以上のことが必要なので、これはもちろん機能しません。_parse
ライブラリのコードを見ると、次のようになります。
AST * bt_parse_entry (FILE * infile,
char * filename,
btshort options,
boolean * status)
{
AST * entry_ast = NULL;
static int * err_counts = NULL;
static FILE * prev_file = NULL;
FILE
再び型で。今私が始めなければならない基本的な質問は - これはライブラリを変更しなくても可能ですか?つまり、XS を変更するだけで、文字列 PerlIO の動作から疑似ファイルハンドルを取得できますか?