directories structure: . |-- Word.pm |-- WordExposed | |-- Languages.pm | `-- LanguagesPrivate | |-- French.pm | `-- Italian.pm files: # foo.pl use strict; use warnings; use lib ('/path_to_Word_pm'); use Word; my $word = Word->new(); $word->set('apple','it'); # Word.pm package Word; use strict; use Class::Struct; use WordExposed::Languages; struct Word => { english => '$', language => '$', translation => '$', }; sub set { my $self = shift(); my $english = shift(); my $language = shift(); $self->english($english); $self->language($language); $self->_translate(); } 1;