ComputerSecurityStudent (CSS) [Login] [Join Now]

|UNIX >> Perl Lessons >> Current Page |Views: 11500

(Perl: Lesson 5)

{ Writing Basic Subroutines }

Section 0. Background Information
  1. What is Perl
    • Perl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier.  Since then, it has undergone many changes and revisions and become widely popular amongst programmers. Larry Wall continues to oversee development of the core language, and its upcoming version, Perl 6. Perl borrows features from other programming languages including C, shell scripting (sh), AWK, and sed.  The language provides powerful text processing facilities without the arbitrary data length limits of many contemporary Unix tools, facilitating easy manipulation of text files. Perl gained widespread popularity in the late 1990s as a CGI scripting language, in part due to its parsing abilities.

  2. Getting Perl
    • For the purposes of these perl lesson, I will be using a perl package that comes standard on Backtrack, Ubuntu and most flavors of Linux and Unix.
    • However, if you are using Windows, instead of a Linux, Unix or MAC operating system, you still have options.
  3. Pre-Requisite
  4. Lab Notes
    • In this lab we will do the following:
      1. We will download a basic program that contains subroutines.
      2. We will analyze the program line by line.
      3. We will create a program that contains the following elements:
        • subroutine, standard input, and an IF/ELSE clause.

  5. Legal Disclaimer
    • As a condition of your use of this Web site, you warrant to that you will not use this Web site for any purpose that is unlawful or that is prohibited by these terms, conditions, and notices.
    • In accordance with UCC § 2-316, this product is provided with "no warranties, either express or implied." The information contained is provided "as-is", with "no guarantee of merchantability."
    • In addition, this is a teaching website that does not condone malicious behavior of any kind.
    • Your are on notice, that continuing and/or using this lab outside your "own" test environment is considered malicious and is against the law.
    • © 2013 No content replication of any kind is allowed without express written permission.

Section 1. Login to BackTrack
  1. Start Up VMWare Player
    • Instructions:
      1. Click the Start Button
      2. Type Vmplayer in the search box
      3. Click on Vmplayer


  2. Open a Virtual Machine
    • Instructions:
      1. Click on Open a Virtual Machine


  3. Open the BackTrack5R1 VM
    • Instructions:
      1. Navigate to where the BackTrack5R1 VM is located
      2. Click on on the BackTrack5R1 VM
      3. Click on the Open Button


  4. Edit the BackTrack5R1 VM
    • Instructions:
      1. Select BackTrack5R1 VM
      2. Click Edit virtual machine settings


  5. Edit Virtual Machine Settings
    • Instructions:
      1. Click on Network Adapter
      2. Click on the Bridged Radio button
      3. Click on the OK Button


  6. Play the BackTrack5R1 VM
    • Instructions:
      1. Click on the BackTrack5R1 VM
      2. Click on Play virtual machine


  7. Login to BackTrack
    • Instructions:
      1. Login: root
      2. Password: toor or <whatever you changed it to>.


  8. Bring up the GNOME
    • Instructions:
      1. Type startx


Section 2. Bring up a console terminal
  1. Start up a terminal window
    • Instructions:
      1. Click on the Terminal Window


  2. Obtain the IP Address
    • Instructions:
      1. ifconfig -a
    • Note(FYI):
      • My IP address
      • In your case, it will probably be different.


Section 3. Download
  1. Become the student user and make a directory
    • Instructions:
      1. su - student
      2. mkdir -p perl_lessons
      3. cd perl_lessons


  2. Download
    • Instructions:
      1. wget
      2. chmod 700
      3. perl -c


  3. Run
    • Instructions:
      1. ./
    • Note(FYI):
      • Before continuing to the proof of lab section.
      • Read each line of the code and examine how each subroutine executes.


