Perl Training Logo: Praying Mantis
Units
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
Content:
  • 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
Content:
  • opening files
  • reading from file
  • writing to file
Title: Lists and Arrays
ID: arrays
Content:
  • 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
Content:
  • 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
Content:
  • Slurp mode
  • Diamond operator
  • File::Slurp
Title: Subroutines
ID: subroutines
Content:
  • defining a subroutine
  • passing parameters
  • returning values
  • recursive subroutiones
  • sorting functions
Title: Hashes
ID: hashes
Content:
  • 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
Content:
  • 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
Content:
  • 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
Content:
  • Using Standard modules
  • Procedural interface
  • Object Oriented interface
Title: Using CPAN
ID: using_cpan
Content:
  • Searching CPAN, evaluating modules, getting information about them
  • Installing modules on Unix with or without root rights
  • Installing modules manually
  • Using CPAN.pm 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
Content:
  • 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
Content:
  • 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
Content:
  • 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
  • AUTOLOAD
Title: Object Oriented Perl programming (OOP)
ID: oop
Content:
  • 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
Content:
  • returning undef
  • die-ing
  • croak-ing
  • throwing exceptions
  • catching exceptions
  • Exception::Class
  • eval
  • Error.pm
Title: Short introduction to working with Databases
ID: databases_short
Content:
  • Introduction to DBI
  • INSERT, UPDATE and SELECT data
Title: Working with Databases
ID: databases
Content:
  • 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
Content:
  • Object/Table quick interface - Class::DBI
Title: Improving Performance of Perl applications
ID: performance
Content:
  • 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
Content:
  • 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
Content:
  • A simple example
Title: Debugging Perl applications
ID: debugging
Content:
  • 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
Content:
  • How does the build in debugger work?
  • The DB module
  • Building simple execution tracing modules
  • Builing a simple profiler
Title: Logging
ID: logging
Content:
  • 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
Content:
  • 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
Content:
  • Controlling external command line applications
  • Net::Telnet
  • IPC::Open
  • IPC::Run
  • open to scalar reference
  • Short intro to Expect.pm
  • Example how to analyze ( parse ) output of commands
Title: Web Application testing
ID: testing_web_application
Content:
  • LWP::Simple
  • LWP
  • WWW::Mechanize
  • Win32::IE::Mechanize (on Windows only)
Title: Networking in Perl
ID: networking
Content:
  • 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
Content:
  • 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
Content:
  • 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
Content:
  • 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
Content:
  • 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
Content:
  • 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
Content:
  • 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
Content:
  • 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
Content:
  • 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
Content:
  • 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
Content:
  • 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
Content:
  • 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
Content:
  • 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
Content:
  • 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