The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.


ExtUtils::MakeMaker::CPANfile - cpanfile support for EUMM


    # Makefile.PL
    use ExtUtils::MakeMaker::CPANfile;
      NAME => 'Foo::Bar',
      AUTHOR => 'A.U.Thor <>',
    # cpanfile
    requires 'ExtUtils::MakeMaker' => '6.17';
    on test => sub {
      requires 'Test::More' => '0.88';


ExtUtils::MakeMaker::CPANfile loads cpanfile in your distribution and modifies parameters for WriteMakefile in your Makefile.PL. Just use it instead of ExtUtils::MakeMaker (which should be loaded internally), and prepare cpanfile.

As of version 0.03, ExtUtils::MakeMaker::CPANfile also removes WriteMakefile parameters that the installed version of ExtUtils::MakeMaker doesn't know, to avoid warnings.


complex version ranges

As of this writing, complex version ranges are simply ignored.

dynamic config

Strictly speaking, cpanfile is a Perl script, and may have some conditions in it. That said, you don't need to run Makefile.PL to determine prerequisites in most cases. Hence, as of 0.06, ExtUtils::MakeMaker::CPANfile sets dynamic_config to false by default. If you do need a CPAN installer to run Makefile.PL to customize prerequisites dynamically, set dynamic_config to true explicitly (via META_ADD/META_MERGE).


Though the minimum version requirement of ExtUtils::MakeMaker is arbitrary set to 6.17 (the one bundled in Perl 5.8.1), you need at least EUMM 6.52 (with CONFIGURE_REQUIRES support) when you release a distribution.


Copyright (C) Kenichi Ishigaki.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


Kenichi Ishigaki <>