Sig:
Índice de Figuras
Sup:
Principios de Programación Imperativa,
Ant:
Principios de Programación Imperativa,
Err:
Si hallas una errata ...
Índice General
Índice de Figuras
Índice de Tablas
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?
Práctica: Máximo
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
Ficheros 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
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? ó Ties
Volcado automático de una variable
Acceso a las variables de entorno
Práctica: Tie Escalar
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
Índice de Materias
Bibliografía
Sig:
Índice de Figuras
Sup:
Principios de Programación Imperativa,
Ant:
Principios de Programación Imperativa,
Err:
Si hallas una errata ...
Casiano Rodríguez León
2009-10-04