Как стать автором
Обновить
0

Perl *

Высокоуровневый интерпретируемый динамический язык

Сначала показывать
Порог рейтинга
Уровень сложности

ActiveState приобрела Phenona

Время на прочтение1 мин
Количество просмотров957
Сегодня зарегистрированные пользователи Phenona получили письмо от создателя сервиса Даниила Кульченко (Daniil Kulchenko) с анонсом покупки сервиса компанией ActiveState.
подробности
Всего голосов 7: ↑6 и ↓1+5
Комментарии3

Многопоточный сервер на Perl? Легко!

Время на прочтение3 мин
Количество просмотров14K
Иногда возникает необходимость написать какой-то простенький TCP либо UDP сервер. Например, сейчас у меня вполне успешно в production трудится собственная реализация DHCP (существующие не подходят из-за специфики). Обычно это делается просто — один цикл, слушаем сокет — и вуаля! Но не всегда «тупой» подход оправдан (нужно что-то более сложное — работа в несколько потоков, например), а использование тяжелой артиллерии слишком затратно.

Интересно? Добро пожаловать под кат.
Осторожно! Внутри Perl-код.
Всего голосов 69: ↑56 и ↓13+43
Комментарии62

Выпущен Perl 5.14

Время на прочтение1 мин
Количество просмотров756
Новая версия Perl — 5.14 — была официально выпущена 14 мая после успешного периода тестирования. Это первый релиз Perl 5, выпущенный по новому графику — выпуск стабильных версий теперь будет происходить раз в год.

В этой версии присутствует целый ряд улучшений и изменений, полный список которых можно найти по адресу http://perl5.git.perl.org/perl.git/blob/HEAD:/pod/perldelta.pod. Среди основных изменений:
  • поддержка Юникода 6.0, наряду со многими усовершенствованиями функций, связанных с Юникодом;
  • улучшена поддержка IPv6;
  • значительно упрощена автоконфигурация CPAN-клиента;
  • новый флаг /r, который делает замены s///, не изменяя содержимое рабочей переменной;
  • новые флаги регулярных выражений, позволяющие указать, что выражение нужно компилировать как ASCII или Юникод;
  • новый синтаксис «package Foo { }»;
  • по сравнению с предыдущими релизами меньше используется память и процессор;
  • множество исправлений ошибок, большое число которых связано с работой Дэйва Митчелла, который исправил некоторые самые важные ошибки на грант The Perl Foundation.
Выпуск этой версии знаменует официальное прекращение поддержки Perl 5.10.

Разработка версии заняла один год с момента выхода Perl 5.12.0. 150 авторов добавили и изменили около 550 тысяч строк в почти 3 тысячах файлах. Эта версия обязана своим выпуском сообществу CPAN, а также всему сообществу Perl. Отдельная заслуга принадлежит Джессу Винсенту — релиз-менеджеру Perl 5.14.
Всего голосов 41: ↑38 и ↓3+35
Комментарии23

Mojolicious v1.12

Время на прочтение2 мин
Количество просмотров2.8K
Я обнаружил что релиз замечательного перлового фреймворка Mojolicious на Хабре остался совершенно незамеченным. А тем временем, уже доступна версия v1.12, это прискорбно, т.к. теперь на перле стало писать проще чем никогда. Покажу это на реальном примере.
Читать дальше →
Всего голосов 25: ↑20 и ↓5+15
Комментарии24

Истории

Perl::Critic + Subversion = внедрение единых практик кодирования в команде

Время на прочтение13 мин
Количество просмотров2.8K
Язык Perl хорошо известен той степенью свободы (a.k.a. TIMTOWTDI), которую он даёт программисту в выборе способа решения той или иной задачи. У этой медали, к сожалению, есть и оборотная сторона, которая может проявиться при командной разработке крупных проектов. Если в команде нет единых практик кодирования и каждый из разработчиков придерживается принципа TIMTOWTDI, то новичку в таком коллективе не позавидуешь.

В 2005 году активный участник Perl-сообщества Дамиан Конвей (Damian Conway) опубликовал книгу Perl Best Practices, в которой собрал и структурировал 256 рекомендаций по написанию понятного, надёжного и поддерживаемого Perl-кода. Краткую шпаргалку с выжимкой из книги можно скачать отсюда.

Годом позже, Jeffrey Thalhammer и группа товарищей выпустила Perl::Critic — гибкий и расширяемый фреймворк, позволяющий автоматизировать проверку Perl-кода на предмет его соответствия большей части рекомендаций из книги Конвея, а также многих других полезных практик.

