私は以下を持っています。
package A;
sub new {
my ($class) = @_;
my $self = { };
bless $self, $class;
return($self);
}
sub run() {
die "Task: ",__PACKAGE__, "requires a run method";
}
package B;
use A;
our @ISA = qw(A);
sub new {
my ($class) = @_;
my $self = { };
bless $self, $class;
return($self);
}
package C;
use A;
my @Tasks;
sub new {
my ($class) = @_;
my $self = { };
bless $self, $class;
return($self);
}
sub add{
my($self,$tempTask) = @_ ;
push(@Tasks,$tempTask);
$arraysize = @Tasks;
}
sub execute{
foreach my $obj (@Tasks)
{
$obj->run();
}
}
1;
脚本
#!/usr/local/bin/perl
use strict;
use C;
use B;
my $tb = new C();
my $task = new B();
$tb->add($task);
$tb->execute();
パッケージBにはrunメソッドがないため、デフォルトでパッケージAのrunメソッドが必要です。この時点で、パッケージBの名前を出力したいと思います(パッケージAを継承するさまざまなパッケージがありますが、そうではありません。
現在、__PACKAGE__
変数を使用してパッケージAを出力します。
何か助けはありますか?