attributes
sub afunc : method;
my $closure = sub : method { ... };
use attributes;
@attrlist = attributes::get(\&afunc);The attributes pragma has two purposes. The first is to provide an internal
mechanism for declaring attribute
lists, which are optional properties associated with
subroutine declarations and (someday soon) variable declarations. (Since
it’s an internal mechanism, you don’t generally use this pragma directly.)
The second purpose is to provide a way to retrieve those attribute lists
at runtime using the attributes::get
function call. In this capacity, attributes is just a standard module, not a
pragma.
Only a few built-in attributes are currently handled by Perl. Package-specific attributes are allowed by an experimental extension mechanism described in the section “Package-specific Attribute Handling” of the attributes(3) manpage.
Attribute setting occurs at compile time; attempting to set an
unrecognized attribute is a compilation error. (The error is trappable by
eval, but it still stops the
compilation within that eval
block.)
Only three built-in attributes for subroutines are currently
implemented: locked, method, and lvalue. See Chapter 7 for
further discussion of these. There are currently no built-in attributes
for variables as there are for subroutines, but we can think of several we
might like, such as constant.
The attributes pragma provides
two subroutines for general use. They may be imported if you ask for
them.
getThis function returns a (possibly empty) ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access