[Moscow.pm] Encode: danko gay, все геи - вредители!

Victor Efimov victor на vsespb.ru
Ср Окт 19 06:53:55 PDT 2016


19 октября 2016 г., 15:25 пользователь Ivan Petrov
<i.petro.77.00 на gmail.com> написал:
>>> в его гейском (на букву п) виртуальном мире делать не нужно. Юникода в
>>> данных в коде программы встречаться не должно.
>
>> Скорей всего kraih говорил Ивану, что опасно делать`use open qw(:std :utf8)`.
>
> в тикетах я не участвовал, я обсуждал с ним в IM.
>
>
> насчет опасно делать use open - другого выхода для неlatin-1 говорящих
> приложений нет.
>
> если мы хотим в регекспах иметь возможность написать
>
> $str = qr{привет\w};
>
> то use utf8 - мастхев
>
> если далее мы хотим этот регексп/строку принтануть, то stdout должен
> быть помечен как :utf8. Если мы хотим не дергать decode на каждый чих,
> то stdin тоже должен быть помечен так же.
> итого получается
>
> use open ':std:', ':utf8';
> use utf8;
>
> это мастхев на сегодня.
>
> Test::More нормально работает с этим
>
> и вообще все остальное что не считает нужным навязать другим модель.
> тебе прислали строку - и надо ее напечатать: печатай и пусть
> пользователь видя warning решит что ему сделать: строку тебе прислать
> encode'уную или stdout пометить как :utf8.
> но нет, же. гомосяки считают что они умнее всех! что просто надо
> запретить использование utf8 в тестах с этим мегафреймворком в котором
> 5 последних версий только и занимались что переименовывали методы
>
> secret -> secrets
> post_form_ok -> post_ok(form =>
> итп
>
>
>> В данном примере это работает, но только потому, что Test::More не
>> поддерживает юникод
>
> что такое "поддерживает юникод"?
> у Test::More задача тесты запускать, а не юникод поддерживать.
> о результатах тестов его задача напечатать сообщение в stdout и
> stderr.
> причем печатает он в общем виде то, что юзер прислал, либо английский
> текст. соответственно Test::More и не нужно поддерживать никакой
> юникод, что он с успехом и делает.
>
> поэтому когда один пишет в no utf8
>
> like $str => q{\w}, 'тест пройден';
>
> то получает работающий тест, ибо он (видимо) сам знает что такое \w в
> no utf8,
> а другой кто пишет в utf8 окружении
>
> like $str => {приве\w,}, 'тест пройден';
>
> получает так же работающий тест. И заметьте, Test::More работает в
> обоих случаях ибо до него гомосеки пока не добрались "впилить ему
> поддержку юникода"
>
>
> "поддержка юникода" это когда пользователь манипулирует строками
> естественно, по минимуму прибегая ко всяким encode/decode.
>
> если пользователю ЗАЧЕМ-то понадобится сконкатенировать blob и utf8,
> то он МОЖЕТ это делать, но в среднем это тупая практика и ломать из за
> этой тупой практики поведение функций которое не менялось полтора десятка
> лет - дебилизм.
> в итоге мы придем к питонячьему варианту что hello world и hello world
> - не дают в сравнении истину. и видимо 1 и '1' тоже станут со временем
> не равны.

как раз здесь https://rt.cpan.org/Public/Bug/Display.html?id=87267#txn-1250086
специально стоит строчка

die unless $x eq 'X';

это значит что hello world таки равен hello world, но ты почему-то
называешь это "сконкатенировать blob и utf8"
а это потому что ты считаешь что utf8 флаг означает текст, хотя это не
правда, и что это направда написано в документации, которую ты не
читал.
и именно чтобы hello world был всегда hello world сделаны фиксы в Encode

> Но тогда зачем нужен Perl, я вас спрашиваю? Если 1 != '1' станет?
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org


Подробная информация о списке рассылки Moscow-pm