2011-04-21 6 views
3

이것을 실행하면 Attempting to inherit from yourself generates a warning. (base#DIAGNOSTICS)이 표시되지 않는 이유는 무엇입니까?pragma base - 경고 질문

#!/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

문서 버그 일 것 같습니다.

use warnings; 
use diagnostics; 
use 5.012; 

package Foo; 
use base 'Foo'; 

__END__ 

Class 'Foo' tried to inherit from itself 

당신은 POD를 패치하고 Bug Report로 제출 수 :

테스트 파일 t/base.t 경고를 얻기 위해 이러한 유형의 시나리오를 보여줍니다.

base이 핵심 pragma이기 때문에 perlbug을 제출할 수 있습니다 (어느 것이 더 좋을지 확실하지 않음).

+1

예, 문서에는'use Foo' 대신'package Foo'가 있어야합니다. – cjm

+1

이것은 bleadperl에서 이미 고정되어 있으며 5.14.0에 포함됩니다. – rafl

+0

@rafl : 고맙습니다. 나는'펄벅 '을 제출할 준비를하고 있었다. – toolic

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에 찬성하여 단계적으로해야한다.