A my
declares the listed variables to be local (lexically) to the
enclosing block, file, or eval
. If more than one variable is listed,
the list must be placed in parentheses.
The exact semantics and interface of TYPE and ATTRS are still
evolving. TYPE may be a bareword, a constant declared
with use constant
, or __PACKAGE__
. It is
currently bound to the use of the fields
pragma,
and attributes are handled using the attributes
pragma, or starting
from Perl 5.8.0 also via the Attribute::Handlers
module. See
Private Variables via my() in perlsub for details, and fields,
attributes, and Attribute::Handlers.
Note that with a parenthesised list, undef
can be used as a dummy
placeholder, for example to skip assignment of initial values: