Aprendiendo a Crear Webs Con Perl
Total Page:16
File Type:pdf, Size:1020Kb
APRENDIENDO A CREAR WEBS CON PERL por Ubay D´ıazMach´ın Director de proyecto: Casiano Rodriguez de Leon PRESENTADO CUMPLIENDO LOS REQUISITOS PARA PROYECTO FIN DE CARRERA EN ESCUELA TECNICA´ SUPERIOR DE INGENIER´IA INFORMATICA´ UNIVERSIDAD DE LA LAGUNA LA LAGUNA, TENERIFE, ESPANA~ 30 JUNIO, 2008 c Copyright por Ubay D´ıazMach´ın,2008 Se concede permiso para copiar, distribuir y/o modificar este documento bajo los t´erminosde la Licencia de Documentaci´onLibre de GNU, Versi´on1.2 o cualquier otra versi´onposterior publicada por la Free Software Foundation; sin Secciones Invariantes ni Textos de Cubierta Delantera ni Textos de Cubierta Trasera. El texto oficial de la licencia se encuentra en el ap´endice A ii UNIVERSIDAD DE LA LAGUNA ESCUELA TECNICA´ SUPERIOR DE INGENIER´IA INFORMATICA´ El abajo firmante certifica que ha le´ıdoel \Aprendiendo a crear webs con Perl" realizado por Ubay D´ıazMach´ın, y ya que cumple con los requisitos para un Proyecto Fin de Carrera recomienda a la Escuela T´ecnicaSuperior de Ingenier´ıaInform´aticala aceptaci´ondel mismo. D´ıa:30 Junio, 2008 Director de proyecto: Casiano Rodriguez de Leon Lectores: Francisco Almeida Rodr´ıguez Elena Sanchez Nielsen Coromoto Le´onHern´andez iii iv Dedicado a las familias y amigos de los autores. v vi ´Indice general ´Indice de cuadros XIII ´Indice de figuras XIX Resumen XXI Agradecimientos XXIII I Introducci´on1 Cap´ıtulo1. Introducci´on3 1.1. Que se piensa hacer...........................3 1.2. Que se ha usado.............................4 II Introducci´ona SQL5 Cap´ıtulo2. >Qu´eEs?7 Cap´ıtulo3. Historia9 Cap´ıtulo4. Componentes 11 4.1. Lenguaje de Definici´onde Datos (LDD o DDL)........... 11 4.1.1. Crear............................... 11 4.1.2. Eliminar............................. 13 4.1.3. Actualizar............................ 13 4.1.4. Vaciar.............................. 14 4.2. Lenguaje de Manipulaci´onde Datos (LMD o DML)........ 14 4.2.1. Inserci´on............................. 14 4.2.2. Actualizar............................ 15 4.2.3. Eliminaci´on........................... 15 4.2.4. Selecci´on............................. 16 vii Cap´ıtulo5. Ejemplos 19 5.1. Creando Tablas............................. 19 5.2. Modificando Tablas........................... 20 5.3. Insertando Datos............................ 21 5.4. Eliminaci´onde Datos.......................... 21 5.5. Actualizando Datos........................... 22 III Introducci´ona SQLite 23 Cap´ıtulo6. Historia 25 Cap´ıtulo7. >Qui´enUsa SQLite? 27 7.1. Ejemplo de Proyectos donde es usado................. 27 Cap´ıtulo8. Arquitectura de SQLite 29 8.1. Interface................................. 29 8.2. El Compilador. Procesador de Consultas................ 29 8.3. M´aquinaVirtual............................ 30 8.4. Interface de Almacenamiento...................... 30 Cap´ıtulo9. Ventajas y Defectos 31 IV DBI 33 Cap´ıtulo10. >Qu´ees? 35 Cap´ıtulo11. Funcionamiento 37 11.1. Composici´onde DBD.......................... 37 Cap´ıtulo12. M´etodos para Manipular Datos en DBI 41 12.1. Preparando la Consulta........................ 41 12.1.1. La Funci´onprepare()...................... 41 12.2. Ejecutando............................... 43 12.2.1. execute()............................. 43 12.2.2. do()............................... 44 viii 12.3. Mostrando................................ 44 12.3.1. Retornando un Array: fetchrow arrayref........... 44 12.3.2. Seleccionar e Imprimir..................... 46 12.3.3. Seleccionando Columnas.................... 47 12.3.4. Seleccionando una Tabla Entera................ 47 Cap´ıtulo13. DBD Actuales 49 Cap´ıtulo14. Ejemplos de C´odigoscon Perl 51 V DBIx::Class 57 Cap´ıtulo15. >Qu´ees? 59 Cap´ıtulo16. Caracter´ısticas 61 16.1. Manipulaci´onde Relaciones...................... 61 16.2. Definici´onde Estructura........................ 61 16.3. B´usquedade Informaci´on en la Base de Datos............ 61 16.4. Mostrar la Informaci´on......................... 61 Cap´ıtulo17. Componentes 63 17.1. DBIx::Class::Schema.......................... 64 17.2. DBIx::Class::Relationship....................... 64 17.2.1. Claves Ajenas:.......................... 64 17.2.2. Relaciones 1 a muchos (has many)............... 65 17.2.3. Relaciones 1 a 1......................... 66 17.2.4. Relaciones Muchos a Muchos.................. 67 17.3. DBIx::Class::ResultSet......................... 67 17.3.1. La familia de m´etodos search.................. 68 17.3.2. Iteradores............................ 68 17.3.3. Manipulando Datos....................... 69 Cap´ıtulo18. Ejemplo de Uso 71 ix VI Template Toolkit 79 Cap´ıtulo19. >Qu´eEs? 81 Cap´ıtulo20. Cosas B´asicasdel Lenguaje 83 Cap´ıtulo21. Comentarios 85 Cap´ıtulo22. Directivas 87 22.1. Procesado de Ficheros......................... 87 22.1.1. INSERT............................. 87 22.1.2. INCLUDE............................ 88 22.1.3. PROCESS............................ 89 22.2. WRAPPER............................... 90 22.3. BLOCK................................. 92 22.4. Filtros y Plugins............................ 93 22.4.1. FILTER............................. 93 22.4.2. USE............................... 94 Cap´ıtulo23. Variables 97 23.1. Escalares................................. 97 23.2. Listas.................................. 97 23.3. Hashes.................................. 98 23.4. M´etodos Virtuales........................... 99 23.4.1. M´etodos Escalares....................... 99 23.4.2. M´etodos referidos a Listas................... 99 23.4.3. M´etodos referidos a Hash.................... 100 Cap´ıtulo24. Control de Flujo 103 24.1. Sentencias Condicionales........................ 103 24.1.1. IF, ELSIF, ELSE y UNLESS................. 103 24.1.2. SWITCH y CASE....................... 103 24.2. Bucles.................................. 103 24.2.1. FOREACH........................... 104 24.2.2. WHILE............................. 104 x Cap´ıtulo25. Generando P´aginasDin´amicas 107 VII Catalyst 109 Cap´ıtulo26. Introducci´on 111 26.1. Filosof´ıa................................. 112 26.2. Servidores Webs soportados...................... 112 26.2.1. Pasando de Desarrollo a Producci´on.............. 113 26.3. Alternativas a Catalyst......................... 114 Cap´ıtulo27. Primeros Pasos en Catalyst 117 27.1. Instalando Catalyst........................... 117 27.1.1. Instalandolo como un paquete Debian............. 117 27.1.2. Instalando mediante CPAN.................. 117 27.2. Creando lo B´asicode Catalyst..................... 118 27.2.1. Los Primeros Pasos....................... 119 27.3. Haciendo un Hola Mundo....................... 122 27.3.1. A~nadiendouna Vista...................... 124 27.3.2. A~nadiendoel controlador.................... 125 Cap´ıtulo28. Expandiendo el Ejemplo 131 28.1. A~nadiendola Base de Datos...................... 131 28.1.1. Creando la Base de Datos................... 131 28.1.2. Creando el Esquema de la Base de Datos en Catalyst.... 133 28.2. Mostrando los Datos Almacenados.................. 140 28.2.1. Mostrando Item......................... 140 28.2.2. Mostrando Toda la Informaci´on................ 143 28.3. Insertando Datos y Actualizando................... 145 28.4. Eliminado una Entrada......................... 152 Cap´ıtulo29. Listado de Plugins 155 Cap´ıtulo30. Notas Importantes 157 xi VIII Conclusiones 159 Cap´ıtulo31. Conclusiones 161 31.1. Lo Aprendido por el Autor....................... 161 31.2. Reflexiones sobre los utilizado..................... 161 IX Bibliograf´ıa 163 Bibliograf´ıa 165 X Ap´endices 167 Ap´endiceA. GNU Free Documentation License 169 xii ´Indice de cuadros 3.1. Historial de Versiones de SQL[9]............... 10 4.1. Cl´ausulaspara SELECT.................... 16 4.2. Operadores de Comparaci´on................. 17 4.3. Funciones de Agregado para SELECT............ 17 5.1. Creando la Tabla ITEM.................... 20 5.2. Modificando la Tabla COLECCION............. 20 5.3. Insertando Datos........................ 21 5.4. Eliminando Datos....................... 22 5.5. Actualizando Datos...................... 22 9.1. Comparativa de Ventajas y Desventajas de SQLite..... 31 13.1. Listado de DBD........................ 50 14.1. Ejemplo de Uso de DBI en el entorno de SQLite...... 52 14.2. Ejecuci´ondel anterior C´odigode SQLite........... 53 14.3. Ejemplo de Uso de DBI en el entorno de MySQL[19].... 54 14.4. Ejemplo de Uso de DBI en el entorno de Amazon[19].... 55 17.1. Forma de Establecer una Relaci´onde Clave Ajena..... 65 17.2. Forma de Establecer una Relaci´onde 1 a muchos...... 65 17.3. Ejemplo de Establecer una Relaci´onde 1 a muchos..... 65 17.4. Forma de Establecer una Relaci´onde 1 a 1 con Borrado en Casacada............................ 66 17.5. Ejemplo de Establecer una Relaci´onde 1 a 1 con Borrado en Casacada.......................... 66 17.6. Forma de Establecer una Relaci´onde 1 a 1 con existencia en las dos tablas........................ 66 17.7. Ejemplo de Establecer una Relaci´onde 1 a 1 con existencia en las dos tablas........................ 67 17.8. Forma de Establecer una Relaci´onde muchos a muchos.. 67 xiii 17.9. Ejemplo de Establecer una Relaci´onde muchos a muchos. 67 18.1. Esquema de Base de Datos en SQLite............ 72 18.2. Arbol´ de Directorios para representar la Base de Datos... 73 18.3. El Fichero Main.pm...................... 73 18.4. El fichero Places.pm...................... 73 18.5. El Fichero Weather...................... 74 18.6. El fichero Wiki.pm....................... 74 18.7. El Fichero Enlaces.pm..................... 75 18.8. El Fichero Basesdatos.pl...................