[Moscow.pm] Странности и неожиданности Perl

Vladimir V. Perepelitsa inthrax на gmail.com
Ср Фев 27 06:33:45 PST 2008


On Wednesday 27 February 2008 17:18, Alex Shatlovsky wrote:
> > в utf8 и прикольнее и становится понятно в чем фишка
> >
> >  use charnames qw(:full);
> >  $\ = " ";
> >  print for ( "a" ... "\N{CYRILLIC SMALL LETTER YA}");
>
> a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af
> ag ah ai aj ... kx ky kz la lb lc ld le lf lg lh li lj lk ll lm ln lo
> lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me mf mg mh mi mj mk ml
> mm mn mo mp mq mr ms ... zv zw zx zy zz
>
> Все равно непонятно, откуда zz.
>
> То есть понятно, что все что не-ASCII приводится к ASCII, но сам
> алгоритм покрыт мраком.

 
Alexander Alekseev уже более-менее подобрался к истине...

Если мы возьмем к примеру:

$\ = " ";
print for ( "a" ... "\N{WHITE_SMILING_FACE}");

по мы получим zzz

вобщем автоинкрементный алгоритм получает символ и берет максимальное 
допустимое значение, меньшее чем байтовое представление переданного символа.

"я" в виндовой кодировке - 1 байт.
в utf8 - 2 байта
а WHITE_SMILING_FACE - это 3 байта.

думаю если взять какой-нибудь иероглиф из 4 байт, то будет zzzz :)


-- 
Vladimir Perepelitsa aka Mons Anderson
<inthrax на gmail.com> / #99779956


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