#!/usr/local/bin/perl -wuse strict;if ($#::ARGV == -1) { @::ARGV = (':snk.txt'); }my $chapter = undef;my (%ej, %je, @chapters);while (<>) {	chomp;	next if /^#/;	next unless /\S/;	if (/^\s*chapter\s+(\d+)\s*$/i) {		$chapter = $1;	 	$chapters[$chapter] = [] unless defined $chapters[$chapter];		next;		}		my ($kanji, $kana, $english) = split(/(?:\x81\x40| |\t)+/, $_, 3);	unless (defined $english) {		die "I don't know what you mean by:\n$_\n";		}	$english =~ s/\.\s*$//;	my (@english) = split(/;\s*/, $english);	for my $e (@english) { $e = ucfirst $e; }	$english = join('; ', @english);#	for my $ch (split('', $kanji)) { printf "%02x ", ord($ch); } print "\n";#	for my $ch (split('', $kana)) { printf "%02x ", ord($ch); } print "\n";#	print "$english\n";		# add to J->E dictionary	{		my $kanasort = $kana;		$kanasort =~ s/(?:\x81\x60|~)//g;		$kanasort =~ s/^\s*//;		$kanasort =~ s/\s*$//;		$je{$kanasort} = [] unless defined $je{$kanasort};		push(@{$je{$kanasort}}, "<tr><td>$chapter<td>$kanji</td><td>$kana</td><td>$english</td></tr>\n");	}		# add to E->J dictionary	for my $e (@english) {		my $esort = $e;		$esort =~ s/(?:\x81\x60|~)//g;		$esort = lc $e;		$esort =~ y/a-z//dc;		$ej{$esort} = [] unless defined $ej{$esort};		push(@{$ej{$esort}}, "<tr><td>$chapter<td>$e</td><td>$kanji</td><td>$kana</td></tr>\n");		}		# add to chapter vocabulary	push(@{$chapters[$chapter]}, "<tr><td>$kanji</td><td>$kana</td><td>$english</td></tr>\n");	}# print J->E dictionaryopen(OUT, ">snk-je.html") || die "Can't create snk-je.html: $!\n";MacPerl::SetFileInfo('MOSS', 'TEXT', 'snk-je.html');print OUT <<"EOF";<html><head><meta http-equiv="Content-Type" content="text/html; charset=shift_jis"><title>Shin Nihongo no Kiso: Japanese-English Vocabulary</title></head><body><a name=top href="index.html">Back to SNK</a><h1>Shin Nihongo no Kiso: Japanese-English Vocabulary</h1>See also <a href="snk-ej.html">English-Japanese</a> and <a href="snk-ch.html">Chapter</a> vocabulary.<p><table border=1><tr><th>Chapter</th><th>\x93\xfa\x96\x7b\x8c\xea</th><th>\x82\xc9\x82\xd9\x82\xf1\x82\xb2</th><th>English</th></tr>EOFfor my $kana (sort keys %je) {	my $lines = $je{$kana};	print OUT sort @$lines;	}print OUT <<"EOF";</table></body></html>EOFclose(OUT);# print E->J dictionaryopen(OUT, ">snk-ej.html") || die "Can't create snk-ej.html: $!\n";MacPerl::SetFileInfo('MOSS', 'TEXT', 'snk-ej.html');print OUT <<"EOF";<html><head><meta http-equiv="Content-Type" content="text/html; charset=shift_jis"><title>Shin Nihongo no Kiso: English-Japanese Vocabulary</title></head><body><a name=top href="index.html">Back to SNK</a><h1>Shin Nihongo no Kiso: English-Japanese Vocabulary</h1>See also <a href="snk-je.html">Japanese-English</a> and <a href="snk-ch.html">Chapter</a> vocabulary.<p><table border=1><tr><th>Chapter</th><th>English</th><th>\x93\xfa\x96\x7b\x8c\xea</th><th>\x82\xc9\x82\xd9\x82\xf1\x82\xb2</th></tr>EOFfor my $e (sort keys %ej) {	my $lines = $ej{$e};	print OUT sort @$lines;	}print OUT <<"EOF";</table></body></html>EOFclose(OUT);# print chapter listingsopen(OUT, ">snk-ch.html") || die "Can't create snk-ch.html: $!\n";MacPerl::SetFileInfo('MOSS', 'TEXT', 'snk-ch.html');print OUT <<"EOF";<html><head><meta http-equiv="Content-Type" content="text/html; charset=shift_jis"><title>Shin Nihongo no Kiso: Vocab by Chapter</title></head><body><a name=top href="index.html">Back to SNK</a><h1>Shin Nihongo no Kiso: Vocab by Chapter</h1>See also <a href="snk-ej.html">English-Japanese</a> and <a href="snk-je.html">Japanese-English</a> vocabulary.<p>EOFfor my $ch (1..$#chapters) {	print OUT "<h2>Chapter ";	for my $c (1..$#chapters) { 	  if ($c == $ch) { print OUT "<font color=red><a name=c$c>$c</a></font> "; }	  else { print OUT "<a href=\"#c$c\">$c</a> "; }	  }	print OUT "</h2>\n<table border=1>\n";	print OUT "<tr><th>\x93\xfa\x96\x7b\x8c\xea</th><th>\x82\xc9\x82\xd9\x82\xf1\x82\xb2</th><th>English</th></tr>\n";	print OUT @{$chapters[$ch]};	print OUT "</table>\n";	}print OUT <<"EOF";</table></body></html>EOFclose(OUT);