Показать сообщение отдельно

  #192  
Старый 14.09.2007, 19:26
Digimortal
Banned
Регистрация: 22.08.2006
Сообщений: 608
Провел на форуме:
6144796

Репутация: 1095


По умолчанию

Цитата:
Сообщение от Thanat0z  
Скрипт перевода русского текста в набор на англ раскладке
Код:
#!/usr/bin/perl

if (@ARGV < 1)
{
    print "Usage: transkey.pl source\r\n";
    exit();
}

$sour = $ARGV[0];

if (@ARGV = 1){
    $dest = $sour . '_trans';
}
else{
    $dest = $ARGV[1];
};

$alphabet = "f,dult;pbqrkvyjghcnea[wxio]sm'.z";
$alphabet2 = 'F<DULT:PBQRKVYJGHCNEA{WXIO}SM">Z';

open (SR, "<$sour") || die "Could not open source file";
open (DS, ">$dest") || die "Could not create destination file";

while (<SR>){
    chomp;
    @bukvy = split(//);
        foreach $bk (@bukvy) {
            $num = ord($bk);
            if ($num < 256){
                if ($num > 223){
                    $bk = substr($alphabet,$num-224,1);
                }else{
                    if ($num > 191){
                        $bk = substr($alphabet2,$num-192,1);
                    };
                };
            };
        }
    print DS join("",@bukvy) . "\n";
};

close (SR);
close (DS);
гораздо проще можно все сделать было бы заюзав регексп:
Код:
#!/usr/bin/perl -w

use strict;

my $src = shift || die "Usage: transkey.pl <source> [destination]\n";
my $dst = shift || 'trans_'.$src;

open SR, '<', $src or die "Could not open source file\n";
open DS, '>', $dst or die "Could not create destination file\n";

$/ = undef;
my $text = <SR>;
$text =~ tr/
ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮйцукенгшщзхъфывапролджэячсмитьбю/
QWERTYUIOP[]ASDFGHJKL;'ZXCVBNM,.qwertyuiop[]asdfghjkl;'zxcvbnm,.\//;
print DS $text;

close SR;
close DS;
 
Ответить с цитированием