私は Perl を初めて使用し、Perl OO のソースとして Moose を使用するよう指示されましたが、動作させるのにいくつか問題があります。具体的には、スーパークラスのメソッドは継承されていないようです。これをテストするために、以下を含む 3 つのファイルを作成しました。
thingtest.pl
use strict;
use warnings;
require "thing_inherited.pm";
thing_inherited->hello();
事.pm
package thing;
use strict;
use warnings;
use Moose;
sub hello
{
print "poo";
}
sub bye
{
print "naaaa";
}
1;
最後に、thing_inherited.pm
package thing_inherited;
use strict;
use warnings;
use Moose;
extends "thing";
sub hello
{
bye();
}
1;
したがって、通常、メソッド bye がサブクラスの一部として継承されることが期待されますが、代わりにこのエラーが発生します...
Undefined subroutine &thing_inherited::bye called at thing_inherited.pm line 11.
ここで何か間違ったことをしている場合、誰かが説明できますか? ありがとう!
編集:これを行う際に、別の難問に遭遇しました:スーパークラスによって上書きされるべきだったスーパークラスから、基本クラスのメソッドを呼び出すことは上書きされません。私が持っていたと言う
sub whatever
{
print "ignored";
}
私の基本クラスに追加されました
whatever();
私のbyeメソッドでは、byeを呼び出しても上書きされた結果は生成されず、「無視」とのみ出力されます。