http://www.perlmonks.org?node_id=884577


in reply to import not found

Exporter does not inject a function, instead you inherit from it and the method call to import is supposed to resolve. When you call Project::Config::import(qw(foo bar)); you're not making a method call, so you don't search your inheritance tree and find Exporter. Change that line to Project::Config->import(qwfoo bar)); and things should improve.

Incidentally most things people do with AUTOLOAD are better done by other means. (In my experience, usually by assigning a bunch of closures to functions into the current package.) AUTOLOAD is a sledgehammer that can make code more brittle than it should be. With no context I don't know whether that is true in your case.

Replies are listed 'Best First'.
Re^2: import not found
by ikegami (Patriarch) on Jan 27, 2011 at 16:45 UTC

    Exporter does not inject a function

    It does if you use

    use Exporter qw( import );

    instead of

    use Exporter qw( ); our @ISA = 'Exporter';

    But you still need to call it as a method.

Re^2: import not found
by rovf (Priest) on Jan 27, 2011 at 15:48 UTC
    Thanks a lot for the explanation!
    AUTOLOAD is a sledgehammer that can make code more brittle than it should be. With no context I don't know whether that is true in your case.
    I start to believe that it is true in my case...

    -- 
    Ronald Fischer <ynnor@mm.st>
      Incidentally a random tip. If you want Exporter to inject a function into your space you can
      use Exporter qw(import);
      rather than inheriting from Exporter.