.pm
(Perl モジュール) と.pl
(Perl スクリプト) ファイルの違いは何ですか?
1
ファイルから戻る理由も教えてください。2 などを返す場合、エラーは発生していないのに、なぜ1
Perl モジュールから戻るのでしょうか?
.pm
(Perl モジュール) と.pl
(Perl スクリプト) ファイルの違いは何ですか?
1
ファイルから戻る理由も教えてください。2 などを返す場合、エラーは発生していないのに、なぜ1
Perl モジュールから戻るのでしょうか?
核となる部分では、使用するファイル拡張子は、 がperl
それらのファイルをどのように解釈するかに違いはありません。
.pm
ただし、パッケージ名に続く特定のディレクトリ構造に従ってモジュールをファイルに配置すると便利です。したがって、モジュールがあり、それを のパスExample::Plot::FourD
のディレクトリに配置すると、のようにパッケージ名を指定すると、 とは正しいことを行います。Example/Plot/FourD.pm
@INC
use
require
use 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
.
.plは単一のスクリプトです。
.pm(Perl Module)には、他のPerlスクリプトから使用できる関数があります。
Perlモジュールは、Perlプログラムまたは他のPerlモジュールで使用できる自己完結型のPerlコードです。概念的には、CリンクライブラリまたはC++クラスに似ています。