#!/usr/bin/perl -s our ($en,$pt,$q, $d,$pair); $pt=1 unless($en); $pair = "/" if($pair == 1); use strict; use utf8::all; sub transliterate { my ( $in ) = @_; for ( $in ) { s/ц/ts/gi; s/ш/sh/gi; s/щ/shch/gi; s/ж/zh/gi; s/я/ya/gi; s/я\b/ya/gi; s/ч/ch/g; s/ч\b/ch/g; s/ю/yu/gi; tr/йукнгзхфывапролдэсмитеьбБЙУКЕНГЗХФЫВАПРОЛДЭСМИТ/jukngzhfyvaproldesmite'bBJUKENGZHFYVAPROLDESMIT/; } return $in; } sub pttransliterate { my ( $in ) = @_; my $old=$in; for ( $in ) { my $ch=0; $ch++ if s/ц/ts/gi ; $ch++ if s/ш/x/gi ; $ch++ if s/щ/shch/gi ; $ch++ if s/Ж/J/g ; $ch++ if s/ж/j/gi ; $ch++ if s/я\b/ia/gi ; $ch++ if s/я/ia/gi ; $ch++ if s/ч\b/s/g ; $ch++ if s/ч/ch/g ; $ch++ if s/ю/iu/gi ; $ch++ if tr/йукнгзхфывапролдэсмитеьбБЙУКЕНГЗХФЫВАПРОЛДЭСМИТ/iukngzhfyvaproldesmite'bBIUKENGZHFYVAPROLDESMIT/ ; if($ch) { s/^Dj[ij]/Gi/gi; s/^Dj/J/gi; s/^Dz/Z/g; print "\n### $old=>$in=>" if $d; s/x\b/s/gi; s/x([kt])/s$1/gi; s/u$/o/gi; s/ii/i/g; s/([aeioz])z([aeiou])/$1s$2/g; s/kk/cc/gi; s/k([^ei])/c$1/gi; s/k([ei])/qu$1/gi if $q; # s/j/j/gi; print "$in\n" if $d; return "$old$pair$in" if($pair); } } return $in; } while(<>){ if ($en) { s/(\w+)/transliterate($1)/ge ; } if ($pt) { s/(\w+)/pttransliterate($1)/ge ; } print; }