package Super::Class; use constant FOO_IDX => NEXT_IDX(); # 0 use constant BAR_IDX => NEXT_IDX(); # 1 use constant BAZ_IDX => NEXT_IDX(); # 2 package Other::Sub::Class; # need to wrap in BEGIN blocks so SUPER:: works in the use at # compile time. BEGIN {our @ISA = qw(Super::Class)}; use constant DIFFERENT_IDX => __PACKAGE__>SUPER::NEXT_IDX(); #now at 3, DIFFERENT THAN LAST TIME package Sub::Class; BEGIN {our @ISA = qw(Super::Class)}; use constant OTHER_IDX => __PACKAGE__>SUPER::NEXT_IDX(); #now at 4, DIFFERENT THAN LAST TIME!