attrs

Sets or gets the attributes of subroutines. Attributes are set for a subroutine at compile time; therefore, setting an invalid attribute results in a compile-time error. Note that attrs has been deprecated. You should use the attributes form instead. During execution, when you call attrs::get on a subroutine reference or name, it returns the list of attributes that are set. Note that attrs::get is not exported. The old usage of attrs is as follows:

sub test {
    use attrs qw(locked method);
    ...
}
@a = attrs::get(\test);

You should use a form like the following instead:

sub test : locked method { }

You can read more about attributes in the next section.

The valid attributes are:

locked

Meaningful only when the subroutine or method will be called by multiple threads. When set on a subroutine that also has the method attribute set, invoking that subroutine implicitly locks its first argument before execution. On a non-method subroutine, a lock is taken on the subroutine itself before execution. The lock semantics are identical to one taken explicitly with the lock operator immediately after entering the subroutine.

method

The invoking subroutine is a method.

Get Perl in a Nutshell, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.