关于“未定义子例程”的Perl模块错误

我正在尝试使用名为 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.

解决方法

模块中有一个错误. Math::Counting ISA Exporter,但Math :: Counting不加载导出器.

解决方法:您可以手动使用requireuse Exporter.

更好:向模块作者提交错误,提供测试用例.

评论

哦,非常有趣.模块作者确实测试了他的函数,但是Test :: More拉入了Exporter,这意味着没有注意到模块源代码的这种遗漏.

更新:

Math::Counting 0.0904已发布,解决了这个问题.

相关文章

1. 如何去重 #!/usr/bin/perl use strict; my %hash; while(...
最近写了一个perl脚本,实现的功能是将表格中其中两列的数据...
表的数据字典格式如下:如果手动写MySQL建表语句,确认麻烦,...
巡检类工作经常会出具日报,最近在原有日报的基础上又新增了...
在实际生产环境中,常常需要从后台日志中截取报文,报文的形...
最近写的一个perl程序,通过关键词匹配统计其出现的频率,让...