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


in reply to Re: PDF::Create fails on install
in thread PDF::Create fails on install

Presumably it used to work because one of the other modules being pulled in used File::Spec, but the current version of whatever that module was doesn't. This is why you should always declare *all* your pre-requisites in Makefile.PL, even those that you know are pulled in by other pre-reqs, and you should always 'use' *all* the modules you refer to.

Replies are listed 'Best First'.
Re^3: PDF::Create fails on install
by MidLifeXis (Monsignor) on Nov 27, 2013 at 14:25 UTC

    This is why you should always declare *all* your pre-requisites in Makefile.PL, even those that you know are pulled in by other pre-reqs, and you should always 'use' *all* the modules you refer to.

    Can I assume that you do not mean that you should also list those packages that you do not directly use?

    For example, let's assume that I use the Foo::Bar package, and Foo::Bar uses Biz::Bang and Biz::Biff under the hood. I also make a call to Biz::Biff::frobnitz() from within my code. I am assuming that you are saying:

    • I should do a use Biz::Biff.
    • I should list Foo::Bar and Biz::Biff as prerequisites.
    I am also assuming that you are not saying that I should list Biz::Bang as a prerequisite, as that is an implementation detail of Foo::Bar, and unrelated to my own code.

    I just want to clarify my understanding, since my parser is coming up with two different meanings of your statement. If this is the correct reading of your statement, I agree 100%. As a clarification, I would probably s/your pre-requisites/your direct pre-requisites/.

    --MidLifeXis

      You assume correctrly.