您可以为您的扫描仪软件包创建一个自定义导入子。 Exporting Without Using Exporter's import Method。
请注意,如果用户只依赖默认的@EXPORT,则此代码仅适用。如果你希望他们能够指定他们想要的功能,那么你必须在调用export_to_level之前进行过滤。
package Scanner;
use Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw(scannersub);
use strict;
use warnings;
sub import {
Scanner->export_to_level(1, @_);
ScannerTwo->export_to_level(1, @_);
}
sub scannersub {
print "scanner->sub says hi\n";
}
package ScannerTwo;
use Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw(scannertwosub);
sub scannertwosub {
print "scannertwo->sub says hi\n";
}
1;
__END__
和脚本
use Scanner;
use strict;
use warnings;
scannersub();
scannertwosub();
1;
__END__
最后,我会是房产管理信息系统,如果我没有提到,这不是它的表面上的好主意。这个代码的未来维护者不会轻易追踪这些潜艇。所以无论你想在同一个文件中使用不同的软件包的理由,我怀疑有一个更好的解决方案。
为什么他们需要在同一个文件 – justintime
@justintime,模块随着时间的推移而演变,必须保持在一起。将它们保存在一个文件中是确保它们相互匹配并保持在一起的方式之一。 – nsg
他们为什么“必须呆在一起”。系统发展,有时你需要重新组织代码的可维护性。 – justintime