Archivos de la categoría: Perl

Más de 300 libros gratuitos

En TechToolBlog han hecho una recopilación de más de 300 libros gratuitos y/o libres, en diferentes formatos.

Fero, fers, ferre…

¡Tú! ¡Sí, tú! ¿Escribir un programa en Perl te resulta más complicado que tocar el piano con los dedos de los pies? ¿Te encanta el latín? ¿Tus amigos te consideran raro por ello? ¡Ahora les podrás demostrar que es útil! Gracias a Perligata podrás hacer esto:

#! /usr/local/bin/perl -w

use Lingua::Romana::Perligata;

maximum inquementum tum biguttam egresso scribe.
meo maximo vestibulo perlegamentum da.
da duo tum maximum conscribementa meis listis.

dum listis decapitamentum damentum nexto
fac sic
nextum tum novumversum scribe egresso.
lista sic hoc recidementum nextum cis vannementa da listis.
cis.

Para obtener algo equivalente a esto:

print STDOUT 'maximum:';
my $maxim = ;
my (@list) = (2..$maxim);

while ($next = shift @list)
{
    print STDOUT $next, ‘n’;
    @list = grep {$_ % $next} @list;
}

Vía: Nicolas Trangez (ikke) del Planet GNOME.

MTMeneame 0.2

Gracias a la contribución de Álex Sancho procedo a publicar esta nueva versión, cuya única novedad es el soporte del método de publicación dinámico de Movable Type. Mientras no monte una página específica para los plugins, el nombre de los archivos será el mismo, así que podéis descargar desde estos enlaces la nueva versión: MTMeneame.tar.gz o MTMeneame.zip.

AVISO: El procedimiento de instalación cambia. Ahora una vez que descomprimáis el archivo os encontraréis dentro de la carpeta MTMeneame con dos carpetas, una llamada plugins y otra llamada php. Debéis copiar el contenido de dichas carpetas tal cual en sus homónimas dentro de vuestra instalación de Movable Type.

Meneando, que es gerundio

Me encanta que me reten a hacer algo, y rvr lo ha hecho.

Esta noche, después de llegar de cenar, me encontré con rvr en el canal #blogalia, y me comentó que porqué no hacía un plugin para Movable Type similar al que hizo Mangas Verdes para Wordpress. Así que dicho y hecho, ya tenía excusa para adentrarme en la programación de plugins para MT :)

Os presento MT Menéame 0.1, mi primer plugin para MT, bajo licencia GPL. Su modo de uso es muy sencillo, no tenéis más que añadir dentro de cualquier bloque la etiqueta MTMeneame. Esta etiqueta tiene un parámetro opcional, text, mediante el cual cambiar el texto por defecto del enlace de envío del post, que es “Menéame”, tal y como podéis ver en mi bitácora.

Lo podéis descargar desde aquí: MTMeneame.tar.gz o MTMeneame.zip, a gusto del consumidor. La instalación es tan simple como descomprimir ese fichero dentro de la carpeta de plugins de Movable Type.

Espero que lo disfrutéis ;)

Actualización: Versión 0.2 disponible.

Este tío necesita una novia

O tener algo más de vida social… sino no me explico como Paul Warren ha sido capaz de tener el aguante para hacer (con sus probables depuraciones) la siguiente expresión regular en Perl (al final de la historia la explicación de la misma):

