Latest web development tutorials

paquetes y módulos de Perl

Perl Cada paquete tiene una sintaxis de definición de tabla de símbolos separada es:

package mypack;

Esta declaración define un paquete llamadomypack en nombre de todas las variables y subrutinas definidas en lo sucesivo se almacenan en la tabla de símbolos asociados con el paquete, el paquetehasta que encuentra otra declaración hasta ahora.

Cada tabla de símbolos tiene su propio conjunto de variables, subprogramas, cada nombre de grupo no es relevante, por lo que puede utilizar el mismo nombre de variable en diferentes paquetes, que representan diferentes variables.

El acceso desde un paquete a otro variable de paquete, se puede especificar el "nombre del paquete + dos puntos dobles (: :) + nombre de la variable" enfoque.

las variables que almacenan y nombres de subrutina tabla de símbolos por defecto asociado con el paquete sellama-principal vinculado.Si el programa se define en otros paquetes, cuando se desea volver a utilizar la tabla de símbolos predeterminada, puede reasignar el paquete principal:

package main;

Por lo tanto, el siguiente programa como si nunca se ha definido paquetes, las variables y los nombres de subrutina como el almacenamiento de costumbre.

El siguiente archivo de ejemplo tiene el paquete principal y Foo.__PACKAGE__ Variable especial para los nombres de los paquetes de salida:

#!/usr/bin/perl

#  main 包
$i = 1; 
print "包名 : " , __PACKAGE__ , " $i\n"; 

package Foo;
#  Foo 包
$i = 10; 
print "包名 : " , __PACKAGE__ , " $i\n"; 

package main;
# 重新指定 main 包
$i = 100; 
print "包名 : " , __PACKAGE__ , " $i\n"; 
print "包名: " , __PACKAGE__ ,  " $Foo::i\n"; 

1;

El programa anterior, la salida es:

包名 : main 1
包名 : Foo 10
包名 : main 100
包名: main 10

BEGIN y END módulos

lenguaje Perl ofrece dos palabras clave: BEGIN, END. Pueden ser un conjunto separado de secuencias de comandos que se ejecutan antes de ejecutar el programa o el cuerpo después de correr.

Sintaxis es la siguiente:

BEGIN { ... }
END { ... }
BEGIN { ... }
END { ... }
  • Cada bloqueBEGIN pero ejecutados antes de que otras instrucciones ejecutadas después de que el script de Perl cargado y compilado.

  • Cada bloqueFIN declaraciones ejecuta antes se cierra el intérprete.

  • BEGIN y ENDbloque es particularmente útil cuando se crea un módulo de Perl.

Si usted no entiende grande, podemos ver casos:

#!/usr/bin/perl

package Foo;
print "Begin 和 Block 实例\n";

BEGIN { 
    print "这是 BEGIN 语句块\n" 
}

END { 
    print "这是 END 语句块\n" 
}

1;

El programa anterior, la salida es:

这是 BEGIN 语句块
Begin 和 Block 实例
这是 END 语句块

¿Qué es un módulo de Perl?

Perl5 con el paquete Perl para crear un módulo.

módulo de Perl es un paquete reutilizable, el nombre del módulo y el mismo nombre de paquete, la extensión de archivo definido para.pm.

A continuación se define una Foo.pm del módulo, código de la siguiente manera:

#!/usr/bin/perl

package Foo;
sub bar { 
   print "Hello $_[0]\n" 
}

sub blat { 
   print "World $_[0]\n" 
}
1;

Perl módulos relativos a señalar lo siguiente:

  • Función y eluso requeriránun módulo de carga.

  • @INC Perl es un conjunto integrado especial que contiene la ruta del directorio a la ubicación de las rutinas de biblioteca se encuentra.

  • requiere el usoy la función llama a la funciónevalpara ejecutar código.

  • End1, la ejecución devuelve TRUE, esto es una necesidad, de lo contrario, devuelve un error.


Requieren el uso y la función

El módulo puede ser invocada por la funciónrequerirá de la siguiente manera:

