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:
The valid attributes are:sub test { use attrs qw(locked method); ... } @a = attrs::get(\foo);
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.