1. Comparison of Perl Build Systems

    Doug Bell

    Bank of America

    Double Cluepon Software

  2. Points of Comparison

  3. An Example Project

    $ cd Term-FormatColumns
    $ find
    ./lib
    ./lib/Term
    ./lib/Term/FormatColumns.pm
    ./t
    ./t/00_compile.t
    ./t/format.t
    
  4. Module::Build

  5. Build.PL

    use Module::Build;
    my $build = Module::Build->new(
        module_name => 'Term::FormatColumns',
        requires    => {
            "List::MoreUtils" => "0.33",
            "Sub::Exporter"   => "0.984",
            "Term::ReadKey"   => "2.30",
        },
        build_requires => {
            "Test::Compile"   => 0,
        },
    );
    $build->create_build_script;
    
  6. Build.PL for distribution

    use Module::Build;
    my $build = Module::Build->new(
        module_name   => 'Term::FormatColumns',
        dist_name     => 'Term-FormatColumns',
        dist_abstract => "Format lists of data into columns",
        dist_version  => '0.004',
        dist_author   => [
            "Doug Bell <preaction\@cpan.org>",
        ],
        license       => "perl",
        requires      => {
            "List::MoreUtils" => "0.33",
            "Sub::Exporter"   => "0.984",
            "Term::ReadKey"   => "2.30",
        },
        build_requires => {
            "Test::Compile" => 0,
        },
    );
    $build->create_build_script;
    
  7. Building with Module::Build

    $ perl Build.PL
    No options loaded
    Created MYMETA.yml and MYMETA.json
    Creating new 'Build' script for 'Term-FormatColumns' version '0.004'
    
    $ ./Build installdeps
    No options loaded
    All prerequisites satisfied
    
    $ ./Build test
    t/00_compile.t .. ok
    t/format.t ...... ok
    All tests successful.
    Files=2, Tests=4,  0 wallclock secs ( 0.02 usr  0.03 sys +  0.06 cusr  0.20 csys =  0.31 CPU)
    Result: PASS
    
    $ ./Build install
    No options loaded
    Building Term-FormatColumns
    Installing /home/nbkyslo/perl5/lib/perl5/Term/FormatColumns.pm
    Installing /home/nbkyslo/perl5/man/man3/Term::FormatColumns.3
    
  8. Distributing with Module::Build

    $ ./Build manifest
    No options loaded
    File 'MANIFEST.SKIP' does not exist: Creating a temporary 'MANIFEST.SKIP'
    Added to MANIFEST: Build.PL
    Added to MANIFEST: lib/Term/FormatColumns.pm
    Added to MANIFEST: MANIFEST
    Added to MANIFEST: META.yml
    Added to MANIFEST: t/00_compile.t
    Added to MANIFEST: t/format.t
    
    $ ./Build dist
    No options loaded
    Module::Build was not found in configure_requires! Adding it now
    automatically as: configure_requires => { 'Module::Build' => 0.40 }
    Created META.yml and META.json
    Creating Term-FormatColumns-0.004
    Creating Term-FormatColumns-0.004.tar.gz
    
  9. Module::Install

  10. Makefile.PL - Module::Install

    use inc::Module::Install;
    name 'Term-FormatColumns';
    version '0.004';
    requires 'List::MoreUtils' => '0.33';
    requires 'Sub::Exporter'   => '0.984';
    requires 'Term::ReadKey'   => '2.30';
    test_requires 'Test::Compile';
    auto_install;
    WriteAll;
    
  11. Makefile.PL (for dist) - Module::Install

    use inc::Module::Install;
    name 'Term-FormatColumns';
    # all_from 'lib/Term/FormatColumns.pm';
    version '0.004';
    author 'Doug Bell <preaction\@cpan.com>';
    abstract 'Format lists of data into columns';
    license 'perl';
    requires 'List::MoreUtils' => '0.33';
    requires 'Sub::Exporter'   => '0.984';
    requires 'Term::ReadKey'   => '2.30';
    test_requires 'Test::Compile';
    auto_install;
    WriteAll;
    
  12. Building with Module::Install

    $ perl Makefile.PL
    include /home/nbkyslo/git/Term-FormatColumns/inc/Module/Install.pm
    include inc/Module/Install/Metadata.pm
    include inc/Module/Install/Base.pm
    include inc/Module/Install/AutoInstall.pm
    include inc/Module/Install/Include.pm
    include inc/Module/AutoInstall.pm
    *** Module::AutoInstall version 1.04
    *** Checking for Perl dependencies...
    [Core Features]
    - Test::Compile   ...loaded. (0.22)
    - List::MoreUtils ...loaded. (0.33 >= 0.33)
    - Sub::Exporter   ...loaded. (0.984 >= 0.984)
    - Term::ReadKey   ...loaded. (2.30 >= 2.30)
    *** Module::AutoInstall configuration finished.
    include inc/Module/Install/Makefile.pm
    include inc/Module/Install/WriteAll.pm
    include inc/Module/Install/Win32.pm
    include inc/Module/Install/Can.pm
    include inc/Module/Install/Fetch.pm
    Prototype mismatch: sub main::prompt: none vs ($;$) at /usr2/local/perlbrew/perls/perl-5.14.2/lib/5.14.2/ExtUtils/MakeMaker.pm line 219.
    Writing Makefile for Term::FormatColumns
    Writing MYMETA.yml and MYMETA.json
    Writing Makefile for Term::FormatColumns
    Writing MYMETA.yml and MYMETA.json
    Writing META.yml
    No license specified, setting license = 'unknown'
    
  13. Building with Module::Install (2)

    $ make test install
    cp lib/Term/FormatColumns.pm blib/lib/Term/FormatColumns.pm
    make[1]: Entering directory `/home/nbkyslo/git/Term-FormatColumns/Term-FormatColumns-0.005'
    cp lib/Term/FormatColumns.pm ../blib/lib/Term/FormatColumns.pm
    Manifying ../blib/man3/Term::FormatColumns.3
    make[1]: Leaving directory `/home/nbkyslo/git/Term-FormatColumns/Term-FormatColumns-0.005'
    PERL_DL_NONLAZY=1 /usr2/local/perlbrew/perls/perl-5.14.2/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'inc', 'blib/lib', 'blib/arch')" t/00_compile.t t/format.t
    t/00_compile.t .. ok
    t/format.t ...... ok
    All tests successful.
    Files=2, Tests=4,  0 wallclock secs ( 0.01 usr  0.07 sys +  0.06 cusr  0.21 csys =  0.35 CPU)
    Result: PASS
    make[1]: Entering directory `/home/nbkyslo/git/Term-FormatColumns/Term-FormatColumns-0.005'
    PERL_DL_NONLAZY=1 /usr2/local/perlbrew/perls/perl-5.14.2/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, '../blib/lib', '../blib/arch')" t/*.t
    t/00_compile.t .. ok
    t/format.t ...... ok
    All tests successful.
    Files=2, Tests=4,  0 wallclock secs ( 0.03 usr  0.06 sys +  0.06 cusr  0.22 csys =  0.37 CPU)
    Result: PASS
    make[1]: Leaving directory `/home/nbkyslo/git/Term-FormatColumns/Term-FormatColumns-0.005'
    /usr2/local/perlbrew/perls/perl-5.14.2/bin/perl "-Iinc" "-Iblib/arch" "-Iinc" "-Iblib/lib" Install.PL Install
    include /home/nbkyslo/git/Term-FormatColumns/inc/Module/Install.pm
    include inc/Module/Install/Metadata.pm
    include inc/Module/Install/Base.pm
    include inc/Module/Install/AutoInstall.pm
    include inc/Module/Install/Include.pm
    include inc/Module/AutoInstall.pm
    *** Module::AutoInstall version 1.04
    *** Checking for Perl dependencies...
    [Core Features]
    - Test::Compile   ...loaded. (0.22)
    - List::MoreUtils ...loaded. (0.33 >= 0.33)
    - Sub::Exporter   ...loaded. (0.984 >= 0.984)
    - Term::ReadKey   ...loaded. (2.30 >= 2.30)
    *** Module::AutoInstall configuration finished.
    include inc/Module/Install/Makefile.pm
    include inc/Module/Install/WriteAll.pm
    include inc/Module/Install/Win32.pm
    include inc/Module/Install/Can.pm
    include inc/Module/Install/Fetch.pm
    Prototype mismatch: sub main::prompt: none vs ($;$) at /usr2/local/perlbrew/perls/perl-5.14.2/lib/5.14.2/ExtUtils/MakeMaker.pm line 219.
    Writing Makefile for Term::FormatColumns
    Writing MYMETA.yml and MYMETA.json
    Writing Makefile for Term::FormatColumns
    Writing MYMETA.yml and MYMETA.json
    Writing META.yml
    No license specified, setting license = 'unknown'
    Appending installation info to /home/nbkyslo/perl5/lib/perl5/x86_64-linux/perllocal.pod
    
  14. Distributing with Module::Install

    $ make manifest
    /usr2/local/perlbrew/perls/perl-5.14.2/bin/perl "-Iinc" "-MExtUtils::Manifest=mkmanifest" -e mkmanifest
    Added to MANIFEST: inc/Module/AutoInstall.pm
    Added to MANIFEST: inc/Module/Install.pm
    Added to MANIFEST: inc/Module/Install/AutoInstall.pm
    Added to MANIFEST: inc/Module/Install/Base.pm
    Added to MANIFEST: inc/Module/Install/Can.pm
    Added to MANIFEST: inc/Module/Install/Fetch.pm
    Added to MANIFEST: inc/Module/Install/Include.pm
    Added to MANIFEST: inc/Module/Install/Makefile.pm
    Added to MANIFEST: inc/Module/Install/Metadata.pm
    Added to MANIFEST: inc/Module/Install/Win32.pm
    Added to MANIFEST: inc/Module/Install/WriteAll.pm
    Added to MANIFEST: lib/Term/FormatColumns.pm
    Added to MANIFEST: Makefile.PL
    Added to MANIFEST: MANIFEST
    Added to MANIFEST: META.json
    Added to MANIFEST: META.yml
    Added to MANIFEST: t/00_compile.t
    Added to MANIFEST: t/format.t
    
  15. Distributing with Module::Install (2)

    $ make dist
    rm -rf Term-FormatColumns-0.004
    /usr2/local/perlbrew/perls/perl-5.14.2/bin/perl "-Iinc" "-MExtUtils::Manifest=manicopy,maniread" \
            -e "manicopy(maniread(),'Term-FormatColumns-0.004', 'best');"
    mkdir Term-FormatColumns-0.004
    mkdir Term-FormatColumns-0.004/inc
    mkdir Term-FormatColumns-0.004/inc/Module
    mkdir Term-FormatColumns-0.004/inc/Module/Install
    mkdir Term-FormatColumns-0.004/t
    mkdir Term-FormatColumns-0.004/lib
    mkdir Term-FormatColumns-0.004/lib/Term
    /usr2/local/perlbrew/perls/perl-5.14.2/bin/perl "-Iinc" -I. "-MModule::Install::Admin" -e "dist_preop(q(Term-FormatColumns-0.004))"
    tar cvf Term-FormatColumns-0.004.tar Term-FormatColumns-0.004
    Term-FormatColumns-0.004/
    Term-FormatColumns-0.004/inc/
    Term-FormatColumns-0.004/inc/Module/
    Term-FormatColumns-0.004/inc/Module/Install.pm
    Term-FormatColumns-0.004/inc/Module/Install/
    Term-FormatColumns-0.004/inc/Module/Install/AutoInstall.pm
    Term-FormatColumns-0.004/inc/Module/Install/Makefile.pm
    Term-FormatColumns-0.004/inc/Module/Install/Include.pm
    Term-FormatColumns-0.004/inc/Module/Install/Metadata.pm
    Term-FormatColumns-0.004/inc/Module/Install/WriteAll.pm
    Term-FormatColumns-0.004/inc/Module/Install/Win32.pm
    Term-FormatColumns-0.004/inc/Module/Install/Fetch.pm
    Term-FormatColumns-0.004/inc/Module/Install/Base.pm
    Term-FormatColumns-0.004/inc/Module/Install/Can.pm
    Term-FormatColumns-0.004/inc/Module/AutoInstall.pm
    Term-FormatColumns-0.004/t/
    Term-FormatColumns-0.004/t/format.t
    Term-FormatColumns-0.004/t/00_compile.t
    Term-FormatColumns-0.004/MANIFEST
    Term-FormatColumns-0.004/META.yml
    Term-FormatColumns-0.004/META.json
    Term-FormatColumns-0.004/lib/
    Term-FormatColumns-0.004/lib/Term/
    Term-FormatColumns-0.004/lib/Term/FormatColumns.pm
    Term-FormatColumns-0.004/Makefile.PL
    rm -rf Term-FormatColumns-0.004
    gzip --best Term-FormatColumns-0.004.tar
    
  16. Module::Install - Teach the Controversy

  17. ExtUtils::MakeMaker

  18. Makefile.PL - ExtUtils::MakeMaker

    use ExtUtils::MakeMaker;
    WriteMakefile(
        NAME        => 'Term-FormatColumns',
        VERSION     => '0.004',
        PREREQ_PM   => {
            "List::MoreUtils" => '0.33',
            "Sub::Exporter"   => '0.984',
            "Term::ReadKey"   => '2.30',
        },
        BUILD_REQUIRES => {
            'Test::Compile'   => 0,
        },
    );
    
  19. Makefile.PL (for distribution) - ExtUtils::MakeMaker

    use ExtUtils::MakeMaker;
    WriteMakefile(
        NAME        => 'Term-FormatColumns',
        VERSION     => '0.004',
        ABSTRACT    => 'Format lists of data into columns',
        AUTHOR      => 'Doug Bell <doug.bell@baml.com>',
        PREREQ_PM   => {
            "List::MoreUtils" => '0.33',
            "Sub::Exporter"   => '0.984',
            "Term::ReadKey"   => '2.30',
        },
        BUILD_REQUIRES => {
            'Test::Compile'   => 0,
        },
    );
    
  20. Building with ExtUtils::MakeMaker

    $ perl Makefile.PL
    Writing Makefile for Term-FormatColumns
    Writing MYMETA.yml and MYMETA.json
    
    $ make
    cp lib/Term/FormatColumns.pm blib/lib/Term/FormatColumns.pm
    Manifying blib/man3/Term::FormatColumns.3
    
    $ make test install
    PERL_DL_NONLAZY=1 /usr2/local/perlbrew/perls/perl-5.14.2/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
    t/00_compile.t .. ok
    t/format.t ...... ok
    All tests successful.
    Files=2, Tests=4,  0 wallclock secs ( 0.02 usr  0.06 sys +  0.06 cusr  0.20 csys =  0.34 CPU)
    Result: PASS
    Appending installation info to /home/nbkyslo/perl5/lib/perl5/x86_64-linux/perllocal.pod
    
  21. Distributing with ExtUtils::MakeMaker

    $ make manifest
    /usr2/local/perlbrew/perls/perl-5.14.2/bin/perl "-MExtUtils::Manifest=mkmanifest" -e mkmanifest
    Added to MANIFEST: lib/Term/FormatColumns.pm
    Added to MANIFEST: Makefile.PL
    Added to MANIFEST: MANIFEST
    Added to MANIFEST: META.json
    Added to MANIFEST: META.yml
    Added to MANIFEST: t/00_compile.t
    Added to MANIFEST: t/format.t
    
    $ make dist
    rm -rf Term-FormatColumns-0.004
    /usr2/local/perlbrew/perls/perl-5.14.2/bin/perl "-MExtUtils::Manifest=manicopy,maniread" \
            -e "manicopy(maniread(),'Term-FormatColumns-0.004', 'best');"
    mkdir Term-FormatColumns-0.004
    mkdir Term-FormatColumns-0.004/lib
    mkdir Term-FormatColumns-0.004/lib/Term
    mkdir Term-FormatColumns-0.004/t
    Generating META.yml
    Generating META.json
    tar cvf Term-FormatColumns-0.004.tar Term-FormatColumns-0.004
    Term-FormatColumns-0.004/
    Term-FormatColumns-0.004/lib/
    Term-FormatColumns-0.004/lib/Term/
    Term-FormatColumns-0.004/lib/Term/FormatColumns.pm
    Term-FormatColumns-0.004/t/
    Term-FormatColumns-0.004/t/format.t
    Term-FormatColumns-0.004/t/00_compile.t
    Term-FormatColumns-0.004/MANIFEST
    Term-FormatColumns-0.004/META.yml
    Term-FormatColumns-0.004/META.json
    Term-FormatColumns-0.004/Makefile.PL
    rm -rf Term-FormatColumns-0.004
    gzip --best Term-FormatColumns-0.004.tar
    
  22. ExtUtils::MakeMaker in the wild

    # NEVER DO THIS
    $ h2xs -X My::Module
    Defaulting to backwards compatibility with perl 5.14.2
    If you intend this module to be compatible with earlier perl versions, please
    specify a minimum perl version with the -b option.
    
    Writing My-Module/lib/My/Module.pm
    Writing My-Module/Makefile.PL
    Writing My-Module/README
    Writing My-Module/t/My-Module.t
    Writing My-Module/Changes
    Writing My-Module/MANIFEST
    
  23. A More Common Makefile.PL

    use 5.014002;
    use ExtUtils::MakeMaker;
    # See lib/ExtUtils/MakeMaker.pm for details of how to influence
    # the contents of the Makefile that is written.
    WriteMakefile(
        NAME              => 'My::Module',
        VERSION_FROM      => 'lib/My/Module.pm', # finds $VERSION
        PREREQ_PM         => {}, # e.g., Module::Name => 1.1
        ($] >= 5.005 ?     ## Add these new keywords supported since 5.005
          (ABSTRACT_FROM  => 'lib/My/Module.pm', # retrieve abstract from module
           AUTHOR         => 'Doug Bell <preaction@cpan.org>') : ()),
    );
    
  24. Dist::Zilla - A Meta Build System

  25. dist.ini

    name = Term-FormatColumns
    author = Doug Bell <preaction@cpan.org>
    version = 0.004
    license = Perl_5
    copyright_holder = Doug Bell
    
    [@Basic]
    [Prereqs]
    Term::ReadKey = 2.30
    List::MoreUtils = 0.33
    Sub::Exporter = 0.984
    
    [Prereqs / TestRequires]
    Test::Compile = 0
    
  26. Building with Dist::Zilla

    $ dzil test
    [DZ] building distribution under .build/AGZuPsOxvb for installation
    [DZ] beginning to build Term-FormatColumns
    [DZ] guessing dist's main_module is lib/Term/FormatColumns.pm
    [DZ] extracting distribution abstract from lib/Term/FormatColumns.pm
    [DZ] writing Term-FormatColumns in .build/AGZuPsOxvb
    Checking if your kit is complete...
    Looks good
    Writing Makefile for Term::FormatColumns
    Writing MYMETA.yml and MYMETA.json
    cp lib/Term/FormatColumns.pm blib/lib/Term/FormatColumns.pm
    Manifying blib/man3/Term::FormatColumns.3
    PERL_DL_NONLAZY=1 /usr2/local/perlbrew/perls/perl-5.14.2/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
    t/00_compile.t .. ok
    t/format.t ...... ok
    All tests successful.
    Files=2, Tests=4,  0 wallclock secs ( 0.02 usr  0.06 sys +  0.07 cusr  0.20 csys =  0.35 CPU)
    Result: PASS
    [DZ] all's well; removing .build/AGZuPsOxvb
    
  27. Building with Dist::Zilla (2)

    $ dzil install
    [DZ] building distribution under .build/VaQ6FDFz7Y for installation
    [DZ] beginning to build Term-FormatColumns
    [DZ] guessing dist's main_module is lib/Term/FormatColumns.pm
    [DZ] extracting distribution abstract from lib/Term/FormatColumns.pm
    [DZ] writing Term-FormatColumns in .build/VaQ6FDFz7Y
    You are visiting the local directory
      '.'
      without lock, take care that concurrent processes do not do likewise.
    Going to read '/home/nbkyslo/.cpan/Metadata'
      Database was generated on Wed, 14 Nov 2012 20:55:06 GMT
    Fetching with LWP:
    http://www.perl.org/CPAN/authors/01mailrc.txt.gz
    Going to read '/home/nbkyslo/.cpan/sources/authors/01mailrc.txt.gz'
    ............................................................................DONE
    Fetching with LWP:
    http://www.perl.org/CPAN/modules/02packages.details.txt.gz
    Going to read '/home/nbkyslo/.cpan/sources/modules/02packages.details.txt.gz'
      Database was generated on Wed, 14 Nov 2012 20:55:06 GMT
    ..............................................................DONE
    Fetching with LWP:
    http://www.perl.org/CPAN/modules/03modlist.data.gz
    Going to read '/home/nbkyslo/.cpan/sources/modules/03modlist.data.gz'
    ............................................................................DONE
    Going to write /home/nbkyslo/.cpan/Metadata
    You are visiting the local directory
      '/home/nbkyslo/git/Term-FormatColumns/.build/VaQ6FDFz7Y/.'
      without lock, take care that concurrent processes do not do likewise.
    Running make for /home/nbkyslo/git/Term-FormatColumns/.build/VaQ6FDFz7Y/.
    
      CPAN.pm: Going to build /home/nbkyslo/git/Term-FormatColumns/.build/VaQ6FDFz7Y/.
    
    Checking if your kit is complete...
    Looks good
    Writing Makefile for Term::FormatColumns
    Writing MYMETA.yml and MYMETA.json
    cp lib/Term/FormatColumns.pm blib/lib/Term/FormatColumns.pm
    Manifying blib/man3/Term::FormatColumns.3
      /home/nbkyslo/git/Term-FormatColumns/.build/VaQ6FDFz7Y/.
      /usr2/local/bin/make -- OK
    Directory '/home/nbkyslo/git/Term-FormatColumns/.build/VaQ6FDFz7Y/.' not below /home/nbkyslo/.cpan/build, will not store persistent state
    Running make test
    PERL_DL_NONLAZY=1 /usr2/local/perlbrew/perls/perl-5.14.2/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
    t/00_compile.t .. ok
    t/format.t ...... ok
    All tests successful.
    Files=2, Tests=4,  0 wallclock secs ( 0.02 usr  0.06 sys +  0.05 cusr  0.20 csys =  0.33 CPU)
    Result: PASS
      /home/nbkyslo/git/Term-FormatColumns/.build/VaQ6FDFz7Y/.
      /usr2/local/bin/make test -- OK
    Running make install
    Manifying blib/man3/Term::FormatColumns.3
    Appending installation info to /home/nbkyslo/perl5/lib/perl5/x86_64-linux/perllocal.pod
      /home/nbkyslo/git/Term-FormatColumns/.build/VaQ6FDFz7Y/.
      /usr2/local/bin/make install  -- OK
    [DZ] all's well; removing .build/VaQ6FDFz7Y
    
  28. Distributing with Dist::Zilla

    $ dzil build
    [DZ] beginning to build Term-FormatColumns
    [DZ] guessing dist's main_module is lib/Term/FormatColumns.pm
    [DZ] extracting distribution abstract from lib/Term/FormatColumns.pm
    [DZ] writing Term-FormatColumns in Term-FormatColumns-0.004
    [DZ] building archive with Archive::Tar; install Archive::Tar::Wrapper for improved speed
    [DZ] writing archive to Term-FormatColumns-0.004.tar.gz
    
  29. Distributing with Dist::Zilla (2)

    $ dzil release
    [@Basic/TestRelease] Extracting /home/nbkyslo/git/Term-FormatColumns/Term-FormatColumns-0.004.tar.gz to .build/MlWdngYvam
    Checking if your kit is complete...
    Looks good
    Writing Makefile for Term::FormatColumns
    Writing MYMETA.yml and MYMETA.json
    cp lib/Term/FormatColumns.pm blib/lib/Term/FormatColumns.pm
    Manifying blib/man3/Term::FormatColumns.3
    PERL_DL_NONLAZY=1 /usr2/local/perlbrew/perls/perl-5.14.2/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
    t/00_compile.t .. ok
    t/format.t ...... ok
    All tests successful.
    Files=2, Tests=4,  0 wallclock secs ( 0.01 usr  0.06 sys +  0.06 cusr  0.20 csys =  0.33 CPU)
    Result: PASS
    [@Basic/TestRelease] all's well; removing .build/MlWdngYvam
    *** Preparing to release Term-FormatColumns-0.004.tar.gz with @Basic/UploadToCPAN ***
    
    Do you want to continue the release process? [y/N]: N
    [@Basic/ConfirmRelease] Aborting release
    [@Basic/ConfirmRelease] Aborting release at /datlib/hist/ops/dev/lib/perl5/x86_64-linux/Moose/Meta/Method/Delegation.pm line 110.
    
  30. The Real Dist::Zilla

    name = Term-FormatColumns
    author = Doug Bell <preaction@cpan.org>
    license = Perl_5
    copyright_holder = Doug Bell
    
    [CopyReadmeFromBuild]
    [ReadmeMarkdownFromPod]
    [@Git]
    [Git::NextVersion]
    [PkgVersion]
    [ModuleBuild]
    
    [@Filter]
    bundle = @Basic
    remove = Readme
    
    [Prereqs]
    Term::ReadKey = 2.30
    List::MoreUtils = 0.33
    Sub::Exporter = 0.984
    
    [Prereqs / TestRequires]
    Test::Compile = 0
    
  31. My Plugin Set

  32. Plugin Conflicts

  33. The End!

    Slides are licensed under a CC-BY-SA 3.0 license.

    Code is licensed under the Artistic License or GNU GPL v1.0 or later (the same terms as Perl itself).