cpanfile に
requires 'Acme::Buffy'; requires 'Acme::Anything'; requires 'Acme::Damn'; requires 'Acme::Coro::Suke';などと記述されていた時に、先に書かれた (つまり上に書かれた) モジュールから先にインストールされるのか?
という疑問が割と散見される感じがありますので、それに関して調べたことおよび実験したことを書いておきます。
結論
いきなり結論ですけれども、インストール順は担保されません。アルファベット順 (辞書順) でインストールされるとかそういう事もありません。
じゃあどうするのか
インストール順序が保証されていなければならない、って何かを間違えている感じがします。そもそも、モジュールのインストール順序が保証されていなければならない状況って、そう無い感じがするんですが…… *1
しかし、「どうしても!!」という場合もあると思うので、その時にどうすれば良いかと言うと、
バインディングを `requires` ではなくて `recommends` とか `suggests` とかに変更するという方法が考えられます。
`recommends` や `suggests` で指定したモジュールは `requires` で指定したモジュールよりも後にインストールされるという性質があるので、*2
それを悪用して順序関係をゴリッと作ってやればまあ、急場はしのげるかなー感があります。
(ただ、この方法は Module::CPANfile の内部実装に強く依存した方法なので、おすすめできません。どうしても、という時にだけ利用すると良いと思います)
`recommends` とか `suggests` とかで指定したモジュールをインストールする方法は以下あたりを参考して下さい。*3
http://d.hatena.ne.jp/moznion/20130529/1369843419
詳しいこと
https://metacpan.org/release/Module-CPANfileや、Module::CPANfile のソース等に書かれています。
なにか間違えていましたら、ご指摘お願いします。