LINUX.ORG.RU

Perl 5.22.0

 


0

4

Вышла новая значительная версия популярного языка программирования Perl. Основные изменения:

  • Модули CGI и Module::Build убраны из стандартной поставки.
  • Новые битовые операторы для работы со строками: &. |. ^. ~. &= |= ^= &.= |.= ^.=
  • Новый оператор <<>>, работающий как <>, но не обрабатывающий спецсимволы в именах файлов.
  • Новый модификатор регулярных выражений: /n, не позволяющий заполнение скаляров $1, $2 и т.д. для групп метасимволов:
    "hello" =~ /(hi|hello)/;   # $1 is "hello"
    "hello" =~ /(hi|hello)/n;  # $1 is undef
    
  • Новый оператор регулярных выражений: \b
  • Добавлена директива use re 'strict', включающая «строгий» режим для регулярных выражений.
  • Добавлена поддержка Unicode 7.0
  • Вызов prototype() без аргумента теперь использует $_
  • fileno теперь работает с дескрипторами директорий.
  • Новый атрибут :const для анонимных функций.
  • Теперь Perl по умолчанию собирается с -fstack-protector-strong и -D_FORTIFY_SOURCE=2
  • Конвертирование бесконечных чисел и NaN в символы (с помощью pack, «chr» и printf «%c») теперь невозможно.
  • Модуль Safe обновлён до версии 2.38 с исправлением критической уязвимости.
  • Пустой срез списка отныне будет возвращён только в том случае, если список был пустым.
  • Числа с плавающей точкой отныне могут содержать бесконечность (как отрицательную, так и положительную) и NaN.
  • Добавлена поддержка шестнадцатеричныхлитералов с плавающей точкой (например, 0x1.23p-4).
  • Действие прагмы use encoding теперь ограничено лексической областью.
  • Импортирование функций через use UNIVERSAL '...' теперь приводит к ошибке.
  • Многочисленные улучшения производительности, обновления входящих в стандартную поставку модулей и многое другое.

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



Проверено: fallout4all ()
Последнее исправление: cetjs2 (всего исправлений: 5)

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

PSGI или Perl Web Server Gateway Interface - это спецификация, предназначенная для отделения среды веб-сервера от кода веб-фреймворка. PSGI не является программным интерфейсом (API) для веб-приложений.

Ёжин Бажин! А на сервере (коробке с железками, вы её ещё процессором называете) нет интерпретатора perl'а?
PSGI для того и придуман, чтоб подключаться к веб-серверу разными способами, хоть через mod_fastcgi, хоть через Копенгаген.

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

«меня никто не бойкотирует»

Это потому что ты - Неуловимый Джо! :)

PS: googel перестал бойкотировать Няш! Теперь ты даже глубоким зонтом похвастаться не можешь :)))

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

скорее уж так:

http://search.cpan.org/~sukria/Dancer2-0.05/lib/Dancer2/Deployment.pod#Using_...

Так это простой форвардер запросов на application-сервер. Хоть и можно с apache, но иакие дела лучше делать с nginx если есть возможность. Это не то же самое что и случай когда например сам apache выступает application-сервером или роутером запросов с частичной или полной обработкой.

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

Ясное дело.

сам apache выступает application-сервером или роутером запросов с частичной или полной обработкой

Сейчас это практически не актуально - разве что в поддержке legacy.

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

Зачем запускать под апачем?

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

Ну и как твой Windows95 в 2015 ? Всё штабильно или глючит?

Это какой-то сакральный сервер?

Да, сегодня это наиболее стабильное и законченное решение.

Сегодня - это кусок жЫрного шита, тормозной, глючный, делаюший кучу не нужного и НЕ делающий то, что сегодня нужно! аЗЪ! Если ты только из тюряги или криокамеры - первый год не рассуждай, а только задавай вопросы :)

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

Я смотрю вы тот еще дилетант.

Oh, yyeeeaaaahhhh! ЫгспЁрды в трэде!:-)

1. Мне говорите что modperl не нужен .

Исправил. Просто не нужен.

2. То есть ваше PSGI приложение просто не запустится без LoadModule perl_module /usr/lib/apache2/modules/mod_perl.so

Муха-ха :) Если ты только притворяешься дураком - у тебя к этому талант! :)

Хватит отнимать мое время.

Не-не, не уходи! Без тебя трэд кончится, а так хоть поржу :)

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

