#!/usr/bin/perl -w # Make sure to insert the appropriate bang line above # and set permissions for this file to be executable. # ######################################################################## # Program Name : convertcyr.pl # Version : Beta # Written by : Max Pyziur - BRAMA, Inc # Last Revision : 6/3/00 # Date Created : 6/3/00 # Function : create diaspora.txt files # # Input : text file # Output : text file # # Followup : # i - iso8859-5 # m - x-mac-cyrillic ######################################################################## # # Variables validate() ; convertcyr() ; sub validate { if ($#ARGV != 2) { print "\n\n\tMissing or too many arguments !\n" ; usage() ; exit ;} if ($ARGV[0] ne "wk" && $ARGV[0] ne "kw" && $ARGV[0] ne "wt" && $ARGV[0] ne "kt" && $ARGV[0] ne "wd" && $ARGV[0] ne "kd" && $ARGV[0] ne "dw" && $ARGV[0] ne "dk" && $ARGV[0] ne "dt") { print "\n\n\tCode can only be a choice of \"wk\", \"kw\", \"wd\", \"kd\", \n\t\"dt\", \"dw\", \"dk\", \"wt\", or \"kt\"!\n" ; if (substr($ARGV[0], 0, 1) eq "t") { print "\n\t\(sorry latynka to cyr conversion is not available at this time\)\n\n" ; } usage() ; exit; } if (!-e $ARGV[1]) { print "\n\n\tSourceFile does not exist!\n\n" ; usage() ; exit; } if (-e $ARGV[2] ) { print "\n\n\tTargetFile exists!\n\n"; print "\t\(O\)verwrite or \(E\)xit? " ; $_ = ; chomp ; tr/a-z/A-Z/ ; if ($_ ne "O") { print "\n\n"; usage() ; exit ;} } if ($ARGV[1] eq $ARGV[2]) { print "\n\n\tTargetFile name should be different from SourceFile\n\n" ; usage() ; exit; } } sub usage { $PROG = `basename $0`; chomp $PROG; print "\tThe program is run in the following way: \n\n"; print "\t$PROG Code SourceFile TargetFile \n\n"; print "\twhere \"Code\" can be a choice of any two of the following:\n"; print "\tw for windows-1251 coding k for koi8 coding d for cp866/dos t for transliterated text Example: $PROG wk foo bar \(will convert 1251 text to koi8 coding\) $PROG wt foo bar \(will transliterate 1251 text to latynka\) " ; } sub convertcyr { open(SOURCE, "$ARGV[1]") || die "Cannot open $ARGV[1] for reading: $!\n" ; open(TARGET, ">$ARGV[2]") || die "Cannot open $ARGV[2] for writing: $!\n" ; while () { chomp ; if ($ARGV[0] eq "kw") { tr/鶷DZŤɦؽ/åŪȲܡ賿/ ; print TARGET "$_\n"; } elsif ($ARGV[0] eq "wk") { tr/åŪȲܡ賿/鶷DZŤɦؽ/; print TARGET "$_\n"; } elsif ($ARGV[0] eq "wd") { tr/åŪȲܡ賿/ 􆇈a/; print TARGET "$_\n"; } elsif ($ARGV[0] eq "kd") { tr/鶷DZŤɦؽ/􆇈𚛝a/ ; print TARGET "$_\n"; } elsif ($ARGV[0] eq "dw") { tr/􆇈𚛝a/åŪȲܡ賿/; print TARGET "$_\n"; } elsif ($ARGV[0] eq "dk") { tr/􆇈𚛝a/鶷ױŤɦؽ/ ; print TARGET "$_\n"; } elsif ($ARGV[0] eq "wt") { tr/åȲ/ABVHGDEZYIKLMNOPRSTUF\'abvhgdezyiklmnoprstuf\'/; s//Ye/g; s//Zh/g; s//Yi/g; s//J\'/g; s//Kh/g; s//Ts/g; s//Ch/g; s//Sh/g; s//Sch/g; s//Yu/g; s//Ya/g; s//ye/g; s//zh/g; s//yi/g; s//j\'/g; s//kh/g; s//ts/g; s//ch/g; s//sh/g; s//sch/g; s//yu/g; s//ya/g; print TARGET "$_\n"; } elsif ($ARGV[0] eq "kt") { tr/DZɦ/ABVHGDEZYIKLMNOPRSTUF\'abvhgdezyiklmnoprstuf\'/; s//Ye/g; s//Zh/g; s//Yi/g; s//J\'/g; s//Kh/g; s//Ts/g; s//Ch/g; s//Sh/g; s//Sch/g; s//Yu/g; s//Ya/g; s//ye/g; s//zh/g; s//yi/g; s//j\'/g; s//kh/g; s//ts/g; s//ch/g; s//sh/g; s//sch/g; s//yu/g; s//ya/g; print TARGET "$_\n"; } elsif ($ARGV[0] eq "dt") { tr/򄅇a󤥧/ABVHGDEZYIKLMNOPRSTUF\'abvhgdezyiklmnoprstuf\'/; s//Ye/g; s//Zh/g; s//Yi/g; s//J\'/g; s//Kh/g; s//Ts/g; s//Ch/g; s//Sh/g; s//Sch/g; s//Yu/g; s//Ya/g; s//ye/g; s//zh/g; s//yi/g; s//j\'/g; s//kh/g; s//ts/g; s//ch/g; s//sh/g; s//sch/g; s//yu/g; s//ya/g; print TARGET "$_\n"; } } close(SOURCE) || die "Cannot close $ARGV[1] : $!\n" ; close(TARGET) || die "Cannot close $ARGV[2] : $!\n" ; } # end of script