revert change#4618 (breaks C<$_ = 'A:B'; s/^[a-z]:/x/>)
[p5sagit/p5-mst-13.2.git] / ext / attrs / attrs.pm
1 package attrs;
2 require DynaLoader;
3 use vars '@ISA';
4 @ISA = 'DynaLoader';
5
6 use vars qw($VERSION);
7 $VERSION = "1.0";
8
9 =head1 NAME
10
11 attrs - set/get attributes of a subroutine (deprecated)
12
13 =head1 SYNOPSIS
14
15     sub foo {
16         use attrs qw(locked method);
17         ...
18     }
19
20     @a = attrs::get(\&foo);
21
22 =head1 DESCRIPTION
23
24 NOTE: Use of this pragma is deprecated.  Use the syntax
25
26     sub foo : locked, method { }
27
28 to declare attributes instead.  See also L<attributes>.
29
30 This pragma lets you set and get attributes for subroutines.
31 Setting attributes takes place at compile time; trying to set
32 invalid attribute names causes a compile-time error. Calling
33 C<attrs::get> on a subroutine reference or name returns its list
34 of attribute names. Notice that C<attrs::get> is not exported.
35 Valid attributes are as follows.
36
37 =over
38
39 =item method
40
41 Indicates that the invoking subroutine is a method.
42
43 =item locked
44
45 Setting this attribute is only meaningful when the subroutine or
46 method is to be called by multiple threads. When set on a method
47 subroutine (i.e. one marked with the B<method> attribute above),
48 perl ensures that any invocation of it implicitly locks its first
49 argument before execution. When set on a non-method subroutine,
50 perl ensures that a lock is taken on the subroutine itself before
51 execution. The semantics of the lock are exactly those of one
52 explicitly taken with the C<lock> operator immediately after the
53 subroutine is entered.
54
55 =back
56
57 =cut
58
59 bootstrap attrs $VERSION;
60
61 1;