Так это простой форвардер запросов на application-сервер. Хоть и можно с apache, но иакие дела лучше делать с nginx если есть возможность

УРАА!! ЗАРАБОТАЛА!!! Дошло таки! :) А я говорил сразу - ему надо с другой стороны от головы объяснять. Через голову ему доходит медленно :)))

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

Сегодня - это кусок жЫрного шита, тормозной, глючный, делаюший кучу не нужного и НЕ делающий то, что сегодня нужно!

Как-то голословно, разверните подробнее?

bananym
()

http://benchmarksgame.alioth.debian.org/u64q/perl.html То есть перловка всего в 2-3 раза быстрее пайтончика, да и поди не PyPy гонялся, который в среднем как раз раза в 3 быстрее обычного. Даже если сабж стал быстрее на треть, это ни о чем.

Так какой тогда смысл маяться птичьим синтаксисом?

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

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

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

питониста не видел, обязательно сломал бы ему нос

Возблагодари Господа, что не видел. Он бы тебя задушил, как цыпленка.

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

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

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

набрал в поисковике «душить змея», поржал

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

perl лаконичен и это прекрасно

Да уж.

#!/usr/bin/perl -w                                      # camel code
use strict;

                                           $_='ev
                                       al("seek\040D
           ATA,0,                  0;");foreach(1..3)
       {<DATA>;}my               @camel1hump;my$camel;
  my$Camel  ;while(             <DATA>){$_=sprintf("%-6
9s",$_);my@dromedary           1=split(//);if(defined($
_=<DATA>)){@camel1hum        p=split(//);}while(@dromeda
 ry1){my$camel1hump=0      ;my$CAMEL=3;if(defined($_=shif
        t(@dromedary1    ))&&/\S/){$camel1hump+=1<<$CAMEL;}
       $CAMEL--;if(d   efined($_=shift(@dromedary1))&&/\S/){
      $camel1hump+=1  <<$CAMEL;}$CAMEL--;if(defined($_=shift(
     @camel1hump))&&/\S/){$camel1hump+=1<<$CAMEL;}$CAMEL--;if(
     defined($_=shift(@camel1hump))&&/\S/){$camel1hump+=1<<$CAME
     L;;}$camel.=(split(//,"\040..m`{/J\047\134}L^7FX"))[$camel1h
      ump];}$camel.="\n";}@camel1hump=split(/\n/,$camel);foreach(@
      camel1hump){chomp;$Camel=$_;y/LJF7\173\175`\047/\061\062\063\
      064\065\066\067\070/;y/12345678/JL7F\175\173\047`/;$_=reverse;
       print"$_\040$Camel\n";}foreach(@camel1hump){chomp;$Camel=$_;y
        /LJF7\173\175`\047/12345678/;y/12345678/JL7F\175\173\0 47`/;
         $_=reverse;print"\040$_$Camel\n";}';;s/\s*//g;;eval;   eval
           ("seek\040DATA,0,0;");undef$/;$_=<DATA>;s/\s*//g;(   );;s
             ;^.*_;;;map{eval"print\"$_\"";}/.{4}/g; __DATA__   \124
               \1   50\145\040\165\163\145\040\157\1 46\040\1  41\0
                    40\143\141  \155\145\1 54\040\1   51\155\  141
                    \147\145\0  40\151\156 \040\141    \163\16 3\
                     157\143\   151\141\16  4\151\1     57\156
                     \040\167  \151\164\1   50\040\      120\1
                     45\162\   154\040\15    1\163\      040\14
                     1\040\1   64\162\1      41\144       \145\
                     155\14    1\162\       153\04        0\157
                      \146\     040\11     7\047\         122\1
                      45\15      1\154\1  54\171          \040
                      \046\         012\101\16            3\16
                      3\15           7\143\15             1\14
                      1\16            4\145\163           \054
                     \040            \111\156\14         3\056
                    \040\         125\163\145\14         4\040\
                    167\1        51\164\1  50\0         40\160\
                  145\162                              \155\151
                \163\163                                \151\1
              57\156\056

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

сколько раз я душил змей

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

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

PSGI для того и придуман, чтоб подключаться к веб-серверу разными способами, хоть через mod_fastcgi, хоть через Копенгаген.

Вы же сами процитировали что PSI - это спецификация, то есть интерфейс. Да и вы сами привели пример с использованием modperl на мой вопрос «как вы собираетесь запускать PSGI-приложение под apache?». Вы забавный. Если вы не занимаетесь разработкой модуля mod_dancer2 под апач, то нам в принципе говорить с вами больше не о чем :-)

Ёжин Бажин! А на сервере (коробке с железками, вы её ещё процессором называете) нет интерпретатора perl'а?

Не нужно врать и навязывать свои фантазии. Я уже лет 10 как не слышал чтобы люди называли «коробку с железками» процессором. Это ваша очередная жалкая попытка утведить проигранную вами позицию :-)

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

