I recently started experimenting with writing code that makes use of custom attributes. It occurred to me that attributes could be used to make a very elegant Exporter module.
package Foo; use base qw( ExporterAttributes ); my $PI : Export_Ok = 3.14; sub utility : Export_Ok Export_Group(general) {...} sub another : Export_Ok Export_Group(general) {...} 1; ... use Foo qw( :GENERAL ); utility($bar);
I started playing with this a bit, and found that the attribute specification would need to include the name to export the item as. Also, variables that are Exported should be readonly constants. That also seems to require some extra processing in my tests. So the above code would need to expand to the form:
package Foo; use base qw( ExporterAttributes ); use Readonly; my $PI : Export_Ok(PI); Readonly $PI => 3.14; sub utility : Export_Ok(utility) Export_Group(general) {...} sub another : Export_Ok(another) Export_Group(general) {...} 1;
Even with that extra overhead, this still would seem to be a nice method of exporting items from a package. Is this worth thinking about more, or is there something regarding how attributes are currently implemented that would make this less desirable. Daniel Risse

In reply to Possible new module, Export using attributes by zealot

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.