您好我正在为我的项目开发扩展系统,我尝试做的是加载多个软件包以便我可以使用它们。我有一个包含其键的包的哈希,我想使用这些键作为参考来访问多个方法。我可以使用Moose或Moo扩展这些包,但我想尝试新的东西。
以下是代码:
my %classes = (
eng => 'EnglishClass',
esp => 'SpanishClass',
fre => 'FrenchClass',
hin => 'HindiClass'
);
while ( my ( $classType, $className ) = each(%classes) ) {
$self->{$classType} = $className->new();
}
它似乎正在加载但是当我尝试访问方法时,即使我使用正确的密钥进行参考,也会调用错误的包。
答案 0 :(得分:2)
你的例子适合我。你能说明你是如何访问这些对象的吗?
我快速接受它;
#!/usr/bin/env perl
use strict;
use feature qw/say/;
my %classes = (
eng => 'ENG',
esp => 'ESP'
);
my $self = {};
while ( my ( $classType, $className ) = each(%classes) ) {
$self->{$classType} = $className->new();
}
$self->{'eng'}->hello();
package ENG;
sub new { return bless {}, shift; }
sub hello { say 'Hello from ENG'; }
package ESP;
sub new { return bless {}, shift; }
sub hello { say 'Hello from ESP'; }
1;