Perl:模块中的继承 - 导入和接口

时间:2015-04-20 08:07:34

标签: perl oop inheritance module

我正在尝试在perl中创建自己的模块,该模块提供从数据库中进行数据分析的功能。 我在EDL :: Functions中有几个函数,例如。 EDL ::功能::平均。

package EDL::Functions;
use warnings;
use strict;

package EDL::Functions::Average;
use parent "EDL::Functions";
sub new{...}
sub execute {...}

1)我必须添加什么use EDL::Functions;自动导入EDL::Functions中的所有模块?目前我必须导入所有子模块(在EDL::Functions中)才能使其正常工作:

BEGIN {
 our $VERSION = 5.20;
 use EDL::Functions::Average;
 use EDL::Functions::GetAllValues;
 use EDL::Functions::GetValueStart;
 use EDL::Functions::GetValueEnd;
 use EDL::Functions::Min;
 use EDL::Functions::Max;
 use EDL::Functions::Median;
}

2)我想确保如果其他人构建自己的功能模块,如果它没有函数newexecute,则编译将失败。我怎样才能做到这一点?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

应该有效

 perl -I ./ -MEDL::Functions -e 'EDL::Functions::Average->new();'

返回"我是新的"。

cat EDL / Functions.pm

package EDL::Functions;
use warnings;
use strict;


package EDL::Functions::Average;
use parent "EDL::Functions";
sub new{ print "I'm new"; }
sub execute { print "Executing something";}

1;

但我喜欢不同的结构,而不是在一个pm文件中声明几个包。它可以为其他开发人员节省时间并遵循惯例,因此EDL :: Functions :: Average应该是EDL / Functions / Average.pm