my %seen; my @urls; my $root_url = 'http://url.example.com/'; $seen{$root_url}++; push @urls, $root_url; while ($root_url = shift @urls) { for my $url ( fetch_urls($root_url) ) { $url =~ s/#.*$//; push @urls, $url unless $seen{$url}; $seen{$url}++; } }