in reply to Re^2: Faulty Control Structures?
in thread Faulty Control Structures?

You're right. I overlooked the statement label in one of your next statements. I could not have arrived at my misreading if I had been as aware as you are that there are only two dozen chromosomes.

But what about your hash of arrays? Why would getting the data out be such a nightmare?

Populating the hash of arrays:

open my $annotation_read_handle, '<', $annotation_file; my %annotations_for; while (my $ad = <$annotation_read_handle> ) { # read $an_chrom out of $ad my ($an_chrom, undef) = split(/\t/, $ad); # store for future lookups push @$annotations_for{$an_chrom}, $ad; } close $annotation_read_handle;

Now read through the main data file and assign each chromosome number to my $main_chrom.

# look up the list of annotations relevant to the current chromoso +me my $annotations_ref = $annotations_for{$main_chrom}; # loop through just these annotations ILC: foreach my $ad (@$annotations_ref) { # ... }

Of course—as other more enlightened commentators have already pointed out—the most important thing to optimize is the range_find subroutine.