これは本当に簡単な質問のように思えますが、どういうわけか私のGoogle-Fuは失敗しました。
Perlの他のファイルの関数を含めるための構文は何ですか?私はCのようなものを探しています#include "blah.h"
Perlモジュールを使用するためのオプションを見ましたが、それは私の現在のコードの重要でない書き換えを必要とするようです。
モジュールを使用します。 perldoc perlmod および Exporter を確認してください。
ファイルFoo.pmに
package Foo;
use strict;
use warnings;
use Exporter;
our @ISA= qw( Exporter );
# these CAN be exported.
our @EXPORT_OK = qw( export_me export_me_too );
# these are exported by default.
our @EXPORT = qw( export_me );
sub export_me {
# stuff
}
sub export_me_too {
# stuff
}
1;
メインプログラムで:
use strict;
use warnings;
use Foo; # import default list of items.
export_me( 1 );
または、両方の機能を取得するには:
use strict;
use warnings;
use Foo qw( export_me export_me_too ); # import listed items
export_me( 1 );
export_me_too( 1 );
パッケージ変数をインポートすることもできますが、この方法はお勧めしません。
Perl 必須 が仕事をします。追加することにより、「必要な」ファイルが真実を返すようにする必要があります。
1;
ファイルの最後。
これは小さなサンプルです:
$ cat m1.pl
use strict;
sub x { warn "aard"; }
1;
$ cat m2.pl
use strict;
require "m1.pl";
x();
$ Perl m2.pl
aard at m1.pl line 2.
ただし、できる限り早くモジュールに移行してください。
[〜#〜] edit [〜#〜]
スクリプトからモジュールにコードを移行することのいくつかの利点:
require
でインクルードされたファイルは実行時にのみロードされますが、use
でロードされたパッケージは以前のコンパイル時チェックの対象となります。また、do 'file.pl';
は機能しますが、モジュールの方が優れたソリューションです。
私は質問が具体的には「関数」と言っていることを知っていますが、「Perl include」を探すと、この記事を検索し、しばしば(今のように)変数を(簡単な方法で、考えずにモジュールについて)。そして、ここに私の例を投稿してもいいことを願っています(参照: Perl require and variables ;簡単に:require
を使用し、 "includer"と "includee"ファイルの両方を確認してください変数をour
として宣言します):
$ Perl --version
This is Perl, v5.10.1 (*) built for i686-linux-gnu-thread-multi ...
$ cat inc.pl
use warnings;
use strict;
our $xxx = "Testing";
1;
$ cat testA.pl
use warnings;
use strict;
require "inc.pl";
our $xxx;
print "1-$xxx-\n";
print "Done\n";
$ Perl testA.pl
1-Testing-
Done
$ cat testB.pl
use warnings;
use strict;
our $xxx;
print "1-$xxx-\n";
$xxx="Z";
print "2-$xxx-\n";
require "inc.pl";
print "3-$xxx-\n";
print "Done\n";
$ Perl testB.pl
Use of uninitialized value $xxx in concatenation (.) or string at testB.pl line 5.
1--
2-Z-
3-Testing-
Done
あなたが探しているのは「require file.pl」ですが、あなたが見ているべきは「use module」です。
ただし、Perlモジュールを実際に調べる必要があります。簡単にハックするには、PerlスクリプトをCプリプロセッサーで実行する「Perl -P」を常に実行できます。つまり、#includeやフレンドを作成できます。
ただし、簡単にハックするだけです;-)
上記の答えはすべてクライアント部分を無視しました:モジュールのインポート方法。
ここで受け入れられた答えを参照してください: 相対ロケーションからPerlモジュールを使用するにはどうすればよいですか?
この答えにトリックがないと、use $mymodule;