The eventual location of the file is only interesting because it is coupled with namespaces in the use and require statements:
use Some::Module; # searches for Some/Module.pm in @INC
The reason to put "sub-modules" in directories named after the "main" module is that it doesn't pollute other namespaces see my CPAN module for instance - all modules in that distribution are located (when installed) in $some_INC_path/Audio/LADSPA directory, except for the main Audio/LADSPA.pm module. This means that using the module shouldn't have any effect on other modules in the Audio namespace, or outside of it, and can't accidentally overwrite other files from other modules.

Using namespaces "outside" of your distribution's main module's namespace is probably not a good idea, as it makes it difficult for other CPAN authors to check if that namespace is already taken.

update:

Should I even name the "helper" file with .pm at the end? All it holds are those routines that the main pm file uses. I will probably require the file in the module.
I would use a .pm file, because it's easiest to use or require, and I would really recommend to put it in a subroutinedirectory named after the first module, for reasons stated above.


In reply to Re: Separate files for CPAN dist by Joost
in thread Separate files for CPAN dist by jacques

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.