我运行h2xs来启动一个新的Perl模块。它创建主模块和Makefile.PL,包名称以双冒号结尾。例如,在My / Module.pm中:
package My::Module::
以及在Makefile.PL中:
WriteMakefile(
NAME => 'My::Module::',
...
);
因此,小脚本
perl -Ipath/to/my/module -MMy::Module -e 'print $My::Module::VERSION, "\n"'
不打印任何内容。
当我将包名称更改为“ My :: Module”(不带冒号)时,该脚本将打印版本号。
为什么默认情况下h2xs会在主程序包名称后附加'::'?我在文档中找不到任何内容。
Perl 5.18.2
答案 0 :(得分:0)
我的建议:尾随双冒号表示我们正在处理程序包名称。
来自perlmonks 的示例:
use 5.010;
{
package Foo;
sub new { bless [] }
sub Bar { 'Quux' }
}
{
package Foo::Bar;
sub new { bless [] }
}
{
package Quux;
sub new { bless [] }
}
my $object1 = Foo::Bar::->new;
say ref $object1; # says "Foo::Bar"
my $object2 = Foo::Bar->new;
say ref $object2; # says "Quux"