Technically, it is a particular set of conventions for using Perl's package mechanism that has become universally adopted.
[discuss] A module defines its source code to be in a package (much like a Java package), the Perl mechanism for defining namespaces, e.g. CGI or Net::FTP or XML::Parser; the file structure mirrors the namespace structure (e.g. the source code for Net::FTP is in Net/FTP.pm).
[discuss] A collection of modules, with accompanying documentation, build scripts, and usually a test suite, composes a distribution.
The Perl community has a sizable library of distributions available for search and download via CPAN.
It is flexible enough to be used to write articles, web pages and even entire books such as Programming Perl.
For this reason it is important for a module author to be aware what features they're making use of and what the minimum required version of perl is.
A running Perl program has a built-in namespace called "main", which is the default name.