#!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;