Perlでは、どのように私は、単一の.pmファイルに複数のパッケージを入れていますか?

StackOverflow https://stackoverflow.com/questions/1748896

  •  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パッケージにしています。

scroll top