package Foo; use Moose; has 'y' => ( is => 'Num', is => 'rw' ); has 'x' => ( is => 'Num', is => 'rw' ); sub init_y { my ($self, $value) = @_; $self->y(sqrt($self->x)); } sub BUILD { my ($self) = @_; print STDERR "Foo::BUILD running\n"; $self->init_y; } 1;