Я обнаружил что релиз замечательного перлового фреймворка 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, в которой исправлена серьезная уязвимость