use strict; use warnings; { package Base; our %types = qw/BASE_TYPE Some::Class/; sub get_type { $types{$_[0]} } } { package Foo; our @ISA = qw/Base/; $Base::types{FOO_TYPE} = q/Another::Class/; } { package Bar; our @ISA = qw/Base/; $Base::types{BAR_TYPE} = q/Yet::Another::Class/; } use Data::Dumper; print Dumper \%Base::types; print Base::get_type('BAR_TYPE'), $/;