package Dog; use Hash::Util qw(lock_keys); use Data::Dumper; sub new { my $pkg = shift; my $ref = {}; bless $ref, $pkg; lock_keys(%$ref,qw(intelligence)); $ref->{intelligence} = shift; $ref; } sub is_stupid { my $self = shift; return $self->{inteligence} < 3; } my $lassie = Dog->new(10); print Dumper($lassie); print "Lassie is ", $lassie->is_stupid ? "dumb" : "smart";