in reply to Re: Side effects of use-ing base (vs our @ISA)
in thread Side effects of use-ing base (vs our @ISA)

Thanks Abigail

Are you sure you need the 'use lib' in the "second thing"? For me it works with just the 'use Totally::Fake', without the need of 'use lib'.

I've double-checked it and stripped it down to it's barest bones:

### Totally/Fake.pm use strict; package Totally::Fake; our @ISA = qw(Exporter); our ($fake, $faker); our @EXPORT = qw($fake $faker); ### my_script.pl use strict; # uncomment this to make it work # use lib '/long/path/to/nowhere'; use Totally::Fake; print $fake;

... and I'm still getting the odd behaviour (perl 5.8.0).

Also note that "-M Foo" is *not* the same as "use Foo;" ... -Mmodule executes "use" module ";" before executing your program. (perldoc perlrun)

Doesn't this mean -MFoo == use Foo; but -mFoo != use Foo;? In that -M will call the import routine for the default set of symbols, but -m will not call it.

Cheers
ViceRaid

Replies are listed 'Best First'.
Re: Side effects of use-ing base (vs our @ISA)
by Abigail-II (Bishop) on Sep 10, 2003 at 11:40 UTC
    Your Totally/Fake.pm doesn't have a "use Exporter;". How adding 'use lib' makes perl compile my_script.pl seems like a bug to me.

    Doesn't this mean -MFoo == use Foo; but -mFoo != use Foo;? In that -M will call the import routine for the default set of symbols, but -m will not call it.

    Yes it does. I completely misread.

    Abigail

      Ah, I got it.

      "use lib" does a "use Config", which does a "use Exporter". So, if you have a "use lib", Exporter is loaded, making your Totally::Fake.pm work, despite the absense of "use Exporter" in that file.

      Abigail