$sanat = 'sanat.txt';
$kaikki = 'sanat.html';
$laaja = 'laaja.html';
$alku = 'sanat';
$suff = '.html';
$style =
" \n";
$table = "
\n";
my %map = ( 'å' => 'ao', 'ä' => 'ae', 'ö' => 'oe',
'ü' => 'y',
'é' => 'e',
'à' => 'a', '$' => 's', '¨' => 's' );
for $letter('a'..'z') { $map{$letter} = $letter; }
for $letter('A'..'Z') { $map{$letter} = lc($letter); }
open(SANAT,"<$sanat") or die "Sanatiedostoa ei löydy:\n $!";
open(KAIKKI,">$kaikki") or die "Tiedostoa $kaikki ei voi luoda:\n $!";
print KAIKKI "Pienehkö sivistyssanakirja, kaikki sanat, lyhyet selitykset \n",
$style, "\n";
open(LAAJA,">$laaja") or die "Tiedostoa $laaja ei voi luoda:\n $!";
print LAAJA
"Pienehkö sivistyssanakirja, kaikki sanat, laajat selitykset \n",
$style, "\n";
my $kirjain = '';
print KAIKKI $table;
while() {
my $laus;
my $komm;
s/\r//;
s/\n//;
$sana = muunna($_);
if(m/(.+?)\s*(\[.+\])/) {
$sana = $1;
$laus = $2; }
$uusik = substr($sana,0,1);
if($uusik eq 'à') { $uusik = 'a'; }
$uusikirjain = $map{$uusik};
die "***Virhe! uusi: $uusikirjain, sana: $sana, rivi: $_"
unless $uusikirjain =~ m/[a-zA-Z]+/;
if($uusikirjain ne $kirjain) {
if($kirjain) {
close OSA; }
$kirjain = $uusikirjain;
$osa = $alku . $kirjain . $suff;
open(OSA,">$osa") or die "Tiedostoa $osa ei voi luoda:\n $!";
print OSA "Pienehkö sivistyssanakirja, $uusik-alkuiset sanat \n",
$style, "\n"; }
$selitys = ;
$selitys =~ s/\r//;
chomp $selitys;
$selitys = linkit($selitys);
$ankkuri = $sana;
$ankkuri =~ s/\(.*\)//g;
$sana =~ s/¨/š/;
$sana =~ s/\$/š/;
$tauhka = "$sana $selitys $laus \n";
print KAIKKI $tauhka;
$komm = '';
while() {
s/\r//g;
s/\n//g;
last if !$_ || $_ eq "\n" || $_ eq '';
$komm .= ' '.linkit($_); }
$tauhka = "$sana $laus $selitys ";
if($komm ne '') { $tauhka .= "¶ $komm"; }
$tauhka .= "
\n";
print LAAJA $tauhka;
$tauhka =~ s/\"#(\w|¨)/&tiedosto($1)/ge;
print OSA $tauhka; }
print KAIKKI $table_end;
close OSA;
close LAAJA;
close KAIKKI;
sub linkit {
$_[0] =~ s/\\([a-zA-zäåöÄÅÖàÀéÉ\-9;\-]*?)\(([a-zA-zäåöÄÅÖàÀéÉ\-9¨;\-]*?)\)\\/$1<\/a>/g;
$_[0] =~ s/\\(.*?)\\/ $1<\/a>/g;
return muunna($_[0]); }
sub muunna {
$_ = $_[0];
s?!SI? SI ?;
s?!LV?lyhytvokaalinen ?;
s?!SS?Yksi vai kaksi konsonanttia\? ?;
s?!OLI?-oli ?;
s?!KIRJ?Kirjoitus- vai äänneasun mukaan\? ?;
s?!VIER?huomautuksia vieraiden kirjainten käytöstä ?;
s?!KS?K vai s\? ?;
s?!LAT?sitaattilaina latinasta ?;
s?!NEN?Voisiko -nen-lopun jättää pois adjektiiveista\? ?;
s?!BP?Ks. Vieras vai kotoinen kirjain\? ?;
s?!LOGIA?Sukulaissanoista ks. logia .?;
s?!ISMI?Sukulaissanoista ks. ismi .?;
s?!SH2?Kirjoitusasusta ks. Suhuässä ja sen merkitseminen .?;
s?!SH?Aiemmin s:n tilalla oli sh tai š ?;
s?!TR?Ks. Konsonanttiyhdistelmien yksinkertaistuminen .?;
s?\(biol\.?(biologiassa?;
s?\(hist\.?(historiassa?;
s?\(kem\.?(kemiassa?;
s?\(lääket\.?(lääketieteessä?;
s?\(mat\.?(matematiikassa?;
s?\(mus\.?(musiikissa?;
s?\(tekn\.?(tekniikassa?;
s?\(urh\.?(urheilussa?;
return $_; }
sub tiedosto {
my $a = $_[0];
return '"'.$alku.$map{$a}.$suff."#".$a; }