Difference between revisions of "PERL/C3/Sample-PERL-program/English-timed"
From Script | Spoken-Tutorial
PoojaMoolya (Talk | contribs) |
PoojaMoolya (Talk | contribs) |
||
(9 intermediate revisions by one other user not shown) | |||
Line 6: | Line 6: | ||
|- | |- | ||
|00:01 | |00:01 | ||
− | |Welcome to the''' Spoken Tutorial''' on''' Sample PERL program.''' | + | |Welcome to the '''Spoken Tutorial''' on '''Sample PERL program.''' |
|- | |- | ||
|00:06 | |00:06 | ||
− | |In this tutorial we will learn to | + | |In this tutorial, we will learn to include all the major topics we covered so far |
− | + | in a sample Perl program. | |
− | + | ||
− | + | ||
|- | |- | ||
|00:14 | |00:14 | ||
− | |To record this tutorial, I am using | + | |To record this tutorial, I am using: |
− | + | '''Ubuntu Linux 12.04''' operating system | |
− | + | '''Perl 5.14.2''' and the | |
− | + | '''gedit''' Text editor. | |
− | + | ||
|- | |- | ||
|00:25 | |00:25 | ||
− | |You can use any text editor of your choice. | + | |You can use any '''text editor''' of your choice. |
|- | |- | ||
|00:29 | |00:29 | ||
− | |As a prerequisite, you should have working knowledge of '''Perl''' | + | |As a prerequisite, you should have working knowledge of '''Perl''' programming. |
|- | |- | ||
Line 37: | Line 34: | ||
|- | |- | ||
|00:39 | |00:39 | ||
− | |The sample Perl program will give the output of various weather forecast reports of a region. | + | |The sample '''Perl''' program will give the '''output''' of various weather forecast reports of a region. |
|- | |- | ||
|00:46 | |00:46 | ||
− | |''' | + | |'''weather dot pm''' is a''' module''' file that has a complex '''data-structure''' to hold the data required for this program. |
|- | |- | ||
Line 49: | Line 46: | ||
|- | |- | ||
|00:59 | |00:59 | ||
− | |''' | + | |'''weather underscore report dot pl''' is the''' Perl''' program which makes use of this '''module '''file to give the required output. |
|- | |- | ||
Line 57: | Line 54: | ||
|- | |- | ||
|01:13 | |01:13 | ||
− | |Download and unzip the files provided in the code file link. | + | |Download and '''unzip''' the files provided in the '''code file link'''. |
|- | |- | ||
|01:18 | |01:18 | ||
− | |Now let us see our sample '''Perl '''program '''Weather dot pm.''' | + | |Now, let us see our sample '''Perl '''program '''Weather dot pm.''' |
|- | |- | ||
Line 69: | Line 66: | ||
|- | |- | ||
|01:29 | |01:29 | ||
− | |'''Perl '''implements '''namespace '''using the''' package | + | |'''Perl '''implements '''namespace '''using the''' package''' keyword. |
|- | |- | ||
|01:34 | |01:34 | ||
− | |'''BEGIN''' block is compiled and executed before the main program. | + | |'''BEGIN''' block is compiled and executed before the '''main''' program. |
|- | |- | ||
Line 81: | Line 78: | ||
|- | |- | ||
|01:48 | |01:48 | ||
− | |'''At the rate EXPORT''' and''' at the rate EXPORT underscore OK''' are the two main variables used during export operation. | + | |'''At the rate EXPORT''' and''' at the rate EXPORT underscore OK''' are the two main variables used during '''export''' operation. |
|- | |- | ||
Line 97: | Line 94: | ||
|- | |- | ||
|02:14 | |02:14 | ||
− | |Here I have used''' references''' to create complex data structures to hold the data required for a weather report. | + | |Here, I have used''' references''' to create complex data-structures, to hold the data required for a weather-report. |
|- | |- | ||
|02:24 | |02:24 | ||
− | |'''$weather_report''' is a''' hash reference'''. “'''place'''” and “'''nstate'''” | + | |'''$weather_report''' is a''' hash reference'''. “'''place'''” and “'''nstate'''” have the scalar values. |
|- | |- | ||
Line 109: | Line 106: | ||
|- | |- | ||
|02:37 | |02:37 | ||
− | | | + | |Each week day has four '''keys''' - |
− | + | '''max underscore temp''' | |
− | + | '''min underscore temp''' | |
− | + | '''sunrise''' | |
− | + | '''sunset.''' | |
− | + | ||
|- | |- | ||
|02:48 | |02:48 | ||
− | |“'''record underscore time'''” is an''' array reference''' with two index values. | + | |“'''record underscore time'''” is an''' array reference''' with two '''index''' values. |
|- | |- | ||
Line 127: | Line 123: | ||
|- | |- | ||
|03:01 | |03:01 | ||
− | |This function prints the header information such as header of the report, place, state and current date. | + | |This '''function''' prints the '''header''' information such as header of the report, place, state and current date. |
|- | |- | ||
|03:10 | |03:10 | ||
− | |Now let us see the next function''' display underscore daily underscore report.''' | + | |Now, let us see the next function''' display underscore daily underscore report.''' |
|- | |- | ||
|03:16 | |03:16 | ||
− | |This '''function '''prints the daily report on the screen depending upon the weekday input. | + | |This '''function '''prints the daily report on the screen, depending upon the weekday input. |
|- | |- | ||
|03:22 | |03:22 | ||
− | | We retrieve the parameter passed into a '''subroutine''' using the''' shift | + | | We retrieve the parameter passed into a '''subroutine''' using the''' shift''' function. |
|- | |- | ||
|03:27 | |03:27 | ||
− | |I have used the''' trim | + | |I have used the''' trim() '''function to remove the leading and trailing spaces of the '''parameter''' value. |
|- | |- | ||
|03:34 | |03:34 | ||
− | | Here is the code for the '''trim | + | | Here is the code for the '''trim()''' function. |
|- | |- | ||
|03:37 | |03:37 | ||
− | | '''Lc | + | | '''Lc()''' function returns a lowercase version of the given input. |
|- | |- | ||
Line 159: | Line 155: | ||
|- | |- | ||
|03:45 | |03:45 | ||
− | | The week | + | | The week-day, passed as parameter from the '''main''' program, is assigned to a local variable '''dollar week underscore day'''. |
|- | |- | ||
|03:55 | |03:55 | ||
− | | The following '''print | + | | The following '''print statement'''s will print the data corresponding to a specified week day. |
|- | |- | ||
Line 179: | Line 175: | ||
|- | |- | ||
|04:20 | |04:20 | ||
− | | If it is an '''array,''' we need to use the square brackets with the index | + | | If it is an '''array,''' we need to use the square brackets with the '''index value'''s. |
|- | |- | ||
|04:26 | |04:26 | ||
− | | '''return | + | | '''return''' function of '''Perl''' returns a value. |
|- | |- | ||
|04:29 | |04:29 | ||
− | |This can be used to check the status of the '''function''' in the main program. | + | |This can be used to check the status of the '''function''' in the '''main''' program. |
|- | |- | ||
Line 196: | Line 192: | ||
|04:40 | |04:40 | ||
− | |This '''function''' will print the report output to a file. | + | |This '''function''' will print the '''report output''' to a file. |
|- | |- | ||
|04:45 | |04:45 | ||
− | |The''' open | + | |The''' open''' function with the greater than (>) symbol defines the''' WRITE''' mode. |
|- | |- | ||
Line 208: | Line 204: | ||
|- | |- | ||
|04:56 | |04:56 | ||
− | |The | + | |The print statements will print the corresponding data of a specified week day, to a file. |
|- | |- | ||
Line 232: | Line 228: | ||
|- | |- | ||
|05:30 | |05:30 | ||
− | |Now let us see | + | |Now, let us see a '''Perl '''program, '''weather underscore report dot pl ''' where we will make use of this '''module '''file '''Weather dot pm'''. |
|- | |- | ||
|05:40 | |05:40 | ||
− | |Here, '''use strict''' and''' use warnings''' are compiler flags that | + | |Here, '''use strict''' and''' use warnings''' are compiler flags that help to avoid common programming mistakes. |
|- | |- | ||
|05:48 | |05:48 | ||
− | | '''use Weather | + | | '''use Weather''' semicolon. Here, '''Weather '''is a''' module''' name which I have used in this program. |
|- | |- | ||
|05:56 | |05:56 | ||
− | |We have already seen that the | + | |We have already seen that the functions required for this program have been stored in this''' module'''. |
|- | |- | ||
Line 256: | Line 252: | ||
|- | |- | ||
|06:14 | |06:14 | ||
− | |The user has to enter an option to print the daily weather report of a particular week day | + | |The user has to enter an option to print: |
− | daily weather report of a particular week day to an output file | + | the daily weather report of a particular week day |
+ | daily weather report of a particular week day to an output file | ||
+ | weekly weather report. | ||
|- | |- | ||
|06:27 | |06:27 | ||
− | |If option | + | |If option '1' is typed, it will ask the user to enter the day of a week. |
|- | |- | ||
|06:32 | |06:32 | ||
− | |The '''diamond '''operator will read from''' STDIN''', that is from the keyboard. | + | |The '''diamond '''operator will read from''' STDIN''', that is, from the keyboard. |
|- | |- | ||
Line 274: | Line 272: | ||
|06:47 | |06:47 | ||
|Next, we can see that we are calling two functions- | |Next, we can see that we are calling two functions- | ||
− | + | ''' display_header()''' and | |
− | + | ''' display_daily_report().''' | |
|- | |- | ||
|06:56 | |06:56 | ||
− | |We have exported all | + | |We have exported all functions in '''Weather dot pm''' with “'''use Weather'''” statement in this file. |
|- | |- | ||
|07:03 | |07:03 | ||
− | |So, no need to refer the | + | |So, no need to refer the functions within a package using the '''colon colon (::)package qualifier''' |
|- | |- | ||
Line 291: | Line 289: | ||
|- | |- | ||
|07:13 | |07:13 | ||
− | |If option 2 is typed, it will prompt the user to enter the day of a week. | + | |If option '2' is typed, it will prompt the user to enter the day of a week. |
|- | |- | ||
Line 299: | Line 297: | ||
|- | |- | ||
|07:27 | |07:27 | ||
− | | '''return '''value from the | + | | '''return '''value from the function is stored in the variable '''dollar result'''. |
|- | |- | ||
Line 311: | Line 309: | ||
|- | |- | ||
|07:46 | |07:46 | ||
− | |If option 3 is typed, it prints the weather report for the whole week. | + | |If option '3' is typed, it prints the weather report for the whole week. |
|- | |- | ||
Line 331: | Line 329: | ||
|- | |- | ||
|08:11 | |08:11 | ||
− | |If any option | + | |If any option other than the ones specified is given, the print statement says “'''Incorrect option'''”. |
|- | |- | ||
|08:19 | |08:19 | ||
− | |Here the exit value of 0 indicates the program ran successfully. | + | |Here, the exit value of '0', indicates the program ran successfully. |
|- | |- | ||
|08:25 | |08:25 | ||
− | |The exit value other than 0 means an error of some kind has occurred. | + | |The exit value other than '0' means an error of some kind has occurred. |
|- | |- | ||
|08:31 | |08:31 | ||
− | |Now let us execute the program. | + | |Now, let us execute the program. |
|- | |- | ||
|08:34 | |08:34 | ||
− | |Switch to the '''terminal '''and type '''perl weather underscore report dot pl''' and press''' Enter''' | + | |Switch to the '''terminal '''and type '''perl weather underscore report dot pl''' and press''' Enter'''. |
|- | |- | ||
Line 355: | Line 353: | ||
|- | |- | ||
|08:45 | |08:45 | ||
− | |Type | + | |Type '1 'and press '''Enter.''' |
|- | |- | ||
|08:48 | |08:48 | ||
− | |We are prompted to enter a day of the week. I'll type | + | |We are prompted to enter a day of the week. I'll type "monday" and press '''Enter'''. |
|- | |- | ||
|08:56 | |08:56 | ||
− | |This is the header output generated from the '''function display underscore header().''' | + | |This is the '''header output''' generated from the '''function display underscore header().''' |
|- | |- | ||
Line 371: | Line 369: | ||
|- | |- | ||
|09:06 | |09:06 | ||
− | |Now I'll | + | |Now, I'll execute the program once again to demonstrate the other options. |
|- | |- | ||
Line 379: | Line 377: | ||
|- | |- | ||
|09:17 | |09:17 | ||
− | |At the prompt, we have to type any week day. I will type | + | |At the prompt, we have to type any week day. I will type "Wednesday" and press '''Enter'''. |
|- | |- | ||
|09:25 | |09:25 | ||
− | |We can see a message | + | |We can see a message: "Please check the file wednesday dot txt for report output". |
|- | |- | ||
|09:32 | |09:32 | ||
− | |The output has been written to this text file. Let us open the file and check the | + | |The output has been written to this text file. Let us open the file and check the contents. |
|- | |- | ||
|09:38 | |09:38 | ||
− | |Type '''gedit wednesday dot txt''' and press''' Enter.''' | + | |Type: '''gedit wednesday dot txt''' and press''' Enter.''' |
|- | |- | ||
|09:44 | |09:44 | ||
− | |The output file has been created with the entered week day name with | + | |The output file has been created with the entered week day name, with 'txt' extension. |
|- | |- | ||
|09:51 | |09:51 | ||
− | |Now let us check the next option. | + | |Now, let us check the next option. |
|- | |- | ||
|09:54 | |09:54 | ||
− | |Switch to the terminal and type''' perl weather underscore report dot pl '''and press''' Enter''' | + | |Switch to the '''terminal''' and type:''' perl weather underscore report dot pl '''and press''' Enter'''. |
|- | |- | ||
|10:00 | |10:00 | ||
− | |Type | + | |Type '3' and press '''Enter.''' |
|- | |- | ||
Line 419: | Line 417: | ||
|- | |- | ||
|10:13 | |10:13 | ||
− | |So the displayed output is not related to the order in which they were added. | + | |So, the displayed output is not related to the order in which they were added. |
|- | |- | ||
Line 427: | Line 425: | ||
|- | |- | ||
|10:24 | |10:24 | ||
− | | In this tutorial we have seen a sample '''Perl''' program by covering main topics of our previous tutorials. | + | | In this tutorial, we have seen a sample '''Perl''' program by covering main topics of our previous tutorials. |
|- | |- | ||
|10:32 | |10:32 | ||
− | | As an assignment, | + | | As an assignment, write a similar '''Perl''' program '''employee underscore report.pl''' for displaying '''employee salary, designation, department, leave_balance''' details. |
|- | |- | ||
|10:45 | |10:45 | ||
− | |Pass Employee ID or Employee name as input. | + | |Pass '''Employee ID''' or '''Employee name''' as input. |
|- | |- | ||
|10:50 | |10:50 | ||
− | | Write the required functions in the module '''Employee dot pm '''file. | + | | Write the required functions in the '''module''' '''Employee dot pm '''file. |
|- | |- | ||
|10:56 | |10:56 | ||
− | | The video at the following link | + | | The video at the following '''link''' summarizes the '''spoken tutorial'''. Please download and watch it. |
|- | |- | ||
|11:03 | |11:03 | ||
− | | We conduct workshops and give certificates for those who pass our online tests. | + | | We conduct workshops and give certificates for those who pass our online tests.For more details, please write to us. |
− | + | ||
− | For more details, please write to us. | + | |
|- | |- | ||
|11:12 | |11:12 | ||
− | |Spoken Tutorial project is funded by NMEICT, MHRD, Government of India. | + | |Spoken Tutorial project is funded by NMEICT, MHRD, Government of India.More information on this mission is available at this '''link'''. |
− | + | ||
− | More information on this mission is available at this link. | + | |
|- | |- |
Latest revision as of 18:24, 20 February 2017
00:01 | Welcome to the Spoken Tutorial on Sample PERL program. |
00:06 | In this tutorial, we will learn to include all the major topics we covered so far
in a sample Perl program. |
00:14 | To record this tutorial, I am using:
Ubuntu Linux 12.04 operating system Perl 5.14.2 and the gedit Text editor. |
00:25 | You can use any text editor of your choice. |
00:29 | As a prerequisite, you should have working knowledge of Perl programming. |
00:34 | If not, then go through the relevant Perl spoken tutorials on this website. |
00:39 | The sample Perl program will give the output of various weather forecast reports of a region. |
00:46 | weather dot pm is a module file that has a complex data-structure to hold the data required for this program. |
00:54 | It also contains various functions to generate the report. |
00:59 | weather underscore report dot pl is the Perl program which makes use of this module file to give the required output. |
01:08 | The same code files are available under this video on our website. |
01:13 | Download and unzip the files provided in the code file link. |
01:18 | Now, let us see our sample Perl program Weather dot pm. |
01:24 | The block of code in this program is under the namespace Weather. |
01:29 | Perl implements namespace using the package keyword. |
01:34 | BEGIN block is compiled and executed before the main program. |
01:40 | Export allows to export the functions and variables of modules to user's namespace. |
01:48 | At the rate EXPORT and at the rate EXPORT underscore OK are the two main variables used during export operation. |
01:57 | At the rate EXPORT contains list of subroutines and variables of the module. |
02:03 | These will be exported into the caller namespace. |
02:07 | At the rate EXPORT underscore OK does export of symbols on demand basis. |
02:14 | Here, I have used references to create complex data-structures, to hold the data required for a weather-report. |
02:24 | $weather_report is a hash reference. “place” and “nstate” have the scalar values. |
02:32 | “weekly” is hash of hash references. |
02:37 | Each week day has four keys -
max underscore temp min underscore temp sunrise sunset. |
02:48 | “record underscore time” is an array reference with two index values. |
02:54 | I have a few subroutines to display the weather report of various options.
Let us see one by one. |
03:01 | This function prints the header information such as header of the report, place, state and current date. |
03:10 | Now, let us see the next function display underscore daily underscore report. |
03:16 | This function prints the daily report on the screen, depending upon the weekday input. |
03:22 | We retrieve the parameter passed into a subroutine using the shift function. |
03:27 | I have used the trim() function to remove the leading and trailing spaces of the parameter value. |
03:34 | Here is the code for the trim() function. |
03:37 | Lc() function returns a lowercase version of the given input. |
03:42 | This is used to avoid case-sensitivity. |
03:45 | The week-day, passed as parameter from the main program, is assigned to a local variable dollar week underscore day. |
03:55 | The following print statements will print the data corresponding to a specified week day. |
04:01 | We are using the arrow operator to dereference a value in $weather underscore report. |
04:09 | When working with references, we have to understand the data type we are dereferencing. |
04:15 | If it is a hash, we need to pass the key in curly braces. |
04:20 | If it is an array, we need to use the square brackets with the index values. |
04:26 | return function of Perl returns a value. |
04:29 | This can be used to check the status of the function in the main program. |
04:36 | The next function is write underscore daily underscore report. |
04:40 | This function will print the report output to a file. |
04:45 | The open function with the greater than (>) symbol defines the WRITE mode. |
04:50 | Filename is created with the weekday name and dot txt extension. |
04:56 | The print statements will print the corresponding data of a specified week day, to a file. |
05:02 | This prints the weekly report. |
05:05 | I have declared a foreach loop to loop through each weekday of the hash reference. |
05:11 | I have used curly brackets to represent the hash reference and the arrow operator to dereference. |
05:18 | I am using the “keys” in-built function to loop through the keys of the hash. |
05:23 | display underscore daily underscore report function will print each element of the hash. |
05:30 | Now, let us see a Perl program, weather underscore report dot pl where we will make use of this module file Weather dot pm. |
05:40 | Here, use strict and use warnings are compiler flags that help to avoid common programming mistakes. |
05:48 | use Weather semicolon. Here, Weather is a module name which I have used in this program. |
05:56 | We have already seen that the functions required for this program have been stored in this module. |
06:03 | It is not required to give the dot pm file extension here. |
06:08 | In this program, I'll print different reports depending upon the given options. |
06:14 | The user has to enter an option to print:
the daily weather report of a particular week day daily weather report of a particular week day to an output file weekly weather report. |
06:27 | If option '1' is typed, it will ask the user to enter the day of a week. |
06:32 | The diamond operator will read from STDIN, that is, from the keyboard. |
06:38 | For example, if the user enters 'monday', then it is assigned to a variable dollar dayoption, which is a local variable. |
06:47 | Next, we can see that we are calling two functions-
display_header() and display_daily_report(). |
06:56 | We have exported all functions in Weather dot pm with “use Weather” statement in this file. |
07:03 | So, no need to refer the functions within a package using the colon colon (::)package qualifier |
07:10 | Now let's see the next option. |
07:13 | If option '2' is typed, it will prompt the user to enter the day of a week. |
07:19 | $dayoption is passed as the input parameter to the function write underscore daily underscore report. |
07:27 | return value from the function is stored in the variable dollar result. |
07:33 | Print statement asks the user to check the text file for the output. |
07:38 | The filename is created with the day of the week dot txt as output file. |
07:46 | If option '3' is typed, it prints the weather report for the whole week. |
07:51 | display underscore weekly underscore report is the function name of the weekly report. |
07:57 | This print statement draws a horizontal line for the specified number of times. |
08:02 | This is just to give a good look to the report. |
08:06 | Lastly, if the option is 4, it will quit the program. |
08:11 | If any option other than the ones specified is given, the print statement says “Incorrect option”. |
08:19 | Here, the exit value of '0', indicates the program ran successfully. |
08:25 | The exit value other than '0' means an error of some kind has occurred. |
08:31 | Now, let us execute the program. |
08:34 | Switch to the terminal and type perl weather underscore report dot pl and press Enter. |
08:41 | We can see four options on the screen. |
08:45 | Type '1 'and press Enter. |
08:48 | We are prompted to enter a day of the week. I'll type "monday" and press Enter. |
08:56 | This is the header output generated from the function display underscore header(). |
09:02 | Now, we can see the weather report of Monday. |
09:06 | Now, I'll execute the program once again to demonstrate the other options. |
09:13 | Type 2 and press Enter. |
09:17 | At the prompt, we have to type any week day. I will type "Wednesday" and press Enter. |
09:25 | We can see a message: "Please check the file wednesday dot txt for report output". |
09:32 | The output has been written to this text file. Let us open the file and check the contents. |
09:38 | Type: gedit wednesday dot txt and press Enter. |
09:44 | The output file has been created with the entered week day name, with 'txt' extension. |
09:51 | Now, let us check the next option. |
09:54 | Switch to the terminal and type: perl weather underscore report dot pl and press Enter. |
10:00 | Type '3' and press Enter. |
10:04 | This time, we can see the weekly weather report. |
10:08 | The hash keys and hash values are stored in a random order. |
10:13 | So, the displayed output is not related to the order in which they were added. |
10:19 | With this, we come to the end of this tutorial. Let us summarize. |
10:24 | In this tutorial, we have seen a sample Perl program by covering main topics of our previous tutorials. |
10:32 | As an assignment, write a similar Perl program employee underscore report.pl for displaying employee salary, designation, department, leave_balance details. |
10:45 | Pass Employee ID or Employee name as input. |
10:50 | Write the required functions in the module Employee dot pm file. |
10:56 | The video at the following link summarizes the spoken tutorial. Please download and watch it. |
11:03 | We conduct workshops and give certificates for those who pass our online tests.For more details, please write to us. |
11:12 | Spoken Tutorial project is funded by NMEICT, MHRD, Government of India.More information on this mission is available at this link. |
11:25 | This is Nirmala Venkat from IIT Bombay, signing off. Thanks for watching. |