This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Still one typo, regen toc.
[perl5.git] / lib / attributes.pm
index 09f3551..3a6b3d5 100644 (file)
@@ -1,6 +1,6 @@
 package attributes;
 
-$VERSION = 0.02;
+our $VERSION = 0.04;
 
 @EXPORT_OK = qw(get reftype);
 @EXPORT = ();
@@ -27,7 +27,7 @@ sub carp {
 #
 # The extra trips through newATTRSUB in the interpreter wipe out any savings
 # from avoiding the BEGIN block.  Just do the bootstrap now.
-BEGIN { bootstrap }
+BEGIN { bootstrap attributes }
 
 sub import {
     @_ > 2 && ref $_[2] or do {
@@ -54,7 +54,7 @@ sub import {
                my $s = ((@pkgattrs == 1) ? '' : 's');
                carp "$svtype package attribute$s " .
                    "may clash with future reserved word$s: " .
-                   join(' , ' , @pkgattrs);
+                   join(' : ' , @pkgattrs);
            }
        }
     }
@@ -65,7 +65,7 @@ sub import {
        croak "Invalid $svtype attribute" .
            (( @badattrs == 1 ) ? '' : 's') .
            ": " .
-           join(' , ', @badattrs);
+           join(' : ', @badattrs);
     }
 }
 
@@ -130,7 +130,8 @@ 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
 with what the semantics ought to be.  Do not rely on the current
-implementation of this feature.
+implementation of this feature. Variable attributes are currently
+not usable for tieing.
 
 There are only a few attributes currently handled by Perl itself (or
 directly by this module, depending on how you look at it.)  However,
@@ -169,6 +170,12 @@ This has a meaning when taken together with the B<locked> attribute,
 as described there.  It also means that a subroutine so marked
 will not trigger the "Ambiguous call resolved as CORE::%s" warning.
 
+=item lvalue
+
+Indicates that the referenced subroutine is a valid lvalue and can
+be assigned to. The subroutine must return a modifiable value such
+as a scalar variable, as described in L<perlsub>.
+
 =back
 
 There are no built-in attributes for anything other than subroutines.
@@ -267,7 +274,8 @@ will use that package name.
 =head2 Syntax of Attribute Lists
 
 An attribute list is a sequence of attribute specifications, separated by
-whitespace, commas, or both.  Each attribute specification is a simple
+whitespace or a colon (with optional whitespace).
+Each attribute specification is a simple
 name, optionally followed by a parenthesised parameter list.
 If such a parameter list is present, it is scanned past as for the rules
 for the C<q()> operator.  (See L<perlop/"Quote and Quote-like Operators">.)
@@ -275,8 +283,8 @@ The parameter list is passed as it was found, however, and not as per C<q()>.
 
 Some examples of syntactically valid attribute lists:
 
-    switch(10,foo(7,3)) , ,  expensive
-    Ugly('\(") Bad
+    switch(10,foo(7,3))  :  expensive
+    Ugly('\(") :Bad
     _5x5
     locked method
 
@@ -286,7 +294,7 @@ Some examples of syntactically invalid attribute lists (with annotation):
     Ugly('(')                  # ()-string not balanced
     5x5                                # "5x5" not a valid identifier
     Y2::north                  # "Y2::north" not a simple identifier
-    foo + bar                  # "+" neither a comma nor whitespace
+    foo + bar                  # "+" neither a colon nor whitespace
 
 =head1 EXPORTS