Frage

Ich bin mir ziemlich sicher, dass ich irgendwo gelesen, dass es möglich ist, aber es gibt ein paar Fallstricke, dass Sie sich bewusst sein müssen. Leider kann ich nicht das Tutorial oder eine Seite finden, das beschrieben, was Sie tun müssen. Ich sah durch die Perl Tutorials , und nicht das man feststellen, dass ich lesen erinnere. Könnte mir jemand Punkt auf eine Seite oder ein Dokument, das beschreibt, wie mehrere Pakete in einer einzigen Datei .pm setzen?

War es hilfreich?

Lösung

Sie starten einfach das neue Paket mit einer anderen Paket-Anweisung:

package PackageOne;

# ...... code

package PackageTwo;

# .... more code

Probleme mit diesem Ansatz ( auf 2009 archiviert)

Andere Tipps

Dies ist, wie ich es normalerweise tun:

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' );

Das ist was für mich gearbeitet:

#!/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();

Der wichtige Punkt ist, dass anstelle der Verwendung von „Verwendung“, können Sie es ändern für „Import“ (auf diese Weise nicht gehen und versuchen, die Datei zu suchen).

Wie es zu tun. Nur Ausgabe mehr package Anweisungen

Gotchas kann ich mir vorstellen: my-Variablen werden nicht verpacken lokalisiert, so dass sie ohnehin geteilt sind. Bevor Sie ausgeben, sind Sie in Paket main standardmäßig aktiviert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top