Paquetes y módulos de Perl
En Perl, cada paquete tiene una tabla de símbolos separada. La sintaxis de definición es:
package mypack;
Esta declaración define un paquete llamadomypacky a partir de entonces todos los nombres de variables y subrutinas definidos se almacenan en la tabla de símbolos asociada a ese paquete, hasta que se encuentre otrapackagesentencia.
Cada tabla de símbolos tiene su propio conjunto de variables y nombres de subrutinas. Los nombres de cada grupo no están relacionados, por lo que se puede usar el mismo nombre de variable en diferentes paquetes, pero representa variables diferentes.
Para acceder a una variable de otro paquete desde un paquete, se puede especificar de la forma "nombre del paquete + dos puntos dobles (::) + nombre de la variable".
La tabla de símbolos predeterminada que almacena los nombres de variables y subrutinas está asociada con el paquete llamadomainSi se definen otros paquetes en el programa, cuando quieras volver a la tabla de símbolos predeterminada, puedes especificar de nuevo el paquete main:package main;
De esta manera, el programa siguiente se comporta como si nunca se hubiera definido un paquete, y los nombres de variables y subrutinas se almacenan de la forma habitual.
En el siguiente ejemplo, el archivo contiene los paquetes main y Foo. La variable especial__PACKAGE__se usa para mostrar el nombre del paquete:
Ejemplo
Al ejecutar el programa anterior, el resultado es:
包名 : main 1 包名 : Foo 10 包名 : main 100 包名: main 10
Módulos BEGIN y END
El lenguaje Perl proporciona dos palabras clave: BEGIN y END. Pueden contener respectivamente un conjunto de scripts que se ejecutan antes o después de la ejecución del cuerpo del programa.
El formato de sintaxis es el siguiente:
BEGIN { ... }
END { ... }
BEGIN { ... }
END { ... }
CadaBEGINmódulo se ejecuta después de que el script Perl se carga y compila, pero antes de que se ejecuten otras sentencias.
El bloque de sentencias se ejecuta antes de que el intérprete salga.ENDLos bloques de sentencias son especialmente útiles al crear módulos de Perl.
BEGINyENDSi aún no lo entiendes bien, podemos ver un ejemplo:
Ejemplo
Ejemplo
¿Qué es un módulo de Perl?
这是 BEGIN 语句块 Begin 和 Block 实例 这是 END 语句块
¿Qué es un módulo de Perl?
Un módulo de Perl es un paquete reutilizable. El nombre del módulo es el mismo que el nombre del paquete, y el sufijo del archivo de definición es
A continuación definimos un módulo Foo.pm, el código es el siguiente:.pm。
Ejemplo
Ejemplo
La función
cargará un módulo.requireyusees un array especial integrado en Perl que contiene las rutas de directorio que apuntan a la ubicación de las rutinas de la biblioteca.
@INCLa llamada a la función
requireyuseejecuta el código.evalAl final
devolver TRUE es obligatorio; de lo contrario, devuelve un error.1;Las funciones Require y Use
Las funciones Require y Use
la función, como se muestra a continuación:requireEjemplo
Ejemplo
Ejemplo
Ejemplo
1. require se utiliza para cargar módulos o programas Perl (la extensión .pm se puede omitir, pero .pl es obligatoria).
- 2. La sentencia use de Perl se introduce en tiempo de compilación, mientras que require se introduce en tiempo de ejecución.
- 3. use introduce el módulo y también sus submódulos. En cambio, require no puede introducirlos; hay que volver a declararlos.
- 4. USE busca en el @INC predeterminado actual; si el módulo no está en @INC, no se puede introducir con USE, pero require puede especificar una ruta.
- 5. Al usar USE para hacer referencia a un módulo, si el nombre del módulo contiene el doble dos puntos ::, este se utilizará como separador de rutas, equivalente a / en Unix o \ en Windows. Por ejemplo:
- Al añadir la siguiente sentencia use, el módulo puede exportar los símbolos de la lista:
use MyDirectory::MyModule
El array @EXPORT contiene los nombres de las variables y funciones exportadas por defecto:
require Exporter; @ISA = qw(Exporter);
Crear un módulo de Perl
package Module;
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(bar blat); # 默认导出的符号
sub bar { print "Hello $_[0]\n" }
sub blat { print "World $_[0]\n" }
sub splat { print "Not $_[0]\n" } # Not exported!
1;
Crear un módulo de Perl
Puedes escribir h2xs en el modo de línea de comandos para ver su lista de parámetros.
Formato de sintaxis de h2xs:
Descripción de parámetros:
$ h2xs -AX -n ModuleName
Ignorar el mecanismo autoload
-AIgnorar elementos XS
-XEspecificar el nombre del módulo de extensión
-nPor ejemplo, si tu módulo está en
el archivo, usa el siguiente comando:Person.pmAl ejecutar el programa anterior, se mostrará:
$ h2xs -AX -n Person
En el directorio Person puedes ver los directorios y archivos recién agregados y sus descripciones:
Writing Person/lib/Person.pm Writing Person/Makefile.PL Writing Person/README Writing Person/t/Person.t Writing Person/Changes Writing Person/MANIFEST
README: este archivo contiene información de instalación, dependencias del módulo, información de copyright, etc.
Changes: este archivo sirve como el archivo de registro de cambios (changelog) de tu proyecto.
Makefile.PL: este es el constructor estándar de Makefile de Perl. Se utiliza para crear el archivo Makefile.PL y compilar el módulo.
MANIFEST: este archivo se utiliza para construir automáticamente la distribución de versiones del módulo en formato tar.gz. De esta manera puedes publicar tu módulo en CPAN o distribuirlo a otras personas. Contiene la lista de todos los archivos de tu proyecto.
Person.pm: este es el archivo principal del módulo, que contiene tu código de manejo (handler code) de mod_perl.
Person.t: algunos scripts de prueba para el módulo. Por defecto solo comprueba la carga del módulo; puedes añadir nuevas unidades de prueba.
t/: archivos de prueba
lib/: directorio donde se almacena el código fuente real
Puedes usar el comando tar (en Linux) para empaquetar los directorios anteriores en Person.tar.gz.
Instalar módulos de Perl
Instalar módulos de Perl
proceder a descomprimir e instalarlo. Los pasos son los siguientes:Person.tar.gzPrimero ejecuta "perl Makefile.PL" para generar el Makefile en el directorio actual;
tar xvfz Person.tar.gz cd Person perl Makefile.PL make make install
Luego ejecuta "make" para compilar y crear los archivos de biblioteca necesarios;
Después usa "make test" para comprobar si el resultado de la compilación es correcto; finalmente ejecuta "make install" para instalar los archivos de biblioteca en el directorio del sistema. Con esto finaliza todo el proceso de compilación.
Otras extensiones
IA pensando...