Posterous theme by Cory Watilo

Filed under: modern perl

Perl. use strict; use warnings; use features; use Modern::Perl; use common::sense;

Почти каждый Perl-программист знает, что всегда нужно писать:
use strict;
use warnings;
С выходом perl 5.10 еще и:
use features '...';

Некоторые решили, что приходится писать слишком много "буковок". Так появился модуль Modern::Perl и новая веха в развитии Perl 5, получившая одноименное название. Модуль подключает и импортирует в пространство имен прагмы strict, warnings, features и mro. Теперь скрипты должны начинаться со следующей строчки:
use Modern::Perl;
Оказывается, можно пойти дальше и написать так:
use common::sense;

Что это такое? Это почти тоже самое, что и Modern::Perl, только круче :)
use strict qw(vars subs);
use feature qw(say state switch);
no warnings;
Содержимое модуля:
sub import {
   # no warnings   ${^WARNING_BITS} ^= ${^WARNING_BITS};

   # use strict vars subs   $^H |= 0x00000600;

   # use feature   $^H{feature_switch} =
   $^H{feature_say}    =
   $^H{feature_state}  = 1;
}
Преимущество – использует меньше памяти, чем другие решения.

Обоснование и подробности на CPAN'е.


ЗЫ: Вопреки всем убеждениям в своем коде не использую use warnings или -w, я научился чувствовать и понимать, почему я могу этим пренебречь в той или иной ситуации (за что большое спасибо [info]pavel_kudinov ). Так что common::sense мне вполне подходит :)

ЗЫ2: Автор common::sense – Марк Лехманн (AnyEvent, Coro, EV, BDB).


use Perl or die;

JFDI


Original post http://sharifulin.livejournal.com/49970.html

Perl. MooseX::Declare

Второй день уже мучаю MooseX::Declare, постоянно посматриваю в презентацию.
Получается интересно, уже 4я версия кода, с каждой версией абстракция растет и количество килобайт тоже :) Но голова болит еще больше, приходиться "иначе" мыслить, чем прежде.
Пока нравится то, что много интересных фишек (например, собственные типы, классы со вложениями и указания имен как ::Bar, а не полные Foo::Bar, lazy-дефолтные поля), код заставляет тебя не ошибаться, где-то что-то упустил и все п*здец, не работаить :)
Сейчас столкнулся с одной проблемой, сразу не стандартизировал поле, посчитал его произвольным и теперь мучаюсь с разными форматами. Завтра собираюсь написать 5 версию и избавиться от этого. Постоянный рефакторинг – это круто, метки типа XXX и FUCK решают.

Чувствую себя ModernPerl'истом :)

Original post http://sharifulin.livejournal.com/48406.html

Modern Perl

  Стали появляться тенденции к улучшению Perl 5:
  • статья  "Five Features Perl 5 Needs Now" -- 5 фич, нужных сейчас Perl 5: постоянные релизы, продвинутая ОО-модель (Moose, Mouse или autobox), ctypes из Python'а, улучшенная интеграция со CPAN и mod_perlite,
  • ввели распределенный контроль версий для исходников Perl 5 -- Git, теперь каждый желающий может разобраться что и как работает и, конечно же, похачить,
  • набор утилит для git, с помощью которых можно легко создать патч для CPAN-модуля.
  • интервью с разработчиками mod_perlite "CGI is Dead; mod_perlite is Alive!", основная идея mod_perlite: загрузил и все работает (аля mod_php и/или упрощенный mod_perl),
  • создана организация The Englightened Perl Organization (EPO), которая призвана продвигать Perl 5, т.к. неизвестно когда наступит Рождество, т.е. релиз Perl 6.
  • введенно новое понятие -- Modern Perl, основные 2 тезиса:
    • "The best way to write Perl programs in 1991 or 2001 or 2004 isn't necessarily the best way to write Perl programs in 2009" (мой комментарий написан раньше, чем я узнал про Modern Perl)
    • "Your personal style may be different from mine, but you've written in a modern Perl style"
  • опубликван модуль Modern::Perl, который позволяет одной командой использовать Modern Perl: прагмы strict и warnings и особенности perl 5.10 (say, given/when, именнованные регулярные выражения и прочее), модуль очень простой, несколько строк кода.
  • обсуждение Perl Enterprise Edition, Best Practise Perl, Enlightened Perl и Modern Perl, в коментах Modern Perl сравнивают с "Strunk and White"  и проскальзивает формулировка про то, что Perl далеко не write-only язык :)

ЗЫ: не только у меня стали появляются идеи заново популяризировать Perl и это хорошо! :)
Original post http://sharifulin.livejournal.com/42098.html