Sig:
Índice General
Sup:
LHP
Principios de Programación Imperativa, Funcional y Orientada a Objetos
Una Introducción en Perl/Una Introducción a Perl
Casiano R. León
0
.
1
Principios de Programación Imperativa, Funcional y Orientada a Objetos
Una Introducción en Perl/Una Introducción a Perl
by Casiano R. León
0
.
2
is licensed under a Creative Commons Reconocimiento 3.0 Unported License.
Permissions beyond the scope of this license may be available at:
http://campusvirtual.ull.es/ocw/course/view.php?id=43
.
Índice General
Índice de Figuras
Índice de Tablas
A Juana
Agradecimientos/Acknowledgments
Erratas
Como Obtener Estos Apuntes
Prólogo
Introducción
Primeros Pasos
Escalares
Números
Cadenas
Contexos Numérico y de Cadena: Conversiones
Variables Mágicas
Variables privadas
Lectura de Datos
La Lógica de Perl
Operadores Lógicos
Operadores de Comparación
Algunas Sentencias de Control
Depuración de errores
Una Brevísima Introducción a las Expresiones Regulares
Un Programa Simple
Breve Introducción al Manejo de Excepciones
Autentificación Automática
Uso de Subversion
Práctica: Area de un Círculo
Arrays y Listas
Introducción
Operadores de Listas
Ejercicios
Práctica: Fichero en Orden Inverso
Práctica: En Orden ASCIIbético
Práctica: Sin Distinguir Case
Práctica: Indexación
Práctica: Postfijo
Práctica: Ordenación Internacional
Hashes
Acceso a los elementos de un hash
El operador flecha grande
Asignación de Hashes
Troceado de un
hash
Inversión de un Hash
Las funciones
keys
y
values
La función
each
Las funciones
delete
y
exists
Interpolación de hashes
Obtener el Conjunto de Elementos de una Lista
Bloqueo de las Claves de un Hash
Práctica: Ordenar por Calificaciones
Subrutinas
Definición de subrutinas
Argumentos y valores de retorno
Otros modos de llamar a una subrutina
Tipo de objeto y ámbito
La declaración
our
El uso de
local
Argumentos con Nombre
Aliasing
de los parámetros
Contexto de la llamada
¿Quién llamó a esta rutina?
Calculando el Máximo de Forma Genérica
Ejercicio: Prioridad de Operaciones
Ejercicio: Significados de la Coma
Práctica: Polares a Cartesianas
Práctica: Postfijo y Subrutina
Entrada /Salida
El Operador Diamante y el Manejador de Ficheros
ARGV
El manejador
ARGVOUT
Uso de Perl desde la Línea de Comandos: Modificación en Múltiples Ficheros
El Manejador de Ficheros
DATA
Operaciones sobre Ficheros
Práctica: Ficheros Grandes y Viejos
Ficheros Binarios
Unicode
La función
localtime
Directorios
Operaciones con ficheros, links y directorios
Renombrar Ficheros
Práctica: Descenso Recursivo en Subdirectorios
Expresiones Regulares
Un ejemplo sencillo
Copia y sustitución simultáneas
Variables especiales después de un emparejamiento
El uso de
$1
dentro una expresión regular
Ambito automático
Expresiones regulares abreviadas
Listas y ExpReg
Map
y las expresiones regulares
Opciones
La opción
/m
La opción
/s
El Modificador
/g
La opción
/x
Interpolación en los patrones
RegExp no ``Greedy''
Negaciones y operadores no
greedy
Algunas extensiones
Comentarios
Paréntesis de agrupamiento
Operador de predicción positivo
Operador de predicción negativo
Secuencias de números de tamaño fijo
El ancla
G
Palabras Repetidas
Análisis de cadenas con datos separados por comas
Número de substituciones realizadas
Evaluación del remplazo
Anidamiento de
/e
Expandiendo y comprimiendo tabs
Modificación en múltiples ficheros
tr y split
Pack
y
Unpack
Referencias
Referencias a variables ya existentes
Referencias y referentes
Referencias a constantes
Contextos y Referencias
Ambiguedad en el De-referenciado
La Notación Flecha
Identificando un referente
ref
Paso de Listas y Hashes a Subrutinas
Referencias a almacenamiento anónimo
Práctica: Conjuntos a través de Hashes
Estructuras anidadas
Asignación Implıcita de Memoria y Autovivificación
Impresión de Estructuras Anidadas
Ejemplo: El Producto de Matrices
Ejercicio: Identificadores entre LLaves
Gestión de la memoria
Referencias Simbólicas
Práctica: Referenciado Simbólico
Referencias a subrutinas anónimas
Funciones de orden superior
Práctica: Emulación de un Switch
Typeglobs
Introducción
Asignación de typeglobs
Variables léxicas y typeglobs
local
y typeglobs
Paso de parámetros a una subrutina por medio de typeglobs
Typeglobs y Eficiencia
Typeglobs Selectivos
Typeglobs vistos como Hashes
Referencias Simbólicas y typeglobs
Práctica: Construcción de un wrapper
Suprimiendo Subrutinas con Typeglobs y Referenciado Simbólico
El Módulo
Symbol
Práctica: Inserción de una Subrutina
Prototipos
Práctica: Suma de Prefijos
Las Cadenas como Ficheros
Clausuras
Clausuras y Generación de Funciones Similares
Anidamiento de subrutinas
Clausuras e Iteradores
Memoizing
Currying
Listas Perezosas
Módulos
Los packages: Repaso
Tablas de Símbolos y Packages
Subrutinas Privadas
Paquetes y Ficheros
Búsqueda de Librerías y Módulos
Control de Versiones
Importación
Acceso a la tabla de símbolos
Práctica: Stash
AUTOLOAD
: Captura de LLamadas
Práctica: AUTOLOAD
El Pragma
use subs
Los Paquetes
CORE
y
CORE::GLOBAL
Uso del Módulo de Exportación
CPAN: The Comprehensive Perl Archive Network
Instalación a mano
Práctica: Instalar un Módulo
Saber que Módulos están Instalados
Suprimir un Módulo Instalado
Usando el módulo
CPAN.pm
como Administrador
Opciones de Configuración
Bundles
CPAN: Si no tenemos los privilegios de administrador
Construyendo un Mirror de CPAN
Práctica: CPAN
PAR
: The Perl Archive Toolkit
Instalación de Ejecutables con
pp
Construcción de un Módulo con
h2xs
La Documentación en Perl
Bancos de Pruebas y Extreme Programming
Versiones anteriores a la 5.8
Versiones posteriores a la 5.8
Práctica: Construcción de una Distribución
Pruebas en la Construcción de una Distribución
El Problema de la Mochila 0-1
El Módulo
La Documentación
MANIFEST
El fichero
pm_to_blib
El fichero
META.yml
Las Pruebas
Formas de Ejecutar las Pruebas
Ejecutables
Profundizando en
Makefile.PL
Comprobando la Distribución con
Test::Kwalitee
Comprobando la Portabilidad del Código
Práctica: Pruebas
El módulo
Test::LectroTest
Práctica: Generación de Pruebas con
Test::LectroTest
A Veces las Pruebas Tienen Fallos
Software de Rastreo de Errores
Request Tracker
Patches o Parches
Creación de un Parche/Patch
Aplicar el Patch
Escribir Módulos para CPAN
Programación Orientada a Objetos
Moose
Introducción
Práctica: Un Módulo OOP Simple
Generación Automática de Accesors/Mutators
Práctica: Instalación Automática de Métodos
Constructores
Copia de Objetos
Práctica: Constructores-Copia
Herencia
Práctica: Ancestros de un Objeto
Práctica: Un Método Universal de Volcado
Ejercicio: Búsqueda de Métodos
Delegación en la Inicialización
Diamantes
La notación
SUPER
Ejercicio:
SUPER
Métodos Abstractos
Práctica: Herencia
Destructores
Instalación Automática de Métodos con
Class::Struct
Sobrecarga de Operadores
Búsqueda de la Implementación de un Operador
Sobrecarga de las Operaciones de Conversión
Sobrecarga de las Constantes
La Sobrecarga y el Constructor de copia
Práctica: Números Fraccionarios
¿Atados? ó ¿Corbatas? ó
Tie
s
Volcado automático de una variable
Acceso a las variables de entorno
Práctica: Tie Escalar
Templates
Introducción
Depuración
Bucles
FOR
Bucles sobre Hashes
Generando HTML
Filtros
CGI
ttcgi
Mas sobre CGIs con Templates
SQLite
Introducción
Triggers
Logging
DBI
Objetos y Bases de Datos
Ficheros de Texto como Listas
Hashes DBM
DBMs Multinivel
Class::DBI
Instalar una base de Datos
Describir la Aplicación
DBIx::Class
El Compilador de Perl
Los Paquetes
O
y
B
Control de Versiones
Use Subversion: Creación de un Repositorio
Añadiendo Proyectos
Obtener una Copia de Trabajo
Actualización del Proyecto
Comandos Básicos
Autentificación Automática
Especificadores de Revisión
Repasando la Historia
Deshaciendo Cambios en la Copia de Trabajo
Resolución de Conflictos
Usando
vimdiff
como programa de diferencias para subversion
Tracking Systems
Protocolos y Esquemas
El Comando
blame
Propiedades
Propiedades Subversion
Sustitución de Palabras Clave
Autopropiedades
Propiedades y Compartición de Documentos entre Proyectos: svn:externals
svn export
Completando comandos de subversion en
bash
Copia de un Repositorio
Volcado y Carga de los contenidos de un Repositorio
Copias Incrementales
Etiquetas
Ramas y Mezclas
Mezcla Usando un Rango de Versiones de una Rama
Las Mezclas Pueden Producir Conflictos
Gestión de Configuraciones
Modelos de Sincronización
Funciones de la Gestión de Configuraciones
Objetivos de la Gestión de configuraciones (CM)
Ventajas a la Hora de Usar Gestión de Configuraciones
Dificultades a la Hora de Usar Gestión de Configuraciones
Conjuntos de Cambios en Subversion
Mezclas en
svnbook
Hooks
Enviando Mails via Hooks
Controlando los Permisos via Hooks
Locking
Búsqueda Binaria
Replicación de Repositorios
Referencias
Apéndice
Código de
01MartelloAndTothBook.t
Código de
Calc.yp
Índice de Materias
Bibliografía
Sig:
Índice General
Sup:
LHP
Casiano Rodríguez León
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por
Casiano Rodríguez León
is licensed under a
Creative Commons Reconocimiento 3.0 Unported License
.
Permissions beyond the scope of this license may be available at
http://campusvirtual.ull.es/ocw/course/view.php?id=43
.
2012-06-19