标签: perl5.18

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

这在Perl v5.22中得到修复.


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

这是一个小程序:

use v5.18;
use feature qw(lexical_subs);
no warnings qw(experimental::lexical_subs);

my sub by_numbers { $a <=> $b }

my @sorted = sort by_numbers qw( 4 8 2 3 0 5 7 6 1 9 );

say "sorted: @sorted";
Run Code Online (Sandbox Code Playgroud)

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

% perl5.18.2 test.pl
Undefined sort subroutine "main::by_numbers" called at test.pl line 7.

% perl5.20.1 test.pl
Undefined sort subroutine "main::by_numbers" called at test.pl line 7.
Run Code Online (Sandbox Code Playgroud)

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


这部分并不重要,因为我查看了当前版本的测试而不是v5.18版本. …

perl subroutine lexical perl5.18

9
推荐指数
1
解决办法
310
查看次数

无法安装perl模块Crypt :: TEA

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

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

windows perl perl-module xs perl5.18

2
推荐指数
1
解决办法
165
查看次数

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

我对Perl并不熟悉,但过去两天我一直在搜索文档和其他来源,但没有成功.在文档中,它写成:

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

事情是既不在INSTALL文档中也不在其他来源/站点等中.我可以找到如何定义此符号.

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

perl hash perl5.18

1
推荐指数
1
解决办法
79
查看次数

标签 统计

perl ×3

perl5.18 ×3

hash ×1

lexical ×1

perl-module ×1

subroutine ×1

windows ×1

xs ×1