Add Daniel Grisinger <dgris@dimensional.com>.
[p5sagit/p5-mst-13.2.git] / ext / attrs / attrs.pm
CommitLineData
77a005ab 1package attrs;
2require DynaLoader;
3use vars '@ISA';
4@ISA = 'DynaLoader';
5
6use vars qw($VERSION);
7$VERSION = "1.0";
8
9=head1 NAME
10
11attrs - set/get attributes of a subroutine
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
24This module lets you set and get attributes for subroutines.
25Setting attributes takes place at compile time; trying to set
26invalid attribute names causes a compile-time error. Calling
27C<attr::get> on a subroutine reference or name returns its list
28of attribute names. Notice that C<attr::get> is not exported.
29Valid attributes are as follows.
30
31=over
32
33=item method
34
35Indicates that the invoking subroutine is a method.
36
37=item locked
38
39Setting this attribute is only meaningful when the subroutine or
40method is to be called by multiple threads. When set on a method
41subroutine (i.e. one marked with the B<method> attribute above),
42perl ensures that any invocation of it implicitly locks its first
43argument before execution. When set on a non-method subroutine,
44perl ensures that a lock is taken on the subroutine itself before
45execution. The semantics of the lock are exactly those of one
46explicitly taken with the C<lock> operator immediately after the
47subroutine is entered.
48
49=back
50
51=cut
52
53bootstrap attrs $VERSION;
54
551;