【问题标题】:Why does h2xs generate module name with trailing colons?为什么 h2xs 生成带有尾随冒号的模块名称?
【发布时间】:2018-07-18 14:14:29
【问题描述】:

我运行 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

【问题讨论】:

  • 了解您运行的确切h2xs 命令行会有所帮助。我从来没有这样做过:-)

标签: perl


【解决方案1】:

我的建议:尾随双冒号表示我们正在处理包名。

来自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"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2010-12-20
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    相关资源
    最近更新 更多