开始块中的perl’requiret’
发布时间:2020-12-16 06:25:15 所属栏目:大数据 来源:网络整理
导读:我有以下代码: #!/usr/bin/env perluse strict;use warnings;use feature 'say';BEGIN { my $supported = undef; *compute_factorial = sub { if (eval { require bignum; bignum-import(); 1;}) { my $num = shift; my $factorial = 1; foreach my $num (1
我有以下代码:
#!/usr/bin/env perl use strict; use warnings; use feature 'say'; BEGIN { my $supported = undef; *compute_factorial = sub { if (eval { require bignum; bignum->import(); 1;}) { my $num = shift; my $factorial = 1; foreach my $num (1..$num) { $factorial *= $num; } return $factorial; } else { undef; } }; }; my $f = compute_factorial(25); say $f; 我只是测试一些东西,而不是真正的生产代码…… 谢谢, 解决方法
bignum的import需要在编译它要生效的代码之前调用,否则它不起作用.这里,BEGIN在你的实际compute_factorial调用之前调用它,而不是在关键my $factorial = 1之前调用它;编译.
对于这样的案例,更好的方法就是直接使用Math :: Big *: if (eval { require Math::BigInt }) { my $num = shift; my $factorial = Math::BigInt->new(1); foreach my $num (1..$num) { $factorial *= $num; } return $factorial; } else { undef; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |