perl の基本に疑問use
それは私の他の質問Perl: Two packages in same file...と幾分似ています。
perl スクリプトを考えてみましょう:
Script.pl
use INCLUDES;
含む.pm
package INCLUDES;
use Exporter;
############# MY DOUBT STARTS HERE ###############
use Module1;
use Module2;
##################################################
our @ISA = qw(Exporter);
our @EXPORT = qw();
sub import {
print 'INCLUDES imported to ' . caller . "\n";
}
Module1.pm
package Module1;
use strict;
use Exporter;
use INCLUDES; #####=> INCLUDES.pm 'use'd
our @ISA = qw(Exporter);
our @EXPORT = qw();
1;
Module2.pm
package Module2;
use strict;
use Exporter;
use INCLUDES; #####=> INCLUDES.pm 'use'd
our @ISA = qw(Exporter);
our @EXPORT = ();
1;
出力
D:\Do_analysis>Script.pl
INCLUDES imported to main
perl docs によるとuse INCLUDES;
、Module1 & Module2 => BEGIN {require 'INCLUDES.pm'; 'INCLUDES'->import();}
で。したがって、 はimport()
Module1.pm 、 Module2.pm でも呼び出す必要があります。
出力は次のようになると思いますが、
期待される出力??
D:\Do_analysis>Script.pl
INCLUDES imported to main
INCLUDES imported to Module1
INCLUDES imported to Module2
しかし、実行が期待どおりにならないのはなぜですか?
更新しました
これは、INCLUDES.pm ファイルを使用して達成しようとしていることです。
注意: PACKAGE2
PACKAGE3、PACKAGE4 などにアクセスしたい場合があります。use
内部のすべてのモジュールを個別に ing する代わりにPACKAGE2
、ライブラリINCLUDES
とuse
それを他のすべてのモジュールに作成したいと考えています。
このアプローチは有効ですか?または推奨?
これを達成する方法についてのアイデアに感謝します。ありがとう!