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. 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. For example:
sub test { use attrs qw(locked method); ... } @a = attrs::get(\foo);
The valid attributes are:
locked
- Meaningful only when the subroutine or method is to 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.