Perlでは、どのように私は、単一の.pmファイルに複数のパッケージを入れていますか?
-
20-09-2019 - |
質問
私はそれが可能だとどこかで読んことはかなり確信している、しかし、あなたが知っておく必要があるいくつかの落とし穴があります。残念ながら、私はあなたが何をする必要があるか説明したチュートリアルやページを見つけることができません。私は Perlのチュートリアルを経由見て、私は読んで覚えているものを見つけることができませんでした。誰かが単一の.pmファイルに複数のパッケージを配置する方法について説明ページまたは文書に私を指してもらえますか?
解決
あなたは、単に別のパッケージ文で新しいパッケージを始めるます:
package PackageOne;
# ...... code
package PackageTwo;
# .... more code
(の上にアーカイブのhref = "https://web.archive.org/web/20090417065554/http://oreilly.com/catalog/prkunix/excerpt/PWPMch01.html" のrel = "nofollowをnoreferrer">)
他のヒント
これは、私は通常、それを行う方法です。
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' );
これは私のために働いていたものです。
#!/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();
重要な点は、代わりに「利用」を使用しての、あなたは「輸入」(それが行くと、ファイルを探すためにしようとはしませんそのように)のためにそれを変更することです。
どのようにそれを行うには:ちょうど複数package
命令を発行する。
落とし穴:my
-変数はパッケージローカライズされていないので、彼らはとにかく共有しています。あなたがいずれかを発行する前に、あなたは、デフォルトではmain
パッケージにしています。
所属していません StackOverflow