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.