in reply to
Re: Population of HoAoA based on file contents
in thread Population of HoAoA based on file contents
I'm going to deal with just this section, I think once you understand/update what is happening here, everything else you have will work.
my $id; # ??
foreach my $window ( @{ $data{$id} } ) {
# only pass windows with > min number of stats (i.e. >1 for now), an
+d
# of course we also ignore any 'undef' windows.
next unless scalar @{ $data{$id} }[$window] >= 2;
foreach my $individual ( keys(%data) ) {
First, I think that you understand that having an undefined $id as a hash key won't work. And to fix this, you want to just rearrange your for loops.
foreach my $id ( keys %data ){
foreach my $window ( @{$data{$id}} ){
Just this will get you much further. There is still a problem with the second loop though, at least in how you use $window in the subsequent code. You are attempting to use $window as an index, but it's not an index. Since you have experience using Data::Printer, I suggest going ahead and checking out what $window is.
Now, the way to fix things with the fewest number of overall edits is to change the second for loop.
foreach my $id ( keys %data ){
foreach my $window ( 0 .. $#{$data{$id}} ){
next unless scalar @{ $data{$id}[$window] } >= 2;
Then in your method calls, just change those to align with the scalar test above:
\@{ $data{$id}[$window] }
I hope that helps.