Показаны сообщения с ярлыком perl. Показать все сообщения
Показаны сообщения с ярлыком perl. Показать все сообщения

понедельник, 14 февраля 2011 г.

Прелести Цепочек (chain) в фреймворке Catalyst

Цепочки в Catalyst это последовательность методов, позволяющая работать с сотавными урлами вида
 
/somewhere/*/somewhat/new
/somewhere/*/somewhat/*/edit
/somewhere/*/somewhat/list
/somewhere/*/somewhat/*/delete

среда, 9 февраля 2011 г.

DBIx::Class переопределение основных методов класса

Довольно часто возникает необходимость вместе с запросом к базе произвести ещё какие либо действия. Причём произвести их для любого запроса данного типа (INSERT, SELECT и пр.). Ну например, нужно налету преобразовывать кодировку таблицы или столбца таблицы или при сохранении записи закодировать одно из полей, а при считывании раскодировать. Ну или подсунуть время с изменённым часовым поясом... в общем много применений.

Так вот, всё это очень легко делается для DBIx классом DBIx::Class::Row Он содержит все низкоуровневые вызовы основных методов работы с DBIx::Class::ResultSource объектами.

суббота, 22 января 2011 г.

Catalyst. Генератор ссылок $c->uri_for Часть 1

Вольный перевод документации

$c->uri_for()

Одной из полезных способностей фреймворка Catalyst является способность тасовать страницами приложения не опасаясь что всё поломается, т.е. проще говоря, - болье нет проблем со ссылками в шаблонах страниц. Например, у вас есть приложение работающее по адресу http://www.domain.com/Calendar и у этого приложение большая вложенность "/Calendar/2010", "/Calendar/2011/01" и т.д. Если вы переносите своё приложение на другой домен, а может быть ещё вдобавок меняете расположение приложения отностительно корня "http://www.mydomain.com/Tool/Calendar" то раньше все ссылки ломались.

вторник, 11 января 2011 г.

Perl и динамические регулярные выражения

Нашёл тут у себя старый код, который решал интересную задачу поиска произвольно вложенных конструкций с помощью регулярных выражений. Эх! За что люблю Perl, так это за то что в нём такие мощные regexp'ы. Решение было подсмотрено в книге Дж.Фридла "Регулярные выражения" и называется это решение "Динамические регулярные выражения".

Regexp для проверки правильности вложенности скобок в строке текста выглядит вот так

my $regex;
$regex = qr/ (?:[^()]+ | \( (??{ $regex }) \) )* /x;

if ( $text =~ m/$regex/ ) {
    print "строка валидна\n";
}

суббота, 13 ноября 2010 г.

Паттерны проектирования. Perl. Абстрактная фабрика.

Абстрактная фабрика представляет собой интерфейс для создания взаимосвязанных или взаимозависимых объектов, не специфицируя их конкретных классов.