Perl Training Logo: Praying Mantis
During the years we have developed many training units as responses to specific request of our clients. In order to let you select we have listed some of the units here.
Some of these are parts from our standard courses, others have not yet grown to full size courses.
Anyway you can use this list as a basis to discuss your specific course requirements.

Title: Basic Perl syntax, Scalars
ID: scalars
  • scalar values
  • print
  • user input
  • numerical operators
  • string operators
  • some string functions (lc, uc, index, substr)
  • conditional execution (if statements)
  • true/false
  • short circuit
  • double quoted, single quoted strings
Title: Dealing with files
ID: files
  • opening files
  • reading from file
  • writing to file
Title: Lists and Arrays
ID: arrays
  • lists
  • foreach
  • arrays
  • array asignment
  • array index
  • command line parameters (@ARGV)
  • Getopt::Long
  • perldoc
  • split
  • join
  • Text::CSV_XS
Title: Advanced Arrays
ID: advanced_arrays
  • localtime, gmtime, time
  • scalar and list context
  • slurp mode
  • File::Slurp
  • pop, push
  • shift, unshift
  • sort, reverse
  • ternary operator
  • List::Util
  • Multi dimensional arrays (an example)
Title: Files
ID: files2
  • Slurp mode
  • Diamond operator
  • File::Slurp
Title: Subroutines
ID: subroutines
  • defining a subroutine
  • passing parameters
  • returning values
  • recursive subroutiones
  • sorting functions
Title: Hashes
ID: hashes
  • creating hashes
  • hash elements
  • keys function
  • values function
  • exist and defined on hash element
  • sorting by keys, sorting by values
  • Multi dimensional hashes (an example)
Title: Regular Expressions
ID: regular_expressions
  • Introduction to Regular Expressions - Simple Regexes
  • Inside the Regex Engine
  • Backtracking
  • Quantifiers
  • Greed
  • Minimal Quantifiers
  • Alternation
  • Character classes
  • Capturing
  • Anchors
  • Back references
  • Regexp::Common
  • Options and modifyers
  • Global Matching
  • Substitution
  • Common Mistakes
  • Crafting your regular expression
  • Debugging regular expressions
  • Sexeger
Title: System and Filesystem related functions
ID: system_and_file_system
  • Running External Programs
  • Execution control of external programs
  • Built in commands replacing command line tools
  • Removing files (rm, del)
  • Moving files (mv, ren)
  • Copying files (cp, copy)
  • Listing directory content (ls, dir)
  • Creating and removing directories (mkdir, rmdir)
  • Locating the home directory
  • Traversing the file system
  • catching STDOUT and STDERR of external program
  • Dealing with files (Slurp mode, using <>, File::Slurp)
  • Checking file system level information (permissions, size etc)
  • Reading binary files
Title: Using Perl modules
ID: using_perl_modules
  • Using Standard modules
  • Procedural interface
  • Object Oriented interface
Title: Using CPAN
ID: using_cpan
  • Searching CPAN, evaluating modules, getting information about them
  • Installing modules on Unix with or without root rights
  • Installing modules manually
  • Using to install modules
  • Using CPANPLUS and CPAN::Reporter
  • Installing modules on Windows
  • Using modules with procedural interface
  • Using Object Oriented modules
Title: Oneliners
ID: oneliners
  • Doing your job in a single line of Perl code from the command line
  • change string in many files
  • read CSV files
Title: References
ID: references
  • Using references (Data References and Anonymous Storage )
  • Array and Hash references
  • Dereferencing
  • Passing Arrays and Hashes to functions
  • Anonymous Arrays and Hashes
  • Multi dimensional (complex) data structures
  • Reference counting
  • Pretty printing data structures
  • Comparing data structures
  • Scalar references
  • Subroutine references
  • Copying deep data structures
  • Data Serialization (Data::Dumper, Storable, YAML, JSON)
  • Caching
  • Static variables
  • Closures
