1. Perl / Говнокод #19749

    +15

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    #!/usr/bin/perl5.18
    
    $file = $ARGV[0];
    if (!$file) {
        print "Введите имя файла: ";
        $file = <STDIN>;
        chomp $file;
    }
    $direction = $ARGV[1];
    if (!$direction) {
        print "Введите направление: ";
        $direction = <STDIN>;
        chomp $direction;
    }
    if ($direction ne '866toKOI8' && $direction ne 'KOI8to866') {
        die "Invalid param";
    }
    
    open (IN_FILE, "<$file") or die "Cannot open file";
    open (OUT_FILE, ">out$file") or die "Cannot open file";
    $text = '';
    while (my $row = <IN_FILE>) {
        if ($direction eq '866toKOI8') {
            $row =~ tr/\x80\x81\x82\x83\x84\x85\xF0\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xF1\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF/\xE1\xE2\xF7\xE7\xE4\xE5\xB3\xF6\xFA\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF2\xF3\xF4\xF5\xE6\xE8\xE3\xFE\xFB\xFD\xFF\xF9\xF8\xFC\xE0\xF1\xC1\xC2\xD7\xC7\xC4\xC5\xA3\xD6\xDA\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD2\xD3\xD4\xD5\xC6\xC8\xC3\xDE\xDB\xDD\xDF\xD9\xD8\xDC\xC0\xD1/;
        } else {
            $row =~ tr/\xE1\xE2\xF7\xE7\xE4\xE5\xB3\xF6\xFA\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF2\xF3\xF4\xF5\xE6\xE8\xE3\xFE\xFB\xFD\xFF\xF9\xF8\xFC\xE0\xF1\xC1\xC2\xD7\xC7\xC4\xC5\xA3\xD6\xDA\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD2\xD3\xD4\xD5\xC6\xC8\xC3\xDE\xDB\xDD\xDF\xD9\xD8\xDC\xC0\xD1/\x80\x81\x82\x83\x84\x85\xF0\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xF1\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF/;
        }
        print OUT_FILE $row;
    }
    close (IN_FILE);
    close (OUT_FILE);

    Смена кодировки из cp866 в KOI8 и обратно. Шел 2016й год.....................

    Запостил: ufufney, 04 Апреля 2016

    Комментарии (12) RSS

    • Смена кодировки регулярками? Весьма, весьма специфичные вкусы...

      PS, ждём подобное для UTF-8 - UCS-2.
      Ответить
    • use Encode -- для слабаков! Или может автор не осилил нормально собрать perl для своей недожелезяки...
      Ответить
    • блядь, ккк можно вообще завязываться на кодировку? а вдруг там не 866?
      и откуда 866 на линуксе, когда там везде уже UTF-8? Или это винда? тогда откуда там koi?
      и где мой " use Text::Iconv;"? и почему вообще это всё не в utf-8 в 2016м году?

      блядь
      запахло рашен апаче и вебразработкой образца 1999го года
      Ответить
    • Пошарился по почте своей — оказывается koi8 всё так же цветёт и здравствует, как будто на дворе вообще не XXI век.
      Ответить
      • Я тож в шоке был. Пришлось в нашу старую, но работающую либу поп3 смтп, допиливать поддержку utf-8 и koi8-r
        Ответить
        • А каким хуем smtp либа должна парсить письмо? В ftp клиент тоже надо добавлять поддержку кодировок?
          Ответить
      • люди сидят на восьмых-девятых эксплорерах и пользуются джава апплетами, а вы про XXI век
        Ответить
        • Это не люди. Даже пидар обновился до win7
          Ответить
        • >>люди сидят на восьмых-девятых эксплорерах
          лол, мои сайты такие люди даже не откроют
          потому что у меня шифры TLSовские такие, что они их не поймут
          Ответить
        • А ведь вроде бы совсем недавно IE6 был бичом интернета, а IE8 - новинкой...
          Ответить
    • Больше всего поражает, что используется Perl, когда есть iconv. Я уже не говорю про однострочники с sed(1), tr(1). И даже если это все под виндой, то в 21 веке почти все юниксовые утилитки: а) собраны б) собираются на раз-два в том же mingw, dev-c++ и т.д. И написать sh/bat-скрипт дело на 1 минуту. ИМХО.
      Ответить

    Добавить комментарий