In Perl, only subroutines and formats require explicit declaration. Variables (and similar constructs) are automatically created when they are first assigned.
Variable declaration comes into play when you need to limit the scope of a variable’s use. You can do this in two ways:
Creates temporary objects within a scope.
Dynamically scoped constructs are visible globally, but take
action only within their defined scopes. Dynamic scoping
applies to variables declared with local
.
Creates private constructs that are visible only
within their scopes. The most frequently seen form of
lexically scoped declaration is the declaration of my
variables.
Therefore, we can say that a local
variable is dynamically
scoped, whereas a my
variable is lexically scoped. Dynamically
scoped variables are visible to functions called from within the
block in which they are declared. Lexically scoped variables, on the
other hand, are totally hidden from the outside world, including any
called subroutines, unless they are declared within the same scope.
See Section 4.7 later
in this chapter for further discussion.
3.129.21.47