=head1 DESCRIPTION
This is a short tutorial on writing a simple module with MakeMaker.
+Its really not that hard.
+
=head2 The Mantra
There are lots more commands and options, but the above will do it.
+
=head2 The Layout
-The basic layout of a module looks something like this.
+The basic files in a module look something like this.
Makefile.PL
MANIFEST
lib/Your/Module.pm
That's all that's strictly necessary. There's additional files you might
-want to add:
+want:
lib/Your/Other/Module.pm
t/some_test.t
MANIFEST
lib/Your/Module.pm
+Filepaths in a MANIFEST always use Unix conventions (ie. /) even if you're
+not on Unix.
+
+You can write this by hand or generate it with 'make manifest'.
+
=item lib/
-This is the directory where your .pm files go. They are layed out
-according to namespace. So Foo::Bar is lib/Foo/Bar.pm.
+This is the directory where your .pm and .pod files you wish to have
+installed go. They are layed out according to namespace. So Foo::Bar
+is lib/Foo/Bar.pm.
=item t/
So t/foo.t. 'make test' will run these tests. The directory is flat,
you cannot, for example, have t/foo/bar.t run by 'make test'.
+Tests are run from the top level of your distribution. So inside a test
+you would refer to ./lib to enter the lib directory, for example.
+
=item Changes
-A log of changes you've made to this module.
+A log of changes you've made to this module. The layout is free-form.
+Here's an example:
+
+ 1.01 Fri Apr 11 00:21:25 PDT 2003
+ - thing() does some stuff now
+ - fixed the wiggy bug in withit()
+
+ 1.00 Mon Apr 7 00:57:15 PDT 2003
+ - "Rain of Frogs" now supported
=item README
+A short description of your module, what it does, why someone would use it
+and its limitations. CPAN automatically pulls your README file out of
+the archive and makes it available to CPAN users, it is the first thing
+they will read to decide if your module is right for them.
+
+
=item INSTALL
+Instructions on how to install your module along with any dependencies.
+Suggested information to include here:
+
+ any extra modules required for use
+ the minimum version of Perl required
+ if only works on certain operating systems
+
+
=item MANIFEST.SKIP
+A file full of regular expressions to exclude when using 'make
+manifest' to generate the MANIFEST. These regular expressions
+are checked against each filepath found in the distrubtion (so
+you're matching against "t/foo.t" not "foo.t").
+
+Here's a sample:
+
+ ~$ # ignore emacs and vim backup files
+ .bak$ # ignore manual backups
+ \# # ignore CVS old revision files and emacs temp files
+
+Since # can be used for comments, # must be escaped.
+
+MakeMaker comes with a default MANIFEST.SKIP to avoid things like
+version control directories and backup files. Specifying your own
+will override this default.
+
+
=item bin/
+
=back
=head1 SEE ALSO
L<perlmodstyle> gives stylistic help writing a module.
+L<perlnewmod> gives more information about how to write a module.
+
There are modules to help you through the process of writing a module:
L<ExtUtils::ModuleMaker>, L<Module::Setup>, L<CPAN::MakeMaker>