package BaseItem; sub moveto ($$$$) { my $self = shift; my $new_x = shift; my $new_y = shift; my $new_z = shift; ... } sub position ($) { my $self = shift; return ($self->{x}, $self->{y}, $self->{z}); } ... #### package Item; our @ISA = qw(BaseItem); ...