#like this... #Set up the link-map; my %linkmap; my @pages = glob(*.cfm); foreach $page (@pages) { @links_to = find_links($page); #your sub for (@links_to) { $linkmap{$page}{$_} = undef; } } #print out what links to each file foreach $page (@pages) { print "What links to $page: ".join(';',what_links_to($page)); } # sub to find what links to something sub what_links_to { my $dest = shift; #i.e. 'a.cfm' for what links to 'a.cfm' my @links_to; for (keys %linkmap) { next if ($_ eq 'a.cfm'); #skip what 'a.cfm' links to push (@links_to, $_) if exists $linkmap{$_}{'a.cfm'}; } return @links_to; }