Ну и как твой Windows95 в 2015 ? Всё штабильно или глючит?

Windows и стабильно. Вы видимо глуповаты.

Сегодня - это кусок жЫрного шита, тормозной, глючный, делаюший кучу не нужного и НЕ делающий то, что сегодня нужно! аЗЪ!

Это не так.

Если ты только из тюряги или криокамеры - первый год не рассуждай, а только задавай вопросы :)

Если еще раз мне что-нибудь будешь советовать - я просто посоветую тебе отсосать. Вы заслуживаете именно такое обращение из-за своего бестолкового поведения.

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

УРАА!! ЗАРАБОТАЛА!!! Дошло таки! :) А я говорил сразу - ему надо с другой стороны от головы объяснять. Через голову ему доходит медленно :)))

Довольно бестолково особенно если вчиаться в вопрос: «Ну и как вы собираетесь запускать PSGI-приложение под apache ?»

Вы привели пример с запуском как раз под apache который использует modperl. Форвар на application-сервер - это не запуск под apache, это запуск ЗА apache. Разница огромная в том числе и в производительности.

Вообщем школьник слился по всем фронтам: много букв и крику, но все его тезисы лишь болтовня связанная с ущемленным ЧСВ.

anonymous
()

Сабж уже научили по-человечески оперировать отдельными символами? Все ж таки для обработки текста делали, а недалече от awk'а-то уполз.

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

Не люблю извращения, и, как следствие, перл. :-)

у вас извращенное представление о perl, т.к. свобода - это не извращение

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

сам apache выступает application-сервером или роутером запросов с частичной или полной обработкой

Сейчас это практически не актуально - разве что в поддержке legacy.

Я бы тут очень сильно поспорил. Используя apache можно решить множество задач проверенными рецептами путем включения и настройки нужного модуля (не нужно включать 100500+ модулей по умолчанию). Вцелом же, кому конечно как, но вводить на сервере дополнительно application-сервера помимо apache как-то не совсем выглядит разумным. Попробуйте познакомиться с mpm-модулями apache, особенно с event.

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

а смысл? глобально по дистрибутивам это ещё не скоро расползётся. у меня до сих пор куча debian7, в котором 5.14, а переход на debian8 с 5.20 тормозится как раз мод_перлом, чтоб его разработчикам икнулось. к выходу debian9 будет уже 5.26, поэтому собирать 5.22 — странная идея.

Смысл в embed. Понятно, что не все этим занимаются/пользуются. Мне лично это нужно. Так что, почти всегда весь софт вертится на свежем перле.

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

Классика:

my $letter = substr $str, 0, 1;
vs
char letter = c_string[0];
На substr, поддерживая вопрошающего, реально не оч. удобно во многих случаях.

gh0stwizard ★★★★★
()
Последнее исправление: gh0stwizard (всего исправлений: 1)
Ответ на: комментарий от bananym

у вас извращенное представление о perl, т.к. свобода - это не извращение

У вас извращенное представление о свободе, т. к. свобода - это не perl. Свобода - это когда если кто-то захотел создать свой язык, то он его создаёт без предрассудков, навязанных задротами с их идиомами. Свобода - это когда среди кучи созданных языков выбирается тот, который по нраву близок. Свобода - это когда можно критиковать любой язык за его ущербность и несостоятельность, за его тупиковость и неудобство, или же за другие какие-либо характеристики. Ну и т.д.

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

но вводить на сервере дополнительно application-сервера помимо apache как-то не совсем выглядит разумным

Да было дело, но в итоге удобнее/гибче оказалась связка frontend proxy/balancer + standalone backends // don't put all your eggs in one basket :)

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

этж в каких? (хотелось бы что-то из практики)

