怀疑perl基础use
它有点类似于我的另一个问题Perl:两个包在同一个文件中......
考虑一个 perl 脚本:
脚本.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";
}
模块1.pm
package Module1;
use strict;
use Exporter;
use INCLUDES; #####=> INCLUDES.pm 'use'd
our @ISA = qw(Exporter);
our @EXPORT = qw();
1;
模块2.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 文档,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
里面的所有模块PACKAGE2
,而是想在所有其他模块中创建一个库INCLUDES
和它。use
这种方法有效吗?还是值得推荐的?
我很欣赏有关如何实现这一目标的任何想法。谢谢!