new
to act as the
constructor, and three object methods called name,
age,
and peers
to get at per-object data hidden
away in our anonymous hash.
package Person; use strict;
################################################## ## the object constructor (simplistic version) ## ################################################## sub new { my $self = {}; $self->{NAME} = undef; $self->{AGE} = undef; $self->{PEERS} = []; bless($self); # but see below return $self; }
############################################## ## methods to access per-object data ## ## ## ## With args, they set the value. Without ## ## any, they only retrieve it/them. ## ##############################################
sub name { my $self = shift; if (@_) { $self->{NAME} = shift } return $self->{NAME}; }
sub age { my $self = shift; if (@_) { $self->{AGE} = shift } return $self->{AGE}; }
sub peers { my $self = shift; if (@_) { @{ $self->{PEERS} } = @_ } return @{ $self->{PEERS} }; }
1; # so the require or use succeeds
We've created three methods to access an object's data, name,
age,
and peers.
These are all substantially
similar. If called with an argument, they set the appropriate field;
otherwise they return the value held by that field, meaning the value of
that hash key.