Contrary to what others are saying, I found this module very useful. From a simple command with 3 arguments, you can create a CPAN-ready module skeleton -- how cool is that?
For those annoyed by the test skeletons -- you can simply delete those. If you aren't dist'ing for CPAN, then obviously you don't need those boilerplate tests anyway. I don't consider that a hassle, or something to complain about at all.
If "h2xs -AXn" doesn't work for you, a basic script to create a new module (Makefile.PL, MANIFEST, Module.pm, test.pl, README, ChangeLog) is 100-200 lines of simple print statements. Module::Starter takes this simple process and makes it complicated and annoying. It adds useless boilerplate to several files, then adds a failing test that looks for the boilerplate it just added. It creates a random file "ignore.txt" that does... something. It looks like "ignore.txt" used to be the author's .cvsignore or .gitignore. It creates a Changes file in its own idiosyncratic format, with unhelpful content you will need to delete and replace.
It will take you less time to write your own "module starter" than to install and run "module-starter", then clean up the mess it creates.
"module-starter" is a script for creating the necessary directories and files when beginning writing a new Perl module. There are nice functions for creating a build script, with a choice of ExtUtils::MakeMaker, Module::Install, or Module::Build, and also functions for creating a manifest and an ignore list for files which should not be put under version control.
It would be incredibly useful if it just did the basic stuff to create a module, but unfortunately this actually does too many things. For example, it puts a message saying "The Great New <module>" into the Pod, and then it also writes a test which checks that the programmer has removed this message. It sounds like a joke, but it isn't. I'd rather, instead of creating all this busy-work, they had kept it simple and not written the text which I then have to remove.
It also insists on including email and free software licence information, with a limited choice of licences and no way to turn this off or alter it. That would be useful if every module was going to CPAN, but my guess is that most modules actually never get released publicly. Also it insists on putting lots of links to rt.cpan.org, cpanratings, and so on and so on. If these were options they would be great, but as unswitchoffable defaults they are not so great.
Not having an obvious way to turn all these bits and pieces off, module-starter becomes a little exasperating. My verdict: using it creates about as much work as it saves. I recommend against it.
It might be worth remarking that the Module::Starter module which this script is based on also has a facility to add one's own starter modules using it as a framework. I don't know if any exist but it might be an easier way to create something than starting again from scratch.
Module::Starter is THE way to create a good Perl distribution: it creates the hierarchy of a modern distribution, adds .pm files with a good default set of code and documentation, includes a default set of tests. It allows the use of both Module::Build and ExtUtils::MakeMaker, which should satisfy any user. Recent versions have also become completly object-oriented so that any part can be customized. It just does The Right Thing(tm) and should be recommanded in perlnewmod instead of h2xs.