(?:(?:rn)?[ t])*(?:(?:(?:[^()@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t]
)+|Z|(?=[["()@,;:\".[]]))|”(?:[^\"r\]|\.|(?:(?:rn)?[ t]))*”(?:(?:
rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[^()@,;:\".[] 00-31]+(?:(?:(
?:rn)?[ t])+|Z|(?=[["()@,;:\".[]]))|”(?:[^\"r\]|\.|(?:(?:rn)?[
t]))*”(?:(?:rn)?[ t])*))*@(?:(?:rn)?[ t])*(?:[^()@,;:\".[] 00-
31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()@,;:\".[]]))|[([^[]r\]|\.)*
](?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[^()@,;:\".[] 00-31]+
(?:(?:(?:rn)?[ t])+|Z|(?=[["()@,;:\".[]]))|[([^[]r\]|\.)*](?:
(?:rn)?[ t])*))*|(?:[^()@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z
|(?=[["()@,;:\".[]]))|”(?:[^\"r\]|\.|(?:(?:rn)?[ t]))*”(?:(?:rn)
?[ t])*)*@,;:\”.[] 00-31]+(?:(?:(?:
rn)?[ t])+|Z|(?=[["()@,;:\".[]]))|[([^[]r\]|\.)*](?:(?:rn)?[
 t])*)(?:.(?:(?:rn)?[ t])*(?:[^()@,;:\".[] 00-31]+(?:(?:(?:rn)
?[ t])+|Z|(?=[["()@,;:\".[]]))|[([^[]r\]|\.)*](?:(?:rn)?[ t]
)*))*(?:,@(?:(?:rn)?[ t])*(?:[^()@,;:\".[] 00-31]+(?:(?:(?:rn)?[
 t])+|Z|(?=[["()@,;:\".[]]))|[([^[]r\]|\.)*](?:(?:rn)?[ t])*
)(?:.(?:(?:rn)?[ t])*(?:[^()@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t]
)+|Z|(?=[["()@,;:\".[]]))|[([^[]r\]|\.)*](?:(?:rn)?[ t])*))*)
*:(?:(?:rn)?[ t])*)?(?:[^()@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+
|Z|(?=[["()@,;:\".[]]))|”(?:[^\"r\]|\.|(?:(?:rn)?[ t]))*”(?:(?:r
n)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[^()@,;:\".[] 00-31]+(?:(?:(?:
rn)?[ t])+|Z|(?=[["()@,;:\".[]]))|”(?:[^\"r\]|\.|(?:(?:rn)?[ t
]))*”(?:(?:rn)?[ t])*))*@(?:(?:rn)?[ t])*(?:[^()@,;:\".[] 00-31
]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()@,;:\".[]]))|[([^[]r\]|\.)*](
?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[^()@,;:\".[] 00-31]+(?
:(?:(?:rn)?[ t])+|Z|(?=[["()@,;:\".[]]))|[([^[]r\]|\.)*](?:(?
:rn)?[ t])*))*>(?:(?:rn)?[ t])*)|(?:[^()@,;:\".[] 00-31]+(?:(?
:(?:rn)?[ t])+|Z|(?=[["()@,;:\".[]]))|”(?:[^\"r\]|\.|(?:(?:rn)?
[ t]))*”(?:(?:rn)?[ t])*)*:(?:(?:rn)?[ t])*(?:(?:(?:[^()@,;:\".[]
00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()@,;:\".[]]))|”(?:[^\"r\]|
\.|(?:(?:rn)?[ t]))*”(?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[^()
@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()@,;:\".[]]))|”
(?:[^\"r\]|\.|(?:(?:rn)?[ t]))*”(?:(?:rn)?[ t])*))*@(?:(?:rn)?[ t]
)*(?:[^()@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()@,;:\
".[]]))|[([^[]r\]|\.)*](?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?
:[^()@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()@,;:\".[
]]))|[([^[]r\]|\.)*](?:(?:rn)?[ t])*))*|(?:[^()@,;:\".[] 00-
31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()@,;:\".[]]))|”(?:[^\"r\]|\.|(
?:(?:rn)?[ t]))*”(?:(?:rn)?[ t])*)*@,;
:\”.[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()@,;:\".[]]))|[([
^[]r\]|\.)*](?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[^()@,;:\"
.[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()@,;:\".[]]))|[([^[
]r\]|\.)*](?:(?:rn)?[ t])*))*(?:,@(?:(?:rn)?[ t])*(?:[^()@,;:\".
[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()@,;:\".[]]))|[([^[]
r\]|\.)*](?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[^()@,;:\".[]
00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()@,;:\".[]]))|[([^[]r\]
|\.)*](?:(?:rn)?[ t])*))*)*:(?:(?:rn)?[ t])*)?(?:[^()@,;:\".[]
00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()@,;:\".[]]))|”(?:[^\"r\]|\
.|(?:(?:rn)?[ t]))*”(?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[^()@,
;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()@,;:\".[]]))|”(?
:[^\"r\]|\.|(?:(?:rn)?[ t]))*”(?:(?:rn)?[ t])*))*@(?:(?:rn)?[ t])*
(?:[^()@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()@,;:\".
[]]))|[([^[]r\]|\.)*](?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[
^()@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()@,;:\".[]
]))|[([^[]r\]|\.)*](?:(?:rn)?[ t])*))*>(?:(?:rn)?[ t])*)(?:,s*(
?:(?:[^()@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()@,;:\
".[]]))|”(?:[^\"r\]|\.|(?:(?:rn)?[ t]))*”(?:(?:rn)?[ t])*)(?:.(?:(
?:rn)?[ t])*(?:[^()@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[
["()@,;:\".[]]))|”(?:[^\"r\]|\.|(?:(?:rn)?[ t]))*”(?:(?:rn)?[ t
])*))*@(?:(?:rn)?[ t])*(?:[^()@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t
])+|Z|(?=[["()@,;:\".[]]))|[([^[]r\]|\.)*](?:(?:rn)?[ t])*)(?
:.(?:(?:rn)?[ t])*(?:[^()@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|
Z|(?=[["()@,;:\".[]]))|[([^[]r\]|\.)*](?:(?:rn)?[ t])*))*|(?:
[^()@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()@,;:\".[
]]))|”(?:[^\"r\]|\.|(?:(?:rn)?[ t]))*”(?:(?:rn)?[ t])*)*@,;:\”.[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["
()@,;:\".[]]))|[([^[]r\]|\.)*](?:(?:rn)?[ t])*)(?:.(?:(?:rn)
?[ t])*(?:[^()@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()
@,;:\".[]]))|[([^[]r\]|\.)*](?:(?:rn)?[ t])*))*(?:,@(?:(?:rn)?[
 t])*(?:[^()@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()@,
;:\".[]]))|[([^[]r\]|\.)*](?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t]
)*(?:[^()@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()@,;:\
".[]]))|[([^[]r\]|\.)*](?:(?:rn)?[ t])*))*)*:(?:(?:rn)?[ t])*)?
(?:[^()@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()@,;:\".
[]]))|”(?:[^\"r\]|\.|(?:(?:rn)?[ t]))*”(?:(?:rn)?[ t])*)(?:.(?:(?:
rn)?[ t])*(?:[^()@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[[
"()@,;:\".[]]))|”(?:[^\"r\]|\.|(?:(?:rn)?[ t]))*”(?:(?:rn)?[ t])
*))*@(?:(?:rn)?[ t])*(?:[^()@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])
+|Z|(?=[["()@,;:\".[]]))|[([^[]r\]|\.)*](?:(?:rn)?[ t])*)(?:
.(?:(?:rn)?[ t])*(?:[^()@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z
|(?=[["()@,;:\".[]]))|[([^[]r\]|\.)*](?:(?:rn)?[ t])*))*>(?:(
?:rn)?[ t])*))*)?;s*)

Esta “cosita de nada”, parte del módulo Mail::RFC822::Address, es capaz de comprobar que una dirección de correo cumple a rajatabla la definición de las direcciones dada en el RFC 822. Siempre me ha parecido que Perl es el lenguaje que incorpora la programación ofuscada por defecto xD

© 2002-2008 LinuxAdicto.org. El contenido y algunas imágenes están bajo la licencia Reconocimiento-NoComercial-CompartirIgual 3.0