产生perl的Primes

时间:2015-05-05 22:35:09

标签: perl primes

我试图生成随机素数

print Math::Prime::Util->random_strong_prime(128);

但是,当我调用Math::Prime::Util的其中一种方法(我试过各种方法)时,我得到:

Parameter 'Math::Prime::Util' must be a positive integer at /home/ivan/perl5/lib/perl5/x86_64-linux-thread-multi/Math/Prime/Util.pm line 400.

我无法解释错误,128是正整数。 脚本在Starman服务器(psgi)下运行

1 个答案:

答案 0 :(得分:6)

使用the method invocation syntax时,即

Math::Prime::Util->random_strong_prime(128);

random_strong_prime的第一个参数变为字符串"Math::Prime::Util",它不是正整数。使用方法调用语法,128将成为 第二个 参数。

您使用的语法适用于调用类方法。

相反,您希望使用函数调用语法:

print Math::Prime::Util::random_strong_prime(128);

您可以使用以下简单程序验证这一点:

#!/usr/bin/env perl

package Hello;

sub f { print "@_\n" }

package main;

Hello->f('world');
Hello::f('world');
$ ./gg.pl
Hello world
world