 IT Service Management Consultants
|
|
|
Home > Perl > Object Oriented Programming > Perl Packages - Part 2 (Variable Scoping)
|
|
|
|
|
|
Perl Packages - Part 2 (Variable Scoping) |
|
Written by Philip L Yuson
|
What is in this article
The article discusses about the different ways of scoping your variables. Scoping defines the visibility of a variable.
Introduction Before we talk about scoping, we will
first discuss about blocks of code. A block is simply a set of
statements between matching curly brackets {}. Subroutines, conditional statements, loop statements, eval statements do and files used within a script contain blocks.
Example:
sub myFunction { print "This is a function"; if (@_) { shift; print "$_ "; } }
The my Function Variables defined using the my function are visible only within the block and its subordinate blocks. So if you have something like this:
package myPackage; { my $var = "main variable"; print "main: $var "; { my $var = "second var"; print "Second: $var "; } print "Before Exit: $var "; }
The result will be:
main: main variable Second: second var Before Exit: main variable
Explanation The first my $var defines the $var
variable for the myPackage package. The second my $var defines the $var
variable within the block. This variable is totally different from the
one defined before it. Once the execution goes out of the block, the
$var variable in the block is released. This is the reason why on the
last print statement, the variable printed is the one defined on top
rather than the one defined within the block.
Why do you want to do this This comes in handy in object
oriented programming. Remember that in the previous article, we can
reference a variable in another package by specifying the package name
as a prefix (example: $street::name). When a variable is defined using
the my function, the visibility of the variable is limited only to
within the block - or package as the case may be.
|
Add comment
|
|
Copyright: © 2012 Concept Solutions Corporation
|