问题标签 [xs]
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 - 从 Perl XS 代码中,我如何递归调用自己?
我在 Pure Perl 中有一个复杂的编码函数,我正在将其转换为 XS,以期获得性能提升。
我正在转换为 XS 的函数需要递归调用自身。我可以看到如何使用 call_sv [感谢“man perlcall”] 来调用纯 Perl 函数。
但是我怎么在 XS 中调用自己(或任何其他 XS 函数)呢?
(PS效率非常可取……)
有人可以给我一个提示吗?还是一个例子?求求你!
更新:第一个答案是绝对正确的。调用递归纯 C 函数就可以了。
perl - 测试使用 Dist::Zilla 的 XS 模块
我正在开发一个 Perl 模块,它有很多 XS 代码,也用于Dist::Zilla
管理打包。有效测试事物的最佳方法是什么?我知道dzil test
,但这很慢,因为每次调用它都会执行完整的构建/编译/测试周期。
最好只更新自上次测试以来需要更新的部分,并且能够只运行某些t/*.t
测试脚本而不是全部。有人有他们喜欢的解决方案吗?
perl - 什么是 RMAGICAL?
我试图理解我继承的一些 XS 代码。我一直在尝试向调用 Perl 魔法的部分添加注释,但我找不到任何文档来帮助我理解这一行:
是RMAGICAL
为了什么?使用 Perl 魔术变量时应该什么时候打开或关闭?
更新
Perlguts Illustrated 非常有趣,并且有一点关于 RMAGICAL 的信息(“R”代表“随机”),但它没有说明什么时候该弄乱它:http ://cpansearch.perl.org/src/ RURBAN/illguts-0.42/index.html
perl - Inline::CPP/Inline::C - 调试代码
我正在尝试在 Perl 模块中使用一些专有的 C++ 代码。
我已经看到,如果在编译时出现问题,只需启用 BUILD_NOISY 标志就很容易调试。
在我的情况下,问题出现在运行时......代码 C++ 在单独编译时工作正常,但是当我将它嵌入 Perl 时,我的代码在运行时崩溃。
我得到的唯一消息是这个:
有没有办法获得更详细的输出?
perl - 如何在 64 位 CentOS 系统上为 32 位自定义 Perl 构建 32 位 XS 模块?
我有一个运行定制版本的 Perl 5.12.5 的 64 位 CentOS 6 系统,它是为 32 位构建的。(唉,这是因为我们对 32 位和 64 位系统使用相同的 RPM。)
当我在服务器上构建 XS 模块(例如 JSON::XS)时,它失败了,因为它正在构建 64 位库。我收到一个错误,例如
我尝试将 CFLAGS 变量设置为“-m32-bit”,但它不起作用。
我需要做什么才能正确编译 XS 模块?理想情况下,我想要一些适用于 cpanminus 但如果需要可以使用 cpan 或 cpanplus 的东西。
perl - 使用 Perl XS 和 PerlIO 使旧库工作
我是一个 XS 初学者,我正在考虑更改现有的 XS 模块,该模块大量使用 15 年以上的底层 C 库(实际上该模块基本上只是粘到这个库)。问题是我希望能够使用 PerlIO 字符串技巧,例如:
然后传递$fh
到库所期望的 XS 胶水FILE
。问题是 XS 有:
我认为它需要是:
这当然行不通,因为它必须有更多的东西。当我查看_parse
库中的代码时,结果如下:
再次与FILE
类型。现在我必须开始的基本问题是 - 在不改变库的情况下这是否可能?也就是说,我可以通过更改 XS 从字符串 PerlIO 行为中获取伪文件句柄吗?
perl - intptr_t 的 XS 类型映射
我试图从一些 XS 代码返回一个 intptr_t 类型:
我的 typemap 没有任何关于intptr_t
的内容,所以当然会dmake
失败,Could not find a typemap for C type 'intptr_t'.
因为我不确定 Perl 是否能处理尽可能大的整数intptr_t
。如果没有很好的方法将它作为数字返回给 Perl,我将把它字符串化。
c - XS 此代码中的内存泄漏?
无法在此代码中找到发生内存泄漏的位置。
基本上我想为一个返回二维数组的 C 函数编写一个 XS 包装器。
C函数:
XS 包装:
从 XS 返回一个“数组数组”。
在 Perl 脚本中进行测试:
每次returnArray()
调用该函数时,Perl 进程的 Commit 大小都会增加。但我希望$arrayref
变量每次都应该被垃圾收集,并且内存使用量不应该增加。
我希望,我正在释放 XS 中所有分配的内存。但是仍然存在内存泄漏。这个内存泄漏的 XS 代码有什么问题?
perl - perl Text::CSV_XS 删除所有 escape_chars
由于数据包含换行时数据 Text::CSV 解析中的换行问题,我已从 Text::CSV 移至 XS 版本
Text::CSV_XS 删除数据中的所有转义字符(我正在使用带有 perl 5.8.8 的 linux)这是示例代码(如下)
我希望在转义 1 \ 后第 3 行的属性应该是 \N 但 Text::CSV_XS 会同时删除 \
这是输出
csv - 使用 Text::CSV_XS perl 模块用换行符解析 CSV
我们使用Text::CSV_XS module
以下选项解析 CSV:
CSV 是使用 mysql LOAD DATA infile 创建的。如果有NULL
值,则在字段中MYSQL
添加\N
解析数据之前:
如果我们使用 theescape_char => "\\"
则\N
替换为N
解析后的数据:
'\'
此外,删除了 double 的数据
例如:D\\'Mello
更改为D'Mello
如果我们删除escape_char => "\\"
,则数据将更改如下所示
解析前:
解析后:
解决此问题的最佳方法是什么?