Una nueva generación de entorno de trabajo web para el lenguaje de programación Perl.
Recordando, en los primeros días de la web, había una maravillosa colección de programas Perl llamados CGI, muchas personas aprendieron Perl solo por ellos. Era lo suficientemente simple para empezar sin conocer mucho del lenguaje, y suficientemente poderoso como para seguir desarrollando, aprendiendo mientras se programaba, era algo muy divertido. Ahora, mientras la mayor parte de las técnicas utilizadas están obsoletas, la idea que estaba detrás de ellas, no. Mojolicious es un nuevo intento de implementar esta idea usando la tecnología más avanzada.
Características:
* Un fantástico entorno de trabajo web
MVC soportando un único y simplificado modo de trabajo con ficheros a través de
Mojolicious::Lite. Incluyendo algunos poderes, como las rutas
RESTful, complementos, plantillas al estilo Perl, gestión de sesiones, galletas firmadas, comprobaciones del entorno de trabajo, servidor de ficheros estáticos,
I18N, soporte Unicode de primera clase y mucho más, para que lo descubras.
* Muy limpio, portátil y una API de programación orientada a objetos en puro Perl, sin ninguna magia escondida y sin requerimientos, más allá de tener un Perl v5.8.7.
* Pila completa del HTTP 1.1 e implementación cliente/servidor
WebSocket con
TLS,
Bonjour,
IDNA,
Comet (sondeo largo), y soporte de fragmentación y multipartes.
* Un servidor web asíncrono incluido, soportando
epoll,
kqueue, sockets UNIX y despliegue en caliente, perfecto para los sistemas incrustados.
* Detección automática de
CGI,
FastCGI y
PSGI (
Perl Web Server Gateway Interface).
* Soporte de
JSON y analizadores
XML/
HTML5 con selectores
CSS3.
* Código fresco basado en años de experiencia desarrollando
Catalyst.
Web principalMojolicious (CPAN)Using perl Syntax Highlighting
use Mojolicious::Lite;
# Simple route with plain text response
get '/hello' => sub { shift->render(text => 'Hello World!') };
# Route to template in DATA section
get '/time' => 'clock';
# RESTful web service sending JSON responses
get '/:offset' => sub {
my $self = shift;
my $offset = $self->param('offset') || 23;
$self->render(json => {list => [0 .. $offset]});
};
# Scrape information from remote sites
post '/title' => sub {
my $self = shift;
my $url = $self->param('url') || 'http://mojolicio.us';
$self->render(text =>
$self->client->get($url)->res->dom->at('head > title')->text);
};
# WebSocket echo service
websocket '/echo' => sub {
my $self = shift;
$self->on_message(
sub {
my ($self, $message) = @_;
$self->send_message("echo: $message");
}
);
};
app->start;
__DATA__
@@ clock.html.ep
% my ($second, $minute, $hour) = (localtime(time))[0, 1, 2];
<%= link_to clock => begin %>
The time is <%= $hour %>:<%= $minute %>:<%= $second %>.
<% end %>
Instalación
Using bash Syntax Highlighting
curl -L cpanmin.us | perl - http://latest.mojolicio.us