[Moscow.pm] Encode: danko gay, все геи - вредители!
Ivan Petrov
i.petro.77.00 на gmail.com
Ср Окт 19 05:25:58 PDT 2016
>> в его гейском (на букву п) виртуальном мире делать не нужно. Юникода в
>> данных в коде программы встречаться не должно.
> Скорей всего 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' тоже станут со временем
не равны.
Но тогда зачем нужен Perl, я вас спрашиваю? Если 1 != '1' станет?
Подробная информация о списке рассылки Moscow-pm