4.1. Example
Here's an example class with some accessors and a script that uses it:
package Person; use strict; use warnings; sub new { my $class = shift; my $self = {}; bless $self, $class; $self->_init(@_); return $self; } sub _init { my $self = shift; my $args = shift; $self->_first_name($args->{'first_name'}); $self->_last_name($args->{'last_name'}); $self->_age($args->{'age'}); return; } sub _first_name { my $self = shift; if (@_) { my $new_first_name = shift; $self->{'_first_name'} = $new_first_name; } return $self->{'_first_name'}; } sub _last_name { my $self = shift; if (@_) { my $new_last_name = shift; $self->{'_last_name'} = $new_last_name; } return $self->{'_last_name'}; } sub _age { my $self = shift; if (@_) { my $new_age = shift; $self->{'_age'} = $new_age; } return $self->{'_age'}; } sub greet { my $self = shift; print "Hello ", $self->_first_name(), " ", $self->_last_name(), "\n"; return; } sub increment_age { my $self = shift; $self->_age($self->_age()+1); return; } sub get_age { my $self = shift; return $self->_age(); } 1;
#!/usr/bin/perl use strict; use warnings; use Person; my $shlomif = Person->new( { first_name => "Shlomi", last_name => "Fish", age => 32, } ); $shlomif->greet(); $shlomif->increment_age(); print "Happy Birhday, Shlomi, your age is now ", $shlomif->get_age(), ".\n"; my $newton = Person->new( { first_name => "Isaac", last_name => "Newton", age => 366, } ); $newton->greet(); print "Newton would have been ", $newton->get_age(), " years old today if he had been alive.\n" ;