內List::Gen
的cartesian
功能似乎是由32位無符號上限在我的64位Windows操作系統的限制:是否有可能克服這個32位限制?
use strict;
use warnings;
use List::Gen '*';
use 5.010;
use bigint; # This didn't help either
say $List::Gen::VERSION; # 0.80
my $diameters = range(1, 175);
my @five_in_a_row = ($diameters) x 5;
my $combinations = cartesian { \@_ } @five_in_a_row;
say [email protected]$combinations; # Should be 175**5 == 164_130_859_375
# prints -1+2**31 == 2_147_483_647
有什麼辦法來克服這個限制?下面是我的Perl構建細節。
> perl -v
這是 MSWin32-x64的多線程構建的perl 5,第12版,顛覆3(v5.12.3)(9個註冊補丁,看到的perl -V爲 更詳細)
操作系統「位」並不重要。看起來這是一個64位版本的Perl,因此應該使用64位整數。請確認'perl -V:ivsize'是8. – ikegami
@ikegami:'ivsize ='8';' – Zaid
我在「cartesian」中得到「不是ARRAY參考」。它試圖array_deref「@ five_in_a_row」的內容。 – ikegami