package Foo; use Moose; has 'bar' => ( is => 'ro', # access is read-only init_arg => undef, # you cannot set it via the constructor lazy => 1, # don't allocate a slot for it unless you access it default => 42, # and provide the default value ); #### package Bar; use Moose; extends 'Foo'; has '+bar' => (default => 100);