package Animal;
use base qw(Class::Virtual);
use strict;
use warnings;
sub new {
my $class = shift;
# hash reference
my $self = shift;
bless $self, $class;
return $self;
}
__PACKAGE__->virtual_methods(qw(get_sound get_color));
1;
####
use strict;
use warnings;
use Animal::Dog;
use Animal::Duck;
my $dog = Animal::Dog->new( { name => 'Atila' } );
my $duck = Animal::Duck->new( { name => 'Donald' } );
print $dog->get_name(), ' says ', $dog->get_sound(), "\n";
my @missing = Animal::Duck->missing_methods();
warn 'Animal::Duck forgot to implement ' . join ', ', @missing if @missing;
print $duck->get_name(), ' says ', $duck->get_sound(), "\n";
####
C:\>test.pl
Atila says "bark bark!"
Animal::Duck forgot to implement get_sound at C:\test.pl line 12.
Animal::Duck forgot to implement get_sound() at C:\test.pl line 14