Sig:
A Juana
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
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
Apéndice
Código de
01MartelloAndTothBook.t
Código de
Calc.yp
Índice de Materias
Bibliografía
Sig:
A Juana
Sup:
LHP
Casiano Rodríguez León
2011-04-15