has priv_attr => ( accessor => '_priv_attr', isa => 'Str', ); #### has _priv_attr => ( init_arg => 'priv_attr', is => 'rw', isa => 'Str', ); #### has _priv_attr => ( is => 'rw', isa => 'Str', ); #### has _priv_attr => ( init_arg => undef, is => 'rw', isa => 'Str', ); #### 1: Can be initialised using ->new( priv_attr => ... ) 2: Can be initialised using ->new( priv_attr => ... ) 3: Can be initialised using ->new( _priv_attr => ... ) 4: Cannot be initialised from outside the class.