MooseX::Singletonでuseしたクラスが継承している場合instanceで呼ばれたオブジェクトはスーパークラスのメソッドを呼べないという挙動ではまった。
package Foo;
use Moose;
sub p { return "XXX" }
package Sng;
use MooseX::Singleton;
extends 'Foo';
package main;
my $sng_new = Sng->new();
warn $sng_new->p();
my $sng_instance = Sng->instance;
warn $sng_instance->p();
実行
$ perl ms.pl
XXX at ms.pl line 15.
Can't locate object method "instance" via package "Sng" at ms.pl line 17.
version
$ perl -MMooseX::Singleton\ 999
MooseX::Singleton version 999 required--this is only version 0.14.