Perl Primer
This document gives a brief primer for the Perl programming language. It is meant to be a refresher for perl programmers, not an introduction for someone who has no perl experience.
Perl Notes

Below are the commands for

    - Perl program setup
    - Variables
    - Arrays
    - DBM
    - String search and manipulation
    - Other

----------------------------------------------------
PERL PROGRAM SETUP

Perl progams read in arguments in a similar way to C

$numArgs = $#ARGV + 1;
print "thanks, you gave me $numArgs command-line arguments.\n";

foreach $argnum (0 .. $#ARGV) {
   print "$ARGV[$argnum]\n";
}
----------------------------------------------------
VARIABLES

my $myvar;
my @mylist;
my %myhash = ();

$myhash{$key} = $value;
for $key (keys %myhash) {;}
print "size of hash:  " . keys( %hash ) . ".\n";
print "Value EXISTS, but may be undefined.\n" if exists  $hash{ $key };
my %hash_copy = %hash;  # copy a hash

----------------------------------------------------
ARRAYS


----------------------------------------------------
DBM


----------------------------------------------------
STRING SEARCH AND MANIPULATION

crypt(STRING1, STRING2) -- Encrypts STRING1
index(STRING, SUBSTRING, POSITION) -- Returns the position
   of the first occurrence of SUBSTRING in STRING at or
   after POSITION.
lc(STRING) -- Returns a string with every letter of STRING
   in lowercase. For instance, lc("ABCD") returns "abcd".
length(STRING) -- Returns the length of STRING.
split(PATTERN, STRING, LIMIT) -- Breaks up a string based 
   on some delimiter. In an array context, it returns a 
   list of the things that were found. In a scalar 
   context, it returns the number of things found.

if ($string =~ m/regex/) {
  print 'match';
} else {
  print 'no match';
}

Perl has a host of special variables that get filled after 
every m// or s/// regex match. $1, $2, $3, etc. hold the 
backreferences. $+ holds the last (highest-numbered) 
backreference. $& (dollar ampersand) holds the entire regex 
match.

@- is an array of match-start indices into the string. $-[0] 
holds the start of the entire regex match, $-[1] the start 
of the first backreference, etc. Likewise, @+ holds 
match-end indices (ends, not lengths).

$' (dollar followed by an apostrophe or single quote) holds 
the part of the string after (to the right of) the regex 
match. $` (dollar backtick) holds the part of the string 
before (to the left of) the regex match. Using these 
variables is not recommended in scripts when performance 
matters, as it causes Perl to slow down all regex matches in 
your entire script.

All these variables are read-only, and persist until the 
next regex match is attempted.

----------------------------------------------------
HASH and MYSQL

    my $answers = 'a,b,c,d,e';

    my $sql = "select max_time, $answers from questions " .
              'where question_number=?';
    my $hash_ref = sql_fetch_hashref( $sql, $q );

    my @answers = split ',', $answers;

    my $max_time = $hash_ref->{max_time} || '60';

    my $hash_ref_ans;
    for my $letter ( @answers ) {
        $hash_ref_ans->{ $letter } = $hash_ref->{ $letter }
            if defined $hash_ref->{ $letter };
    }


Media Lab Overview
LIACS Homepage
MM Conf
ACM Multimedia
ACM ICMR
IAPR ICPR
Science Direct
IEEE Library
LIACS Publications
ACM Digital Library