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
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.
Get Perl in a Nutshell, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.