我正在尝试使用一个名为Math::Counting的模块
#!/usr/bin/perl
use strict;
use warnings;
use Math::Counting;
my $f = factorial(3);
print "$f\n";但是,当我运行它时,我得到以下错误
$ perl UsingModules.pl
Undefined subroutine &main::factorial called at UsingModules.pl line 8.看起来函数factorial没有被导出,但是为什么呢?
当我使用以下代码时
my $f = Math::Counting::factorial(3);与上面的不同,它工作得非常好,但是我很好奇为什么这个函数不能被导出。
我在Cygwin上使用的是perl v5.10.1。
发布于 2012-04-25 23:29:04
模块中有一个错误。Math::Counting ISA Exporter,但Math::Counting不加载Exporter。
解决方法:您可以手动require或use Exporter。
更好的做法是:向模块作者提交bug,并提供测试用例。
评论:
哦,非常有趣。模块作者确实测试了他的函数,但是Test::More拉入了Exporter__,这意味着模块源代码中的这个省略没有被注意到。
更新:
Math::Counting 0.0904已发布,解决了此问题。
发布于 2012-04-25 23:26:33
Math::Counting似乎缺少require Exporter;,因此它的任何函数都不会被导出到您的命名空间。
发布于 2012-04-26 23:45:33
一位好心人向CPAN提交了一份关于我忘记的require语句的错误报告,在他提醒我之后,我修复了模块导出,包括关于“污染名称空间”的注释。
此外,我在文档中添加了一个说明,即它是用于现实世界应用程序的Math::BigInt->bfac()的“薄包装器”。当我做的时候,我找不到简单的排列或组合的计算方法。现在有太多的..。
https://stackoverflow.com/questions/10318313
复制相似问题