package t::Object::Synopsis; use strict; use Class::InsideOut ':std'; # public, private, register and id public name => my %name; # accessor: name() private ssn => my %ssn; # no accessor public age => my %age, { set_hook => sub { /^\d+$/ or die "must be an integer" } }; public initials => my %initials, { set_hook => sub { $_ = uc $_ } }; sub new { register( bless \(my $s), shift ); } sub greeting { my $self = shift; return "Hello, my name is $name{ id $self }"; } 1;