#!/usr/bin/perl

require Foo;

Foo::bar( "a" );
Foo::blat( "b" );

También puede utilizar la función de hacer referencia a:

<pre>
#!/usr/bin/perl

use Foo;

bar( "a" );
blat( "b" );

Observamos la necesidad de requerir una referencia al nombre especificado Función del paquete, y no tenemos que utilizar, la principal diferencia entre los dos es:

  • 1, se requieren para cargar el módulo Perl o programa (sufijo .pm se puede omitir, pero debe .pl)
  • 2, sentencia use Perl se compila cuando se introduce, requiere tiempo de ejecución se introduce
  • 3, Perl se utiliza la introducción del módulo, sino también la introducción de módulo de sub-módulo. Y no puede requerir la introducción a la reexpresión
  • 4, se utiliza para mirar el @INC predeterminado actual en el interior, una vez que el módulo no está en las palabras con @INC no se introduce el uso, pero puede requerir una ruta especificada
  • 5, módulo de uso que se hace referencia, si el nombre de módulo contiene dos puntos dobles ::, el colon se duplicará como un separador de ruta, el equivalente a la de Unix / o bajo Windows \. Tales como:

    use MyDirectory::MyModule

Puede exportar una lista de símbolos del módulo añadiendo la siguiente instrucción para usar módulos:

require Exporter;
@ISA = qw(Exporter);

@EXPORT Matriz contiene variables y funciones derivadas del nombre por defecto:

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

Usted puede crear fácilmente un módulo de Perl distribución de Perl viene con una herramienta h2xs.

Puede escribir en la línea de comandos h2xs modo se ven en su lista de parámetros.

h2xs sintaxis:

$ h2xs -AX -n  ModuleName

Descripción de parámetros:

  • -Un Mecanismo de carga automática Ignorado

  • -X Ignorado elemento XS

  • -n Especifica el nombre de la extensión

Por ejemplo, si el archivo dePerson.pm módulo, utilice el siguiente comando:

$ h2xs -AX -n Person

Lo anterior es la salida del programa:

Writing Person/lib/Person.pm
Writing Person/Makefile.PL
Writing Person/README
Writing Person/t/Person.t
Writing Person/Changes
Writing Person/MANIFEST

Persona bajo el directorio se puede ver los directorios y archivos recién añadidos Explicación:

  • README: Este archivo contiene información acerca de la instalación, dependencias del módulo, información de copyright, y así sucesivamente.

  • Cambios: Este archivo de registro de cambios como el archivo de proyecto (de cambios).

  • Makefile.PL: Este es el constructor estándar Perl Makefile. Se utiliza para crear un archivo Makefile.PL para compilar el módulo.

  • MANIFIESTO: Este archivo se utiliza para construir automáticamente el tipo tar.gz de la distribución de la versión del módulo. Lo que puede poner su módulo CPAN de ser publicado o distribuido a los demás. Contiene una lista de todos los archivos en este proyecto.

  • Person.pm: Este es el archivo del módulo principal que contiene el código para el controlador mod_perl (código del controlador).

  • Person.t: para este módulo algunos scripts de prueba. De forma predeterminada, es sólo la comprobación módulo de carga, se puede añadir un poco de nueva unidad de prueba.

  • archivo de prueba: t /

  • directorio de almacenamiento fuente real: lib /

Se puede utilizar comando tar (Linux en) en el directorio por encima de empaquetado como Person.tar.gz.


Instalar módulos de Perl

Podemos simplementePerson.tar.gz archivo comprimido para descomprimir la instalación, realice los siguientes pasos:

tar xvfz Person.tar.gz
cd Person
perl Makefile.PL
make
make install

Primera ejecución "perl Makefile.PL" en el directorio corriente generada Makefile;

A continuación, ejecute "make" para compilar y crear el archivo de biblioteca requerido;

Seguido de "hacer prueba de" prueba de compilar los resultados son correctos, la última ejecución "make install" para instalar los archivos de la biblioteca al directorio del sistema, poniendo así fin a todo el proceso de compilación.