LINUX.ORG.RU

Perl 5.16

 ,


1

1

Вечером 20 мая, спустя год после публикации версии 5.14, состоялся релиз Perl версии 5.16.
Из изменений можно отметить следующие:

  • Поддерживаемая версия unicode обновлена до 6.1.
  • use VERSION теперь переводит интерпретатор в режим указанной версии. Например, указав use v5.14 в версии 5.16 мы получим поведение perl 5.14, а все features из других версий будут отключены.
  • Новое ключевое слово __SUB__, с помощью которого можно получить ссылку на текущую подпрограмму в области видимости самой подпрограммы. Теперь написание однострочников стало еще проще:
    # вычислим факториал 10 в одну строку
    my $fact = sub { $_[0]>0 ? $_[0] * __SUB__->($_[0]-1) : 1 }->(10)
    
  • Новая функция fc, производящая unicode casefolding над переданной строкой. Если ранее для сравнения не ASCII строк в разном регистре вы применяли lc() или uc(), то вы делали это неверно. Например слово «Reichwaldstraße» в верхнем регистре записывается, как REICHWALDSTRASSE. Что после перевода в нижний регистр обоих вариантов приведет к сравнению «reichwaldstraße» и «reichwaldstrasse». В итоге сравнение закончится неудачей. Именно эту проблему решает функция fc().

>>> Подробности

★★★

Проверено: tazhate ()
Последнее исправление: Silent (всего исправлений: 2)

Я нас всех с этим поздравляю!

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

Он уже появился, но реализации которая годится для продакшна пока нет. Вот тут сравнение двух существующих компиляторов: http://perl6.org/compilers/features

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

> Он появился давно, но в реальном мире, похоже, никому не нужен.

нужен. но то, что появилось, не нужно, т.к. это ещё не перл6 и жутко тормозит, короче не юзабельно оно.

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

никому не нужен.

Нужен аналог питона, имеющийся под рукой на каждой машине. Как перл 5, только с нормальными классами.

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

Сразу видно гентушника :] Нет, не на каждой. Стандартом де-факто для Unix-подобных систем является Perl, но не Python.

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

Ну не только джента )

Стандартом де-факто для Unix-подобных систем является Perl, но не Python.

Это знаю, но давно не видел уже системы без python.

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

Нет, не на каждой. Стандартом де-факто для Unix-подобных систем является Perl, но не Python.

LSB - это для Linux. Unix-подобные - не только он.

sergv
()
Ответ на: комментарий от arsi

Ну и LSB тоже вещь условная. В том же Debian поддержка стандарта опциональна, и в базовой системе этого всего нет.

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

ну это понятно, что дистрибутив не будет насильно ставить всё, что перечислено в LSB, хочет того пользователь или нет. но предоставить возможность уставить всё необходимое штатными средствами нормальный дистрибутив обязан.

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

но предоставить возможность уставить всё необходимое штатными средствами нормальный дистрибутив обязан.

Ну это да, там так сделано:

> aptitude search ^lsb'!~v'
p   lsb                             - Linux Standard Base 4.1 support package
i   lsb-base                        - Linux Standard Base 4.1 init script functi
p   lsb-build-base3                 - LSB v3.x Development tools base package
p   lsb-build-cc3                   - LSB v3.x Development environment lsbcc pac
p   lsb-build-desktop3              - LSB v3.x Development tools desktop package
p   lsb-core                        - Linux Standard Base 4.1 core support packa
p   lsb-cxx                         - Linux Standard Base 4.1 C++ support packag
p   lsb-desktop                     - Linux Standard Base 4.1 Desktop support pa
p   lsb-graphics                    - Linux Standard Base 4.1 graphics support p
p   lsb-invalid-mta                 - Linux Standard Base sendmail dummy
p   lsb-languages                   - Linux Standard Base 4.1 Runtime Languages
p   lsb-multimedia                  - Linux Standard Base 4.1 Multimedia package
p   lsb-pkgchk3                     - LSB v3.x package checking tool
p   lsb-printing                    - Linux Standard Base 4.1 Printing package
p   lsb-release                     - Linux Standard Base version reporting util
p   lsb-security                    - Linux Standard Base 4.1 Security package

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

Не знаю, но подозреваю, что да.

Ну вот и не подозревай тогда, если не знаешь. На маках есть.

anonymous
()

Например слово «Reichwaldstraße» в верхнем регистре записывается, как REICHWALDSTRASSE. Что после перевода в нижний регистр обоих вариантов приведет к сравнению «reichwaldstraße» и «reichwaldstrasse». В итоге сравнение закончится неудачей.

Вот это проблемы у людей, понимаю.

buddhist ★★★★★
()

Новое ключевое слово __SUB__

Наконец-то что-то интересное, ради чего стоит обновиться.

kranky ★★★★★
()

Очень позитивная новость! Перл еще как нужен.

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

а где, кстати, по дефолту нет питона, но есть перл? *BSD? мак?

В маках Python из коробки идет.

shimon ★★★★★
()

use VERSION теперь переводит интерпретатор в режим указанной версии

Киллер фича! Срочно реквестирую её во всех возможных языках и продуктах

anonymoos ★★★★★
()

Хороший релиз.

Жду интеграции Meta Object Protocol с батарейкой. Вроде в 5.18 появится. Это позволит уменьшить оверхед и глючность расширенных объектных систем на базе Perl. Все большее количество модулей зависит от ужасного Moose, поэтому такие изменения в батарейке давно назрели...

Собсна: https://github.com/stevan/p5-mini-mop/blob/f2771ed523dc80453f1fbe707a1801d895...

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

Нужен аналог питона, имеющийся под рукой на каждой машине.

зачем если питон есть на каждой машине?

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

Нужен аналог питона,

чтоб не было нативных тредов и всё тормозило? Нахер-нахер.

anonymous
()

Теперь написание однострочников стало еще проще

Только я подумал о том самом однострочнике?..

cruxish ★★★★
()

Например слово «Reichwaldstraße» в верхнем регистре записывается, как REICHWALDSTRASSE.

это в немецком языке буквы при смене регистра меняют или это бага в функции uc()?

AVL2 ★★★★★
()
Ответ на: комментарий от Olegymous
$ python3
Python 3.2.2 (default, Mar 14 2012, 13:47:52) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> "Reichwaldstraße".upper()
'REICHWALDSTRAßE'
$ irb1.9.1 
irb(main):001:0> "Reichwaldstraße".upcase
=> "REICHWALDSTRAßE"

Может и есть какие-то нестандартные средства.

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

Стандартом де-факто для Unix-подобных систем является Perl, но не Python

И это ужасно. В результате работа системы зависит от кучи нечитаемых, интуитивно непонятных скриптов, разобраться в которых может только автор и то не всегда.

Для Линукса жизненно важно наличие общепринятых и выходящих за рамки ядра и крупных DE стандартов на используемые языки программирования и библиотеки, правила оформления кода и интерфейса. Без них система так и будет напоминать франкенштейна, сшитого из надежд, заблуждений и амбиций всех программистов мира.

Nebuchadnezzar ★★★★
()

состоялся релиз Perl версии 5.16.

Новое зло пришло в этот мир)

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

а где, кстати, по дефолту нет питона, но есть перл? *BSD? мак?

На маке по дефолту питон есть. на BSD уже давно «перл» вытравили из системы насколько я знаю. Могу ошибаться.

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

Например слово «Reichwaldstraße» в верхнем регистре записывается, как REICHWALDSTRASSE.

это в немецком языке буквы при смене регистра меняют или это бага в функции uc()?

В немецком языке ß в верхнем регистре пишут как SS. Да и в нижнем тоже часто используется ss.

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

Во-первых, уже привык к перлу. Во-вторых, не нравится отсутствие обычных операторных скобок в питоне.

А мне не нравится в C-подобных языках отсутствие обычных Begin-End, вместо которых какие-то уродливые скобки, которые, к тому же, очень легко перепутать с обычными.

harper
()

а я люблю руби. версия 1.9 очень хорошо написана. разница между перлом и питоном +-50%. мечтаю чтобы все скрипты генты перевели на руби ^____^

ruby vs perl ruby vs python

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

В немецком языке ß в верхнем регистре пишут как SS. Да и в нижнем тоже часто используется ss.

Ну вот ведь глюканы. А чего реформу не проведут? Это же дикость.

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

Киллер фича! Срочно реквестирую её во всех возможных языках и продуктах

Я еще не пробовал новый Perl, но шестое чувство мне подсказывает, что например, use 1.0 или с ошибкой вывалится или все равно вести себя как тот древний Perl он не станет.

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

Конечно не станет

Version declarations below 5.10 now enable the ":default" feature set. This does not actually change the behavior of use v5.8, because features added to the ":default" set are those that were traditionally enabled by default, before they could be turned off.

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

В немецком языке ß в верхнем регистре пишут как SS. Да и в нижнем тоже часто используется ss.

Ну вот ведь глюканы. А чего реформу не проведут?

Какую еще реформу? Вместо ß можно писать ss. Кстати глюк (Glück) — по-немецки счастье.

Это же дикость.

И не говори. Варвары и вандалы.

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