Как вам нравится такой способ использования use constant?
package Pet;
sub new {
my $class = shift;
bless { @_ } => $class;
}
sub report {
my ($self) = @_;
printf "%s is %s.\n", $self->{name}, $self->BinomialName;
}
package Dog;
use base 'Pet';
use constant BinomialName => 'Canis familiaris';
package Cat;
use base 'Pet';
use constant BinomialName => 'Felis catus';
package main;
Dog->new(name => 'Pluto')->report;
Cat->new(name => 'Tom')->report;
Кто-нибудь встречал этот прием в литературе? Я, конечно, подозреваю, что Америку не открыл, но интересно мнение коллег ;-)


