use Moose -extends => [@superclass];
Mooseでコンパイル時にextends()できたらいいのに、と思いエクスポートコマンド化してみた。
http://github.com/nothingmuch/moose/tree/topic/extends_export_command
package Foo; use Moose; package Bar; use Moose -extends => 'Foo'; package main; use Test::More; isa_ok( Bar->new, 'Foo' ); done_testing; __END__
これでBEGIN{ extends 'Foo' }などとしなくてすむ。
with()も同様にエクスポートコマンド化できるかと思ったが、こちらはうまく行かなかった。考えてみれば、クラスの初期化がある程度終わってからでないとメソッドのチェックなどはできないので、これは仕方がない。