perl Makefile.PL | cpanm # for devel requires
Makefile.PL自身のためのモジュールをどう管理するかが結構面倒なわけです。M::IのプラグインでいえばModule::Install::AuthorRequiresがあるのですが、これは単にインストールされていないモジュールを報告するだけで、結局インストールは手作業で行わなければならない。
これについては過去に考えたこともあります。
Install developper's prerequisites with cpanm - Islands in the byte stream
しかし上記の方法では結局二度手間なので気に入らないんですよね。
そこで今日思いついたのが以下の方法。Makefile.PLに記述します。これなら一ファイルですみますし、モジュール名の入力は一度だけですから管理の手間もかかりません。しかも、一度Makefile.PLを実行してエラーになったら`perl Makefile.PL | cpanm`とすると自動でインストールまでしてくれるという親切設計!
どうでしょう、この方法。
# Makefile.PL use strict; BEGIN { my @devmods = qw( inc::Module::Install Module::Install::ReadmeFromPod Module::Install::ReadmeMarkdownFromPod Module::Install::TestTarget Module::Install::AuthorRequires Module::Install::Repository ); my @not_available; foreach my $mod(@devmods) { eval qq{require $mod} or push @not_available, $mod; } if(@not_available) { print qq{# The following modules are not available.\n}; print qq{# `perl $0 | cpanm` will install them:\n}; print $_, "\n" for @not_available; } } use inc::Module::Install; # ...