in reply to Array mysteriously growing

This post doesn't answer your question; it's about an error in your code.

Don't use
my $var = ... if ...;
Use
my $var; $var = ... if ...;
The former can leave Perl's guts in a twist.