Perl::Critic подаётся под разными соусами: во-первых, в комплекте с модулем поставляется одноимённая утилита — perlcritic, во-вторых, проверку кода можно оформить в виде тестов с помощью Test::Perl::Critic либо Test::Perl::Critic::Progressive, в-третьих, критик легко интегрируется в VIM и Emacs.

В этом рецепте я расскажу о том как проверять Perl-код на лету при коммите в Subversion-репозиторий. Bon Appétit!

Читать дальше →
Всего голосов 25: ↑22 и ↓3+19
Комментарии9

Универсальный шаблонный движок за 1 минуту из подручных материалов

Время на прочтение3 мин
Количество просмотров1.8K
Шаблон

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

Не стоит забывать, что применение шаблонов далеко не ограничено WEB-ом.
Это генерация различного вида отчётов, генерация кода программ на различных языках, генерация исходных данных для обработки и многое другое.
Вообще, шаблоны хочется применить везде, где много текста и мало логики.

В раздумьях, как бы это сделать побыстрее и подешевле, не следует обманывать себя (в основном, на раннем этапе) мыслями типа «да у меня статический текст, только надо приклеить шапку», «тут нужен только счётчик», «мне надо только вывести дату» и т.д.
Сначала — шапка и счётчик, дальше будет условная вставка блоков (if), потом понадобится генерация таблиц (тут уже нужны циклы и массивы), далее потянутся строковые операции и все остальные конструкции нормального языка программирования.
Читать дальше →
Всего голосов 12: ↑7 и ↓5+2
Комментарии13

Видео с Perl-воркшоп «Saint Perl — 2» (Санкт-Петербург), 18 декабря

Время на прочтение1 мин
Количество просмотров735
Всего 10 выступлений, к сожалению выложили пока только 6 (остальное в процессе оформления)

1. Russian Perl 6 book — call to envolve and test, докладчик — Шафиев Наим
Существует проект по переводу официальной книги Perl 6 на русский язык. Проект испытывает острую нехватку в переводчиках и тестерах книжки.

2. AnyEvent::HTTPBenchmark, докладчик Шафиев Наим
Создание утилиты нагрузочного тестирования, само по себе тоже являеться утилитой нагрузочного тестирования

3. Morpheus configuration engine — новый подход к конфигурации чего угодно‎, докладчик Матюхин Вячеслав

4. Perl IDEs, докладчик Шафиев Наим

5. Экономим на спичках, или Подробнее о константах, докладчик Евдокимов Денис (Green)

6. CODA — новая система компьютерной безопасности, докладчик Баклановский Максим
Про Perl мало, даже очень мало.

UPD:

7. Парадигма аспектно-ориентированного программирования и ее реализация в Perl, докладчик Александр Котов

8. Как не хранить сессии, докладчик Алексей Капранов

К сожалению докладчики: Erica Gasparini, Алексей Капранов, Вячеслав Матюхин, Денис Евдокимов (Green), так и не прислали презентации, поэтому их доклады пока будет только видео, возможно они её исправятся.

Спасибо организаторам и докладчикам конференции.
Всего голосов 25: ↑21 и ↓4+17
Комментарии17

Нефункциональное модульное тестирование — «главное чтобы блестел». Часть 2

Время на прочтение2 мин
Количество просмотров2.5K
В прошлом году я написал небольшую заметку о нефункциональном тестировании — т.е. о тестах пытающихся выявить уродливый и сложный в сопровождении код. Конечно такие тесты не гарантируют идеального кода, но какой-то минимальный уровень качества обеспечат т.к. несмотря на очевидность требований этих тестов многие их игнорируют и потом приходиться разбираться в процедурах на 5 000 строк.
Заметка в ЖЖ не вызвала ожидаемой мной обратной связи (хотелось бы знать что я упустил), поэтому несмотря на сопротивление хабра решил выложить продолжение тут (спасибо людям добавившим кармы).
Со времени публикации первой заметки произошли следующие изменения:
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии17

Пишем icq-бот на perl

Время на прочтение8 мин
Количество просмотров2.9K
Если вы не знаете, но хотите узнать, как сделать программу, которая постоянно висит в памяти и что-то нужное периодически выполняет, и при этом вы пишете на языке perl — попытаюсь рассказать об этом как можно более понятно.
Я сам люблю подробные инструкции, которые подразумевают, что человек, её читающий, не обязан знать всё, что было пропущено. Пусть лучше он сам пропустит то, что знает и так. Тем более, что о чём-то он может иметь ошибочное представление.

Ну а чтобы не было скучно, совместим этот пример с ещё одной темой — icq, чтобы у нас получился icq-bot.

Читать дальше →
Всего голосов 52: ↑41 и ↓11+30
Комментарии13

Perl 23 года с нами

