Moose良いね

package Human;
use Moose;

has 'name' => ( is => 'rw', isa => 'Str', default => '' );
has 'age'  => ( is => 'rw', isa => 'Int', default => 0 );

sub clear {
    my $self = shift;
    $self->name('');
    $self->age(0);
}

package Human::Japaness;
use Moose;

extends 'Human';

has '+name' => ( default => "hinonjin" );

after 'clear' => sub {
    my $self = shift;
    $self->name("nihongo");
};

1;
  • アクセサはhasで記述する
    • isでgetter/setter指定出来て、アクセサ引数の型まで指定出来る
    • まだまだ色々指定出来るみたいだけど、マニュアル読んでないから
  • 継承はPHPみたいにextends

まぁちょくちょくソース読んでみようと思う