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?

È stato utile?

Soluzione

È sufficiente iniziare la nuova confezione con un'altra affermazione il pacchetto:

package PackageOne;

# ...... code

package PackageTwo;

# .... more code

problemi con questo approccio ( archiviati al 2009 )

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top