package MessageLibrary; use ... my $hash = { ... }; sub new { my ( $class, %args ) = @_; my $self = {}; bless ( $self, $class ); $self->_init(); return $self; } sub _init { ... } sub AUTLOAD() { ... } 1; #----------------------------- package MessageLibrary::Error; my $hash = { ... something different ... } sub _init { my ( $self, %args ) = @_; ... class-specific init code, if needed ... $self->SUPER::_init ( %args ); } 1;