A Perl module is a self-contained block of software which can be plugged into your programs to give you instant access to a specific set of functionality. Conventionally, Perl modules are stored in files with a .pm extension, with exactly one module per file. Each module should have a unique namespace, signified by a line like:
package XML::Parser;
or
package Apache::Filter::Output;
or whatever namespace you are using.
It is also conventional to have a line such as
our $VERSION = "1.0";
to set the $ModuleName::VERSION variable, which is necessary for some forms of the use statement. Finally, most modules have a lone 1; statement at the end of the file to return a boolean true value signifying that the module has been successfully initialized. Some modules that run code to set themselves up can return a false value (0) if they encounter problems.
While many modules are packaged with documentation files, it is common to see POD-style documentation within the module file as well.
To access a module's functionality in a program, simply include the line
use Foo::Bar;
where Foo::Bar is the namespace of the appropriate module. Your Perl interpreter will need to be able to find the appropriate module file, of course; you should consult the interpreter's own manual if you experience problems with this.
Modules for almost any purpose under the sun can be found on CPAN