Perl 5 Intermediate Training Course

Perl 5 Intermediate Training Course Overview

perl

This course is aimed at Perl developers with basic Perl knowledge looking for a deeper understand of Perl. It covers Perl packaging, modules and networking and database apis as well as an introduction to object orientated programming.

Description Days Price (exc vat)

Perl 5 Intermediate Training

4 R 16,500
  • Lunch, refreshments and training material included.
  • Class start at 9:00am for 9:30am
  • South Africa training locations: Johannesburg, Cape Town, Durban
  • Global training locations: USA, Candana, UK, Dubai, Europe

Course Outline

Revision, and the Perl Environment

  • Course objectives
  • Perl documentation
  • Interpreter environment
  • Running a Perl script
  • Anatomy of a Perl script
  • Perl variables
  • Some short-cut operators
  • Lexical variables (1)
  • Controlling the interpreter - Pragmas
  • Always use strictures
  • Perl 5.10 - use feature
  • Lexical variables (2)
  • Lexical pragmas
  • Perl debugging

Context and Types

  • Reminder: variable definitions
  • Defined and undefined scalars
  • Undefining arrays and hashes
  • Predefined variables
  • Some useful literal constants
  • The DATA file handle
  • Here documents
  • Arrays and lists
  • Comma operator
  • Array slices
  • Array magic
  • Remember hashes
  • Hash slices
  • The joy of x
  • Context and type conversions

Further Flow Control

  • Revision - basic conditionals
  • Revision - Boolean and logical operators
  • Revision - what is truth?
  • Smart match operator ~~
  • Smart match operator is smart
  • Short circuit operators
  • Labels and loop jump statements
  • The sad case of switch/case
  • A kind-of case statement
  • Pre-5.8 use of labels and last
  • Switch / case statement (5.8)
  • The given statement - 5.9 or later
  • Loop jump statements: continue
  • Advanced for loops
  • In-line conditional operator
  • Defined-Or Operator // (5.10)
  • File condition functions
  • Evaluating file conditions

References

  • What are references?
  • Uses of references
  • Creating references
  • Using references
  • Dereferencing array and hash references
  • Using references
  • Examining references
  • Complex data structures
  • Data::Dumper
  • Reference counting

Advanced Subroutines

  • Calling a subroutine
  • Subroutine return values
  • Subroutine return values - context
  • Subroutine arguments
  • Named and default parameters
  • Parameter passing - by value?
  • Parameter passing - by reference?
  • Parameter passing - by magic
  • Explicit pass by reference
  • Subroutine prototypes
  • Prototype syntax
  • Prototypes - automatic call by reference
  • References to subroutines
  • Closures
  • Subroutine as an lvalue

Advanced List Functions

  • Sorting
  • Revision - array and list functions
  • List functions: reverse, sort, grep, map
  • The sort function
  • Custom sort order
  • Avoiding sort
  • Sorting hashes
  • map
  • grep

Input and Output

  • File handles
  • New file handles
  • Scalar variables with handles
  • The magic variable $/
  • The 'flip-flop' operator
  • Formatted output - printf
  • Changing the default output handle
  • Alternative IO functions
  • File::Find
  • The Perl IO model
  • Using sysopen
  • Reading and writing files
  • Random access

Advanced Regular Expressions

  • Regular Expressions in Perl
  • Review: Perl RE meta-characters
  • Regular expression quoting
  • Modifiers for regular expressions
  • Review of side-effect variables
  • Back-references
  • More capturing groups
  • Non-capturing groups
  • Other capturing variables
  • Named captures (5.10)
  • Minimal matches
  • Multi-line matches
  • Alternatives to ^ and $
  • Global matches
  • Global match progress
  • Comments in Regular Expressions
  • Substitution with interpolation
  • Look-around assertions
  • Substitution using expressions

Modules

  • Splitting into modules
  • Using modules
  • The library directories
  • Using subroutines from modules
  • Writing modules: structure of a module
  • Namespaces
  • Using modules without symbol export
  • Example of unconditional export
  • Example of on-demand export
  • Symbol export using tags
  • BEGIN and END blocks
  • Order of BEGIN and END blocks
  • Attaching a module with require
  • Standard modules
  • Adding modules
  • Other ways of getting modules

Handling Errors and Exceptions

  • Warnings and diagnostics
  • Controlling warnings
  • Error handling
  • Errno module
  • Error handling - Carp
  • Dealing with undef
  • eval
  • eval syntax
  • Error trapping using eval
  • Dying with a reference
  • Signal handling in Perl
  • Alternative signal handling
  • Sending signals
  • Timing out - alarm
  • Fake signals
  • warn and carp
  • Processing the warn and die signals
  • Errors in child processes

Object Oriented Programming

  • Review of Object Oriented Programming
  • Object-Oriented terminology
  • OO features in Perl
  • Basic object usage
  • Objects are references
  • Implementing objects
  • Accessing object fields
  • Constructors
  • Implementing object methods - details
  • Method calls
  • Destructors
  • Method inheritance
  • The parent pragma - 5.10.1 or later
  • Inheriting constructors
  • To OO, or not to OO?

Database Interfacing Using DBI

  • Perl and databases
  • The tie interface
  • Tie-ing a hash to a GDBM file
  • DBI and DBD
  • DBI objects and methods
  • Connect and disconnect
  • Driver issues with MS SQL Server
  • Options for connect
  • Life cycle of a statement
  • Placeholders
  • Reading information
  • Fetching database meta-data
  • Repeated statement execution
  • Other database handle methods
  • Database capabilities
  • Manual transaction control
  • Error handling
  • Calling a stored procedure
  • Other DBI drivers
  • Yet more DBI drivers

Network and Web Programming

  • Networking concepts: layers and sockets
  • Sockets are file handles
  • A basic client
  • A basic server
  • Network modules: FTP client
  • Network modules: web client
  • Network modules: sending mail
  • Program generated web pages
  • Secure Perl - taint mode
  • Running a CGI script
  • Using HTML from Perl
  • A simple CGI script
  • CGI.pm basic functions
  • Form handling using CGI.pm
  • Templates
  • Frameworks