Term::ReadLine::Stub::new(/usr/lib/perl5/5.8.8/Term/ReadLine.pm:243):
나는 Term::ReadLine::new
을 볼 것으로 예상했는데, 이것은 일반적으로 내가 new
패키지 일 때입니다.Perl 디버거가 왜 Term :: ReadLine :: Stub :: new를 보여줄 까? 새로운 Term :: ReadLine이 호출되면 왜?
누구든지 이유를 알고 계십니까?
Term::ReadLine::Stub::new(/usr/lib/perl5/5.8.8/Term/ReadLine.pm:243):
나는 Term::ReadLine::new
을 볼 것으로 예상했는데, 이것은 일반적으로 내가 new
패키지 일 때입니다.Perl 디버거가 왜 Term :: ReadLine :: Stub :: new를 보여줄 까? 새로운 Term :: ReadLine이 호출되면 왜?
누구든지 이유를 알고 계십니까?
유산입니다. 기간 : Readline와는 상단에 package Term::ReadLine::Stub
로 시작하고 나중에 package Term::ReadLine
내에서 다음과 같은 표시됩니다
our @ISA;
if (defined &Term::ReadLine::Gnu::readline) {
@ISA = qw(Term::ReadLine::Gnu Term::ReadLine::Stub);
} elsif (defined &Term::ReadLine::Perl::readline) {
@ISA = qw(Term::ReadLine::Perl Term::ReadLine::Stub);
} elsif (defined $which && defined &{"Term::ReadLine::$which\::readline"}) {
@ISA = "Term::ReadLine::$which";
} else {
@ISA = qw(Term::ReadLine::Stub);
}
하위 new()
이 기간 ::에서는 ReadLine :: 스텁 내에서 생성 및 기간에 상속 ::에서는 ReadLine.
디버거는 실제로 하위가 상속 된 위치를 알려주는 경우 가장 유용합니다. 디버거에 의해 Term :: ReadLine에 지시를받은 다음 new()를 정의 할 때까지 모든 @ISA 레벨을 처리해야한다면 도움이되지 않습니다. 다중 계층 상속 (Perl이하는 것처럼)과 다중 상속 (Perl이하는 것처럼)을 허용하는 객체 시스템에서의 늪지대가 있다고 상상해보십시오.