The plural of "thee" is "you". French and German and a lot of other languages have different words for you singular and you plural. French and German in particular have an interesting feature that you can use the plural form of you when talking to a single person to convey extra respect. In English, we did the same thing with thou/thee as the singular and you as the plural/respectful version. But because English folk are so inescapably polite and apologetic, thou/thee disappeared and is now considered archaic/obsolete.

(As an aside, some languages — such as Indonesian — also have different words for the inclusive and exclusive forms of "we". For example, if I say "we are going to the cinema", do I mean "you, me, and some other people are going to the cinema" or do I mean "me and some other people are going to the cinema, but not you"?)

Anyway, in answer to your main question, do use Moose in each class you define and use Moose::Role in each role you define. For packages which are neither classes nor roles (e.g. packages which are just a collection of utility functions, constants, etc), use neither.

And all the exporter stuff, you should only use in packages that you wish to use as exporters.

Unless you're doing something really weird, those are three different exclusive kinds of modules — exporters, classes, and roles. You should probably never write a module that acts as both a role and an exporter, for example. (You know those Venn diagrammes? Don't write modules which live in the overlapping bits.)

Although you don't say so explicitly, you seem to be implying that you'll define multiple packages in the same module file. While there's certainly no prohibition in doing this, it can introduce a few gotchas when it comes to trying to use those packages. It's usually best to stick to one-package-per-file unless you have a very good reason not to.


In reply to Re: Moose in a module created with h2xs by tobyink
in thread Moose in a module created with h2xs by rpaskudniak

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.