LINUX.ORG.RU

Perl 5.28

 ,


1

2

Пока ты попивал смузи и катался на гироскутере, серьёзные пацаны подготовили к выпуску Perl 5.28

Что нового?

  • Поддержка Unicode 10.0 (появился символ биткоина).
  • delete можно использовать на срезах:
    my %sanitised_values = delete %input_values{@allowed_keys};
  • Проверка системы письменности на однородность (script runs):
    'Pеrl' =~ /^(*sr:\w+$)/
    Вернёт «ложь», т.к. буква «е» кириллическая. (подробнее о script runs)

Экспериментальные возможности:

Поддержка буквенных синонимов для некоторых утверждений (assertion) регулярных выражений (Осторожно! Может повысить читабельность!):

(?=...)        (*pla:...) or (*positive_lookahead:...)
(?!...)        (*nla:...) or (*negative_lookahead:...)
(?<=...)       (*plb:...) or (*positive_lookbehind:...)
(?<!...)       (*nlb:...) or (*negative_lookbehind:...)
(?>...)        (*atomic:...)

Улучшения производительности:

  • Серьёзно снижены накладные расходы связанные с использованием параметров юникод (\p{...}) в регулярных выражениях.
  • Существенно ускорена множественная конкатенация. Например, следующий код на x86_64 работает в 4 раза быстрее:

    my $s;
    my $a = "ab\x{100}cde";
    my $b = "fghij";
    my $c = "\x{101}klmn";
     
    for my $i (1..10_000_000) {
        $s = "\x{100}wxyz";
        $s .= "foo=$a bar=$b baz=$c";
    }
    

  • sprintf() с фиксированным набором аргументов и строкой формата содержащей только %s и %% работает быстрее.
  • ref() работает намного быстрей в булевом контексте, т.к. больше не создаётся временная строка вроде Foo=ARRAY(0x134af48).
  • Циклы for() и аналогичные конструкции в большинстве ситуаций будут работать быстрей
  • Появилась возможность хранить процедуры в пакетах без использования таблиц имён, что позволяет сэкономить крупные объёмы памяти.

Другие изменения:

  • Ядро почистили от «use vars». Многие продолжают использовать «use vars», что является плохой практикой с момента введения «our» в версии 5.6.0.
  • Новое предупреждение для случаев:

    my $name='Pistachio';
    print "In $name's house";
    

    Рекомендую посмотреть на видео. Возможно улыбнётесь.

Видео: Sawyer X рассказывает о нововведениях и фитчах предыдущих версий, которые ты пропустил.

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

★★★★★

Проверено: Shaman007 ()
Последнее исправление: tailgunner (всего исправлений: 6)
Ответ на: комментарий от makoven

А что с шестым?

Лесом! Давай сразу 7!

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

Маловато гуманитарных анонов скастовалось. Таки перл это для вас сложнааа.

bread
()
Ответ на: комментарий от anonymous

То есть ты вот так вот, резко, решил запретить всем гуманитариям использовать языки программирования?

А толку-то запрещать? DRVTiny вон, клал на это с прибором. Правда, он не гуманитарий.

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

Почему, я вполне гуманитарий, по крайней мере не меньше, чем технарь.

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

Почему-то я уверен, что ни на них, ни даже на перле ты ничего не написал. Не зря тебя зовут Квазаром на минималках - ненужнилкой трясешь, а обосновалка так и не выросла. Квазар хоть пердит музыкально и с размахом.

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

Современный код на Perl очень даже понятен и читаем. А ты про древние мифы из 90-х.

в современном перле отменили TMTOWTDI?

anonymous
()
Ответ на: комментарий от linuhs_user

Знаю. Просто в последнее время много раз видел, когда ключевые разработчики бросали свои силы на новое, модное, и в результате и старое ПО стагнировало, и новое было скорее похоже на недоработанное демо, чем на полноценную замену.

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

Знаешь, если кодер насыпет наркоманских идентификаторов, то никакой питон-вей тебя не спасет. И наоборот, на перле можно писать кристально ясный код, хоть он и tmtowtdi. И потом, акробаты умудряются кувыркаться и в питоне, средства для этого имеются.

