## in Animal
sub AUTOLOAD {
our $AUTOLOAD;
(my $method = $AUTOLOAD) =~ s/.*:://s; # remove package name
if ($method eq "eat") {
## define eat:
eval q{
sub eat {
...
long
definition
goes
here
...
}
}; # End of eval's q{ } string
die $@ if $@; # if typo snuck in
goto &eat; # jump into it
} else { # unknown method
croak "$_[0] does not know how to $method\n";
}
}