Why is it causing a problem? According to perlmod, "use Module" is exactly like BEGIN { require Module; import Module; } - thus "use Audit::Config" is like BEGIN { require Audit::Config; import Audit::Config; }. Perl will go looking in the Audit::Config namespace for a function called "import". It will fail because the package loaded by the require Audit::Config part of that code really was Config rather than Audit::Config.

Once you change the package to match the filename, with its full path, in proper perl convention, perl can now find the import sub in Audit::Config. "Wait a minute!" you may say. "I don't have an import sub in Audit::Config. I scanned my entire file - even the parts I didn't post!" Ah, but you do! It is placed there by the fact that you're deriving from Exporter! How convenient is that! Unfortunately in this case, there are some perl conventions that are actually hard-and-fast rules which brought you some headaches. In many cases, the fact that the package name doesn't line up with the bareword passed to "use" is a minor detail - just a convention without a requirement. However, many modules, including Exporter, assume that you follow convention and ... well, you get to post your code to PerlMonks :-)


In reply to Re^5: Importing constants into another module by Tanktalus
in thread Importing constants into another module by paulski

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.