[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