<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://script.spoken-tutorial.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://script.spoken-tutorial.org/index.php?action=history&amp;feed=atom&amp;title=PERL%2FC3%2FPerl-Module-Library-%28CPAN%29%2FEnglish</id>
		<title>PERL/C3/Perl-Module-Library-(CPAN)/English - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://script.spoken-tutorial.org/index.php?action=history&amp;feed=atom&amp;title=PERL%2FC3%2FPerl-Module-Library-%28CPAN%29%2FEnglish"/>
		<link rel="alternate" type="text/html" href="https://script.spoken-tutorial.org/index.php?title=PERL/C3/Perl-Module-Library-(CPAN)/English&amp;action=history"/>
		<updated>2026-05-13T13:36:50Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.23.17</generator>

	<entry>
		<id>https://script.spoken-tutorial.org/index.php?title=PERL/C3/Perl-Module-Library-(CPAN)/English&amp;diff=25082&amp;oldid=prev</id>
		<title>Nirmala Venkat: Created page with &quot;'''&gt;&gt;Title of script''':''' How to use Perl Module Library (CPAN)'''  '''Author: Nirmala Venkat'''  '''Keywords: Perl Module Library (CPAN), modules, PERL, PERL programming, v...&quot;</title>
		<link rel="alternate" type="text/html" href="https://script.spoken-tutorial.org/index.php?title=PERL/C3/Perl-Module-Library-(CPAN)/English&amp;diff=25082&amp;oldid=prev"/>
				<updated>2015-12-18T11:07:40Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;gt;&amp;gt;Title of script&amp;#039;&amp;#039;&amp;#039;:&amp;#039;&amp;#039;&amp;#039; How to use Perl Module Library (CPAN)&amp;#039;&amp;#039;&amp;#039;  &amp;#039;&amp;#039;&amp;#039;Author: Nirmala Venkat&amp;#039;&amp;#039;&amp;#039;  &amp;#039;&amp;#039;&amp;#039;Keywords: Perl Module Library (CPAN), modules, PERL, PERL programming, v...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''&amp;gt;&amp;gt;Title of script''':''' How to use Perl Module Library (CPAN)'''&lt;br /&gt;
