if (@arrayA && $hit == length(@{$matches{$fastarray[$h]}{$sitekey}})) { $sets{$fastarray[$h]}[$setscounter]{$sitekey} = \@arrayA; print "\$sets{$fastarray[$h]}[$setscounter] is:\n"; print Dumper(%{$sets{$fastarray[$h]}[$setscounter]}); @arrayA = (); } #### for my $fastarray ( @fastarray ) { my $hash = $matches{ $fastarray }; for my $site ( sort { $a <=> $b } keys %$hash ) { for my $lowerlimit ( @{ $hash->{ $site } } ) { my $upperlimit = $span + $lowerlimit; for my $sitekey ( sort { $a <=> $b } keys %$hash ) { push @{ $sets{ $fastarray } }, { $sitekey => undef }; my @arrayA = grep { $_ >= $lowerlimit && $_ <= $upperlimit } @{ $hash->{ $sitekey } } or next; $sets{ $fastarray }[ -1 ]{ $sitekey } = \@arrayA; print "\$sets{$fastarray}[-1] is:\n", Dumper $sets{ $fastarray }[ -1 ]; } } }