Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
47 lines (37 sloc) 1.72 KB

Modules: Making your own

Read about CPAN modules

The definitive book, even though it's a few years old, is Sam Tregar's Writing Perl Modules For CPAN. It's available for free download at

Create new modules with Module::Starter

Module::Starter and its command-line tool module-starter creates the basic framework for a module distribution suitable for putting on the CPAN. It includes basic code layout, POD directives and documentation skeleton, basic tests, the Makefile.PL and MANIFEST files, and the start of README and Changes logs.

$ module-starter --module=Magic::Foo --module=Magic::Foo::Internals \
    --author="Andy Lester" --email="" --verbose
Created Magic-Foo
Created Magic-Foo/lib/Magic
Created Magic-Foo/lib/Magic/
Created Magic-Foo/lib/Magic/Foo
Created Magic-Foo/lib/Magic/Foo/
Created Magic-Foo/t
Created Magic-Foo/t/pod-coverage.t
Created Magic-Foo/t/pod.t
Created Magic-Foo/t/boilerplate.t
Created Magic-Foo/t/00-load.t
Created Magic-Foo/.cvsignore
Created Magic-Foo/Makefile.PL
Created Magic-Foo/Changes
Created Magic-Foo/README
Created Magic-Foo/MANIFEST
Created starter directories and files

Create XS modules with h2xs

If you're creating an XS module, where you're interfacing Perl code with external C code, you'll need to use the original module-starting tool, h2xs. h2xs is included with every Perl distribution, and many was originally grown into a generic module starter, but it's not nearly as up-to-date in what it does as Module::Starter. Unless you need XS code, stick with Module::Starter.

Put your module on the CPAN