我试图生成随机素数
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)下运行
答案 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