sub set_location{ my ($self,$x,$y)=@_; if(isa($x,"PLocation")){ $self->[X]=$x->get_X; $self->[Y]=$x->get_Y; } elsif(defined $x and defined $y){ $self->[X]=$x; $self->[Y]=$y; } else { croak "Insufficient Arguments: set_location(PLocation->new($x,$y)) or set_location($x,$y)".nl; } } sub set_X{ my ($self,$x)=@_; $self->[X]=$x; } sub set_Y{ my ($self,$y)=@_; $self->[Y]=$y; } # so far so nice 1;