&lt;br /&gt;
'''Author: Nirmala Venkat'''&lt;br /&gt;
&lt;br /&gt;
'''Keywords: Perl Module Library (CPAN), modules, PERL, PERL programming, video tutorial'''&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing:0;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color:#c0c0c0;border:1pt solid #000000;padding:0.097cm;&amp;quot;| '''Visual Cue'''&lt;br /&gt;
| style=&amp;quot;background-color:#c0c0c0;border:1pt solid #000000;padding:0.097cm;&amp;quot;| '''Narration'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Slide 1:&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Welcome to the''' Spoken Tutorial''' on''' How to use Perl Module Library (CPAN).'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Slide 2:&lt;br /&gt;
&lt;br /&gt;
Learning objectives&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| In this tutorial we will learn to &lt;br /&gt;
&lt;br /&gt;
* Use existing '''modules''' and&lt;br /&gt;
* Create new '''modules'''&lt;br /&gt;
in''' PERL'''.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Slide 3:&lt;br /&gt;
System Requirements&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| To record this tutorial, I am using&lt;br /&gt;
* '''Ubuntu Linux 12.04''' operating system&lt;br /&gt;
* '''Perl 5.14.2 and'''&lt;br /&gt;
* '''gedit''' Text Editor&lt;br /&gt;
&lt;br /&gt;
You can use any text editor of your choice.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Slide 4:&lt;br /&gt;
&lt;br /&gt;
Pre-requisites&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| To follow this tutorial, you should have working knowledge of''' Perl''' programming.&lt;br /&gt;
&lt;br /&gt;
If not, then go through the relevant''' Perl''' spoken tutorials on the''' spoken tutorial''' website.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Slide 5a:&lt;br /&gt;
&lt;br /&gt;
'''Modules '''&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| '''Modules '''&lt;br /&gt;
* These are code files that contain common routines &lt;br /&gt;
* That are written by different authors&lt;br /&gt;
* And can be used by several programs at a time&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Slide 5b:&lt;br /&gt;
&lt;br /&gt;
'''CPAN (Comprehensive Perl Archive Network) '''&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| '''CPAN'''&lt;br /&gt;
&lt;br /&gt;
* '''PERL''' is an open source language and anyone can contribute to '''PERL's''' standard '''CPAN library'''&lt;br /&gt;
* '''CPAN '''has thousands of ready-to-use modules written by different authors&lt;br /&gt;
&lt;br /&gt;
The official website of '''CPAN '''is www.cpan.org&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Slide 6:&lt;br /&gt;
&lt;br /&gt;
'''Modules : Example'''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| We will take''' List::Util''' as an example and see how to use it.&lt;br /&gt;
&lt;br /&gt;
This gives me access to the functions which are already written inside this module.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Switch to the''' terminal'''&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Switch to the''' terminal.'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Type''' perldoc List::Util'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-top:none;border-bottom:1pt solid #000000;border-left:1pt solid #000000;border-right:1pt solid #000000;padding:0.097cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border-top:none;border-bottom:1pt solid #000000;border-left:1pt solid #000000;border-right:1pt solid #000000;padding:0.097cm;&amp;quot;| You may get an error saying ‘'''You need to install the perl hyphen doc package to use this program'''’ &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-top:none;border-bottom:1pt solid #000000;border-left:1pt solid #000000;border-right:1pt solid #000000;padding:0.097cm;&amp;quot;| Slide 7:&lt;br /&gt;
&lt;br /&gt;
'''perl-doc Installation:'''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border-top:none;border-bottom:1pt solid #000000;border-left:1pt solid #000000;border-right:1pt solid #000000;padding:0.097cm;&amp;quot;| This indicates, you need to install the '''perl hyphen doc package.'''&lt;br /&gt;
&lt;br /&gt;
Do so using '''Synaptic Package Manager.'''&lt;br /&gt;
&lt;br /&gt;
Please refer to the relevant''' Linux''' spoken tutorials on the''' spoken tutorial''' website.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| '''Highlight the output'''&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| What you see here is the documentation for the''' List::Util''' module.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Note that the documentation contains &lt;br /&gt;
&lt;br /&gt;
* description of the module, &lt;br /&gt;
* example of how to use it &lt;br /&gt;
* and an overview.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| '''Type 'q' to quit'''&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Hit the ''''Q'''' key to exit the '''perldoc viewer'''.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Next we will see how to use''' List::Util module''' in a '''Perl''' program.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Let me open a sample program''' exist underscore modules.pl''' which I have already saved.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| In your''' exist underscore''' '''modules dot pl''' file, type the following code as displayed on the screen.&lt;br /&gt;
&lt;br /&gt;
Let us understand the code now.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| '''&amp;lt;nowiki&amp;gt;#!/&amp;lt;/nowiki&amp;gt;usr/local/bin/perl'''&lt;br /&gt;
&lt;br /&gt;
'''use strict&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
'''use warnings&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
'''use List::Util qw(first max maxstr min minstr reduce shuffle sum);'''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| '''use List::Util''' tells '''Perl '''to find and load the '''module List::Util.'''&lt;br /&gt;
&lt;br /&gt;
'''qw()''' function extracts words out of the string using a '''delimiter '''and returns the words as a list.&lt;br /&gt;
&lt;br /&gt;
It is just a quick way of declaring an '''array'''.&lt;br /&gt;
&lt;br /&gt;
While importing a '''module''', it imports only the '''subroutines''' specified in the list into our program.&lt;br /&gt;
&lt;br /&gt;
It contains general-utility list of '''subroutines'''.&lt;br /&gt;
&lt;br /&gt;
The '''module '''will export its '''subroutines '''and '''variables '''into our program.&lt;br /&gt;
&lt;br /&gt;
The most popular '''subroutines '''available in''' List::Util''' are:&lt;br /&gt;
&lt;br /&gt;
'''first''' - which returns the first element in the list&lt;br /&gt;
'''max''' – returns the highest numerical value in the list&lt;br /&gt;
&lt;br /&gt;
'''maxstr''' – returns the highest string in the list&lt;br /&gt;
&lt;br /&gt;
'''min''' – returns the lowest numerical value&lt;br /&gt;
&lt;br /&gt;
'''minstr''' – returns the lowest string in the list&lt;br /&gt;
&lt;br /&gt;
'''shuffle''' – returns the values of the input in a random order&lt;br /&gt;
&lt;br /&gt;
'''sum''' – returns the numerical sum of all the elements in the list&lt;br /&gt;
&lt;br /&gt;
There is no need to write separate source code for each '''functions'''.&lt;br /&gt;
&lt;br /&gt;
We can just make use of these available '''subroutines''' in our program.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| '''my $maximum = max 1..20; '''&lt;br /&gt;
&lt;br /&gt;
'''my $minimum = min 3,9,12; '''&lt;br /&gt;
&lt;br /&gt;
'''my $total = sum 1..100;'''&lt;br /&gt;
&lt;br /&gt;
'''my $random =shuffle 0..51;'''&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| These are the inputs I am passing to the function '''max, min, sum '''and''' shuffle.'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| '''print &amp;quot;Maximum value:&amp;quot;, $maximum , &amp;quot;\n&amp;quot;;'''&lt;br /&gt;
&lt;br /&gt;
'''print &amp;quot;Minimum value:&amp;quot;, $minimum , &amp;quot;\n&amp;quot;;'''&lt;br /&gt;
&lt;br /&gt;
'''print &amp;quot;Sum of 1 to 100:&amp;quot;, $total, &amp;quot;\n&amp;quot;;'''&lt;br /&gt;
&lt;br /&gt;
'''print &amp;quot;Random number:&amp;quot;, $random, &amp;quot;\n&amp;quot;;;'''&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| And these are the '''print '''statements.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Press''' Ctrl+S'''&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Now, press''' Ctrl+S''' to save the file.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Let us execute the program.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Switch back to the''' terminal''' and type&lt;br /&gt;
&lt;br /&gt;
'''perl exist underscore modules dot pl'''&lt;br /&gt;
and press''' Enter'''.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| '''Highlight the output'''&lt;br /&gt;
&lt;br /&gt;
Maximum value: 20&lt;br /&gt;
&lt;br /&gt;
Minimum value: 3&lt;br /&gt;
&lt;br /&gt;
Sum of 1 to 100: 5050&lt;br /&gt;
&lt;br /&gt;
Random number: 41&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Observe the output.&lt;br /&gt;
&lt;br /&gt;
In '''Random number''', you may get any value between 0 and 51.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Next we will see how to create new '''Perl modules''' and add it to '''CPAN'''.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Slide 8:&lt;br /&gt;
&lt;br /&gt;
'''Steps in creating a module:'''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Below are the steps to create a '''module''':&lt;br /&gt;
&lt;br /&gt;
* Create a place to develop the '''module'''&lt;br /&gt;
* Create skeleton files for the '''module'''&lt;br /&gt;
* Document the '''module'''&lt;br /&gt;
* Write the '''Perl code'''&lt;br /&gt;
* Write the code for testing&lt;br /&gt;
* Distribute the '''module '''in '''CPAN'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| '''Perl''' is distributed with a program called''' h2xs''' which is used to generate files for a new '''module'''.&lt;br /&gt;
'''Math::Simple''' specifies our '''module''' name. &lt;br /&gt;
&lt;br /&gt;
This is used to generate the directory, which should clearly identify the '''module''' it contains. &lt;br /&gt;
&lt;br /&gt;
Basically, it creates skeleton files for the '''module'''.&lt;br /&gt;
&lt;br /&gt;
'''-PAX''' are options that omit autoload and autogenerate.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Let's create a new '''module Math::Simple.'''&lt;br /&gt;
&lt;br /&gt;
It will be provided with simple functions:''' add, subtract, multiply '''and '''divide'''.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Let us switch to '''terminal''' to execute the''' h2xs''' command.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Type,&lt;br /&gt;
&lt;br /&gt;
'''h2xs -PAXn Math::Simple'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| '''Highlight the files'''&lt;br /&gt;
&lt;br /&gt;
'''Writing Math-Simple/lib/Math/Simple.pm'''&lt;br /&gt;
&lt;br /&gt;
'''Writing Math-Simple/Makefile.PL'''&lt;br /&gt;
&lt;br /&gt;
'''Writing Math-Simple/README'''&lt;br /&gt;
&lt;br /&gt;
'''Writing Math-Simple/t/Math-Simple.t'''&lt;br /&gt;
&lt;br /&gt;
'''Writing Math-Simple/Changes'''&lt;br /&gt;
&lt;br /&gt;
'''Writing Math-Simple/MANIFEST'''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| The '''h2xs program''' generates all these files required to distribute the '''module'''.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| '''$ cd Math-Simple'''&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Let us change directory to''' Math hyphen Simple (Math-Simple)'''&lt;br /&gt;
&lt;br /&gt;
Note the '''directory''' path on your machine. &lt;br /&gt;
&lt;br /&gt;
It may be as''' Math forward slash Simple'''.('''Math/Simple)'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| '''$ ls'''&lt;br /&gt;
'''Changes lib Makefile.PL MANIFEST README t'''&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Type''' ls''' to list all the files in the '''directory.'''&lt;br /&gt;
We can see the following files.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Highlight''' Changes'''&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| The''' changes''' file is &lt;br /&gt;
* where we will keep track of changes made to our '''module '''&lt;br /&gt;
* when we write new versions.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Highlight''' lib'''&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| '''lib subdirectory '''contains the '''module'''.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Highlight''' MANIFEST'''&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| '''MANIFEST''' contains a list of files in this '''directory'''.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Highlight''' Makefile.PL'''&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| '''Makefile''' is a '''Perl '''program used to create a '''Unix Makefile'''. &lt;br /&gt;
We will use this '''Makefile''' to test and install our '''module'''.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Highlight''' t'''&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Test scripts will be in''' t subdirectory.'''&lt;br /&gt;
&lt;br /&gt;
The tests are simple '''Perl scripts''' but with a''' .t''' extension used for '''unit testing'''.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Highlight''' Simple.pm'''&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| '''Simple.pm''' is our '''module'''.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| All these files are generated automatically when we execute the h2xs command.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-top:none;border-bottom:1pt solid #000000;border-left:1pt solid #000000;border-right:1pt solid #000000;padding:0.097cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border-top:none;border-bottom:1pt solid #000000;border-left:1pt solid #000000;border-right:1pt solid #000000;padding:0.097cm;&amp;quot;| Let us open the''' simple.pm''' file.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Switch to Terminal&lt;br /&gt;
'''cd lib/Math'''&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Change the '''directory''' to''' lib/Math'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &amp;gt;&amp;gt; '''gedit Simple.pm'''&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Now we will open the''' simple.pm''' file to see the existing content.&lt;br /&gt;
&lt;br /&gt;
Type''' gedit Simple.pm'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Highlight the existing content&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| What we see here is a documented functional '''Perl module '''that doesn't do anything.&lt;br /&gt;
&lt;br /&gt;
We have to write the required functions in this file to make it do something.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Highlight''' Preloaded methods go here'''&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Add the below code after the text,''' Preloaded methods go here.'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &amp;lt;nowiki&amp;gt;# &amp;lt;/nowiki&amp;gt;Preloaded methods go here.&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Here we will add four subroutines''' add, subtract, multiply '''and '''divide'''.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Now, press''' Ctrl+S''' to save the file.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Now let's create a sample Perl program to test our code that make sure it is working properly.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Let us open the test file''' Math-Simple.t''' under subdirectory '''t.'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Type '''gedit Math-Simple.t'''&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Type '''gedit Math-Simple.t'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| '''print &amp;quot;Addition:&amp;quot;,add(19,23).&amp;quot;\n&amp;quot;;'''&lt;br /&gt;
&lt;br /&gt;
'''print &amp;quot;Subtraction:&amp;quot;,subtract(100,23).&amp;quot;\n&amp;quot;;'''&lt;br /&gt;
&lt;br /&gt;
'''print &amp;quot;Multiply:&amp;quot;,multiply(15,25).&amp;quot;\n&amp;quot;;'''&lt;br /&gt;
&lt;br /&gt;
'''print &amp;quot;Division:&amp;quot;,divide(100,25).&amp;quot;\n&amp;quot;;'''&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Add the following code after''' '''the existing code, '''“Insert your test code below”,'''&lt;br /&gt;
&lt;br /&gt;
Print statements will print the output.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Press Ctrl +S&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Now, press''' Ctrl+S''' to save the file.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Let us run the test script.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| '''Type perl t/Math-simple.t'''&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Type''' perl Math-simple.t '''and''' '''press''' Enter.'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| '''Highlight the error'''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| We see this error message because the '''Perl '''script cannot find '''Simple.pm''' in its directory.&lt;br /&gt;
&lt;br /&gt;
It should look inside the''' lib'''/ directory.&lt;br /&gt;
&lt;br /&gt;
How can we rectify this error?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Let us see a few options for this.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Slide 10:&lt;br /&gt;
&lt;br /&gt;
'''@INC'''&lt;br /&gt;
&lt;br /&gt;
'''Change @INC from inside the script'''&lt;br /&gt;
&lt;br /&gt;
syntax:&lt;br /&gt;
use lib “path”&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
'''use''' lib t/Math-simple.t&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
Begin {'''unshift''' (@INC , t/Math-simple.t )}&lt;br /&gt;
&lt;br /&gt;
'''Change @INC from the command line'''&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
perl''' -Ilib''' t/Math-Simple.t&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| '''At the rate INC''' is a special variable that contains a list of directories.&lt;br /&gt;
'''Perl modules '''and '''libraries '''can be loaded from these directories.&lt;br /&gt;
&lt;br /&gt;
This line of code tells the '''Perl''' program to add this '''directory path''' to its''' at the rate INC''' search directory.&lt;br /&gt;
&lt;br /&gt;
Alternately, we can add files to''' at the rate INC''' at runtime using''' -I''' option.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Switch to the terminal&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Now let us switch to the '''terminal'''.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| I will execute the program using the -I '''command line parameter'''&lt;br /&gt;
&lt;br /&gt;
So, I will type&lt;br /&gt;
&lt;br /&gt;
'''perl -Ilib t/Math-Simple.t'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| '''Highlight the output'''&lt;br /&gt;
&lt;br /&gt;
1..1&lt;br /&gt;
&lt;br /&gt;
ok 1 - use Math::Simple&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Addition:42&lt;br /&gt;
Subtraction:77&lt;br /&gt;
Multiply:375&lt;br /&gt;
Division:4&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Here is the output as expected.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| We have tested the module and it is working fine.&lt;br /&gt;
Final step is to distribute the module.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| '''Slide 11:'''&lt;br /&gt;
'''Distribute the Module'''&lt;br /&gt;
'''Run these commands from the terminal:'''&lt;br /&gt;
&lt;br /&gt;
'''perl Makefile.PL'''&lt;br /&gt;
'''make'''&lt;br /&gt;
'''make test'''&lt;br /&gt;
'''make dist'''&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| The general procedure for installing module is to run these commands.&lt;br /&gt;
Installation involves copying files into the Perl library directory.&lt;br /&gt;
&lt;br /&gt;
Most of us don't have permission to copy into this directory. &lt;br /&gt;
&lt;br /&gt;
Since '''Math-Simple''' isn't a very useful module I am not demonstrating the installation part.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| This brings us to the end of this tutorial. Let us summarise.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Slide 12:&lt;br /&gt;
summary&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| In this tutorial we learnt to &lt;br /&gt;
&lt;br /&gt;
* Use existing '''modules''' &lt;br /&gt;
* Create new '''modules'''&lt;br /&gt;
and how to use in the Perl program.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Slide 13:&lt;br /&gt;
Assignment&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Here is an assignment for you.&lt;br /&gt;
# Use the''' Text::Wrap''' module&lt;br /&gt;
# Make use of the''' Wrap()''' function which wraps the input text to form neat paragraphs.&lt;br /&gt;
# '''Text::Wrap''' module has a variable''' columns.''' Set the''' columns''' value to''' 30.'''&lt;br /&gt;
# Print the text to see the formatted output.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Slide 14:&lt;br /&gt;
About Spoken Tutorial project&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| The video at the following link summarises the Spoken Tutorial project.&lt;br /&gt;
Please download and watch it&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Slide 15:&lt;br /&gt;
Spoken Tutorial workshops&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| The''' Spoken Tutorial Project''' Team&lt;br /&gt;
* conducts workshops using spoken tutorials &lt;br /&gt;
* and gives certificates on passing online tests.&lt;br /&gt;
For more details, please write to us.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Slide 16:&lt;br /&gt;
Acknowledgement&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Spoken Tutorial project is funded by NMEICT, MHRD, Government of India.&lt;br /&gt;
&lt;br /&gt;
More information on this mission is available at&lt;br /&gt;
this link.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| This is Nirmala Venkat from IIT Bombay, signing off. Thanks for watching.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Nirmala Venkat</name></author>	</entry>

	</feed>