perl oop perl-module

En Perl, ¿cómo coloco varios paquetes en un único archivo.pm?



oop perl-module (4)

Así es como normalmente lo hago:

use strict; use warnings; use 5.010; { package A; sub new { my $class = shift; bless /$class => $class } sub hello { say ''hello from A'' } } { package B; use Data::Dumper; sub new { my $class = shift; bless { @_ } => $class } sub hello { say ''Hello from B + '' . shift->dump } sub dump { Dumper $_[0] } } $_->hello for A->new, B->new( foo => ''bar'' );

Estoy bastante seguro de que leí en alguna parte que es posible, pero hay algunos errores que debes tener en cuenta. Desafortunadamente, no puedo encontrar el tutorial o la página que describe lo que debe hacer. Miré los tutoriales de Perl y no encontré el que recuerdo haber leído. ¿Podría alguien dirigirme a una página o documento que describa cómo colocar varios paquetes en un solo archivo .pm?


Cómo hacerlo: simplemente emita varias instrucciones del package .

Se me ocurren errores: my variables no están localizadas en paquetes, por lo que se comparten de todos modos. Antes de emitir alguno, estás en el paquete main por defecto.


Esto es lo que funcionó para mí:

#!/usr/bin/perl use strict; use warnings; { package A; use Exporter; our @ISA = qw(Exporter); our @EXPORT_OK = qw(a_sub); our @EXPORT = qw(a_sub); sub a_sub { # your code ... } } { package B; use Exporter; our @ISA = qw(Exporter); our @EXPORT_OK = qw(b_sub); our @EXPORT = qw(b_sub); sub b_sub { # your code ... } } # Main code starts here ############## use boolean; use Data::Dumper; import A qw(a_sub); import B qw(b_sub); a_sub(); b_sub();

El punto importante es que, en lugar de usar "uso", lo cambias por "importar" (de esa forma no irá e intentaremos buscar el archivo).