Subject: [PERL SCRIPT] Your very own Sailor Moon transformation pen
From: Harold Ancell
Date: 5/19/1996, 12:50 AM
To: fanfic@fanfic.com

Just call me Luna... :-)

   Date: Sat, 18 May 1996 19:39:55 -0500
   From: Shannon and Tim Richmeyer <trichm@iu.net>

   Harvey Torrance Griffin wrote in answer to Marisa Price post:

   > > Two things:

   > > 1. VERY good start
   >         I concur (even if she didn't use the Senshis' real name ;)

   Thanks and feh! ^_-
   (Just do a search and replace if it drives you insane. Sorry, these are 
   the names I'm familiar with.)

I have been doing that, but it gets tiresome, so here's a partial
solution to the problem.  This perl script (which can be easily turned
into a sed script) will do a blind translation of names: i.e. it might
do wierd things, and capitalization must be correct "Lita" or "LITA".
There are undoubtedly several pathological cases I haven't found yet;
I only ran the J->E direction once, and fixed SAILOR becoming SALANOR
( Ail -> Alan )....

If you don't like my name selections, even if you don't know any perl
you can easily change them; the basic instruction is:

  s/original name/new name/g;

Meaning "s"ubstitute "original name" to "new name" (g means do it as
many times as needed on a line).  The first set of substitutions is
E->J, the second J->E.

I didn't have time to write argument parsing code, so if you want to
reverse the direction of translation (to English from Japanese), just
change the line

  $toanime = 1;

to

  $toanime = 0;

Similarly, changing $pure and $dangerous will change a few things.  (I
particularly loathe "Negaverse" :-)

On a Unix system, type

  Moon prism power, turn the names in this fanfic into the Japanese ones!

Well, no, actually, you type

  perl sm-names.pl original new

Where original is the file you got from the list or archive, and new
will become the transformed story.

(or make the perl script executable ("chmod 755 sm-names") and
uncomment lines 5-6 if you dont' use the c shell (csh) or a varient).

FOR HEAVEN's SAKE, DON'T REVERSE original AND new, or you might mess
up your original.  It might be best to make a copy first.

If you don't have access to a system with Perl, but do have a machine
than can run MS-DOS programs (including NT):

  ftp://ftp.access.digex.net/pub/access/hga/public/software/dos-perl.zip

contains a dos port of Perl 4 that I've used for years (before
upgrading to the Win32 port of Perl 5---I've tested the script on
both, and Unix Perl 4).

Under dos, "pkunzip dos-perl" in a directory in your path (typically
c:\dos or c:\windows), and do

  perl sm-names.pl original new

in a dos shell.

Below you'll fine it; cut out the program into a file and rename to
something like sm-names.pl.

BTW, what's the American version of Sailor Chibi Moon?

ALso BTW, music listened to while I wrote this: music collections for
Sailor Moon, R, and S.

					- Harold

----cut here----
#!/usr/local/bin/perl

# uncomment this if you want to run under the bourne shell or the like
#
#eval 'exec /usr/local/bin/perl -S $0 ${1+"$@"}'
#	if $running_under_some_shell;

# Your very own E-J or J-E transformation pen....

die "Usage is sm-names <original file> <new file>\n" unless $#ARGV == 1;

die "Can't open $ARGV[0], $!" unless open ( ORIG, $ARGV[0] );

die "Can't open $ARGV[1], $!" unless open ( NEW, ">$ARGV[1]" );


$dangerous = 1;
$pure = 1;
$toanime = 1;

if ( $toanime )
{
    while (<ORIG>)
    {

	if ( $dangerous )
	{
	    s/Scout/Senshi/g;
	    s/Scouts/Senshi/g;
	}

	s/\bSerena\b/Usagi/g;
	s/\bSERENA\b/USAGI/g;
	s/\bAmy\b/Ami/g;
	s/\bAMY\b/AMI/g;
	s/\bAnderson\b/Muzuno/g;
	s/\bRae\b/Rei/g;
	s/\bRAE\b/REI/g;
	s/\bRaye\b/Rei/g;
	s/\bRAYE\b/REI/g;
	s/\bLita\b/Mako/g;  # can't tell when Makoto or Mako-chan would best
	s/\bLITA\b/MAKO/g;
	s/\bMolly\b/Naru/g;		# ditto on Naru-chan
	s/\bMOLLY\b/NARU/g;		# ditto on Naru-chan
	s/\bBaker\b/Osaka/g;
	s/\bDarien\b/Mamoru/g;	# ditto on Mamo-chan
	s/\bDARIEN\b/MAMORU/g;

	if ( $pure )
	{
	    s/\bTuxedo Mask\b/Tuxedo Kamen/g;
	    s/\bTUXEDO MASK\b/Tuxedo Kamen/g;
	}

	s/\bPrince Darien\b/Endymion/g;

	s/\bNegaverse\b/Dark Kingdom/g;
	s/\bnegaverse\b/Dark Kingdom/g;

	s/\bMelvin\b/Umino/g;	# Gurio
	s/\bMELVIN\b/UMINO/g;

	# punt on Patricia Haruna/Sakurada Haruna

	s/\bReeny\b/Chibiusa/g;	# what should this be?
	s/\bREENY\b/CHIBIUSA/g; # and what about her transformed version?

	s/\bAndrew\b/Motoki/g;
	s/\bSammy\b/Shingo/g;
	s/\bSAMMY\b/SHINGO/g;
	s/\bSam\b/Shingo/g;
	s/\bSAM\b/SHINGO/g;
	s/\bNeflyte\b/Nephrite/g;
	s/\bNEFLYTE\b/NEPHRITE/g;
	s/\bMalachite\b/Kunzite/g;
	s/\bMALACHITE\b/KUNZITE/g;
	s/\bAlan\b/Ail/g;
	s/\bALAN\b/AIL/g;
	s/\bCatsy\b/Cooan/g;
	s/\bCATSY\b/COOAN/g;
	s/\bBirdy\b/Beruche/g;
	s/\bBIRDY\b/BERUCHE/g;
	s/\bAvery\b/Karaberas/g;
	s/\bAVERY\b/KARABERAS/g;
	s/\bPrisma\b/Petz/g;
	s/\bPRISMA\b/PETZ/g;

	print NEW $_;
    }
}
else
{
    while (<ORIG>)
    {
	s/\bUsagi\b/Serena/g;
	s/\bUSAGI\b/SERENA/g;
	s/\bAmi\b/Amy/g;
	s/\bAMI\b/AMY/g;
	s/\bMuzuno\b/Anderson/g;
	s/\bRei\b/Raye/g;
	s/\bREI\b/RAYE/g;
	s/\bMako\b/Lita/g; # can't tell when Makoto or Mako-chan would best
	s/\bMAKO\b/LITA/g;
	s/\bNaru\b/Molly/g;	# ditto on Naru-chan
	s/\bNARU\b/MOLLY/g;	# ditto on Naru-chan
	s/\bOsaka\b/Baker/g;	# a bit dangerous
	s/\bMamoru\b/Darien/g;	# ditto on Mamo-chan
	s/\bMAMORU\b/DARIEN/g;

	if ( $pure )
	{
	    s/\bTuxedo Kamen\b/Tuxedo Mask/g;
	    s/\bTuxedo Kamen\b/TUXEDO MASK/g;

	    s/\bDark Kingdom\b/Negaverse/g;
	}

	s/\bEndymion\b/Prince Darien/g;

	s/\bUmino\b/Melvin/g;	# Gurio
	s/\bUMINO\b/MELVIN/g;

	# punt on Patricia Haruna/Sakurada Haruna

	s/\bChibiusa\b/Reeny/g;
	s/\bCHIBIUSA\b/REENY/g;
	s/\bChibi Usa\b/Reeny/g;
	s/\bCHIBI USA\b/REENY/g;

	s/\bMotoki\b/Andrew/g;
	s/\bShingo\b/Sammy/g;
	s/\bSHINGO\b/SAMMY/g;
	s/\bNephrite\b/Neflyte/g;
	s/\bNEPHRITE\b/NEFLYTE/g;
	s/\bKunzite\b/Malachite/g;
	s/\bKUNZITE\b/MALACHITE/g;
	s/\bAil\b/Alan/g;
	s/\bAIL\b/ALAN/g;
	s/\bCooan\b/Catsy/g;
	s/\bCOOAN\b/CATSY/g;
	s/\bBeruche\b/Birdy/g;
	s/\bBERUCHE\b/BIRDY/g;
	s/\bKaraberas\b/Avery/g;
	s/\bKARABERAS\b/AVERY/g;
	s/\bPetz\b/Prisma/g;
	s/\bPETZ\b/PRISMA/g;

	print NEW $_;
    }
}
----cut here----