our
our vars
Declares the listed variables to be valid globals
within the enclosing block, file, or eval
. vars
must be in parentheses if more than one value is used. our( )
has the same scoping rules as a
“my” declaration but does not create a local variable. Variables
that you create with our( )
will be visible across its lexical scope and may cross package
boundaries. Unlike use
vars
, our(
)
is not package scoped; the package in which the
variable is entered is determined at the point of declaration, not
at the time of use. This means the following behavior
holds:
package Foo; our $bar; # Declares $Foo::bar for rest of lexical scope $bar = 20; package Bar; print $bar; # Prints 20
You my use multiple our
declarations in the same lexical scope if they are in different
packages. If they are in the same package, Perl will emit warnings
if you have asked for them:
use warnings; package Foo; our $bar; # Declares $Foo::bar for rest of lexical scope $bar = 20; package Bar; our $bar = 30; # Declares $Bar::bar for rest of lexical scope print $bar; # Prints 30 our $bar; # Emits warning
18.225.235.144