has 'secret_name' => ( init_arg => 'public_name', ... ); #### has 'secret_name' => ( init_arg => undef, ... ); #### package My::Object; use Moose; has foo => ( is => 'rw' ); sub BUILD { my ($self, $params) = @_; $self->foo( $params->{bar} ); } #### package Queue; use Moose; has '_items' => ( traits => [ 'Array' ], is => 'bare', init_arg => 'items', isa => 'ArrayRef', lazy => 1, default => sub { [] }, handles => { 'enqueue' => 'shift', 'dequeue' => 'pop' } );