Title: Creating Modules
ID: creating_modules
  • Introduction to code reuse in Perl
  • Perl libraries
  • Modules
  • Namespaces
  • require vs. use
  • Exporting/imporing functions, variables
  • Namespace hierachy and the lack of it
  • Structure (directories / modules/ scripts).
  • Distribution to modules according functionality
Title: Object Oriented Perl programming (OOP)
ID: oop
  • Overview of OO Concepts
  • Building simple hash based class
  • Encapsulation, Inheritance, Polymorphism
  • Class methods, class attributes
  • Automatically class creation
  • Class::Accessor
  • Creating Singletons
  • Encapsulation, closures
  • Tie-ing classes
  • Constructors / Destructors (DESTROY)
  • Multiple Inheritence
  • Diamon inheritance
Title: Exceptions handling
ID: exception_handling
  • returning undef
  • die-ing
  • croak-ing
  • throwing exceptions
  • catching exceptions
  • Exception::Class
  • eval
Title: Short introduction to working with Databases
ID: databases_short
  • Introduction to DBI
Title: Working with Databases
ID: databases
  • Introduction to DBI
  • Methods for INSERT and UPDATE
  • Methods for SELECT
  • Binding parameters
  • Error handling
  • Database Abstractions
Title: Database Abstraction using Class::DBI
ID: class_dbi
  • Object/Table quick interface - Class::DBI
Title: Improving Performance of Perl applications
ID: performance
  • Measuring performance of Perl script
  • Benchmarking code
  • Profiling
  • 20/80 rule and its application
  • Premature Optimization
Title: Extending Perl code by usage of C-libraries
ID: extending_perl_with_c
  • Example using SWIG
  • Example using Inline
  • Integrating external C/C++ libraries into Perl with XS
Title: Embedding Perl code into C
ID: embedding_perl_into_c
  • A simple example
Title: Debugging Perl applications
ID: debugging
  • A few words about prevention - how to avoid making bugs
  • Overview of debuggers
  • Built in (command line) debugger (-d)
  • Graphical debugger (Devel::ptkdb)
  • Moving around in the debugger (step in/step over,)
  • Examining content of variables (p x)
  • Tracing execution
  • Advanced operations (break point, watch etc...)
  • Debugging (recursive) subroutine calls
  • Debug modules and Object Oriented Perl
  • Devel::B::*
  • B::Deparse
Title: Building your own debugging tool
ID: debugging_guts
  • How does the build in debugger work?
  • The DB module
  • Building simple execution tracing modules
  • Builing a simple profiler
Title: Logging
ID: logging
  • Improved print statements (incl. Data::Dumper)
  • Home made loggers
  • Logging at various levels (Log::Dispatch)
  • Log::Log4perl
Title: Test Framework, Test Anything Protocol
ID: tap
  • Introduction to testing, why, when, who and how ?
  • Testing tools in Perl for testing Perl Modules
  • Test::Simple
  • Test::More
  • Test::Harness
  • Devel::Cover
  • Building semi-random regression testing tool
Title: Testing tools for applications with Command Line Interface (CLI)
ID: testing_cli
  • Controlling external command line applications
  • Net::Telnet
  • IPC::Open
  • IPC::Run
  • open to scalar reference
  • Short intro to
  • Example how to analyze ( parse ) output of commands
Title: Web Application testing
ID: testing_web_application
  • LWP::Simple
  • LWP
  • WWW::Mechanize
  • Win32::IE::Mechanize (on Windows only)
Title: Networking in Perl
ID: networking
  • Access to network services via Perl modules
  • Built-in socket level networking
  • OO abstraction of the socket level
  • Capturing packets on the network
  • Generating IP packets
  • High level protocols such as Telnet, ssh, ftp, http
  • Sending e-mail via SMTP and receiving via POP3
  • HTML level abstraction for interacting with web sites (LWP, WWW::Mechanize)
  • Web application level abstraction
Title: Networking: Client/Server application
ID: client_server
  • Creating simple echo server over TCP/IP
  • Complex telnet server to mock-up a router or switch configuration interface
  • Preforking server
  • Client code to access the previously written servers
