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