package VendingMachine; use base qw(Persist); ... sub _loaded { my ($self, $item) = @_; # returns true if $self has a $item loaded # in the machine }; sub vend { my ($self, $item, $money) = @_; die "no items in stock" unless $self->_loaded($item); die "not enough cash" if $money < $item->cost; $self->credit($money)->eject($item); if ($self->{_change} and $money > $item->cost) { $self->give_change($money - $item->cost); }; };