package Transit; use Moose; . . . use parent 'Transit::Map'; my $map = Transit::Map->new; #### package Transit::Map; use Moose; . . . has 'map_data' => ( is => 'ro', writer => '_map_data', ); sub BUILD { my $self = shift; my $args = shift; $self->_load_map_data; return; } #### use Transit; my $c = Transit->new( ); [change some values of node attributes] my $d = Transit->new( ); say "first map_info object: ", $c->map_data; say "second map_info object: ", $d->map_data; #### first map_info object: HASH(0xb559c10) second map_info object: HASH(0xae699a8)