package attributes;
-our $VERSION = '0.04_01';
+our $VERSION = 0.06;
@EXPORT_OK = qw(get reftype);
@EXPORT = ();
Yes, that's a lot of expansion.
-B<WARNING>: attribute declarations for variables are an I<experimental>
-feature. The semantics of such declarations could change or be removed
-in future versions. They are present for purposes of experimentation
+B<WARNING>: attribute declarations for variables are still evolving.
+The semantics and interfaces of such declarations could change in
+future versions. They are present for purposes of experimentation
with what the semantics ought to be. Do not rely on the current
implementation of this feature.
will neither assign 42 to $x I<nor> will it apply the C<Bent> attribute
to the variable.
-An attempt to set
-an unrecognized attribute is a fatal error. (The error is trappable, but
-it still stops the compilation within that C<eval>.) Setting an attribute
-with a name that's all lowercase letters that's not a built-in attribute
-(such as "foo")
-will result in a warning with B<-w> or C<use warnings 'reserved'>.
+An attempt to set an unrecognized attribute is a fatal error. (The
+error is trappable, but it still stops the compilation within that
+C<eval>.) Setting an attribute with a name that's all lowercase
+letters that's not a built-in attribute (such as "foo") will result in
+a warning with B<-w> or C<use warnings 'reserved'>.
=head2 Built-in Attributes
=item locked
+B<5.005 threads only! The use of the "locked" attribute currently
+only makes sense if you are using the deprecated "Perl 5.005 threads"
+implementation of threads.>
+
Setting this attribute is only meaningful when the subroutine or
method is to be called by multiple threads. When set on a method
subroutine (i.e., one marked with the B<method> attribute below),
=back
-There are no built-in attributes for anything other than subroutines.
-
-=for hackers
-What about C<unique>?
+For global variables there is C<unique> attribute: see L<perlfunc/our>.
=head2 Available Subroutines
This method is called with two fixed arguments, followed by the list of
attributes from the relevant declaration. The two fixed arguments are
the relevant package name and a reference to the declared subroutine or
-variable. The expected return value as a list of attributes which were
+variable. The expected return value is a list of attributes which were
not recognized by this handler. Note that this allows for a derived class
to delegate a call to its base class, and then only examine the attributes
which the base class didn't already handle for it.