{ package A; my $self = { key_1 => value_1, key_2 => value_2, key_3 => [objects of B], key_n => 'value_n', }; sub lastIndex { my $self = shift; return $#{$self->{key_3}}; } } { package B; my $self = { key_1 => value_1, key_2 => value_2, key_n => 'value_n', }; sub isLast { my $self = shift; } } my $pkg_B_[4]->isLast;