The Exporter module doesn't 'make things global', it gives you an easy way to export package variables and identifiers into the calling program -- the calling program may then use them directly (without qualification):

# calling program: foo.pl #!/usr/bin/perl -w use strict; use MyPack; print "$foo\n"; bar(); __END__ # module file: MyPack.pm package MyPack; require Exporter; @ISA = qw/Exporter/; @EXPORT = qw/$foo bar/; use strict; $MyPack::foo = 42; sub bar { print "This is MyPack::bar, who's calling please?\n"; } 1; __END__ # example run: [jandrew:~]$ perl foo.pl 42 This is MyPack::bar, who's calling please?

So, Exporter is used to export things into the caller's namespace. Any package thingy in the package is always available to the caller if fully qualified. You may decide not to export anything (or only a few things) so as not to pollute the caller's namespace, or you may decide to export on demand (by using the @EXPORT_OK array instead) rather than exporting by default as the above example does (export on demand is often the better choice, so the caller gets to choose what to import into its namespace). Had I used the @EXPORT_OK array instead, then my calling program could have said: use MyPack qw/bar/;, and only the bar() routine would have been imported into its namespace (but the caller could still access $MyPack::foo).


In reply to Re: Re: Re(7): Usage of our by danger
in thread Usage of our 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.