Soñando con Perl: Mojolicious
Publicado el Miércoles, 22 de febrero de 2012Hace unas cuantas noches tuve un sueño bastante raro y específico. Soñé que debía programar algún tipo de aplicación web. Fue uno de esos sueños que uno recuerda más tarde, y no está seguro si lo soñó o realmente pasó.
Lo más raro es que de todo el sueño lo que más me acuerdo es de una característica en particular del proyecto que tenía que programar: tenía que usar Perl. No recuerdo mucho más del sueño, salvo algunas imágenes sueltas.
Creo que cada vez que soñamos, se trata de un ser de otra dimensión intentando comunicarnos algo a través de un canal cósmico de comunicación cuyo receptor en nuestro cerebro solo se encuentra abierto al dormir. Los paquetes transmiten generalmente mensajes que alterarán nuestro destino en busca de una vida más iluminada y llena de sabiduría...
No, mentira, los sueños deben ser alucinaciones causadas por reacciones al azar en nuestro cerebro mientras dormimos. Freud creía que eran una expresión simbólica de deseos frustrados que han sido relegados al inconsciente. Así que hagámosle caso a Don Sigmund y usémoslo como excusa para jugar con Perl, ya que es lo que mi inconsciente quiere... Acá algunos dirían que sí, que hay que ser medio inconsciente para querer programar en Perl por gusto, pero resulta divertido.
Iniciando la aventura comencé por recordar algunos posts sobre Perl en el blog. Lo bueno de tener un blog es que puedo repasar fácilmente anécdotas anteriores de cómo me enfrenté a algún lenguaje. En el caso de Perl, lo hice en aprendiendo Perl en 2009. También recuerdo Dedicado a los programadores... sobretodo a los de Perl, que fue un post de grilix bastante interesante por esa época.
Mojolicious: El desarrollo web puede ser divertido de nuevo
Llegué a Mojolicious hace un buen tiempo por un post en Reddit. Siempre lo tuve pendiente de probar, me llamaba mucho la atención la idea de un framework web moderno para Perl. El sitio web es divertido, y tiene unicornios y arcoiris en el encabezado...
Allá por los primeros días de la web, mucha gente aprendía Perl por una maravillosa biblioteca Perl llamada CGI. Era lo suficientemente simple para comenzar sin saber mucho sobre el lenguaje y lo suficientemente poderosa para seguir andando, aprender haciendo era muy divertido. Mientras que la mayoría de las técnicas usadas son anticuadas, la idea no lo es. Mojolicius es un nuevo intento de implementar esta idea usando tecnología de punta.
Así se nos presenta Mojolicius. Ahora que conozco un poco de Sinatra, puedo decir que Mojolicious es bastante similar.
Es un framework web con rutas RESTful, plugins, templates a lo Perl, manejo de sesión, cookies firmadas, framework de testing, servidor de archivos estáticos, i18n, soporte unicode de primera clase y más. Prometen una API pura en Perl con orientación a objetos, portable y sin magia escondida, con Perl 5.10 como único requerimiento. También incluye entre otras cosas parser JSON y HTML5 con soporte para selector CSS 3.
La instalación es tan sencilla como esto:
sudo sh -c "curl -L cpanmin.us | perl - Mojolicious"
El sitio de Mojolicious cuenta con una documentación bastante extensa y detallada. También es imperdible la sección de Screencasts Mojocasts.
Es bastante fácil arrancar con alguna aplicación sencilla. Tras unos minutos pude armar algo como esto:
El código:
use Mojolicious::Lite; use strict; use warnings; get '/' => sub{ my $self = shift; $self->render('index'); }; get '/:name' => sub{ my $self = shift; my $name = $self->param('name'); #Pasar a mayúsculas el nombre: $name =~ s/\b([a-z])(\w+)\b/\u$1$2/g; $self->render('hello'); }; app->start; __DATA__ @@ layouts/wrapper.html.ep <div class="wrapper" style="width: 500px; background: #000; color: #fff; padding: 20px; border-radius: 15px;"> <h1><%= title %></h1> <%= content %></div> <div class="footer" style="float: right"> <small>Powered by <a href="http://mojolicio.us" title="Mojolicious">Mojolicious</a></small> </div> @@ index.html.ep % title 'Bienvenido'; % layout 'wrapper'; Hola, ingresa tu nombre en la URL después de la barra / @@ hello.html.ep % title 'Saludo'; % layout 'wrapper'; Hola <%= $name %> |
Subí el código en un gist en github, supongo que en algún momento lo retomaré para seguir probando Mojolicius.
Para repasar un poco la sintaxis y particularidades de Perl, el sitio recomienda: Learn Perl in about 2 hours 30 minutes. Está enfocado a personas que no están muy afín de la documentación oficial de Perl, aprenden nuevos lenguajes mas rápido con "axioma y ejemplo", y ya saben programar en términos generales y no les importa Perl más que lo necesario para realizar el trabajo.
Después de más de 2 años sin volver a tocar Perl, es como si nunca lo hubiera visto en mi vida. Así que vino bien mirar algunas cosas para lo que siguió. De todas formas no he profundizado mucho todavía, pero mi intención es que este post sea una excusa para seguir estudiando Perl en el futuro.
grilix 22 febrero. 2012 - 16:34
Se te va un poco la moto.. jaja.
Perl es un lenguaje que me gusta, aunque es bastante difícil pensar que se puede usar para algo “real”, la gente le tiene un poco de miedo y ha sido eclipsado por otros como ruby o python. Creo que uno de los puntos más fuertes es la documentación: está muy bien organizada y es fácil de entender.
Larga vida a perl!
Fernando 22 febrero. 2012 - 19:00
Me parece que mojolicious es una buena opción para usar Perl en algo “real”. Debe haber montones de páginas web hechas con CGI, se podría usar el conocimiento de los programadores que los hicieron para mojolicious 🙂
¡Larga vida a Perl!
dklight 22 febrero. 2012 - 19:35
Eso que contás (lo de los sueños) ya lo pensó alguien en Star Trek 🙂 En un capítulo de Star Trek TNG pasa exactamente que todos tienen problemas apra dormir menos la que tiene poderes telepáticos, y esta sueña una y otra vez con algo. Al final era otra nave de telépatas comunicandose para que no los trague a todos un agujero negro. Y probablemente todo se podría haber evitado si las consolas de la nave no estuvieran programadas en perl XD
Fernando 29 febrero. 2012 - 02:22
Jajaja. No sabía de este episodio… ¡Tendré que verlo!
Ekimino 25 febrero. 2012 - 00:54
Hace tiempo encontre un mini-script de Perl, el cual cambio la vida de un hombre.
http://tinyurl.com/2fzbcco
Aca les dejo el codigo:
Fernando 29 febrero. 2012 - 02:26
¡Muy bueno! Excelente ejemplo de uso de Perl. Capaz que algún día lo uso y todo 😛