in reply to How do I...? - Looping on a growing hash

Your problem in a nutshell is Breadth First Traversal.

Here is a bit of perly pseudo code that perhaps you will find useful.

# the fact that the below looks like perl should not be # taken a sign that it is perl. It certainly ain't tested perl sub getlinks { my $rootpage=shift; my (@queue,%seen,%visited)=($rootpage); $seen{$rootpage}++; while (@queue) { my $this_page=shift @queue; # dont revisit this page next if $visited{$this_page}++; my @found=get_all_links_from_page($this_page); !$seen{$_}++ && !visited{$_} && push @queue,$_ foreach @found; # additional post processing of link } return $results_of_postprocessing }
BTW this is the basic structure of a breadth first traversal of an arbitrary data structure. You might want to research the subject a bit on your own...

HTH

Yves / DeMerphq
---
Writing a good benchmark isnt as easy as it might look.