delorie.com/archives/browse.cgi | search |
Nick Ing-Simmons <nick DOT ing-simmons AT elixent DOT com> writes: >>> package MyModule; >>> use Module; >>> use base 'Module'; >>> use Cwd; > >If you moved that above the use Module line then when Module.pm >was compiled it would know Cwd::cwd was a function. Sorry I could not see wood for the trees! What is happening is that in MyModule you 'use Cwd', which EXPORTS 'cwd' by default - so now there is a MyModule::cwd which is a legitimate over-ride of base class's version so... You call MyModule->new which inherits from Module->new - so far so good. But then Module::new calls MyModule->cwd which is the imported one. So fix is: package MyModule; use Module; use base 'Module'; use Cwd (); # No imports! Alternatively Module's new could do sub new { my $p = shift; Module->cwd; # ignore override by derived class. } But that rather spoils it as a base class. -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |