问题标签 [perlapi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - 是否有可能知道使用 `&sub` 调用了`XSUB`
当PP
sub 被调用时CX
,这个 sub 被创建。
通过访问这个上下文,CxHASARGS(CX_CUR())
我们可以检查这个子hasargs
是否。
但是对于XSUB
上下文没有创建,所以我们不能使用这个技巧。
是否有可能知道使用或不XSUB
调用?&sub
UPD在何时
查看来源。我们可以看到代码如何处理. 它访问然后稍后调用目标:pp_entersub
cv
XSUB
hasargs
PL_op->op_flags & OPf_STACKED
XSUB
如果我在我XSUB
做同样的检查可以PL_op->op_flags & OPf_STACKED
吗?
perl - Perl API Inline C:如何通过引用获取 Perl 字节字符串的子字符串而不复制该字符串
你好社区我希望我能在这里遇到一些字节字符串专家。我猜 SvPVbyte 发挥作用,但如何?
我的问题。我已经使用 Perl 在 Inline:C 中成功地解析了 Perl 数组 XYZ(在数组的哈希中),示例索引为 6789:
内联 C:
这完美地工作。但是假设我在 Perl $xyz="\x09\x07\x44\xaa 中有一个很长的字节字符串(大约 10-50MB)......
现在我想传递对这个 SV 的引用,并在 C 部分中通过这个字符串以 9 个字节的步长(类似 substr)走,而不是将它完全复制到自己的 C 数组中。
行走部分:前 4 个字节应与参考 4 字节值 ABC 进行检查,该值也应在函数调用中。如有必要,我可以在此之前解压缩“N”这个搜索短语并使用整数调用函数。如果位置 0 没有成功跳转/增加 9 个字节,如果成功,我将返回找到的位置。
太感谢了。
linux - 无法再安装 Perlapi?
我正在尝试按照步骤修复快门的禁用编辑按钮,为此,您需要安装libgoo-canvas-perl
我下载了它,但是当我安装时,我得到:
我可以做什么?
perl - MULTIPLICITY 和 PERL_IMPLICIT_CONTEXT 的关系
MULTIPLICITY
Perl API 宏和之间有什么关系PERL_IMPLICIT_CONTEXT
?
根据perlguts
:
一个宏控制主要的 Perl 构建风格:
MULTIPLICITY
. 该MULTIPLICITY
构建具有一个 C 结构,用于打包所有解释器状态。对于启用多重性的 perls,PERL_IMPLICIT_CONTEXT
通常也进行了定义,并启用了对传入表示所有三种数据结构的“隐藏”第一个参数的支持。
(顺便问一下,这里指的是哪一个“三种数据结构”?)
我注意到,当我使用以下命令构建 perl 时usethreads
:
宏PERL_IMPLICIT_CONTEXT
和MULTIPLICITY
都将被设置(定义)。此外,embedvar.h
还有一条可能相关的评论:
MULTIPLICITY
支持和 的以下组合PERL_IMPLICIT_CONTEXT
:
1) 无
2) MULTIPLICITY # 支持兼容性
3) MULTIPLICITY && PERL_IMPLICIT_CONTEXT这些标志的所有其他组合都是错误的。
只有#3 被直接支持,而#2 是#3 的特例(通过适当地重新定义 vTHX 来支持)。
那么,在编写 XS 代码时,写
#ifdef MULTIPLICITY
和写有什么区别#ifdef PERL_IMPLICIT_CONTEXT
吗?这两个变量背后的历史是什么?似乎他们今天可以减少到一个单一的。例如,如果在 perl 源代码中将所有出现的
MULTIPLICITY
替换为会发生什么?PERL_IMPLICIT_CONTEXT
它会破坏什么?
perl - 如何从 XSUB 设置 Perl 环境变量?
我正在尝试从 XSUB 设置 Perl 环境变量。我希望它在 XSUB 退出之前立即生效。这是我的 XS 文件Module.xs
:
这是一个使用 XSUB 的 Perl 脚本:
输出是:
我想知道是否可以在不使用的情况下设置环境变量eval_pv()
?我可以使用特定的 API 函数吗?
观察:
eval_pv()
按预期工作,my_setenv()
在本地工作并取代设置的值,eval_pv()
直到 XSUB 退出,然后恢复旧值。my_setenv()
不能用于永久设置 Perl 环境变量,它的效果只在 XSUB 内持续。getenv()
并且PerlEnv_getenv()
似乎做同样的事情(?)