【问题标题】:pragma base - warnings questionpragma base - 警告问题
【发布时间】:2011-04-21 15:39:38
【问题描述】:

当我运行这个时,为什么我没有得到Attempting to inherit from yourself generates a warning. (base#DIAGNOSTICS)?

#!/usr/bin/env perl
use warnings;
use diagnostics;
use 5.012;

{
    package MyWebServer;

    use HTTP::Server::Simple::CGI;
    use base qw(HTTP::Server::Simple::CGI);
    ...

【问题讨论】:

    标签: perl warnings base pragma


    【解决方案1】:

    呃,因为你不想从自己身上继承?

    应该是这样的:

    #!/usr/bin/env perl
    use warnings;
    use diagnostics;
    use 5.012;
    
    {
        package HTTP::Server::Simple::CGI;
        use base qw(HTTP::Server::Simple::CGI);
        ...
    

    基础应该被淘汰,取而代之的是更新的、不那么花哨的parent

    【讨论】:

      【解决方案2】:

      我怀疑这是一个文档错误。

      测试文件t/base.t显示了这种类型的场景来获得警告:

      use warnings;
      use diagnostics;
      use 5.012;
      
      package Foo;
      use base 'Foo';
      
      __END__
      
      Class 'Foo' tried to inherit from itself
      

      您可以修补 POD 并将其作为 Bug Report 提交。

      由于base 是核心编译指示,您可以改为提交perlbug(不确定哪个是首选)。

      【讨论】:

      • 是的,文档应该说package Foo而不是use Foo
      • 请注意,这已在 bleadperl 中修复,并将成为 5.14.0 的一部分。
      猜你喜欢
      • 1970-01-01
      • 2011-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多