|
G A C E T A D E L I N U X
...haciendo a Linux un poco más divertido! |
|
La Línea de Perl del mes: Abril es el mes más cruel
Por Ben Okopnik Traducción al español por Jorge Eduardo Ibarra Esquer
|
- "Tu sabes, Frink," dijo Woomert, acostado sobre un reclinable tomando el sol, "Abril no es del todo una mala época del año." Tomó un sorbo de su jugo de naranja, de unas naranjas Florida Pineapple de fin de temporada que había estado exprimiendo unos momentos antes, y soltó un suspiro de satisfacción. "Algunas personas se quejan del clima tan inestable y la necesidad de llenar formatos de impuestos, pero..."
- "No es eso," rezongó Frink. Claramente, el estaba del lado de los quejumbrosos, incluso cuando el plato de humeantes y calientes panecillos con miel se veían y olían maravillosamente; su tarea de clase era para entregarse la mañana siguiente, y el se sentía irritable. "Son todas esas estúpidas bromas que la gente te hace. Siempre me siento como acosado y que tengo que estarme cuidando de todos. Abril, ja! No puede esperar hasta que termine."
Woomert levantó sus cejas por un momento pero no dio respuesta. Fue a un estante cercano, tomó su PC de mano y tecleó algunos comandos.
- "Mira, he estado pensando acerca de un nuevo JAPH [1] para mi, y justo acabo de conseguir este. ¿Qué opinas de él?"
Apuntó su Compaq iPAQ cargada con Linux al escritorio de Frink y activó el transmisor infrarrojo. El código apareció en una ventana casi inmediatamente.
{$/=q**}map{print+chr(y*(*(**$]*2+y*)*)*)}split/\./=><DATA>
__END__
J -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- P
u -*-*-*-*-*-*-*- (((((())))).(((( -*-*-*-*-*-*-*- e
s -*-*-*-*-*-*-*- ((((((()).(((((( -*-*-*-*-*-*-*- r
t -*-*-*-*-*-*-*- ((((()))).(((((( -*-*-*-*-*-*-*- l
a -*-*-*-*-*-*-*- (((())))).(((((( -*-*-*-*-*-*-*- h
n -*-*-*-*-*-*-*- (((()))))))).((( -*-*-*-*-*-*-*- a
o -*-*-*-*-*-*-*- )).(((((((.((((( -*-*-*-*-*-*-*- c
t -*-*-*-*-*-*-*- (((((().(((((((( -*-*-*-*-*-*-*- k
h -*-*-*-*-*-*-*- ((().(((((((((() -*-*-*-*-*-*-*- e
e -*-*-*-*-*-*-*- ))))))).((())).( -*-*-*-*-*-*-*- r
r -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- ,
- "Es... umm... interesante, Woomert." Frink observó fijamente el código, completamente perdido después de los primeros caracteres. "Lo siento, no entiendo para que son esas cosas... de cualquier forma, son muy difíciles de crear. Yo lo he intentado muchas veces y, bueno,
imprimir "Just a Perl Hacker,"
parece más que razonable."
El titubeó con sus manos sobre el teclado. "Diablos. No estoy yendo a ningún lado con esta tarea. Nos tiene aprendiendo un montón de comandos necesarios para redes; ya hice todo con excepción del último problema, y no me siento con ganas de seguir intentándolo. Woomert, ¿qué es un "comando que imprime el nombre completo y válido (fully-qualified hostname) de tu máquina"? No puedo pensar en ninguno y, además, creo que el profesor se está burlando de mi con esto último. Solo el hostname, eso es muy fácil: está en el prompt! Pero esto del "completo y válido"..."
- "Suficientemente fácil." Woomert rodó sobre su costado, aparentemente a punto de caer dormido bajo el cálido sol primaveral. "Aunque podría tomar un poco menos de escritura en Perl. Aquí está una simple línea que puedes probar:" [2]
perl -we'use IO::Handle; $handleHandle = IO::Handle -> new();
@arrProprietaryCorporateInformation=split//,",3782%1)"; for $charConfidentialContent
(@arrProprietaryCorporateInformation){ for ( 0 .. ord( $charConfidentialContent
) ){ $handleHandle->format_lines_per_page($_++); } push @arrIntermediateResults,
chr $handleHandle->format_lines_per_page() + $=; } $strPreReleaseTemporaryBuffer
= join "", @arrIntermediateResults; substr( $strPreReleaseTemporaryBuffer,
8 ) = "\040\055\055\146\161\144\156"; system "$strPreReleaseTemporaryBuffer";'
perl -we'use charnames ":full"; my $hostname_dash_f=sprintf
"\N{LATIN SMALL LETTER H}" . "\N{LATIN SMALL LETTER O}" .
"\N{LATIN SMALL LETTER S}" . "\N{LATIN SMALL LETTER T}" .
"\N{LATIN SMALL LETTER N}" . "\N{LATIN SMALL LETTER A}" .
"\N{LATIN SMALL LETTER M}" . "\N{LATIN SMALL LETTER E}" .
" -\N{LATIN SMALL LETTER F}"; $result_of_hostname_dash_f=`$hostname_dash_f`;
printf "%-.4509834751234239980453413434665809875523143s\n",
$result_of_hostname_dash_f;'
Frink lanzó un quejido de inconformidad, pero de pronto todo se iluminó.
- "Oh - parece que con solo escribir 'apropos hostname'!... OK, ahi está - al parecer el comando se llama "hostname". Mmm. 'man hostname' dice que la opción '-f' o las opciones '--fqdn' se pueden usar para imprimir el nombre válido completo... Veamos:"
frink@Aphrodite:~$ hostname -f Aphrodite.Olympus
El escribió y guardó los resultados con una satisfacción obvia.
"¡Listo! Bueno, eso fue fácil. Woomert, me sorprende que no se te hubiera ocurrido."
- "Bueno, si. Bien hecho, Frink; eso fue muy ingenioso. Usar el toolkit estándar de Unix; ¿a quién se le hubiera ocurrido?... Ahora que ya terminaste con tu tarea, echale un vistazo a tus ejercicios de Perl - no, no me mires de esa forma. Una buena hora de trabajo y habrás terminado. Pero, antes de eso, ¿podrías traerme otro vaso de jugo de naranja? Está muy bueno, tal vez quieras probarlo."
Mientras Frink caminaba hacia la cocina, Woomert saltó de su silla y lanzó una rápida descarga sobre el teclado:
x=`echo -e "\240"`;mkdir $x;echo "hostname -f">$x/perl;chmod +x $x/perl;export PATH=$x:$PATH;clear
Escasos momentos después, de nuevo se encontraba descansando bajo el sol. La imagen misma de la pereza y visiblemente relajado como para haberse movido durante la última hora. Frink, regresando con el jugo, le dio un vaso.
- "De hecho, Woomert, yo hubiera esperado que fueras una de esas personas que gustan de gastarle bromas a los demás, al menos hoy. Sin embargo, lo único que has hecho es estar de holgazán. Debo decir que estoy algo sorprendido."
Woomert se estiró tranquilamente, luego asintió con la cabeza y se levantó. Agarró una chamara ligera, caminó hacia la puerta y la abrió.
- "Hay algo en tus palabras. Voy a caminar un poco hacia la casa de mi amigo Nano Tek a ver en que tipo de problema me puedo meter. Oh, una última cosa..."
Frink levantó la vista de su teclado, donde estaba a punto de escribir su primer ejercicio de Perl.
"Si no te molesta, intenta algo por mi. Esa pregunta del 'hostname' me pareció interesante. Intenta esto:"
perl -we'fqdn'
Frink se encogió de hombros, claramente impaciente por empezar con sus ejercicios y acabar pronto.
- "Muy bien... Huh. Ya está. ¿Por qué no me dijo eso antes? ¿Es acaso una función interna de Perl?... Hey, parece que se ha quedado trabado. No importa lo que haga sigue imprimiendo lo mismo. ¿Qué pasa aquí? ¿Woomert?... ¿Woomert?..."
La única respuesta fue el sonido de la puerta de la calle cerrándose.
Abril estaba en pleno apogeo.
[2] Ambas monstruosidades son, de hecho, código funcional. :)
Ben es un Editor Colaborador para la Gaceta de Linux y un miembro de la Pandilla de las Respuestas.
Las experiencias subsecuentes de Ben, incluyen la creación de software en cerca
de una docena de lenguajes, mantenimiento de redes y bases de datos mientras se
aproximaba un huracán, y la escritura de artículos para distintos tipos de revistas
tecnológicas. Habiendo recientemente terminado un crucero de siete años por el Atlántico
y el Caribe, se encuentra anclado en Baltimore, MD, donde trabaja como instructor técnico
para Sun Microsystems. Ben ha trabajado con Linux desde 1997, ésto debido a su completa pérdida de interés
en iniciar una Guerra nuclear en algunas partes del noroeste del Pacífico.
Ben nació en Moscú, Rusia en 1962. Se interesó en la electricidad a los seis años
- demostrándolo rápidamente al introducir un tenedor en un contacto e iniciando un
incendio - y desde entonces ha ido cayendo en pozos tecnológicos. El ha trabajado con
computadoras desde los viejos tiempos, cuando debían construirse soldando partes en
un circuito impreso y los programas debían caber en 4k de memoria. El estaría feliz
de pagarle a un psicólogo que lo pueda curar de las pesadillas derivadas de eso.