Declarations and Scope
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:
- Dynamic scoping
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.- Lexical scoping
Creates private constructs that are visible only within their scopes. The most frequently seen form of lexically scoped declaration is the declaration of
myvariables.
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.