my $guy = Person->new({name => 'Bubba'});
print "name: ", $guy->get_name, "\n";
$guy->set_name('Gump');
print "name: ", $guy->get_name, "\n";
package Person;
use Class::Std;
{
my %name_of :ATTR;
sub BUILD {
my ($self, $ident, $arg_ref) = @_;
$name_of{$ident} = $arg_ref->{name};
return;
}
sub get_name {
my $self = shift;
return $name_of{ident $self};
}
sub set_name {
my ($self, $new_name) = @_;
$name_of{ident $self} = $new_name;
return;
}
}
####
my $guy = Person->new({name => 'Bubba'});
print "name: ", $guy->get_name, "\n";
$guy->set_name('Gump');
print "name: ", $guy->get_name, "\n";
package Person;
use Class::Std;
{
my %name_of : ATTR(init_arg => 'name', get => 'name', set => 'name');
}
####
Can't locate object method "get_name" via package "Person" at ./oop.pl line 4
####
:init_arg :get :set