.pm(Perlモジュール.pl)ファイルと(Perlスクリプト)ファイルの違いは何ですか?
1ファイルから戻る理由も教えてください。2などを返す場合、エラーは発生しません。なぜ1Perlモジュールから戻るのでしょうか。
.pm(Perlモジュール.pl)ファイルと(Perlスクリプト)ファイルの違いは何ですか?
1ファイルから戻る理由も教えてください。2などを返す場合、エラーは発生しません。なぜ1Perlモジュールから戻るのでしょうか。
回答:
基本的に、使用するファイル拡張子は、perlこれらのファイルの解釈方法に違いはありません。
ただし、.pmパッケージ名に続く特定のディレクトリ構造に従ってモジュールをファイルに配置すると便利です。したがって、モジュールがExample::Plot::FourDあり、それをのExample/Plot/FourD.pmパスのディレクトリに配置した場合、のようにパッケージ名を指定すると、とは正しいことを行います。@INCuserequireuse Example::Plot::FourD
ファイルは、初期化コードが正常に実行されたことを示す最後のステートメントとしてtrueを返す必要があるため、そうで
1;ない場合はtrueを返すことが確実でない限り、このようなファイルをで終了するのが通例です。ただし1;、ステートメントを追加する場合に備えて、を配置することをお勧めします。場合は
EXPR裸の単語で、require「.PM」拡張子と置き換えを想定している『::』 『/』でファイル名であなたのために、標準モジュールをロードするために簡単にそれを作るために。この形式のモジュールのロードは、名前空間を変更するリスクはありません。
すべてuseませんが提供するパッケージ名からファイル名を、把握することでrequire、それをBEGINブロックし、呼び出しimportパッケージに。使用しないことを妨げるものは何もありませんuseが、それらの手順を手動で実行します。
たとえば、以下では、Example::Plot::FourDパッケージをというファイルに入れ、ファイルt.pl内のスクリプトにロードしましたs.pl。
C:\Temp> cat t.pl
package Example::Plot::FourD;
use strict; use warnings;
sub new { bless {} => shift }
sub something { print "something\n" }
"Example::Plot::FourD"
C:\Temp> cat s.pl
#!/usr/bin/perl
use strict; use warnings;
BEGIN {
require 't.pl';
}
my $p = Example::Plot::FourD->new;
$p->something;
C:\Temp> s
something
この例は、モジュールファイルがで終わる必要がないことを示しています1。真の値であれば何でもかまいません。
1関係ない。それは可能性があります2、それは可能性があります"foo"、それは可能性があります["a", "list"]。重要なのは0、それuseが偽であると評価されたり、失敗したりするものではないということです。