# 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 }