And, is that the only place where such a module could be found, or could it also be in a file of a different name and/or in a different subdirectory?

Well, this is just a technicality that only applies to require, not use, but just for completeness: You could take a module, for example Try::Tiny, copy its Tiny.pm to e.g. /tmp, and include it via BEGIN { require "/tmp/Tiny.pm"; Try::Tiny->import() } and it'll work fine - not that it's recommended :-)

If you only use use and modules from CPAN, then yes, the directory structure is pretty well defined (some rare, exotic modules may do things differently). The relevant documentation is use, require and @INC.


In reply to Re^3: difference between packages and module by Anonymous Monk
in thread difference between packages and module by Anonymous Monk

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.