Perl Apresurados

30
Perl para apresurados Juan Julián Merelo Guervós Historial de revisiones Revisión 1.0 Jul 2006 Preparando la primera versión para el curso de Extremadura Revisión 1.1 26 de Julio de 2006 Versión campus party probada en combate. Simplificados algunos ejemplos, corregida ortografía y gramática. Añadid Revisión 1.2 3 de Agosto de 2006 Algunos arreglos mínimos Tabla de contenidos ¿Quién eres tú? ......................................................................................................................3 Todo listo para despegar ......................................................................................................3 Comenzando una nueva carrera.........................................................................................6 Viéndole las tripas al producto ..........................................................................................8 Usando la sabiduría colectiva...........................................................................................13 Ley de Murphy ....................................................................................................................17 Lo escrito, escrito está.........................................................................................................18 Partiendo de una base ........................................................................................................21 Ni bien ni mal, sino regular ..............................................................................................23 A dónde vamos desde aquí ...............................................................................................27 Esto es todo...........................................................................................................................28 Agradecimientos .................................................................................................................28

description

Perl

Transcript of Perl Apresurados

Perl para apresuradosJuan Julin Merelo GuervsHistorial de revisionesRevisin 1.0 Jul 2006Preparando la primera versin para el curso de ExtremaduraRevisin 1.1 26 de Julio de 2006Versin campus party probada en combate. Simplicados algunos ejemplos, corregida ortografa y gramtica. Aadida licencia GFDL.Revisin 1.2 3 de Agosto de 2006Algunos arreglos mnimosTabla de contenidosQuin eres t? ......................................................................................................................3Todo listo para despegar......................................................................................................3Comenzando una nueva carrera.........................................................................................6Vindole las tripas al producto ..........................................................................................8Usando la sabidura colectiva...........................................................................................13Ley de Murphy....................................................................................................................17Lo escrito, escrito est.........................................................................................................18Partiendo de una base........................................................................................................21Ni bien ni mal, sino regular..............................................................................................23A dnde vamos desde aqu ...............................................................................................27Esto es todo...........................................................................................................................28Agradecimientos .................................................................................................................28Quin eres t?Este tutorial te puede estar llegando en una de varias formas diferentes.Estas son todas las posibles:Fuentes en DocBook.2Tiene que haber gente pa t.Versin de Perl para apresurados en PDF3. Posiblemente, la que se veacon ms claridad.Versin de Perl para apresurados en HTML, dividido en varias pginas4Adems, te puedes descargar los ejemplos5usados en este tutorial.Eso mismo te estars preguntando, que quin diablos eres y que a qu dedicas eltiempo libre. As que te vamos a echar una mano. Supongo que ya sabes programar,que el concepto de variable no va para ti asociado a la nubosidad ni el de bucle a lacabeza de Nellie Olleson. Puede que conozcas el C, slo para precavidos, o hablescon lengua de serpiente (pitn6), o incluso que el smbolo mayor y menor vayan parati asociados de forma indisoluble a un acrnimo capica7.Vamos, que pueden extraarte las formas ignotas en las que un nuevo lenguaje deprogramacin repite cachos de cdigo o mete valores en variables o representa listasde datos, pero los conceptos en s no son nada nuevo para ti. A ti, pues, va dirigidoeste mini-tutorial.Supongo tambin que tienes prisa. Si no, no estaras leyendo este tutorial para apresu-rados. Estaras leyendo uno titulado, por ejemplo, Perl para los que tienen todo el tiempodel mundo. Es decir, que es necesariamente breve, con la idea de poder ser impartido(y espero que asimilado) en unas dos horas. Igual no te da tiempo a teclear todos losejemplos de cdigo, pero este ordenador que ests mirando tiene una cosa maravillo-sa llamada "corta y pega" con la que sin duda ests familiarizado, y que podrs usarpara tu provecho y el de la Humanidad.Yquizstodavanolosabes,pero necesitassaberPerl.Paravigilaresecheroderegistro y crear alertas que te avisen de lo inesperado. Para ese CGI terriblementecomplicado. Para convertir una pgina web demasiado compleja en algo que tambines complejo, pero que puedes leer con tu lector de cosas complejas favorito. Parahacer lo que siempre quisiste hacer: escribir poesa8en tu lenguaje de programacinfavorito. En n, donde quiera que haga falta convertir cosas en otras cosas o convertirprogramadores en poetas, ah hace falta saber Perl.Sugerencia: Y con ello damos entrada a la primera amewar de este tutorial, que esdonde t, que ests entre elpblico, dices aquello de Pues yo hago todo eso, y ms,en(Fortran|Postscript|Haskell). Quevale, quesi. Loslenguajesdeprogramacinsonuniversales. Se puede hacer de todo con ellos. Y siempre es ms fcil hacer algo en ellenguaje que uno conoce mejor. Pero al menos tendrs ms donde elegir, no?Finalmente, aunque no es imprescindible, es conveniente que tengas un ordenadorenfrente, y que puedas usarlo. La mayora de los ordenadores modernos, y muchosde los antiguos, tienen versiones de Perl compiladas. La Nintendo DS todava no,pero todo se andar.Sobre todo, que no cunda el pnico. Y no te olvides de la toalla9.3Perl para apresuradosTodo listo para despegarSi ya has usado algn lenguaje de scripting, lo ms probable es que teaburras como un bivalvo en esta seccin. As que ahrrate un bostezo ypasa directamente a la siguiente. O si no, descrgate los fuentes10y echasun ratillo compilndolos en silencio, para no desmoralizarme a la parro-quia.Loprimeroquenecesitasentulistadecomprobacinsonlascualidadesdetodoprogramador en Perl: la pereza, el orgullo y la impaciencia11. No te preocupes si notienes ninguna de ellas, las irs adquiriendo con el tiempo. Sobre todo la pereza. Yuna cierta habilidad de entender lenguas muertas como el caldeo y el dlmata.Segundo, necesitas amar a los camlidos.El Perl no es como esos otros lenguajesque incitan a la avaricia a travs de la adoracin de las piedras preciosas12, o a lahiperactividad por ingestin de bebidas excitantes13. Los camellos son buenos. Loscamellos son tiles. Llevan cosas encima. Tienen joroba. Amemos a los camlidos(las llamas tambin son camlidos14).No menos importante es tener un ordenador con sistema operativo. Incluso sin l15.Ejecuta lo siguiente para saber si lo tienes:perl -v a lo que el ordenador debida-mente contestar algo as:This is perl, v5.8.7 built for i486-linux-gnu-thread-multi(with 1 registered patch, see perl -V for more detail)Copyright 1987-2005, Larry WallPerl may be copied only under the terms of either the Artistic License or theGNU General Public License, which may be found in the Perl 5 source kit.Complete documentation for Perl, including FAQ lists, should be found onthis system using man perl or perldoc perl. If you have access to theInternet, point your browser at http://www.perl.org/, the Perl Home Page.Figura 1. Contestacin de un ordenador educado a perl -vsi es que est instalado. Si no lo est, es poco probable que conteste eso. Incluso impo-sible. Dir algo as como bash: perl: command not found e incluso pitar. El muydesagradable.No hay que dejarse descorazonar por tal eventualidad. Encomendndonos al GranCamlido, ysinnecesidaddeverunavezmsIshtar, diremosenvozalta"Abra-cadabra"mientrasqueescribimossudo yum install perlobiensudo apt-getinstall perl Si es que estn en un linux no-debianita (en el primer caso) o en unodebianita (en el segundo). Habr gente que incluso lo haga sin necesidad de bajarsedel ratn. Pero los apresurados no usan el ratn salvo que sea estrictamente necesa-rio. Que no es el caso. En otros sistemas operativos, lo mejor es ir a Perl.com (si esque no has ido todava)16y bajarse la versin compilada.Nota: Aunque no es estrictamente necesario para programar Perl (y, por tanto, puedesevitarlo si tienes problemas de espacio), conviene bajarse tambin el paqueteperldoc,que no slo contiene documentacin, sino tambin la orden perldoc para visualizarla.Tambin puedes compilarlo t. Pero no creo que lo hagas, porque eres un apresurado,y la compilacin no est hecha para los apresurados (si eres usuario de Gentoo17, esel momento de abandonar este tutorial).4Perl para apresuradosLo que tienes o has instalado es un intrprete de Perl. Perl es generalmente un len-guaje interpretado, con lo que no hace falta ningn encantamiento intermedio parapasar de un programa escrito en Perl a su ejecucin. Si te har falta un editor. No uneditor. El editor.Sugerencia: Los que apoyen al nclito (x)emacs de este lado del amewar , los que sequeden con el slido pero esculido vi(m), de este otro lado. Los que estn con kate, jot,o incluso el kwrite, que elijan armas y padrinos y que pidan hora.Vuelvo contigo entre el fragor de la batalla para hablarte de otras opciones. No esque haya muchas, pero hay alguna. Por ejemplo, puedes usar el conocido entornoEclipse18con el plugin EPIC19para desarrollar proyectos en Perl, como se muestra enla gura siguiente.Figura 2. Iniciando un proyecto en Perl con EPIC/EclipseOtros entornos de desarrollo, como PerlIDE o Komodo, o bien no siempre funcionano bien son de pago. Si consigues que te lo compre tu jefe, suertudo de ti. Si no, apoyaproyectos de software libre. Sucientes personas han estado desarrollando sobre esosentornos durante el suciente tiempo como para que presenten la sana apariencia quese muestra en la gura de abajo.5Perl para apresuradosFigura 3. Editando un programilla con gvimUn editor decente tiene que tener colorines. Y tambin cerrar parntesis. Ninguno vaa evitar que cometas errores, pero va a hacrtelo lo ms complicado posible.EjerciciosTienes un intrprete de Perlinstalado en tu sistema? Tienes un editor (chulo, siesposible)paraeditarprogramasenPerl?El editoressensibleal contextoytieneunmodo especco para Perl? Si la respuesta a alguno de ellos es no, a qu esperas paratenerlo? Venga, te espero.Comenzando una nueva carreraSi has llegado hasta aqu, supongo que se te llevarn todos los diablos, porque conla hora que es, las camas estn sin hacer y lo que se dice picar cdigo, todava nohas picado nada. Y eso est bien: hay que convertir esa rabia en energa creativa, yaprovechando que uno de los diablos que se te llevan es cojuelo, escribir el siguientefragmento de literatura:Nota: Los programas ejemplo de este tutorial deberan estar en el cheroperl-apresurados-ejemplos.tgz20#!/usr/bin/perl (1)print "Daban en Madrid, por los fines de julio, las once de la noche en punto..."; (2)print "\n"; (3)(1) Tratndosedediablos, lomejoresusarlosconjurosloantesposible. Enestalnea, clsicadeloslenguajesinterpretadosydenominadashebangseescribeel caminocompletodondesehallael intrpretedel lenguajeencuestin. Siest en otro sitio, pues habr que poner otro camino. Por ejemplo, podra ser#!/usr/local/bin/perl o bien #!/usr/bin/perl6.0.por.n. O #!perl y que se busquela vida. Si se trabaja (es un decir) en Windows, esa lnea no es necesaria, pero esconveniente para que el programa sea compatible con otros sistemas operativos.Cuando un Unix/GNU/Linux decente y trabajador encuentra esa lnea, cargaese programa y le pasa el resto del chero para que lo interprete.Si piensasejecutarel programaendiferentesentornos, tambinpuedesusar#!/usr/bin/env perl, que ejecutar el primer intrprete de Perl que encuentre enel camino. Tambin puedes usarlo si sabes que Perl est por ah, el pilln, pero noquieres preocuparte de dnde.6Perl para apresurados(2) Aqu se imprime, con el nihil obstat obtenido previamente. Obsrvense las comil-las y el punto y coma. Las rdenes en Perl se separan con un punto y coma, paraque quede bien claro dnde acaban y se puedan meter varias sentencias en unasola lnea, con el objetivo de crear programas innecesariamente ofuscados. Loque no se puede hacer en esos otros lenguajes. Elprint es herencia de aquellosprimeros tiempos de los ordenadores, cuando el nico perifrico de salida era unconvento de monjes trapenses dedicados a la sana tarea de copiar textos (y que sequedaron sin trabajo cuando el seor Hewlett se uni al seor Packard y crearonla impresora). En aquella poca, la salida de un programa vena encuadernadaen piel de cabrito y con todas las primeras letras de prrafo bellamente miniadas.Ah, tiempos aquellos, de los que slo nos queda el nombre de una orden. Y nome reero a la trapense.Obsrvese tambin que el argumento se le pasa a print directamente, sin parn-tesis. Los parntesis son opcionales. Convencionalmente no se usan cuando setrata de funciones nativas, como esta, aunque se suelen usar para subrutinas ymtodos denidos en mdulo o por el usuario.(3) Y aqu pasamos a la lnea siguiente. Borrn y cuenta nueva. Se acab lo que sedaba. Si ya conoces algn lenguaje de programacin, que se supone que lo cono-ces, pilln, porque te lo he preguntado en la primera seccin, no hace falta que teexplique que \n es un retorno de carro, verdad?21Desde un editor que cambie el color (y los tipos de letra) de acuerdo con la sintaxisdel programa que se est editando tal como el emacs, el programa sera algo similaral que aparece en la captura siguiente7Perl para apresuradosFigura 4. Editando hola.pl en emacsAvisoEl usar este tipo de texto, que incluye caracteres con acento, es bas-tante intencionado. En algunos editores puede que aparezcan carac-teres extraos; habr que cambiar la codicacin para que entienda elconjunto de caracteres iso-8858-1 o latin1.EjerciciosElegiruneditornoesuntemabalad,porqueteacompaarentuvidacomodesar-rollador. Prueba diferentes editores disponibles en tu sistema mirando sobre todo a lasposibilidades que tienen de adaptacin a diferentes cometidos (comprobar la sintaxis ydepurar, por ejemplo). Nadie te ata a un editor de por vida, pero cuanto antes lo elijas,antes empezars a ser productivo. As que ya ests empezando a usar el (x)emacs.Vindole las tripas al productoMucho editar, mucho editar, pero de ejecutar programas nada de nada. Lo que hemoseditado no deja de ser un chero de texto, as que para ejecutarlo tendremos quellevar a cabo algn encantamiento para meterlo en el corredor de la ejecucin.8Perl para apresuradosTampoco hace falta. Lo ms universal es irse a un intrprete de comandos, colocarseen el directorio donde hayamos salvado (de la eterna perdicin) el chero, y escribirperl hola.pl. Pero ya que ests puesta (o puesto), puedes hacer algo ms: escribirchmod +x hola.pl, lo que convertir al chero en ejecutable, es decir, en algo quepodemos correr simplemente tecleando su nombre, de esta forma:jmerelo@vega:~/txt/tutoriales/perl-apresurados/code$./hola.plDaban en Madrid, por los fines de julio, las once de la noche en punto, hora menguada...Pero el encantamiento este acta tambin a otros niveles, pudiendo ejecutar el pro-grama directamente desde esos inventos del averno llamados entornos de ventanas,como se muestra en la gura siguiente.Figura 5. Ejecutando un programa en Perl desde GnomeComo el Nautilus, el manejador de cheros de Gnome es muy listo, se dice a si mismo(pero bajito): Pardiez, este chero es ejecutable. Qu puedo hacer con l? Lo eje-cuto? Lo abro sin ejecutarlo? La duda me carcome. Se lo preguntar al honorableusuario. El men contextual (con el botn derecho del ratn) nos ofrecer opcionessimilares. El problema es que si lo ejecutamos ser visto y no visto: abrir una venta-na, escribir el texto y saldr como una exhalacin.Vamos a dejar entonces que el programa se quede clavado hasta nueva orden, conuna pequea modicacin, que aparece en el siguiente listado#!/usr/bin/perlprint "A estas horas, el Estudiante, no creyendo su buen suceso ydeshollinando con el vestido y los ojos el zaquizam...\n";sleep 10; # Quieto parao ah9Perl para apresuradosQue, con un poco de suerte, nos permitir capturar una pantalla como la siguiente:Figura 6. Terminal con el resultado de ejecutar el programa hola-y-duerme.plEn otros sistemas operativos (o entornos), cambiar el icono y la apariencia del ter-minal donde est el resultado, pero por lo dems, el resultado ser el mismo (y elsonriente camello, tambin). La nica diferencia con el primer programa es la lti-ma lnea, que le indica al programa que se quede quieto parao (dormido, de hecho)durante 10 segundos. Y que diga cheeeeeese (solo en ordenadores con interfaz gestualy/o emocional y/o audiomotriz/parlanchn).Porciertoque,decamino,hemosintroducidonuestroprimercomentario,queenPerl van precedidos por una almohadilla (#) y llegan hasta el nal de la lnea. Un buenprogramador debe ser un buen comentarista. Lo contrario no siempre es cierto.Pero incluso as, puede que sea demasiado rpido para apreciar la sutileza de cadauna de las rdenes, y haya que ejecutarlo paso a paso. Ms adelante tendrs quedepurar tus programas, porque cometers errores, si, errores y tendrs que corregirlossobre la marcha. De la forma ms inteligente, adems. Pero no hay que preocuparse,porque Perl tiene un depurador integrado. Ejecuta el programa de esta forma:jmerelo@vega:~/txt/tutoriales/perl-apresurados/code$perl -d hola-y-duerme.plLoading DB routines from perl5db.pl version 1.28Editor support available.Enter h or h h for help, or man perldebug for more help.main::(hola-y-duerme.pl:3): print "A estas horas, el Estudiante, no creyendo su buen suceso ymain::(hola-y-duerme.pl:4): deshollinando con el vestido y los ojos el zaquizam..\n";DBLa opcin -d del intrprete te introduce en el depurador, as, sin ms prolegmenos. Apartir de esa lnea de comandos, puedes evaluar las expresiones de Perl que quieras,y, por supuesto, depurar el programa, ejecutndolo paso a paso, mirando variables,y todo ese protocolo inherente al mester de la programacin. Para empezar, vamos aejecutarlo pasito a pasito.DB RWarning: some settings and command-line options may be lost!Loading DB routines from perl5db.pl version 1.2810Perl para apresuradosEditor support available.Enter h or h h for help, or man perldebug for more help.main::(hola-y-duerme.pl:3): print "A estas horas, el Estudiante, no creyendo su buen suceso ymain::(hola-y-duerme.pl:4): deshollinando con el vestido y los ojos el zaquizam..\n";, lo que empieza a hacerse ya un poco repetitivo. La orden R comienza a ejecutarel programa. En realidad, antes lo nico que habamos hecho es indicarle(educadamente) al depurador el programa que bamos a depurar, que se hacargado, interpretado y mirado a ver si hay errores de sintaxis; ahora es cuando loestamos ejecutando en serio. Bueno, todava no, porque en este punto todava nohemosejecutadonisiquieralaprimeralnea. Lasalidadeldepuradornosindicamain::(hola-y-duerme.pl:3):lasiguientelneadelprograma(3)quevamosaejecutar (y la 4 de camino, que para eso la orden ocupa dos lneas).DB n (1)A estas horas, el Estudiante, no creyendo su buen suceso ydeshollinando con el vestido y los ojos el zaquizam..main::(hola-y-duerme.pl:5): sleep 10; (2)(1) n, de next, siguiente, ejecuta la lnea dem, es decir, justamente la que aparece alnal de el ejemplo anterior(2) sta es la salida de esa lnea en particular; lo que hace es escribir lo que se en-cuentra entre las comillas.(3) Y muestra la lnea siguiente a ejecutar.Como persona precavida vale por dos diablillos, no es mala idea tener siempre el de-purador abierto para ir probando cosas; puedes usar, por ejemplo, la lnea perl -de0,que te deposita directamente en el depurador sin ejecutar ningn programa. Te aho-rrar ms de una vuelta al editor a reescribir lo que ya est escrito. Adems, es muyfcil. Si has elegido Un Buen Editor (o sea, el XEmacs) y te ha reconocido el programacomo un chero Perl, tendrs una opcin del men llamada perl; desplegando esemen, te aparecer la opcin debugger, eligindola te dar un resultado similar alque se muestra en la siguiente captura de pantalla:11Perl para apresuradosFigura 7. Depurando un programa en el mismo editor XEmacs. La echa est situa-da sobre la siguiente lnea a ejecutar.Desde este depurador se trabaja de la misma forma que en la versin de la lnea decomandos, pero se pueden colocar puntos de ruptura usando el ratn, por ejemplo ypuedes ver las lneas que se estn ejecutando en su contexto.12Perl para apresuradosFigura 8. Men especco del modo CPerl para XEmacs, mostrando las diferentesopciones, incluyendo la de depuracin y otras cuantas que posiblemente no usesnunca.Con esto, ya estamos listos para abordar empresas ms elevadas que nos llevarnmucho ms lejos.EjerciciosFamiliarizarse con el depurador, creando un programa con las dos o tres cosas que seconocen y viendo las diferentes rdenes; por ejemplo, cmo ejecutar un programa sinparar, ohastaunalneadeterminadaycmohacerquelaejecucinsepareenunalnea. Recuerda, h es tu amiga.Usando la sabidura colectivaEscribir est bien. Hay dos o tres personas que incluso se ganan la vida con ello22.Pero hace falta hacer algo ms. Copiar a Faulkner, por ejemplo. Pero no slo copiarlo.Ser ms Faulkner que Faulkner. O mezclar Faulkner con, pongamos por caso, DavidSedaris. O quizs Hemingway con Sedaris. Y llegado a este punto, te voy a contarun secreto. No hace falta que programes absolutamente nada. Ya hay gente que hahecho lo que t piensas programar en este preciso instante. De hecho, un vietnamitay un chavalote de Mondoedo que acaba de terminar un mdulo de FP segundogrado. Pero ambos dos son buenas personas y legan su trabajo a la humanidad toda(inclusive t). Si hay una sola cosa que haga al Perl superior a otros lenguajes deprogramacin, son esas cosas que ha hecho la gente, empaquetado y colocado enun sitio comn, llamado CPAN23. CPAN signica, como probablemente ya habasadivinado, Comprehensive Perl Archive Network y es un sitio donde hay cienes, qudigo cienes, millardos de mdulos que hacen todas esas cosas que se te hayan podido13Perl para apresuradosocurrir y otras cuantas que, ni harto de vino, se te podran haber ocurrido. Pero hayque saber usarlo, claro.Nota:Si hastenidoquepedirleaalguienqueteinstaleel Perl, posiblementeseaelmomentodequetengasamanootravezsutelfonoomvil, porquevasavolveranecesitarlo. No ahora. Ms tarde. Mientras tanto, aunque no sea el da de apreciacindel administrador del sistema24, aprovecha para pensar en l con cario. Antes de quelafaltadecalorhumanoloconviertaenunoperadorbastardodel inerno25. Parain-stalar mdulos de CPAN para que sean accesibles para todo el mundo hace falta tenerprivilegios de administrador; sin embargo, puedes instalarlos sin problemas en tu propiodirectorio (por ejemplo, en /home/miusuario/lib/perl).En CPAN hay mdulos para todo. En particular, para manejar textos en diferentesidiomas. Por ejemplo, un mdulo para dividir en slabas texto en castellano llamadoLingua::ES::Silabas26. Todos los mdulos en CPAN estn organizados en espacios denombres, para hacer ms fcil su bsqueda y evitar colisiones de funcionalidad (yde nombre tambin). En este caso, el espacio de nombre es elLingua, que incluyemuchos ms mdulos cada vez ms esotricos. Pero este espacio est bien organiza-do, porque luego vienen un par de caracteres que indican a qu lengua se aplica elmdulo susodicho; en este caso,ES. Finalmente, el ltimo apartado es el realmenteespecco.Nota: En cada sistema de cheros especco, el nombre tambin indica en el directorioen el que estar almacenado, dentro de los directorios donde se suelen almacenar losmdulos.Un mdulo es simplemente una biblioteca de utilidades para un n determinado (oninguno) escritas en Perl, o, al menos, empaquetadas para que se pueda acceder aellas desde un programa en Perl. Una librera crea una serie de funciones a las quepodemos acceder desde nuestros programas. Pero antes hay que instalarla. Y antestodava, hay que ejecutar CPAN por primera vez:jmerelo@vega:~$ sudo cpancpan shell -- CPAN exploration and modules installation (v1.83)ReadLine support enabledcpan>Si realmente es la primera vez que lo ejecutas, te preguntar una serie de cosas. En lamayora es razonable contestar la opcin que te ofrezcan por defecto, pero en un parde ellas si tienes que elegir:Si no tienes privilegios de superusuario, tendrs que elegir un subdirectorio alter-nativo para colocar los mdulos instalados.Esconvenienteusarlosrepositoriosmsaccesiblesdesdetupasporordendefrecuencia de actualizacin, para tener garanta de frescura de los mdulos. Porejemplo, dos buenas opciones pueden ser http://debianitas.net/CPAN/ yhttp://cpan.imasd.elmundo.es/; aunquelosotrosrepositoriosconlaextensin.es tambin suelen funcionar relativamente bien. Ten en cuenta que los basados enftp puede que no le gusten a tu cortafuegos; lo ms seguro es seleccionar primerolos que usen el protocolo http.Unavezconguradotodo, yasepuedeinstalarelmdulosusodicho. Lopuedeshacer directamente desde la lnea de comandos con14Perl para apresuradosinstall Lingua::ES::SilabasCPAN: Storable loaded okLWP not availableFetching with Net::FTP:ftp://ftp.rediris.es/mirror/CPAN/authors/01mailrc.txt.gzGoing to read /home/jmerelo/.cpan5.9.3/sources/authors/01mailrc.txt.gzCPAN: Compress::Zlib loaded okLWP not available[...ms cosas...]Fetching with Net::FTP:ftp://ftp.rediris.es/mirror/CPAN/authors/id/M/MA/MARCOS/CHECKSUMSCPAN: Module::Signature security checks disabled because Module::Signaturenot installed. Please consider installing the Module::Signature module. You may also need to be able to connect over the Internet to the publickeyservers like pgp.mit.edu (port 11371).Checksum for /home/jmerelo/.cpan5.9.3/sources/authors/id/M/MA/MARCOS/Lingua-ES-Silabas-0.01.tar.gz okScanning cache /home/jmerelo/.cpan5.9.3/build for sizesLingua-ES-Silabas-0.01/Lingua-ES-Silabas-0.01/Silabas.pmLingua-ES-Silabas-0.01/READMELingua-ES-Silabas-0.01/Makefile.PLLingua-ES-Silabas-0.01/ChangesLingua-ES-Silabas-0.01/MANIFESTLingua-ES-Silabas-0.01/test.plCPAN.pm: Going to build M/MA/MARCOS/Lingua-ES-Silabas-0.01.tar.gzChecking if your kit is complete...Looks goodWriting Makefile for Lingua::ES::Silabascp Silabas.pm blib/lib/Lingua/ES/Silabas.pmManifying blib/man3/Lingua::ES::Silabas.3/usr/bin/make -- OKRunning make testPERL_DL_NONLAZY=1 /usr/local/bin/perl5.9.3 "-Iblib/lib" "-Iblib/arch" test.pl1..9# Running under perl version 5.009003 for linux# Current time local: Mon Jul 10 23:34:36 2006# Current time GMT: Mon Jul 10 21:34:36 2006# Using Test.pm version 1.25ok 1ok 2ok 3ok 4ok 5ok 6ok 7ok 8ok 9/usr/bin/make test -- OKRunning make installInstalling /usr/local/lib/perl5/site_perl/5.9.3/Lingua/ES/Silabas.pmInstalling /usr/local/share/man/man3/Lingua::ES::Silabas.3Writing /usr/local/lib/perl5/site_perl/5.9.3/i686-linux-thread-multi-ld/auto/Lingua/ES/Silabas/.packlistAppending installation info to /usr/local/lib/perl5/5.9.3/i686-linux-thread-multi-ld/perllocal.podsudo make install -- OKque, efectivamente, descarga el mdulo del repositorio espejo de CPAN ms cercano(en este caso ftp.rediris.es), lo "compila", hace una serie de tests (sin los cuales nose instalara siquiera) y efectivamente lo instala para que est disponible para todoslos programas que quieran usarlo (que no creo que sean muchos, pero alguno puedecaer).Pero, andest la documentacin? se preguntar el preocupado (aunque apresurado)lector. No preocuparse. Todo mdulo en CPAN est documentado y se accede a l15Perl para apresuradosusando el mismo sistema que se usa para todo Perl: el programaperldoc. En estecaso, perldoc Lingua::ES::Silabas nos devolver algo as:Lingua::ES::Silabas(3)User Contributed Perl DocumentatioLingua::ES::Silabas(3)NOMBRELingua::ES::Silabas - Divide una palabra en silabasSINOPSISuse Lingua::ES::Silabas;$palabra = externocleidomastoideo; # muchas silabas ;-)## en contexto de lista,## lista de silabas que componen la palabra@silabas = silabas($palabra);## en contexto escalar,## el numero de silabas que componen la palabra$num_silabas = silabas($palabra);Todos los mdulos en CPAN estn documentados con un pequeo manual de refe-rencia y ejemplos; es conveniente tener este manual abierto cuando se programe, ousar directamente los ejemplos incluidos en la SINOPSIS para comenzar a programarcon l.Vamos a ver ahora como se usa ese pozo de sabidura para bajarnos una pgina webuse LWP::Simple; (1)getprint(http://localhost:8020/); (2)(1) En esta lnea lo nico que se hace es cargar la librera que tendr que estar insta-lada; no es el caso con esta, porque forma parte del ncleo o core. Cargar implicaincorporar las funciones que ese mdulo exporte; para saber qu funciones sonesas habr que consultar la pgina de manual, claro.Si te das cuenta, no ha habido que especicar dnde diablos se busca ese mdulopara incorporarlo al programa. Mgicamente, el intrprete de Perl busca que tebusca en todos los directorios razonables, hasta que lo encuentra. Pero aunquemgico, no es teleptico y no sabe donde t, precisamente, has podido instalarese mdulo. Especialmente si no tienes privilegios de superusuario y has tenidoque instalarlo en tu ${HOME}, tendrs que especicarle en qu directorio buscar,de esta forma:use lib "/home/esesoyyo/lib/perl";use LWP::Simple;Es decir, antes de tratar de cargar el mdulo.(2) Sin dar muchas ms vueltas, aqu est la orden que se baja la pgina web y laimprime. getprintesprecisamenteunadeesasfuncionesqueelmdulohaimportado.Por otra parte, hay una forma ms simple de hacer lo mismo, directamente desde lalnea de comandosperl -MLWP::Simple -e getprint("http://localhost:8020")16Perl para apresuradosLa opcin -M carga el mdulo que la sigue, y -e ejecuta el cdigo Perl que le sigue.Es conveniente para programas cortos, o si se quiere hacer un alias del shell, porejemplo.27EjerciciosHay gigas y gigas de mdulos, a cada cul ms til y sorprendente. Los mdulos Acme::,por ejemplo, son absolutamente intiles y no tienen equivalente en ningn otro lenguaje.Instalar el mdulo Acme::Clouseau por ejemplo y ejecutar el programa de prueba que seincluye en su Sinopsis.Ley de MurphyErrareshumano, sobretodocuandounotienetantosdedosytanpocasteclasyse juntan todas para que uno se equivoque. Y tampoco puede acordarse uno de lasintaxis de un lenguaje que no tiene sintaxis. Sera una paradoja que dara lugar al ndel universo tal como lo conocemos. As que uno se equivoca. Pero como llegados los67 minutos de este Perl para apresurados tampoco sabe uno mucho (y se nos echa eltiempo encima) tampoco puede equivocarse uno mucho. Pero hay un par de erroresque se cometen con bastante asiduidad. El primero puede ser algo as:#!/usr/bin/pelrprint "Da igual, porque va a petar";que, al ejecutarse, da un sorprendente:jmerelo@vega:~/txt/tutoriales/perl-apresurados$code/peta1.plbash: code/peta1.pl: /usr/bin/pelr: bad interpreter: No existe el fichero o el directorio, que viene a decir que vale, que muy bien, pero que ese intrprete no existe. Cambiaralguno de los otros caracteres, la admiracin (que es una expresin de admiracin alcreador del programa encarnado en el intrprete) o la almohadilla, produce erroresigualmente pintorescos. Por ejemplo, quitar la admiracin o la almohadilla da este:Warning: unknown mime-type for "Da igual, porque va a petar" -- using "application/*"Error: no such file "Da igual, porque va apetar"Este error aparecer tambin si pasas un chero de Windows (que incluyen al nal delnea dos caracteres, retorno de carro y n de lnea) a Unix/Linux/GNU(que incluyeuno solo). El intrprete de rdenes, tan agudo en otras ocasiones, en esta ocasininterpretar el carcter extrao (representado con ^M en los editores) como parte delnombre y dar el mismo tipo de error.El segundo tipo de error y el ms frecuente, se produce una vez que el intrprete seha cargado correctamente, por ejemplo en el siguiente programa:print "Da igual, porque va a petar\n"print "Pero solo si el error no est en la ltimalnea\n";que hace que el intrprete responda con un informativosyntax error at code/peta2.pl line 4, near "print"Execution of code/peta2.pl aborted due to compilation errors.y todo eso, por un humilde punto y coma. Si Guido van Rossum levantara la cabeza.17Perl para apresuradosEvidentemente, otros errores de sintaxis darn su mensaje correspondiente. En gene-ral, sern bastante ms informativos. Y, en todo caso, Google es tu amigo.EjerciciosEste bloque no tiene ejercicios. No te voy a pedir que escribas un chero con errores ydigas Um, parece que tiene un error . Pero acurdate de lo ledo, te ser til. O lo serpara quien llegue aqu desde Google28.Lo escrito, escrito estQue si, que mucho Perl para apresurados y mucha gaita gallega, pero mira la horaque es y no nos hemos comido un jurel, estar diciendo a estas alturas el (apresura-do) lector. Tenga paciencia vuecencia, que sin pausa pero sin prisa, todo llegar. Enparticular, llega que, no conforme con escribir cosas que estn dentro de un programa,alguien quiera escribir algo que est, por el contrario, fuera de un programa. Y params inri, con spoilers traseros y todo: aadindole nmeros de lnea. Pues para esoestamos (est Perl):my $leyendo = "diablocojuelo.txt"; (1)open my $fh, "