in reply to
Module's name and file's name
It is my understanding that the names should agree because Perl looks for module-files by matching the file name. It reads whatever it finds, of course expecting that the desired package-name will be defined thereby.
However, the formal purpose of the package directive is to introduce a namespace, and once Perl has been cajoled into reading a source-file, it will of course recognize all of the package (namespace) names found therein. Sometimes there are very good, even compelling, reasons to do just that ... for instance, when you are defining grammars for Parse::RecDescent (and I don’t know offhand if it is strictly necessary ...), or when you simply have a group of classes that you know will always be used together to help one another out.