in reply to Processing a dynamic array

Don't use an index on @links... use a processing queue:
my @links = (... initial set ...); while (@links) { my $one = shift @links; ... process $one ... push @links, (... more to do... ); }

-- Randal L. Schwartz, Perl hacker
Be sure to read my standard disclaimer if this is a reply.