En principio no hay relación directa entre paquetes y ficheros: un mismo paquete puede existir en diversos ficheros y diversos paquetes pueden ser declarados en un único fichero.
Como un paquete generalmente se hace para ser reutilizado muchas veces,
se guarda en un archivo libreria de extension .pl
(por ejemplo
cgilib.pl
) o en un archivo módulo con el sufijo .pm
.
Los programas que quieren usar pueden invocar el fichero con require
require "cgilib.pl";
la función require
lee el archivo cgilib.pl
si este no ha
sido leido antes. El archivo no tiene que necesariamente estar asociado
con un package
pero
si debe devolver verdadero, por tanto, es necesario que la última sentencia ejecutada
sea:
return 1;
Si se omiten las comillas y el sufijo, se asume una extensión .pm
.
Mientras que require
carga el paquete en tiempo de ejecución,
comprobando que no esta ya cargado,
use
carga los módulos en tiempo de compilación.
El siguiente código no funciona:
$paquete = "MiPaquete"; # se ejecuta en tiempo de ejecución use $paquete; # se ejecuta en tiempo de compilaciónAdemás
use
requiere que el sufijo del fichero sea .pm