in reply to Re^2: foreach in HoHoA problems
in thread foreach in HoHoA problems

Would I have to write that as:
foreach my $index ( 0 .. $#matches{$fastaseq}{$sitekey} )?

You would have to write that as:

foreach my $index ( 0 .. $#{$matches{$fastaseg}{$sitekey}} )
Note the extra braces following "$#" and fully surrounding the  $matches{$fastaseg}{$sitekey} -- that latter bit constitutes an array reference, and perl won't be able to parse it as such next to "$#" unles the braces are there to establish the precedence for de-referencing the array ref that is the value of that hash element.

As for undefined elements, I don't expect I'll see any.

Yeah, we've all heard that before... (and we've all caught ourselves saying and believing the same thing, in reference to some chunk of code we've written). That's the best thing about making good use of a good debugger: it helps us to get past this kind of fantasy.