Term::ReadLine::Stub::new(/usr/lib/perl5/5.8.8/Term/ReadLine.pm:243):
我希望看到Term::ReadLine::new
,这通常是我new
打包的时候。
任何人都知道原因吗?
答案 0 :(得分:3)
这是继承。 Term :: 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);
}
sub new()
在Term :: ReadLine :: Stub中创建并继承到Term :: ReadLine中。
如果它实际上告诉你继承子的位置(就像它一样),调试器是最有用的。如果你被调试器指导到Term :: ReadLine,那么你不得不趟过所有的@ISA级别,直到找到一个定义了new()的程序。想象一下,对象系统中的泥潭允许多层继承(如Perl所做)和多重继承(如Perl所做)。