====== telugu2latin.pl ====== #!/usr/bin/perl # Převede text z telužského písma do latinky. Jde pouze o usnadnění čitelnosti, ne nutně o zachování veškeré informace. # (c) 2007 Dan Zeman # Licence: GNU GPL use utf8; use open ":utf8"; binmode(STDIN, ":utf8"); binmode(STDOUT, ":utf8"); binmode(STDERR, ":utf8"); # Samostatná písmena pro samohlásky začínají kódem 3077. @samohlasky = ("a", "á", "i", "í", "u", "ú", "r", "l", "", "e", "é", "aj", "", "o", "ó", "au"); for(my $i = 0; $i<=$#samohlasky; $i++) { my $src = chr($i+3077); $prevod{$src} = $samohlasky[$i]; } # Diakritická znaménka pro samohlásky začínají kódem 3134. @diasamohlasky = ("á", "i", "í", "u", "ú", "r", "l", "", "e", "é", "aj", "", "o", "ó", "au"); # Souhlásky začínají kódem 3093. @souhlasky = ( "k", "kh", "g", "gh", "ng", "č", "čh", "dž", "džh", "ň", "t", "th", "d", "dh", "n", # tt tth dd ddh nn "t", "th", "d", "dh", "n", "", "p", "ph", "b", "bh", "m", "j", "r", "rr", "l", "ll", "", "v", "š", "š", "s", "h" # první š je asi spíš ś ); for(my $i = 0; $i<=$#souhlasky; $i++) { my $src = chr($i+3093); $prevod{$src} = $souhlasky[$i]."a"; # 3149 je znaménko virama (halantamu), které likviduje implicitní samohlásku "a" my $src2 = chr(3149); $prevod{$src.$src2} = $souhlasky[$i]; for(my $j = 0; $j<=$#diasamohlasky; $j++) { my $src2 = chr($j+3134); $prevod{$src.$src2} = $souhlasky[$i].$diasamohlasky[$j]; } } # 3074 je znaménko anusvara (sunna), které způsobuje, že předcházející samohláska je nosová. $prevod{chr(3074)} = "n"; # 3073 je znaménko candrabindu (arasunna), které rovněž nazalizuje předcházející samohlásku. $prevod{chr(3073)} = "m"; # 3075 je znaménko visarga, které přidává neznělý dech za samohláskou. $prevod{chr(3075)} = "'"; # 3174 je kód telužské nuly, 3183 je devítka for(my $i = 0; $i<=9; $i++) { my $src = chr($i+3174); $prevod{$src} = $i; } # Ladění: vypsat převody. if(0) { foreach my $klic (sort(keys(%prevod))) { print("$klic\t$prevod{$klic}\n"); } } while(<>) { my @znaky = split(//, $_); for(my $i = 0; $i<=$#znaky; $i++) { # Je-li převod dvojice znaků neprázdný, použít ho. if($i<$#znaky) { my $src = $znaky[$i].$znaky[$i+1]; if($prevod{$src} ne "") { $znaky[$i] = $prevod{$src}; splice(@znaky, $i+1, 1); $i--; next; } } if($prevod{$znaky[$i]} ne "") { $znaky[$i] = $prevod{$znaky[$i]}; } } print(join("", @znaky)); }