On Thu, Nov 15, 2001 at 08:22:51AM -0600, Jon Cassorla wrote: > A.pm > -------- > #!/usr/local/bin/perl > package A; > sub foo { print STDOUT "A::foo\n"; } > sub bar { print STDOUT "A::bar\n"; } > 1; > > > B.pm > -------- > #!/usr/local/bin/perl > package B; > our @ISA=qw(A); > sub foo { print STDOUT "B::foo\n"; } > 1;
[snip] > But, if we change the inheritance line in B.pm to > our @ISA=qw(Root::B); > > we get > > A::foo > A::bar > B::foo > Can't locate object method "bar" via package "B" at app.pl line > 10. This is because your package is still named 'B', by virtue of the package statement in the file. There is no such package as 'Root::B'. The point I think you're confused on is thinking that the package statement and @ISA elements are relative to their location on the filesystem. They aren't. If you want to create a package Root::B you have to say 'package Root::B'. If you want to inherit from Root::A you have to say @ISA = qw(Root::A). Michael -- Administrator www.shoebox.net Programmer, System Administrator www.gallanttech.com -- -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]