En esencia, la extensión de archivo que utiliza no hace ninguna diferencia en cuanto a cómo perl
interpreta esos archivos.
Sin embargo, poner módulos en los archivos .pm
siguiendo una cierta estructura de directorios que sigue el nombre del paquete proporciona una conveniencia. Entonces, si tiene un módulo Example::Plot::FourD
y lo coloca en un directorio Example/Plot/FourD.pm
en una ruta en su @INC
, entonces use
y require
harán lo correcto cuando se les dé el nombre del paquete como en use Example::Plot::FourD
.
El archivo debe devolver verdadero como la última declaración para indicar la ejecución exitosa de cualquier código de inicialización, por lo que es habitual para poner fin a un archivo de este tipo con 1;
a menos que esté seguro de que volverá cierto lo contrario. Pero es mejor simplemente poner el 1;
, en caso de que agregue más declaraciones.
Si EXPR
es una palabra clave, el require
asume una extensión ".pm" y reemplaza "::" con "/" en el nombre de archivo para que sea fácil cargar módulos estándar. Esta forma de carga de módulos no corre el riesgo de alterar su espacio de nombres.
Todo use
hace es averiguar el nombre del archivo del nombre del paquete proporcionado, require
en un bloque BEGIN
e invocar import
en el paquete. No hay nada que le impida no usar use
, pero seguir esos pasos de forma manual.
Por ejemplo, a continuación puse el paquete Example::Plot::FourD
en un archivo llamado t.pl
, lo cargué en una secuencia de comandos en el archivo s.pl
.
C:\Temp> cat t.pl
package Example::Plot::FourD;
use strict; use warnings;
sub new { bless {} => shift }
sub something { print "something\n" }
"Example::Plot::FourD"
C:\Temp> cat s.pl
#!/usr/bin/perl
use strict; use warnings;
BEGIN {
require 't.pl';
}
my $p = Example::Plot::FourD->new;
$p->something;
C:\Temp> s
something
Este ejemplo muestra que los archivos de los módulos no tienen que terminar en 1
, cualquier valor real va a hacer.
'1' no importa. Puede ser '2', puede ser' "foo" ', puede ser' ["a", "list"] '. Lo que importa es que no es '0', o cualquier otra cosa que se evalúe como falsa, o' use' fallaría. – Amadan
.pl es en realidad una biblioteca perl: los scripts Perl, como los programas C o los programas escritos en otros idiomas, no tienen final, excepto en los sistemas operativos que necesitan uno para funcionar, como Windows. –