Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe@cygwin.com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin@cygwin.com>
List-Help: <mailto:cygwin-help@cygwin.com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner@cygwin.com
Mail-Followup-To: cygwin@cygwin.com
Delivered-To: mailing list cygwin@cygwin.com
Content-Disposition: inline
Content-Transfer-Encoding: binary
MIME-Version: 1.0
Cc: module-build-general@lists.sourceforge.net, cygwin@cygwin.com,
   RandyS@ThePierianSpring.org, perl5-porters@perl.org
Subject: Re: Cwd::cwd() bug??? on Cygwin
In-Reply-To: <20031121110334.3098.7@llama.elixent.com> from Nick
    Ing-Simmons on Fri, 21 Nov 2003 11:03:34 +0000
References: <3FAF853D.4000202@urth.org>   <3FB00F47.10400@ThePierianSpring.org> <
  3FB0ACC8.6030402@urth.org>   <3FB30BB3.10405@ThePierianSpring.org> <
  3FB50640.2010908@urth.org>   <3FB55A73.5060806@ThePierianSpring.org>   <
    3FB64CB5.4060802@ThePierianSpring.org>   <3FBD695A.9020307@
 ThePierianSpring .org>   <20031121110334.3098.7@llama.elixent.com>
Content-Type: text/plain; charset="UTF-8"
To: nick.ing-simmons@elixent.com
Message-Id: <20031121210304.2796.3@llama.ing-simmons.net>
Date: Fri, 21 Nov 2003 21:03:04 +0000
From: Nick Ing-Simmons <nick@ing-simmons.net>
Reply-To: Nick Ing-Simmons <nick@ing-simmons.net>

Nick Ing-Simmons <nick.ing-simmons@elixent.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/

