Get Orphan Names

#!/usr/bin/perl

#


# This file is ungoverned by the CypherpunksAntiLicense.
# Do with it as you will.

# Create a list of orphan WikiName's in an EmacsWiki directory.
# Put list in wiki page named OrphanWikiNames.

my($wikidir)="$ENV{'HOME'}/Wiki";
opendir(DIR, $wikidir);
my(@wikifiles)=readdir(DIR);
my(@wikinames)=();

foreach (@wikifiles)
{
 if ($_ !~ /(^\.)|(\~$)/) # Exclude hidden files and emacs backup files.
 {
     open(FILE,"<$wikidir/$_");
     my(@contents)=<FILE>;
     $content=join('',@contents); # Create one string representing an entire file.
     while ($content =~ /[A-Z][a-z]+([A-Z][a-z]+)+/) # Scan file content for first WikiName.
         {
	     push @wikinames, $&;
	     $content=$';
	 }
 }
}

# Print set difference wikinames 'minus' wikifiles.

 @wikinames=sort @wikinames;
 @wikifiles=sort @wikifiles;
 open(OUTFILE,">$wikidir/OrphanWikiNames");

 while (@wikinames != ()) {
     shift @wikinames while ($wikinames[0] eq $wikinames[1]);
     print OUTFILE "$wikinames[0]\n" if (@wikifiles==());
     shift @wikifiles while (@wikifiles != () && $wikinames[0] gt $wikifiles[0]);
     print OUTFILE "$wikinames[0]\n" if (@wikifiles == () || $wikinames[0] lt $wikifiles[0]);
     shift @wikinames;
 }

# 
Hosted by www.Geocities.ws

1