PERL/C3/Access-Modifiers-in-PERL/English
Title of script: Access Modifiers in PERL
Author: Nirmala Venkat
Keywords: Scope of variables, Dynamically scoped variable, global variable, gedit, video tutorial
|
|
Slide 1: | Welcome to the Spoken Tutorial on Access Modifiers in PERL |
Slide 2:
Learning objectives |
In this tutorial we will learn about
|
Slide 3:
System requirements |
For this tutorial, I am using
You can use any text editor of your choice. |
Slide 4:
Prerequisites |
Prerequisites
You should have basic knowledge of Perl Programming. If not, then go through the relevant Perl spoken tutorials on the spoken tutorial website. |
Slide 5: | Let us start with the introduction to the Scope of variables.
The scope of a variable is the region of code within which a variable can be accessed. In other words, it refers to the visibility of variables. |
Slide 6: | First, we will discuss about my, local and our modifiers in Perl.
|
Slide 7: | Variables declared with my keyword will lose scope outside the block in which they are declared. |
Slide 8: | You can declare a variable without giving it a value, like this:
my $fvalue; You can also declare a variable by assigning a value to it, as: my $fValue = 1; my $fname = "Rahul"; The syntax to declare several variables with the same my statement is as follows: my ($fname, $lname, $age); |
Let us understand private variables using a sample program. | |
Switch to the file in gedit. | I already have a sample program.
Let me open it in gedit Text editor. |
Switch to the Terminal >> type gedit scope-my.pl & >> press Enter | Open the terminal and type gedit scope-my dot pl ampersand and press Enter |
Point to the code
scope-my.pl |
Scope-my dot pl file is now open in gedit.
Type the following code as displayed on the screen. Let me explain the code now. |
Highlight the code as per narration | Here, I have declared a private variable $fname with my keyword.
And assigned the value "Raghu" to it. Within this block, the print statement prints the value in the fname variable, i.e. "Raghu". |
Highlight the code as per narration | In the next block, I have assigned the value "Other" to the same private variable $fname.
So, the print statement will print "Other" within this particular block. |
Highlight the code as per narration | The last print statement in this program, will not print any output.
|
Press Ctrl+S | Now, press Ctrl+S to save the file. |
Let us now execute the program. | |
Switch to terminal >> type
perl scope-my dot pl >> press Enter |
Switch back to the terminal and type
perl scope-my dot pl and press Enter. |
Highlight
Output |
The output is displayed as
Block 1: Raghu Block 2: Other Outside Block: ( There is no output) So, the scope of the my variable is accessed only within a particular block of code. |
Come back to gedit >> Add my $fname = "John"; outside the blocks, before the last print statement.
Press Ctrl+S |
Now let us change the existing program a little.
Let us add my $fname = "John"; outside the blocks, before the last print statement. Save the changes. |
On the terminal, press up-arrow key | Switch back to the terminal and execute as before.
Analyse the output that is displayed. Hope you are able to understand the scope of using my variable within a block and outside a block. |
<<PAUSE>> | |
Next we will see about dynamically scoped variable in Perl. | |
Slide 9: | Local keyword gives a temporary scope to a global variable.
The variable is visible to any function called from the original block. |
Slide 9: | You can declare a local variable as,
local $fValue = 100; local $fname = "Rakesh"; |
Let us understand this using a sample program. | |
Switch to the terminal >> type gedit scope-local.pl & >> press Enter | Open the terminal and type
gedit scope-local dot pl ampersand and press Enter. |
Point the cursor | This will open scope-local dot pl file in gedit.
Type the following code as displayed on the screen. Let me explain the code now. |
Highlight the code in gedit | Here, in the first line we have declared a variable $fname and initialised it. |
Highlight the code in gedit | Inside the function Welcome, we have declared a local variable by the same name, $fname.
Notice the local keyword before the variable name. And we have assigned the value "Rakesh" to this variable. So, basically, inside function Welcome(), $fname is modified as a new temporary local variable. Then, the function Hello is being called. |
Highlight the code in gedit | Here is the function definition of Hello. |
Highlight the code in gedit | At the end of the program, we are calling both the functions Welcome and Hello. |
Press Ctrl + S | Now press Ctrl + S to save the program. |
Let us execute the program. | |
Switch to terminal >> type perl scope-local.pl >> press Enter | Switch back to the terminal and type,
perl scope-local.pl and press Enter. |
Highlight
Output |
The output is displayed as
Hello, Rakesh ! Hello, Welcome to Spoken tutorials! |
Let us understand the output. | |
Switch to program | When the function Welcome() is called, the function Hello() within it, accesses the local variable.
Within Welcome(), $fname has the value "Rakesh". After this, the function Hello() accesses the variable $fname once again. But this time, it is the variable $fname which was initialized to "Welcome to spoken tutorials". It does not access the local variable $fname within the function Welcome(). Which means that, the local variable restores the scope, after leaving the block Welcome(). |
<<PAUSE>> | |
Next, we will see about global variables in Perl. | |
Slide 10: | A global variable can be accessed anywhere in the program. |
Slide 10: | Global variables are declared with our keyword.
Here are some examples. our $fvalue = 100;</nowiki> our $fname ="Priya"; |
Now let us look at a working example of global variables. | |
Switch to the Terminal >> type gedit scope-our.pl & >> press Enter | Switch back to the terminal and type
gedit scope-our dot pl ampersand and press Enter |
Point to the file name | This will open the file scope-our.pl in gedit.
Let me explain the sample program which I have written. |
Highlight in gedit | I have declared package main and a global variable as our $i and I have initialised it to 100; |
Highlight the code | Notice the package First declaration.
|
Highlight the code | Within package First, the global variable "i" holds the value 10. |
Highlight the code | In package Second, the global variable "i" is assigned the value 20. |
Highlight the code | The main package uses both package First variable and the package Second variable.
In my program, I have declared the same variable "i" in all the packages. The package variable is referred by package name::variable name In our example it is $First::i, $Second::i We have multiple packages within one file, and the global variable will be accessed by all the packages. |
Press Ctrl+S | Now, save the file and execute the program. |
Switch to the Terminal >> type perl scope-our.pl & >> press Enter | So, switch to terminal and type-
perl scope-our dot pl and press Enter. The output is as displayed on the terminal. <Pause> |
Analyze the output by yourself to understand how the assignment to the variable i was done. | |
<<PAUSE>> | |
Slide 11:
Summary |
This brings us to the end of this tutorial. Let us summarise.
In this tutorial, we learnt:
It is preferred to use my than local as the compilation is faster. |
Slide 12:
Assignment |
Assignment
Here is an assignment for you. Write the code for the following assignment and execute it.
|
Slide 12:
About the Spoken Tutorial Project |
The video at the following link summarises the Spoken Tutorial project.
Please download and watch it. |
Slide 13:
About workshops |
The Spoken Tutorial Project Team conducts workshops and gives certificates for those who pass an online test.
For more details, please write to us. |
Slide 14: Acknowledgment |
Spoken Tutorial project is funded by NMEICT, MHRD, Government of India. More information on this mission is available at this link. |
This is Nirmala Venkat from IIT Bombay, signing off. Thanks for watching. |