If you maintain Perl code you probably want to manage your software as packages. You can use autoconf as described in [[Managing a Software Package using the GNU Autotools]]. However, there is a whole ecosystem for managing packages within the Perl community that started with the [[http://www.cpan.org/|CPAN]]. It is recommended that you use those tools for Perl code.
True to their motto ''There is more than one way to do it'' ([[https://en.wikipedia.org/wiki/There's_more_than_one_way_to_do_it|TIMTOWTDI]]) the Perl community has over the years developed several tools for the task. As you browse the available literature you may get confused as to when to use one or the other tool. Depending on when an article was written it may even be that some of the issues mentioned do not apply anymore.
The goal of this writeup is to show how the most frequently used Perl packaging tools relate to each other. This may help you decide how you want to package your own code.
===== ExtUtils::MakeMaker =====
With the invention of [[http://www.cpan.org/|CPAN]] there needed to be a well defined way to install a package. At the time very often there were parts of the package written in C that needed to be built along the Perl code. Using ``make`` was a given but the ``Makefile`` needed to conform to certain conventions. To ensure these conventions a script ``Makefile.PL`` was written using the [[http://perldoc.perl.org/ExtUtils/MakeMaker.html|``ExtUtils::MakeMaker``]] module. With this the sequence to install a Perl package became:
perl Makefile.PL
make
make test
make install
If you need to maintain a package written using ``ExtUtils::MakeMaker`` you may want to read the [[http://perldoc.perl.org/ExtUtils/MakeMaker/Tutorial.html|ExtUtils::MakeMaker::Tutorial]] and then the [[http://perldoc.perl.org/ExtUtils/MakeMaker.html|extensive manual]]. However, if you start a new project you should use one of the newer tools mentioned below.