如何在C代码中构建Perl哈希?

我希望在Perl中嵌入一个C代码。在这个C代码中,我想将一个巨大的文件读入内存,进行一些更改并构建一个哈希(一个自定义的)。我希望从我的Perl代码中访问此哈希。可能吗?我怎样才能达到目标?     
已邀请:
对于在perl中嵌入c,您正在寻找XS。关于它的详细文档可以在
perlxs
perlxstut
中找到。 至于从C构建perl数据结构,你将不得不使用处理哈希的
perlapi
部分。关于XS的许多文档已经解释了各种各样的内容。您正在寻找的重要部分是
newHV
hv_store
。 这是一个很小的(并且完全未经测试的)示例,类似于您可能想要做的事情:
SV *
some_func ()
    PREINIT:
        HV *hash;
    CODE:
        hash = newHV();
        hv_stores(hash, "foo", 3, newSViv(42));
        hv_stores(hash, "bar", 3, newSViv(23));
        RETVAL = newRV_noinc((SV *)hash);
    OUTPUT:
        RETVAL
这是一个名为
some_func
的XS子例程,它将构建一个哈希并将其引用返回给perl空格:
my $href = some_func();
# $href = { foo => 42, bar => 23 };
    
见内部和C语言 接口 另请参阅Inline-C,了解perl中嵌入的C代码:Inline模块允许您使用 把源代码放到其他地方 直接编程语言 Perl脚本或模块中的“inline”。 代码自动编译为 需要,然后立即加载 从Perl访问。 另请阅读我为什么要使用Inline来做呢?     
您可以使用SWIG在C,Perl和其他几种语言之间进行交互。     

要回复问题请先登录注册