Время на прочтение1 мин
Количество просмотров596
image
Языку Perl исполнилось 23 года. В честь этого с 1 по 24 декабря разработчики языка Perl организовали марафон, в рамках которого на страницах блога каждый день один из разработчиков делился какими-то практическими навыками, демонстрирующими те или иные возможности Perl 6.
Завершила марафон статья Ларри Уолла, в которой он подвел итоги 23-летней истории языка Perl.
Поздравляю всех разработчиков использующих этот замечательный язык.
Всего голосов 64: ↑54 и ↓10+44
Комментарии32

Perl-воркшоп «Saint Perl — 2» в Санкт-Петербурге, 18 декабря

Время на прочтение2 мин
Количество просмотров747
Меньше чем через две недели, 18 декабря, состоится шестой российский Perl-воркшоп «Saint Perl — 2» в Санкт-Петербурге.

Сайт: event.perlrussia.org/saintperl2

Еще не поздно зарегистрироваться или подать заявку на доклад. Upd: появились новые доклады.

На сегодня у нас такие выступления:

  • Martin Berends. ‎Perl 6 Implementations in December 2010‎
  • Martin Berends. ‎Perl 6 Database Interfacing‎
  • Алексей Капранов (‎kappa‎). ‎Как не хранить сессии
  • Александр Котов. ‎Парадигма аспектно-ориентированного программирования и ее реализация в Perl‎
  • Вячеслав Матюхин. ‎Morpheus — новый подход к конфигурации чего угодно‎
  • Максим Баклановский. ‎CODA — новая система компьютерной безопасности
  • Наим Шафиев — Perl IDEs‎

Расписание будет составлено со дня на день, а пока можем сообщить, что ориентировочно регистрация начнется в 10:30, а открытие конференции — в 11:00.

Те, кто приезжают из других городов, могут найти подходящую гостиницу на сайте мероприятия: event.perlrussia.org/saintperl2/booking.html, там же показано расстояние от гостиницы до место проведения.

Билет на поезд — на сайте ticket.rzd.ru, на самолет — awad.ru.

Читать дальше →
Всего голосов 24: ↑17 и ↓7+10
Комментарии4

NetBeans IDE — голосуем за поддержку Perl

Время на прочтение1 мин
Количество просмотров1.6K
Я уверен, что многие из нас сталкивались с NetBeans — в обзорах ли, — или же просто в поисках IDE.

Конечно, тру-перловоды используют vim, Eclipse или менее популярные штуки, — но крайне бы хотелось увидеть поддержку Perl в NetBeans.

Лично мне, в силу своих привычек, приходится использовать два редактора — Komodo Edit для Perl и NetBeans для Java/PHP — и я проникаюсь NB всё больше и больше — тормозит меньше, чем Komodo, обладает вагоном фич и маленькой тележкой приятностей, умеет «рефакторить» и тайдить код, приятное и логичное разворачивание проектов — в общем-то я не буду перечислять все его Features, — просто советую скачать да посмотреть — благо, что он кроссплатформенный.
Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Комментарии8

Необычный оператор диапазона

Время на прочтение6 мин
Количество просмотров4.8K
Должен предупредить, что это ещё одна статья, не содержащая никаких откровений. Для тех супер-гиков, которые назубок знают весь perldoc, она будет абсолютно бесполезной, так что, уважаемые супер-гики, можете проходить мимо и не информировать, что всё это есть в доках. Я и так это знаю. :-) Моя статья для всех остальных, для тех, кто весь perldoc целиком либо не осилил, либо осилил, но не понял, либо понял, но не запомнил.

Я думаю, многие знают о так называемом операторе диапазона, записывающемся как .. (две точки), с помощью которого можно быстро создавать массивы из набора последовательных элементов. Например, следующий код создаёт массив из 35 чисел: 3, 4, 5, …, 37:
my @arr = 3 .. 37;
Помимо чисел можно использовать строки: в этом случае для генерации элементов массива будет выполняться так называемый магический инкремент (например, можно задать диапазон букв: 'a' .. 'z').

Однако оператор диапазона может использоваться и в скалярном контексте, принимая в качестве операндов булевские выражения и возвращая булевский результат. И вот здесь начинается самое интересное, потому что это оператор с состоянием: результат операции будет зависеть не только от значений левого и правого операндов, но ещё и от истории вызовов данного выражения!
Читать дальше →
Всего голосов 45: ↑36 и ↓9+27
Комментарии20

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн

Этот загадочный while…

Время на прочтение3 мин
Количество просмотров6.7K
«Все потребности в нем заложены, какие только бывают на свете. И все эти потребности он может удовлетворить. С помощью нашей науки, разумеется.»
А. и Б. Стругацкие


