我在与要使用它的Perl程序相同的目录中创建了一个名为Base.pm的模块,但似乎没有加载模块.将模块的名称更改为除Base之外的任何内容,并且工作正常.Base.pm有什么特别之处,如何覆盖这种行为?感谢您的任何见解.
package Base;
use strict;
use Exporter;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
$VERSION = 1.00;
@ISA = qw(Exporter);
@EXPORT = qw(func);
sub func { return "foo"; }
1;
Run Code Online (Sandbox Code Playgroud)
同
use Base;
print func();
Run Code Online (Sandbox Code Playgroud)
产量
Undefined subroutine &main::func called at test0.pl line 2.
Run Code Online (Sandbox Code Playgroud)
而
package Case;
use strict;
use Exporter;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
$VERSION = 1.00;
@ISA = qw(Exporter);
@EXPORT = qw(func);
sub func { return "foo"; }
1;
Run Code Online (Sandbox Code Playgroud)
同
use Case;
print func();
Run Code Online (Sandbox Code Playgroud)
产量
foo.
Run Code Online (Sandbox Code Playgroud)
base.pm是一个核心系统"pragma"模块(现在,它已被弃用parent.pm)
use base 'MyBaseClass'; # Same as: our @ISA = ( 'MyBaseClass' );
Run Code Online (Sandbox Code Playgroud)
这可能是一个Windows案例.Perl查找" Base.pm",但窗口返回" base.pm".当你将它命名为"除Base之外的任何东西"时,你可能没有将它重命名为另一个Perl模块.
您可以检查此方法的一种方法是运行以下命令:
use Data::Dumper打印转储%INC(所有已加载模块的映射及其加载位置)
use Data::Dumper;
...
use Base;
...
print Dumper( \%INC );
Run Code Online (Sandbox Code Playgroud)寻找'base.pm'或'Base.pm'看看Perl加载了什么.
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |