15得票1回答
如何使用B::Hooks来操作Perl解析器

我希望尝试一下Perl解析器的操作。看起来各种B::Hooks模块是人们使用的工具。我在想: 对于一个没有XS经验的人来说,最好从哪里入手?有相关的博客文章吗? 创建一个新的运算符需要多少工作量?例如: $a~>one~>two~>three ~> 将像 -&...

14得票3回答
我该如何在Perl 5.12中从C语言创建QR码?

这在5.8和5.10中对我起作用,但在5.12中,我的代码会创建这个奇怪的非qr对象:# running "print Dumper($regex)" $VAR1 = bless( do{\(my $o = '')}, 'Regexp' ); 如果打印一个不是由我的代码创建的qr//,它看起来...

14得票3回答
我该如何在Perl中使用C++类?

我有一组用C++编写的类。从Perl脚本中调用它们的最佳方法是什么?谢谢。

13得票2回答
Perl XS 和 Inline::C

使用XS和Inline::C模块有什么区别?某人在此问题中提到了这一点,这让我很好奇。

13得票1回答
我该如何跟踪一个XS .so文件?

我有一个小的Perl程序。该程序加载了一个模块,该模块使用XSLoader加载了一个.so文件。这个Perl程序在Linux上运行,并使用gcc和-DDEBUGGING进行构建,因此.so文件也是如此。我可以重新编译。 当执行Perl程序时,如何跟踪.so文件中的C函数?我需要知道函数名称以...

11得票2回答
如何在Perl API中自省正则表达式

我正在处理一些需要序列化Perl正则表达式的代码,包括任何正则表达式标志。只支持一部分标志,因此我需要检测正则表达式对象中是否存在不支持的标志,例如/u。 当前版本的代码实现如下:static void serialize_regex_flags(buffer *buf, SV *sv) {...

10得票1回答
在XS代码中安全地释放资源(在作用域退出时运行析构函数)。

我正在编写一个XS模块。我分配一些资源(例如malloc()或SvREFCNT_inc()),然后进行涉及Perl API的操作,最后释放资源。这在普通的C语言中是没有问题的,因为C语言没有异常,但使用Perl API的代码可能会调用croak(),从而阻止正常的清理并泄漏资源。因此,除了相当...

10得票3回答
在XS中,有没有一种方法可以访问Perl中的特殊标记?

在Perl中,存在像__PACKAGE__、__SUB__、__FILE__和__LINE__这样的特殊标记,并可从脚本中使用。 我可以从XS中获取__PACKAGE__的值,例如HvNAME(PL_currstash),但是如何访问其他的呢? 是否有专门的接口可以从XS中访问它们?比如:...

10得票2回答
如何在Perl XS中将数组传递给C函数?

我该如何将Perl数组通过引用传递给C XS模块?my @array = ( 1..20 ); XSTEST::test_array_passing(\@array); 在XS中,我应该怎么做才能看到这个数组?

9得票2回答
为什么在XSUB中的输出变量中包含SvSETMAGIC()?

阅读perlxs文档后,我来到了OUTPUT关键字的部分: xsubpp为XSUB中OUTPUT部分的所有参数自动发出SvSETMAGIC(),除了RETVAL。这通常是期望的行为,因为它负责在输出参数上正确调用“set”魔法(对于必须创建的哈希或数组元素参数,如果它们不存在,则需要这些魔...