11. Bibliotecas y módulos
- Prinicipios básicos de la reutilización de código
- Cualquier problema se puede partir en problemas pequeños una y otra vez. Conviene reunir los pedazos de código (funciones) que contribuyan a la solución de un problema específico, para poderlos aplicar fácilmente en otras ocasiones
- Compartir código es bueno, y es mejor compartir recetas sencillas y específicas que productos completos y potencialmente más difíciles de aplicar
- Bibliotecas
- Las bibliotecas son simplemente pedazos de código que son incluídos en el programa en tiempo de ejecución, cuidando de no incluirlas más de una vez.
- Una biblioteca es un archivo normal de Perl, situado en algún directorio mencionado en @INC, y con sufijo
'.pl'
. Por ejemplo:require 'biblioteca';
busca a biblioteca.pl en @INC, y evalúa al primero que encuentre. - Si la expresión solicitada es un bareword, Perl asume que estamos intentando llamar a un módulo mediante require, busca el archivo con extensión
.pm
, y traduce '::' por '/' en la búsqueda del archivo. - Las funciones de bibliotecas típicamente entran al espacio de nombres actual.
- Al crear una biblioteca, es importante que el resultado de la evaluación sea verdadero, por lo que es sugerido que su último comando sea
1;
- Módulos
- Son la evolución natural de las bibliotecas, dando un paso hacia la orientación a objetos (de hecho, los objetos son implementados como módulos) adaptándose a los cambios introducidos en Perl 5. Además de los requisitos de las bibliotecas, los módulos llevan algo de información extra para facilitar interoperar con ellos.
- Todos los símbolos del módulo están restringidos a un espacio de nombres definido (y por convención, el espacio de nombres se llama igual que el módulo). El usuario tiene la opción de importar algunos de estos símbolos a su espacio de nombres, normalmente usando Exporter.
- Los módulos, a diferencia de las bibliotecas, son incluídos en tiempo de compilación.
- Son invocados con el comando
use módulo lista
, donde módulo necesariamente es un bareword, y lista es la lista de símbolos a importar. Es equivalente a:BEGIN {require módulo; import módulo lista}
Mayor información:
perldoc perlmodlib
perldoc -f require
perldoc -f use