In Perl, come faccio a mettere più pacchetti in un unico file .pm?
-
20-09-2019 - |
Domanda
Sono abbastanza sicuro che ho letto da qualche parte che è possibile, ma ci sono alcuni trucchi che è necessario essere a conoscenza. Purtroppo, non riesco a trovare il tutorial o una pagina che ha descritto quello che devi fare. Ho guardato attraverso il Perl tutorial , e non ho trovato quello che mi ricordo di aver letto. Qualcuno mi potrebbe puntare a una pagina o un documento che descrive come mettere più pacchetti in un unico file .pm?
Soluzione
È sufficiente iniziare la nuova confezione con un'altra affermazione il pacchetto:
package PackageOne;
# ...... code
package PackageTwo;
# .... more code
Altri suggerimenti
Questo è come io normalmente faccio:
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' );
Questo è ciò che ha funzionato per me:
#!/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();
Il punto importante è che invece di utilizzare "l'uso", si cambia per "importazione" (in questo modo non andrà e provare a cercare il file).
Come fare: basta emettere più istruzioni package
trucchi mi viene in mente: my
-variabili non sono il pacchetto-localizzate, quindi sono condivisi in ogni caso. Prima di emettere, siete nel pacchetto main
per impostazione predefinita.