0

コンストラクターをコピーせずに、基本クラスとサブクラスを初期化しようとしています。これは私が得たものです:

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 のエクスポートのすべての組み合わせを試しましたが、成功しませんでした。

どんな助けでも大歓迎です

最高、マーカス

4

1 に答える 1