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