コンストラクターをコピーせずに、基本クラスとサブクラスを初期化しようとしています。これは私が得たものです:
tstbase.pm:
package tstbase;
use Exporter qw(import);
our @EXPORT = qw(&new);
my %config = (
"class" => "tstbase",
);
sub new {
my $class = shift;
my $self;
$self->{"name"} = $config{"class"};
bless ($self, $class);
return $self;
};
1;
tstsubclass.pm:
package tstsubclass;
use tstbase;
my %config = (
"class" => "tstsubclass",
);
1;
tst.pl:
#!/usr/bin/perl
use tstsubclass;
my $baseobj = tstbase->new;
print "Testbase ".$baseobj->{"name"}."\n";
my $subobj = tstsubclass->new;
print "Testsubclass ".$subobj->{"name"}."\n";
tst.pl の outout は
Testbase tstbase
Testsubclass tstbase
しかし、私は探しています
Testbase tstbase
Testsubclass tstsubclass
これは、「sub new { .. }」ルーチンを tstsubclass.pm にコピーすると得られます。そのオーバーヘッドを回避する方法はありますか? %config / our %config と %config のエクスポートのすべての組み合わせを試しましたが、成功しませんでした。
どんな助けでも大歓迎です
最高、マーカス