LINUX.ORG.RU
ФорумTalks

Список несовместимых изменений в Perl'е 5.28

 


1

1

Уже некоторое время известно какие несовместимые изменения будут в Perl'е 5.28. Вот они:

Incompatible Changes
   Comma-less variable lists in formats are no longer allowed
       Omitting the commas between variables passed to formats is no longer
       allowed.  This has been deprecated since Perl 5.000.

   The ":locked" and ":unique" attributes have been removed
       These have been no-ops and deprecated since Perl 5.12 and 5.10,
       respectively.

   "\N{}" with nothing between the braces is now illegal.
       This has been deprecated since Perl 5.24.

   Opening the same symbol as both a file and directory handle is no longer
       allowed
       Using "open()" and "opendir()" to associate both a filehandle and a
       dirhandle to the same symbol (glob or scalar) has been deprecated since
       Perl 5.10.

   Use of bare "<<" to mean "<<""" is no longer allowed
       Use of a bare terminator has been deprecated since Perl 5.000.

   Setting $/ to a reference to a non-positive integer no longer allowed
       This used to work like setting it to "undef", but has been deprecated
       since Perl 5.20.

   Unicode code points with values exceeding "IV_MAX" are now fatal.
       This was deprecated since Perl 5.24.

   "B::OP::terse" no longer exists.
       Use "B::Concise::b_terse" instead.

   Use of inherited AUTOLOAD for non-methods is no longer allowed.
       This was deprecated in Perl 5.004.

   Use of strings with code points over 0xFF is not allowed for bitwise string
       operators
       Code points over 0xFF do not make sense for bitwise operators.

   Setting "${^ENCODING}" to a defined value is now illegal
       This has been deprecated since Perl 5.22 and a no-op since Perl 5.26.

   Backslash no longer escapes colon in PATH for the -S switch
       Previously the "-S" switch incorrectly treated backslash ("\") as an
       escape for colon when traversing the "PATH" environment variable.
       [perl #129183]

   the -DH (DEBUG_H) misfeature has been removed
       On a perl built with debugging support, the "H" flag to the "-D"
       debugging option has been removed. This was supposed to dump hash
       values, but has been broken for many years.
Особенно радует
   Use of strings with code points over 0xFF is not allowed for bitwise string
       operators
       Code points over 0xFF do not make sense for bitwise operators.
Вот поэтому однобайтовые кодировки и рулят, что 0x80-0xFF - конкретные символы, а не начало последовательности байт.

Что же касается выпиливания ENCODING, то всё и так работает с любой локалью автоматически. А для улучшенной поддержки конкретно KOI8-R есть модуль Char-KOI8R от японца по имени INABA Hitoshi.

★★★★★

Альфа-версия Debian 10 отрелизилась, но в sid еще perl 5.26. Можно спать спокойно. Моя любимая Koha еще нескоро будет нуждаться в рефакторинге.

Infra_HDC ★★★★★
()
Ответ на: комментарий от Infra_HDC

Ну так релиза версии 5.28 ещё и не было. Пока ещё пилят 5.27. Они на нечётных версиях всё отлаживают, а изменения потом переходят в следующую чётную. Поэтому по этой 5.27 уже можно сказать что будет в 5.28.

saahriktu ★★★★★
() автор топика

Вроде ничего особенно ценного не выпилили.
А bitwise string operators полагаю и для ASCII-то не слишком часто используется, а для UTF8 так просто не работает.

pru-mike ★★
()
Ответ на: комментарий от pru-mike

Вот. А с KOI8-R они работают:

> cat test.pl
$xstr = "проверка" & "битовых";
$xstr = $xstr | "операций";
print $xstr . "\n";
> perl -f test.pl
опевесий
>

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от evilface

Шестнадцатеричное и текстовое представления могут дополнять друг-друга, чтобы было проще ориентироваться в бинарных данных. Пример:

> hexdump -C /boot/linux-4.13 | head -n 20
00000000  ea 05 00 c0 07 8c c8 8e  d8 8e c0 8e d0 31 e4 fb  |Й..ю.▄х▌ь▌ю▌п1ДШ|
00000010  fc be 2d 00 ac 20 c0 74  09 b4 0e bb 07 00 cd 10  |Э╬-.╛ юt.╢.╩..м.|
00000020  eb f2 31 c0 cd 16 cd 19  ea f0 ff 00 f0 55 73 65  |КР1юм.м.ЙПЪ.ПUse|
00000030  20 61 20 62 6f 6f 74 20  6c 6f 61 64 65 72 2e 0d  | a boot loader..|
00000040  0a 0a 52 65 6d 6f 76 65  20 64 69 73 6b 20 61 6e  |..Remove disk an|
00000050  64 20 70 72 65 73 73 20  61 6e 79 20 6b 65 79 20  |d press any key |
00000060  74 6f 20 72 65 62 6f 6f  74 2e 2e 2e 0d 0a 00 00  |to reboot.......|
00000070  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 ff  |...............Ъ|
000001f0  ff 1e 01 00 1d 60 06 00  00 00 ff ff 00 00 55 aa  |Ъ....`....ЪЪ..U╙|
00000200  eb 66 48 64 72 53 0d 02  00 00 00 00 00 10 e0 30  |КfHdrS........Ю0|
00000210  00 01 00 80 00 00 10 00  00 00 00 00 00 00 00 00  |...─............|
00000220  00 00 00 00 80 52 00 00  00 00 00 00 ff ff ff 7f  |....─R......ЪЪЪ.|
00000230  00 00 00 01 01 15 13 00  ff 07 00 00 00 00 00 00  |........Ъ.......|
00000240  00 00 00 00 00 00 00 00  76 02 00 00 ac 13 63 00  |........v...╛.c.|
00000250  00 00 00 00 00 00 00 00  00 00 00 01 00 00 00 00  |................|
00000260  00 80 b0 02 00 00 00 00  8c d8 8e c0 fc 8c d2 39  |.─╟.....▄ь▌юЭ▄р9|
00000270  c2 89 e2 74 16 ba 80 50  f6 06 11 02 80 74 04 8b  |б┴Бt.╨─PЖ...─t.▀|
00000280  16 24 02 81 c2 00 04 73  02 31 d2 83 e2 fc 75 03  |.$.│б..s.1р┐БЭu.|

saahriktu ★★★★★
() автор топика

Вот поэтому однобайтовые кодировки и рулят, что 0x80-0xFF - конкретные символы, а не начало последовательности байт.

Да ты упоротый!

Xellos ★★★★★
()

Респект и уважуха пацанам. Пусть почистять перловку от накопившегося легаси.

KernelPanic
()
25 октября 2017 г.

Особенно радует
not allowed

А что-нибудь кроме твоей KOI8-R тебя радует?

h578b1bde ★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.