package Server; use Carp; use Moose; use Modern::Perl; use Config::Simple; has 'cfg' => (is => 'ro', isa => 'HashRef', required => 1, writer => '_set_cfg' ); sub get { validate_pos( @_, {isa => 'Server', optional => 0},{type => SCALAR, optional => 0} ); my $self = shift; my $key = shift; my $properties = $self->cfg; return $properties->{$key}; } around BUILDARGS => sub { # Load cfg file and set cfg attribute here }