[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