In Perl, wie setze ich mehrere Pakete in einer einzigen Datei .pm?
-
20-09-2019 - |
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?
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.