Я думаю, многим из Perl-программистов знакома следующая конструкция построчного чтения содержимого файла:
while (<FILE>) {
    # do something
}
Этот код стал настолько привычным, что многие даже не задумываются, а как же он, собственно, работает. В данной статейке я опишу одну особенность, о которой весьма полезно помнить.
Читать дальше →
Всего голосов 62: ↑49 и ↓13+36
Комментарии65

Особенности национальных выражений

Время на прочтение2 мин
Количество просмотров1K
Захотелось мне поделиться с хабравчанами-перловодами одним интересным случаем, произошедшим у нас на работе. В процессе ревизии старого кода была обнаружена некая загадочная конструкция (здесь и далее реальный код несколько сокращён и приглажен):
sort { my ($x, $y) = ($a, $b); ($x =~ s{/}g) <=> ($y =~ s{/}g); } @array;
Казалось бы, обычная сортировка с переопределённой функцией сравнения. По изначальной задумке автора здесь должна была быть сортировка массива строк по количеству прямых слэшей в этих строках (известно, что выражение замены возвращает в качестве значения количество произведённых замен), однако что-то в этой функции не то. Вроде бы, «заменительная» часть выражения s/pattern/replace/g никогда не была опциональной, однако именно это мы видим в выражениях $a =~ s{/}g. Как же оно работает? Вот с этим мы сейчас и будем разбираться.
Читать дальше →
Всего голосов 46: ↑39 и ↓7+32
Комментарии54

Прогресс-индикатор со стеком

Время на прочтение5 мин
Количество просмотров1.2K
В работе мне нередко случается реализовывать долгие процессы, где не обойтись без прогресс-индикатора. Проблемы начались, когда процессы стали слишком сложными, но при этом хотелось иметь один непрерывный прогресс-индикатор для всего процесса. К примеру, процесс может состоять из вызовов функций Asub, Bsub и Csub, каждая из которых выполняется довольно долго (скажем, примерно 10%, 20% и 70% общего времени). Пусть Asub содержит два цикла, идущих подряд, Bsub несколько вложенных циклов, а Csub один цикл, но при этом в середине этого цикла вызывает Asub. Решая задачу в лоб, можно довести код до такого состояния, что треть всех строчек будет вычислять текущий процент и определять, пора ли его обновлять в UI, а функция Asub принимать дополнительные параметры, чтобы определить, какой диапазон процентов ей отображать (от 0 до 10, если вызвана из основного процесса или какой-то другой, если вызвана изнутри Csub). В результате код теряет читаемость, а поддерживать его становится сложнее. И нас ждут приятные минуты, когда мы захотим повторно использовать Bsub в другом месте, но уже не в середине, а в конце общего процесса, так что выводимые ей проценты от 10% до 30% будут не к месту. Я пришёл к выводу, что с этим надо что-то делать.
Читать дальше →
Всего голосов 38: ↑28 и ↓10+18
Комментарии10

Mini-FAQ по Perl (Частые вопросы, ЧаВо)

Время на прочтение4 мин
Количество просмотров19K
Меня часто спрашивают, как я учил Perl — какие книги читал, какие сайты посещал и так далее. Многие считают, что Perl имеет сложный синтаксис, и потому не хотят или бояться его учить. В этом FAQ я хотел бы поделиться своим мнением относительно языка Perl.
Читать дальше →
Всего голосов 71: ↑58 и ↓13+45
Комментарии182

PSGI — интерфейс между web-серверами и web-приложениями на perl

Время на прочтение3 мин
Количество просмотров5.1K
Не так давно появилась спецификация интерфейса между web-серверами и приложениями/фреймворками на perl PSGI — Perl Web Server Gateway Interface Specification. PSGI добавляет слой абстракции, позволяющий не заботиться о конкретном способе подключения к web-серверу, и реализовать единственный интерфейс для спецификации. Запустить такое приложение можно на cерверах, поддерживающих PSGI — на данный момент это Plack (набор серверов и утилит), nginx (с патчем для поддержки PSGI и встроенным perl) и Apache с mod_psgi.
Читать дальше →
Всего голосов 21: ↑17 и ↓4+13
Комментарии83

Компиляция Perl под Windows

Время на прочтение1 мин
Количество просмотров20K
Под Microsoft Windows существует несколько популярных дистрибутивов Perl.
Это Strawberry Perl и ActivePerl. Первый предназначен исключительно для Windows, второй собирается под различные платформы (полный список можно найти на официальном сайте). Важно учесть, что в ActivePerl, модули распространяются в уже готовом виде, и бывает так, что приходится ждать пока обновят репозитории.

В этом небольшом HowTo я расскажу, как подготовить рабочую среду Perl из сорцов.

Читать дальше →
Всего голосов 23: ↑18 и ↓5+13
Комментарии29