Сейчас конкретных примеров привести не могу. Такая задачка всплывает нечастно. Ну, как пример, это поиск всех \n(может быть любой символ) в киллометровых строках с последледующими действия, типа выдерания строк/слов/букв исходя из этих точек. Сразу оговорюсь, регепс в некоторых случаях а) недопустим в силу специфики и быстродействия (index по символу работает в разы быстрее) б) неудобен и решение усложняется в 10-ки раз (прочитать такие регепсы сможете только вы, а через 6 месяцев и вы не прочитаете :).

Если нужна конкретика, то рекомендую взять любой задачник по сишке и попробовать воспроизвести в перле на substr + index. И ставьте условие, что если прикоснетесь к регепсам, то задание вы провалили :)

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

это когда можно критиковать любой язык..

Так давайте по существу, а то только поток эпитететов: «извращение», «задротами с их идиомами», «ущербность и несостоятельность», «тупиковость и неудобство».

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

Никак нет, братишь, вот тебе крест. Но это к новости не относится.
P.S. зато нормы ГТО сдам :'(

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

Как-то сложно без конкретного примера понять неудобство substr/index.

то рекомендую взять любой задачник по сишке и попробовать воспроизвести в перле

Давайте вы найдете задачку, а я напишу на Perl решение и сравним с решением на C?

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

Как-то сложно без конкретного примера понять неудобство substr/index.

Сейчас сложно. Как придет время, сделаете выводы самостоятельно.

Давайте вы найдете задачку, а я напишу на Perl решение и сравним с решением на C?

Нет, я не любитель давать задачки «ни о чем». Находите реальные задачи (те, за которые платят или «капает» слава), решайте, делайте выводы.

И вообще, дергайте анона, который все это высказал. А мне надо отдыхать :))

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

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

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

Так давайте по существу, а то только поток эпитететов: «извращение», «задротами с их идиомами», «ущербность и несостоятельность», «тупиковость и неудобство».

Да чего там говорить то? По какому существу? Если вы за свободу, то пусть каждый имеет своё мнение. Моё мнение, что перл - всего лишь ещё одна попытка ещё одного программиста-лингвиста по именни Ларри решать проблемы так, как он считает нужным. Перл, отличии от Лиспа, не имеет строгого математического обоснования. В основе Лиспа лежит хороший теоретический фундамент - теория лямбда-исчисления Чёрча. Именно поэтому, я, свободный борщевик-маргинал, считаю, что Перл - это плохо, а Лисп - это хорошо. Вот и весь сказ.

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

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

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

Ларри не писюн простой, а лингвистика не наука? Чего ты вообще набежал в этот тред? Тебе здесь не рады.

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

Да чего там говорить то? По какому существу?

По существу вашего мнения. Каких lisp-возможностей по-вашему не хватает в perl?

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

По существу вашего мнения. Каких lisp-возможностей по-вашему не хватает в perl?

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

anonymous
()

всего 4 страницы срача, как-то тухловато в этот раз. В новости про перл-5.20 набросов было поболе

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

Эстетические соображения мне понятны (сам имел дело только с elisp). Чтож, пока )

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

Классика:

my $letter = substr $str, 0, 1;

vs

char letter = c_string[0];

На substr, поддерживая вопрошающего

vs

$letter = unpack "xa", $str;

Ну, как пример, это поиск всех «\n»(может быть любой символ) в киллометровых строках с последледующими действия, типа выдерания строк/слов/букв исходя из этих точек.

$i = 0;

while(1)
{
  $letter = unpack "x${i}a", $str; # или $letter = substr $str, $i, 1;
  $letter or last;
  $letter eq "\n" ? do{
    pos($str) = ++$i;
    $str=~/\G(\w+)/o and (
	push(@result, [$i => $1]),
	$i += length $1,
    );
  } : (
    $i++
  );
};

По-моему ничего сложного нет.

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

Отличный, кстати, пример того, как лишняя «свобода» приводит к изящной, но совершенно нечитаемой каше. Если язык разрешает ++i и i++, то обязательно захочется ввинтить это где-нибудь. И всё прочее тоже. В итоге глаз не скользит по ясной структуре, а натыкается на непонятное; мозг вязнет, пытаясь восстановить мысль автора. Вместо самой очевидной конструкции if/else появляются `test ? (test and (expr, expr)) : expr` — в это надо вчитываться, а не пробегать глазами.

Искусство? Да. Производство? Нет.

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

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

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