Section 6. Analyze The Code
  1. SheBang Directive
    • Instructions:
      1. head -1
    • Note(FYI):
      • #! - is called the SheBang Directive.  SheBang is an interpreter directive that tells Linux to load the following program.
      • /usr/bin/perl - is the Perl Interpreter.  SheBang tells the program loader to run the Perl Interpreter.


  2. Explaining Lines 3 through 19
    • Instructions:
      1. vi
      2. :set nu
    • Note(FYI):
      • Lines 4, 7, 10, 13, 16, and 19 are all subroutines.
      • A subroutine is a user define function to execute a set of programmable actions.
      • Subroutine &print_it() accepts a string surrounding by quotes.
      • Subroutine &add_it() accepts two numbers and adds them to create a sum.
      • Subroutine &increment_it() accept one number and increments it by one digit.


  3. Explaining Lines 22 through 29
    • Instructions:
      1. Arrow down to line 22
    • Note(FYI):
      • Line 22: sub print_it
        • print_it is the name of the subroutine.
      • Line 23: {
        • Start of the print_it subroutine
      • Line 29: }
        • End of the print_it subroutine.
      • Line 25: chomp(my $tmp = $_[0]);
        • Variable $tmp is assigned the input of the first parameter.  Notice $_[0] is the first parameter.
      • Line 28: print "$tmp\n";
        • Print the contents of the variable $tmp.


  4. Explaining Lines 31 through 43
    • Instructions:
      1. Arrow down to line 31
    • Note(FYI):
      • Line 31: sub add_it
        • add_it is the name of the subroutine.
      • Line 32: {
        • Start of the add_it subroutine
      • Line 44: }
        • End of the add_it subroutine.
      • Line 34: chomp(my $num1 = $_[0]);
        • Variable $num1 is assigned the input of the first parameter.  Notice $_[0] is the first parameter.
      • Line 37: chomp(my $num2 = $_[1]);
        • Variable $num2 is assigned the input of the second parameter.  Notice $_[1] is the second parameter.
      • Line 40: my $sum = $num1 + $num2;
        • The variable $sum is the summation of $num1 plus $num2.
      • Line 43: print "Sum: $sum\n";
        • Print the contents of the variable $sum.


  5. Explaining Lines 46 through 59
    • Instructions:
      1. Arrow down to line 46
    • Note(FYI):
      • Line 46: sub increment_it
        • increment_it is the name of the subroutine.
      • Line 47: {
        • Start of the increment_it subroutine
      • Line 59: }
        • End of the increment_it subroutine.
      • Line 49: chomp(my $i = $_[0]);
        • Variable $i is assigned the input of the first parameter.  Notice $_[0] is the first parameter.
      • Line 52: print "Before Increment: $i\n";
        • Print the contents of the variable $i before the increment variable is executed.
      • Line 55: $i++;
        • For our purposes, the increment operator (++), increment variable $i by 1 digit.
      • Line 58: print "After Increment: $i\n";
        • Print the contents of the variable $i after the increment variable is executed.


  6. Save and Quit
    • Instructions:
      1. Press the <Esc> key
      2. :q!
      3. Press the <Enter> key


Section 7. Proof of Lab
  1. Project
    • Instructions:
      1. Write a program called
      2. The program should contain a subroutine called search_string
        • e.g., sub search_string
      3. Remember your subroutine should start with a { and end wish a }.
      4. The program should prompt the user to supply a string.
        • e.g., print "Supply String: ";
      5. The program should assign variable $tmp to standard input
        • e.g., chomp(my $tmp = <stdin>);
      6. The program should contain an IF/ELSE statement that performs the following test
        • IF variable $tmp contains the string "student", THEN print Match Found, ELSE, Match Not Found.
        • e.g., if($tmp =~ m/student/i)
      7. After you build your subroutine, you need to call it, by placing the following statement before the actual subroutine structure.
        • e.g., &search_string;


  2. Proof of Lab
    • Instructions
      1. chmod 700
      2. perl -c
      3. ./
        • Supply String: StUdEnT
      4. ./
        • Supply String: stud
      5. date
      6. echo "Your Name"
        • Put in your actual name in place of "Your Name"
        • e.g., echo "John Gray"
      7. Do a PrtScn, Paste into a word document, and upload to Moodle.
    • Proof Of Lab Instructions:
      1. Press the PrtScn key
      2. Paste into a word document
      3. Upload to Moodle

Help ComputerSecurityStudent
pay for continued research,
resources & bandwidth