Solution: Point::Small
examples/perloop/point/lib/Point/Small.pm
package Point::Small; use strict; use warnings; use base 'Point'; use Carp qw(croak); sub set_x { my ($self, $value) = @_; if (0 <= $value and $value < 100) { $self->SUPER::set_x($value); return; } #die "Coordinate x needs to be between 0 and 100. Currently it is '$value'"; croak "Coordinate x needs to be between 0 and 100. Currently it is '$value'"; } sub set_y { my ($self, $value) = @_; if (0 <= $value and $value < 100) { $self->SUPER::set_y($value); return; } croak "Coordinate y needs to be between 0 and 100. Currently it is '$value'"; } AUTOLOAD { #Carp::cluck("A"); our $AUTOLOAD; print "AUTO: $AUTOLOAD\n"; } DESTROY { } 1;