#!/usr/bin/perl # HTML local link checker # usage: linkcheck ../doc/*.html my %HREF_EXTERNAL; my %HREF_LOCAL_FILE; my %HREF_LOCAL; my %NAME; foreach $i ( @ARGV ) { open(FILE, "<$i"); $NAME{"$i"} = 1; $NAME{"$i#"} = 1; while () { chomp; while (/href\s*?=\s*?"([^"]*)"/ig) { my $href = $1; if ($href =~ /^\w+:/) { $HREF_EXTERNAL{"$href"} = 1; } elsif ($href =~ /^#/) { $HREF_LOCAL{"$i$href"} = 1; } elsif ($href =~ /html$/ || $href =~ /html#/) { $HREF_LOCAL{"$href"} = 1; } else { $HREF_LOCAL_FILE{"$href"} = 1; } } while (/name\s*?=\s*?"([^"]*)"/ig) { $NAME{"$i#$1"} = 1; } } } foreach $i ( sort keys %HREF_EXTERNAL ) { print "external: $i\n"; } foreach $i ( sort keys %HREF_LOCAL_FILE ) { if (-f $i) { print "file: $i\n"; } else { print "missing: $i\n"; } } foreach $i ( sort keys %HREF_LOCAL ) { if ($NAME{$i}) { print "local: $i\n"; } else { print "missing: $i\n"; } }