Scroll to navigation

Dist::Zilla::Plugin::MakeMaker::Fallback(3pm) User Contributed Perl Documentation Dist::Zilla::Plugin::MakeMaker::Fallback(3pm)


Dist::Zilla::Plugin::MakeMaker::Fallback - Generate a Makefile.PL containing a warning for legacy users


version 0.032


In your dist.ini, when you want to ship a Build.PL as well as a fallback Makefile.PL in case the user's "cpan" client is so old it doesn't recognize "configure_requires":



This plugin is a derivative of "[MakeMaker]", generating a Makefile.PL in your distribution, with an added preamble that is printed when it is run:

    If you're seeing this warning, your toolchain is really, really old* and
    you'll almost certainly have problems installing CPAN modules from this
    century. But never fear, dear user, for we have the technology to fix this!
    If you're using to install things, then you can upgrade it using:
    cpan CPAN
    If you're using CPANPLUS to install things, then you can upgrade it using:
    cpanp CPANPLUS
    If you're using cpanminus, you shouldn't be seeing this message in the first
    place, so please file an issue on github.
    If you're using a packaging tool through a unix distribution, this issue
    should be reported to the package manager.
    If you're installing manually, please retrain your fingers to run Build.PL
    when present instead of Makefile.PL.
    This public service announcement was brought to you by the Perl Toolchain
    Gang, the #toolchain IRC channel, and the number 42.
    * Alternatively, you are doing something overly clever, in which case you
    should consider setting the 'prefer_installer' config option in, or
    'prefer_makefile' in CPANPLUS, to 'mb" and '0' respectively.
    You can also silence this warning for future installations by setting the
    PERL_MM_FALLBACK_SILENCE_WARNING environment variable.

Additionally, any errors resulting from loading configure-require prerequisites are captured and printed, which indicates a failure of the user or the tools to read and understand META.yml or META.json.

It is a fatal error to use this plugin when there is not also another plugin enabled that generates a Build.PL (such as [ModuleBuildTiny]).

On top of the regular testing that is provided via the Build.PL-producing plugin, "dzil test --release" or "dzil release" will run tests with extra testing variables unset ("AUTHOR_TESTING", "RELEASE_TESTING"). This is to weed out test issues that only manifest under these conditions (for example: bad test count, conditional module loading). You can prevent this extra testing from happening by setting "skip_release_testing = 1" in your configuration or dist.ini.


Peter Rabbitson (ribasushi), whose concerns that low-level utility modules were shipping with install tools that did not work out of the box with perls 5.6 and 5.8 inspired the creation of this module.

Matt Trout (mst), for realizing a simple warning would be sufficient, rather than a complicated detection heuristic, as well as the text of the warning (but it turns out that we still need a simple detection heuristic, so -0.5 for that...)


  • Dist::Zilla::Plugin::MakeMaker
  • Dist::Zilla::Plugin::ModuleBuildTiny
  • Dist::Zilla::Plugin::ModuleBuildTiny::Fallback


Bugs may be submitted through the RT bug tracker <> (or <>).

There is also a mailing list available for users of this distribution, at <>.

There is also an irc channel available for users of this distribution, at "#distzilla" on "" <irc://>.

I am also usually active on irc, as 'ether' at "" and "".


Karen Etheridge <>


This software is copyright (c) 2013 by Karen Etheridge.

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

2022-05-14 perl v5.34.0