%hash $id $position key1 = (scalar) type_a = { subkey1 => (scalar) subkey2 => (scalar) subkey3 => (scalar) } list_1 = [ ] #### my $value = $hash{$id}{$position}{type_a}{subkey2}; #### my $value = get_typea_sk2( $id, $position ); sub get_typea_sk2 { return $hash{$id}{$position}{type_a}{subkey2}; } #### %hash $id => $objref #### %hash $id $position => $objref $position => $objref #### my $obj = get_object( $id, $position ); # use methods on $obj to get data sub get_object { return $hash{ $_[0] }{ $_[1] }; }