#!perl use strict; use warnings; use My::Package; use My::Package::Derived; local $\ = "\n"; my $item1 = new My::Package; my $item2 = new My::Package::Derived; print $item1->SOME_VALUE; print $item1->SOME_DERIVED_VALUE; print $item1->ANOTHER_DERIVED_VALUE; print '-' x 30; print $item2->SOME_VALUE; print $item2->SOME_DERIVED_VALUE; print $item2->ANOTHER_DERIVED_VALUE; #### package My::Package; use strict; use warnings; use constant SOME_VALUE => 12; use constant SOME_DERIVED_VALUE => 14; use constant ANOTHER_DERIVED_VALUE => 21; sub new { bless {}, ref($_[0]) || $_[0]; } 1; #### package My::Package::Derived; use strict; use warnings; use My::Package; our (@ISA) = qw[My::Package]; use constant SOME_DERIVED_VALUE => 15; sub ANOTHER_DERIVED_VALUE() { int(rand(100)+1); } 1;