问题标签 [perl5.18]

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.

0 投票
2 回答
3238 浏览

perl - 运行程序时找不到已安装的模块

语境

这是一个 perl 测试脚本,我想在其中了解如何使用特定的事件循环AnyEvent

问题

这是我在运行上述代码时遇到的错误:

但是我AnyEvent使用安装了该软件包cpanm,并且该AnyEvent/Impl/EV.pm文件存在于以下@INC路径之一中:

问题

我该如何解决 ?

额外备注

错误消息说它正在寻找EV.pm,但我会预料到AnyEvent/Impl/EV.pm的。
我写的怎么在运行时use AnyEvent::Impl::EV;变成了perl is looking for EV.pm

0 投票
1 回答
337 浏览

perl - Perl v5.18 的排序是否理解词法子例程?

这在 Perl v5.22 中已修复。


Perl v5.18 的词法子例程是否带有sort?我今天终于用上了它们,我有一个复杂的排序例程,它依赖于数据结构中的当前位置来查看更深的部分。

这是一个小程序:

显然 sort 对此一无所知,因为它仍在寻找%main::命名的子例程:

我有点失望,因为这是rjbs在 perl 5 的词法子例程中使用的第一个用例。


这部分无关紧要,因为我查看的是当前版本的测试而不是 v5.18 版本。

我在 perl 源代码中查看它的t/op/lexsub.t ,我发现三个涉及sort的测试。它们在单独运行时会失败,并且在主要方面有所不同:在符号表中有一个同名的已定义子例程(正如 rjbs 所指出的,这些测试来自当前源,并且不存在于受影响的稳定版本中。):

sort在所有情况下都完全忽略了词法子例程(对于 perls v5.18 和 v5.20):

除了由于未能隔离环境而导致此测试存在问题之外,还很难判断测试人员在做什么以及每个测试需要多少以前的、遥远的设置。如果有的话,测试本身的文档很少。


回到重要的事情

我在这里错过了什么吗?似乎这从未奏效。那么诀窍是,测试文件中的什么允许它通过?

请不要建议解决方法。这不是我问的原因。

0 投票
1 回答
108 浏览

perl - 如何更改 Perl 5.18 中默认的 ONE_AT_A_TIME_HARD 哈希函数?

我对 Perl 不是很熟悉,但在过去的两天里,我一直在搜索文档和其他资源,但没有成功。在文档中,它是这样写的:

Perl v5.18 包括对多个哈希函数的支持,并更改了默认值(为ONE_AT_A_TIME_HARD),您可以通过在编译时定义符号来选择不同的算法。有关当前列表,请参阅安装文档。请注意,从 Perl v5.18 开始,我们只能推荐使用默认值或 SIPHASH。所有其他人都知道有安全问题,仅用于研究目的。

问题是在 INSTALL 文档和其他来源/站点等中都没有。我可以找到如何定义这个符号。

我想要做的是将默认ONE_AT_A_TIME_HARD哈希函数更改为,ONE_AT_A_TIME_OLD以便我可以模拟旧的 Perl 5.16 行为。

0 投票
1 回答
181 浏览

windows - 无法安装 perl 模块 Crypt::TEA

当我尝试在 Windows 7 上将 Crypt::TEA 模块安装到 perl 5.18 时,显示错误:

TEA.xs:在函数“XS_Crypt__TEA_crypt”中:TEA.xs:58:9:错误:无效使用无效表达式

0 投票
0 回答
873 浏览

perl - 无法使用 Win32::TieRegistry 获取 MachineGuid

我需要获取唯一的硬件标识符,所以我从 Windows 注册表中读取 MachineGuid。

我在 Windows 7 上有带有草莓 perl 的 virtualbox 机器,也有带有 Windows 7 的电脑,但没有 perl 解释器。这段代码在 virtualbox 中工作,但是当我用 PerlApp 将它打包到 exe 并尝试在真机上执行时,它无法获得 guid 值。