2011-04-21 104 views
3

當我運行這個時,爲什麼我沒有得到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); 
    ... 

回答

4

我懷疑這是一個文檔錯誤。

測試文件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(不確定哪一個是首選)。

+1

是的,文檔應該說'包Foo'而不是'使用Foo'那裏。 – cjm 2011-04-21 16:25:47

+1

請注意,這已經在bleadperl中解決,並將成爲5.14.0的一部分。 – rafl 2011-04-21 19:06:24

+0

@rafl:謝謝。我準備提交一個'perlbug'。 – toolic 2011-04-21 19:29:12

5

錯誤,因爲你不是要試圖從自己繼承?

這將是這樣的:

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

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

基地應該在支持新的,少花哨parent的被淘汰。