Я обнаружил что релиз замечательного перлового фреймворка Mojolicious на Хабре остался совершенно незамеченным. А тем временем, уже доступна версия v1.12, это прискорбно, т.к. теперь на перле стало писать проще чем никогда. Покажу это на реальном примере.
Недавно меня попросили написать простенький скрипт — запрашивать у гугла количество проиндексированных страниц сайта. Про Mojo* я уже знаю давно, но все никак не доходили руки его попробовать где-нибудь. Скрипт в примере ниже запускается в cgi, хотя можно крутить как под mod_perl, так и под fastcgi.
Я использовал облегченную lite-версию, скрипт намеренно упрощен, для того чтобы показать идею как просто писать под Mojo* и это действительно рабочий скрипт, а не вымученный синтетический пример из руководства:
Вот и все, проще даже чем на php :)
PS: совсем забыл упомянуть что у Mojolicious появилась вменяемая документация, с примерами: http://mojolicio.us/perldoc
PPS: фреймворк активно обновляется и как любезно заметил fuksito уже появилась версия 1.16, в которой исправлена серьезная уязвимость
Недавно меня попросили написать простенький скрипт — запрашивать у гугла количество проиндексированных страниц сайта. Про Mojo* я уже знаю давно, но все никак не доходили руки его попробовать где-нибудь. Скрипт в примере ниже запускается в cgi, хотя можно крутить как под mod_perl, так и под fastcgi.
Я использовал облегченную lite-версию, скрипт намеренно упрощен, для того чтобы показать идею как просто писать под Mojo* и это действительно рабочий скрипт, а не вымученный синтетический пример из руководства:
#!/usr/bin/perl use strict; use Mojolicious::Lite; use Mojo::UserAgent; get '/' => sub { my $self = shift; my $site = $self->param('site'); # берется переменная из адресной строки my $text; if($site) { my $ua = Mojo::UserAgent->new; # создаем объект UserAgent # запрашиваем страницу по адресу "http://www.google.com/search?q=site%3A$site" # и из полученной страницы берем содержимое блока <div id="resultStats"> $text = $ua->get("http://www.google.com/search?q=site%3A$site")->res->dom->at('div#resultStats'); } $self->render( 'index', # название шаблона result => $text ? $text->text : '', # передаем в шаблон текст блока, если он есть site => $site, # передаем в шаблон имя запрошенного сайта ); }; app->start; # ниже в этом же файле объявляем шаблон index.html.ep __DATA__ @@ index.html.ep <%= $result %><br /> <form action="/cgi-bin/get_string.pl"> site name: <input type="text" name="site" value="<%= $site %>"/> <input type="submit" /> </form>
Вот и все, проще даже чем на php :)
PS: совсем забыл упомянуть что у Mojolicious появилась вменяемая документация, с примерами: http://mojolicio.us/perldoc
PPS: фреймворк активно обновляется и как любезно заметил fuksito уже появилась версия 1.16, в которой исправлена серьезная уязвимость