Commit | Line | Data |
77a005ab |
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 | |
a98df962 |
11 | attrs - set/get attributes of a subroutine (deprecated) |
77a005ab |
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 | |
a98df962 |
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. |
77a005ab |
31 | Setting attributes takes place at compile time; trying to set |
32 | invalid attribute names causes a compile-time error. Calling |
a98df962 |
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. |
77a005ab |
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; |