package Person; use Moo; use Person::Adult; use Person::Baby; has name => (is => 'ro', default => 'erere'); has age => (is => 'ro', default => 233); sub BUILD { my $self = shift; if ($self->age < 20) { 'Moo::Role'->apply_roles_to_object($self, 'Person::Baby'); } else { 'Moo::Role'->apply_roles_to_object($self, 'Person::Adult'); } } sub sayHello { my $self = shift; say "Hello from ", $self->name; } 1;