¿Cuál es la diferencia entre .pm(módulo Perl) y .plarchivo (script Perl)?
Por favor, dígame también por qué regresamos 1del archivo. Si devuelve 2 o cualquier otra cosa, no genera ningún error, entonces, ¿por qué regresamos 1del módulo Perl?
perl
perl-module
user380979
fuente
fuente

1No importa. Puede ser2, puede ser"foo", puede ser["a", "list"]. Lo que importa es que no lo es0, o cualquier otra cosa que se evalúe como falsa ousefallaría.Respuestas:
En esencia, la extensión de archivo que use no hace ninguna diferencia en cuanto a cómo
perlinterpretar esos archivos.Sin embargo, colocar módulos en
.pmarchivos siguiendo una determinada estructura de directorio que sigue al nombre del paquete proporciona una comodidad. Entonces, si tiene un móduloExample::Plot::FourDy lo coloca en un directorioExample/Plot/FourD.pmen una ruta en su@INC, entoncesuseyrequirehará lo correcto cuando le den el nombre del paquete como enuse Example::Plot::FourD.Todo lo que
usehace es averiguar el nombre del archivo a partir del nombre del paquete proporcionado,requirecolocarlo en unBEGINbloque e invocarloimporten el paquete. No hay nada que le impida no usar,usesino tomar esos pasos manualmente.Por ejemplo, a continuación puse el
Example::Plot::FourDpaquete en un archivo llamadot.pl, lo cargué en un script en archivos.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 somethingEste ejemplo muestra que los archivos de módulo no tienen que terminar en
1, cualquier valor verdadero servirá.fuente
Un .pl es un único script.
En .pm ( Módulo Perl ) tiene funciones que puede usar desde otros scripts Perl:
fuente