Как мы знаем, constant в Perl это просто sub,
constant
sub
, но почему они не наследуются?
На самом деле это:
use strict; use warnings; package Father; use constant CONST => 1; package Child; use base 'Father'; sub new { bless {}, shift } package main; my $c = Child->new; print $c->CONST; # 1 print CONST(); # undefined subroutine
Методы наследуются, функции - нет. Если вы хотите наследовать константу, вам нужно вызвать ее как метод.
$self->FOO
или
__PACAKAGE__->FOO
Тем не менее, вы должны импортировать константы, а не наследовать их.