bread
()
Ответ на: комментарий от Virtuos86

и оно будет работать и делать то, что написано

Да да, любую хрень скомпилит и запустит. А если уж ты там в символе где ошибся - то извините, что написано то и работает. Довольно занятно с одной стороны, вроде как дает тебе полную свободу в стиле «ты разработчик, тебе виднее, раз так написано значит так надо», а не бьет тебя по рукам как какой-нибудь С.

Kronick
()
Ответ на: комментарий от Odalist

Эти языки-детектор гипстоты.

Не фанат хипстоты, но у тебя, справедливости ради, ошибка в логике. Если так наз. тобой «гипстота» кричит на каждом углу про Rust, Nim и Js, то из этого никак не следует, что всякий, кто использует Rust, Nim или Js, обязательно является так наз. тобой «гипстотой».

И вообще, попустись. Я с тобой во многом согласен, но ты растрачиваешь кучу энергии на довольно таки бестолковые срачи. Конечно, регулярно писать о том, что говно является говном необходимо. Но если делать это с такой энергией, как у тебя, то всерьёз тебя скоро воспринимать никто не будет. Да у тебя энергии ни на что больше не останется, превратишься в очередного сетевого тролля.

anonymous
()
Ответ на: комментарий от Odalist

ЭЭ, а с каких это пор Nim хипстерский? Не ну я понимаю там раст, он вообще в кайф и либы есть и свой ЯП на нем легко мутить(сам таким занимаюсь), но, а ним то тут при чем? Его нигде не форсят и юзает мало кто

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

Nim

Насчет Nim может и погорячился. А в принципе, я согласен с адекватным анонимом. Мне нужно мой пыл чуточку убавить.

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

Я инженер и в ваших взаимных гуманитарных обидках не разбираюсь, кто там кого сегодня хипстером назначил и т.п. Давай-ка покритикуй мне с технической т.з. упомянутые языки) Для такого специалиста это не должно составить труда.

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

Я инженер

Тут, на Лоре, 99,9% инженеров, математиков, физиков, программистов, и т.п. Это, конечно, все на словах.

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

Слушай, чудо, так будут от тебя аргументы или предпочтешь как всегда отбрехаться? Свой репозиторий с кодом на перле, кстати, покажешь или не существует такого?)

Clayman ★★
()

Мне непонятна его ниша, может я его плохо знаю, но он реально сдал на всех полях:
Web - PHP, Java и др.
Сценарии - в большинстве случаев это {/bin/sh | /bin/bash} + {sed&awk &etc.}
Где то его еще и Tcl прижал.
В микроконтроллеры тоже нет смысла ставить...
Может заместо TeX его использовать как-то?
Может он универсален...? с какой то уж большущей натяжкой.

Какой-то ископаемый арахноид, - поражающий своей колоссальностью и бесполезностью одновременно.

splinter ★★★★★
()
Ответ на: комментарий от splinter
apt-cache rdepends perl | wc -l
4552
apt-cache rdepends python | wc -l
3338
 apt-cache rdepends tcl | wc -l
50

Tcl прижал, ахахахаохлол. Ты как виндузятник может не в курсе, но у нас тут даже гит местами на перле.

anonymous
()
Ответ на: комментарий от vasya_pupkin

Перл - это где сам кодер потом не может в своей проге ничего понять ?

Даже с комментариями?

Vladimir1982
()
Ответ на: комментарий от splinter

Сценарии - в большинстве случаев это {/bin/sh | /bin/bash} + {sed&awk &etc.}

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

В качестве задач где это нужно - мониторинг. Ну и в плюс ко всему этому - Перл умеет в ООП, из этого можно вынести очень много всего полезного.

Kronick
()

Вышла новая версия rperl. Кто-нибудь пробовал использовать?

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

Конфиг != код какой либо программы или либы

Если конфиг пишется на каком-либо ЯП, то это программа. Ваш КО.
В случае xmonad тем более, потому что это тайловый WM, и искоропки там мало что есть, в сравнении с, например, i3wm, поэтому приходится в конфиге описывать свой кастомный вариант оконного менеджера.

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