Title: Cross Platfrom programming (Platform independent programming)
ID: cross_platform_programming
  • pitfalls
  • differences between various Unix systems
  • several differences between Windows and Unix systems
  • Built-in tools to help cross platform development
  • How to create code that can runs on several platforms
Title: Intro to Graphical User Interface (GUI) development using Gtk2
ID: gtk_intro
  • overview of GUI development in Perl (Gtk, Qt, Tk, WxWindows)
  • simple example using demo
  • simple example using Glade
Title: GUI development using Gtk2
ID: gtk
  • Creating application with various widgets
  • Using Glade to design application
  • GladeXML
Title: Common problems in Perl code and how to fix them?
ID: common_issues
  • regex: Know which characters need quoting in the regex and in the substitution string: ( s/\.\=\:/\.xxx/ )
  • two paramter open, open with Filehandles
  • Extensive use of $_
Title: Event driven programming
ID: event_driven_programming
  • processes events with priorities that a daemon controls
  • Creating a daemon
  • Making sure only limited number of processes are running
  • Nice (Unix specific)
Title: MS Window specific applications
ID: windows
  • Registry manipulation using Perl scripts
  • Processing data from the Event Log of Windows
  • Controlling the Internet Explorer by Perl
Title: Web development using Perl
ID: web_development_with_perl
  • Introduction to HTTP
  • HTML: basic tags, page layout (e.g. tables), links
  • HTML: Forms (HTTP GET/POST methods)
  • Processing forms
  • Validating input data
  • Session management with cookies or without them
  • Login form, checking authentication, setting up session
  • Checking session on every secured page
  • HTML::Template
  • CGI::Application
  • Introduction to Javascript
  • Checking field verification in the clients
  • Warnings about the lack of security.integrity in such check
  • Template Toolkit
Title: Processing XML files using Perl
ID: xml_processing
  • Short overview of XML (to be on the same terms)
  • XML processing modes (DOM, SAX)
  • Well formatted documents
  • Validating XML files
  • DTD validation
  • XML::Simple
  • XML::Parser
  • XML::Twig
  • XML::LibXML
  • Parsing specific XML definitions such as RSS, Atom, Glade, SOAP
Title: Maintenance of Perl Applications
ID: maintenance_programming
  • First steps to do when inheriting code
  • Version control
  • Release management
  • setup development environment
  • setup test environment
  • unit tests
  • documentation in POD format
  • automatic HTML generation from PODs
  • PBP and Perl::Critic
  • Refactoring (examples on refactoring in perl)
Title: Regular Expressions for Data Mining
ID: regex_for_data_mining
  • Introduction to Regular expressions
  • Simple searches using various tools such as grep, vi,
  • Searching for specific string
  • Analyze big text files, search for complex patterns, extract and replace data
Title: Advanced Regular Expressions
ID: advanced_regular_expressions
  • Capturing and back reference, \1, $1
  • Non capturing parentheses
  • Named capture buffers (5.10)
  • Relative back reference
  • Modifiers: /xms
  • Embedded comments
  • Embedded modifiers
  • precompiled regex (qr)
  • prematch, postmatch without the performance hit
  • Matching and assignment at the same time
  • global matching in scalar and list context
  • Lookaround Assertions
  • Lookahead,
  • Lookbehind
  • Recursive pattern matching
  • Conditional subpatterns
  • Debugging regular expressions
Title: Web development using mod_perl 2
ID: mod_perl
  • Creating simple Handlers
  • Apache configuration
Some courses built from these units
Title: Fundamentals of Perl
Length: 32-40 hours
Title: Advanced Perl (Reference, Modules and Objects)
Length: 32 hours
Title: Debugging Perl Scripts and Applications
Length: 16 hours
Title: Test Anything Using Perl
Length: 24 hours
Title: Customized Course A
Length: 48 hours
Title: Customized Course B
Length: 32 hours