NAME
   Module::Build::Convert - Makefile.PL to Build.PL converter

SYNOPSIS
    use Module::Build::Convert;

    my %params = (Path => '/path/to/perl/distribution(s)',
                  Verbose => 2,
                  Use_Native_Order => 1,
                  Len_Indent => 4);

    my $make = Module::Build::Convert->new(%params);
    $make->convert;

DESCRIPTION
   "ExtUtils::MakeMaker" has been a de-facto standard for the common
   distribution of Perl modules; "Module::Build" is expected to supersede
   "ExtUtils::MakeMaker" in some time (part of the Perl core as of 5.10?)

   The transition takes place slowly, as the converting process manually
   achieved is yet an uncommon practice. The Module::Build::Convert
   Makefile.PL parser is intended to ease the transition process.

CONSTRUCTOR
 new
   Options:

   Path
       Path to a Perl distribution. May point to a single distribution
       directory or to one containing more than one distribution. Default:
       ''

   Makefile_PL
       Filename of the Makefile script. Default: Makefile.PL

   Build_PL
       Filename of the Build script. Default: Build.PL

   MANIFEST
       Filename of the MANIFEST file. Default: MANIFEST

   RC  Filename of the RC file. Default: .make2buildrc

   Dont_Overwrite_Auto
       If a Build.PL already exists, output a notification and ask whether
       it should be overwritten. Default: 1

   Create_RC
       Create a RC file in the homedir of the current user. Default: 0

   Exec_Makefile
       Execute the Makefile.PL via 'do Makefile.PL'. Default: 0

   Verbose
       Verbose mode. If set to 1, overridden defaults and skipped arguments
       are printed while converting; if set to 2, output of "Verbose = 1"
       and created Build script will be printed. May be set via the
       make2build switches "-v" (mode 1) and "-vv" (mode 2). Default: 0

   Debug
       Rudimentary debug facility for examining the parsing process.
       Default: 0

   Use_Native_Order
       Native sorting order. If set to 1, the native sorting order of the
       Makefile arguments will be tried to preserve; it's equal to using
       the make2build switch "-n". Default: 0

   Len_Indent
       Indentation (character width). May be set via the make2build switch
       "-l". Default: 3

   DD_Indent
       "Data::Dumper" indendation mode. Mode 0 will be disregarded in favor
       of 2. Default: 2

   DD_Sortkeys
       "Data::Dumper" sort keys. Default: 1

METHODS
 convert
   Parses the Makefile.PL's "WriteMakefile()" arguments and converts them
   to "Module::Build" equivalents; subsequently the according Build.PL is
   created. Takes no arguments.

DATA SECTION
 Argument conversion
   "ExtUtils::MakeMaker" arguments followed by their "Module::Build"
   equivalents. Converted data structures preserve their native structure,
   that is, "HASH" -> "HASH", etc.

    NAME                  module_name
    DISTNAME              dist_name
    ABSTRACT              dist_abstract
    AUTHOR                dist_author
    VERSION               dist_version
    VERSION_FROM          dist_version_from
    PREREQ_PM             requires
    PL_FILES              PL_files
    PM                    pm_files
    MAN1PODS              pod_files
    XS                    xs_files
    INC                   include_dirs
    INSTALLDIRS           installdirs
    DESTDIR               destdir
    CCFLAGS               extra_compiler_flags
    EXTRA_META            meta_add
    SIGN                  sign
    LICENSE               license
    clean.FILES           @add_to_cleanup

 Default arguments
   "Module::Build" default arguments may be specified as key/value pairs.
   Arguments attached to multidimensional structures are unsupported.

    #build_requires       HASH
    #recommends           HASH
    #conflicts            HASH
    license               unknown
    create_readme         1
    create_makefile_pl    traditional

   Value may be either a string or of type "SCALAR, ARRAY, HASH".

 Sorting order
   "Module::Build" arguments are sorted as enlisted herein. Additional
   arguments, that don't occur herein, are lower prioritized and will be
   inserted in unsorted order after preceedingly sorted arguments.

    module_name
    dist_name
    dist_abstract
    dist_author
    dist_version
    dist_version_from
    requires
    build_requires
    recommends
    conflicts
    PL_files
    pm_files
    pod_files
    xs_files
    include_dirs
    installdirs
    destdir
    add_to_cleanup
    extra_compiler_flags
    meta_add
    sign
    license
    create_readme
    create_makefile_pl

 Begin code
   Code that preceeds converted "Module::Build" arguments.

    use strict;
    use warnings;

    use Module::Build;

    $MAKECODE

    my $b = Module::Build->new
    $INDENT(

 End code
   Code that follows converted "Module::Build" arguments.

    $INDENT);

    $b->create_build_script;

    $MAKECODE

INTERNALS
 co-opting "WriteMakefile()"
   This behavior is no longer the default way to receive WriteMakefile()'s
   arguments; the Makefile.PL is now statically parsed unless one forces
   manually the co-opting of WriteMakefile().

   In order to convert arguments, a typeglob from "WriteMakefile()" to an
   internal sub will be set; subsequently Makefile.PL will be executed and
   the arguments are then accessible to the internal sub.

 Data::Dumper
   Converted "ExtUtils::MakeMaker" arguments will be dumped by
   "Data::Dumper's" "Dump()" and are then furtherly processed.

BUGS & CAVEATS
   "Module::Build::Convert" should be considered experimental as the
   parsing of the Makefile.PL doesn't necessarily return valid arguments,
   especially for Makefiles with bad or even worse, missing intendation.

   The parsing process may sometimes hang with or without warnings in such
   cases. Debugging by using the appropriate option/switch (see
   CONSTRUCTOR/new) may reveal the root cause.

SEE ALSO
   <http://www.makemaker.org>, ExtUtils::MakeMaker, Module::Build,
   <http://www.makemaker.org/wiki/index.cgi?ModuleBuildConversionGuide>

AUTHOR
   Steven Schubiger <[email protected]>

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

   See <http://www.perl.com/perl/misc/Artistic.html>