如果您在这个时代编写 OO perl,您真的应该使用 Moose。它使 OO 代码更简单、更简洁、更小。
继承变量的正确方法是创建对象属性。这是一个简单的例子:
package MyBaseClass;
use Moose;
has config => (
is => 'ro',
default => sub { {
who => 'World',
} }
);
package MyClass;
use Moose;
extends qw(MyBaseClass);
sub greet
{
my $self = shift;
printf("Hello %s!\n", $self->config->{who});
}
package main;
my $object = MyClass->new();
$object->greet();
了解 Moose 的一个很好的起点是Moose::Manual。
编辑:
如果您希望能够修改配置,您可以直接戳从配置访问器返回的 hashref:
$object->config->{who} = 'Friends';
但更好的方法可能是创建一个配置类并让配置属性保存一个实例:
package Myconfig;
use Moose;
has who => (is => 'rw', default => 'World');
package MyBaseClass;
use Moose;
has config => (
is => 'ro',
isa => 'MyConfig',
default => sub { MyConfig->new },
);
# inherit, instantiate, etc as before...
$object->config->who('Friends');
另一种方法可能是Moose::Meta::Attribute::Native::Trait::Hash,它可以轻松设置辅助方法以使用本机 Perl 数据类型。