sub new { my ($class, %args) = @_; $self->_foo($args{foo}); $self->_bar($args{bar}); ... ... ... ... } sub _foo { # essentially these methods are setter/getters with # a bit of sanity checking on the param } sub bar { ... } sub ...