use 5.6.0; use strict; use warnings; package Item; my @OPTIONS = qw(ATYPE DESC FILLABLE MASS NAME RACE VOL VAL ); use constant STR => (0); use constant DEX => (1); sub new { my $class = shift; # Create a separate copy constructor. return undef if defined $class; my $self = {} bless $self, $class; my %args = @_; foreach my $option (@OPTIONS) { $self->{$option} = $args{$option} || undef; } $self->{STATS_CHANGE} = $args{STATS_CHANGE} || [0,0]; return $self; } sub name { $_[1] ? $_[0]->{NAME} = $_[1] : $_[0]->{NAME} }sub vol { $_[1] ? $_[0]->{VOL} = $_[1] : $_[0]->{VOL} } sub val { $_[1] ? $_[0]->{VAL} = $_[1] : $_[0]->{VAL} } sub desc { $_[1] ? $_[0]->{DESC} = $_[1] : $_[0]->{DESC} } sub fillable { $_[0]->{FILLABLE} } sub mass { $_[0]->{MASS} } sub atype { $_[0]->{ATYPE} } sub race { $_[0]->{RACE} } sub stats_change { $_[0]->{STATS_CHANGE}[$_[1]] } 1; __END__