$sanat = 'sanat.txt'; $kaikki = 'sanat.html'; $laaja = 'laaja.html'; $alku = 'sanat'; $suff = '.html'; $style = "\n"; $table = "\n"; $table_end = "
\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, "

Pienehkö sivistyssanakirja, kaikki sanat, lyhyet selitykset

\n"; open(LAAJA,">$laaja") or die "Tiedostoa $laaja ei voi luoda:\n $!"; print LAAJA "Pienehkö sivistyssanakirja, kaikki sanat, laajat selitykset\n", $style, "

Pienehkö sivistyssanakirja, kaikki sanat, laajat selitykset

\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, "

Pienehkö sivistyssanakirja, $uusik-alkuiset sanat

\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; }