Audience
  Application programmers, system administrators, web-site authors, webmasters, and UNIX/NT power users.
Prerequisites
  Perl Programming and Perl application development experience. Full comprehension of the extending and embedding material will require some C or C++ programming experience.
Duration
  Four days.

Outline for Advanced PERL Programming Training

1. Debugging

 

  • Warnings
  • Diagnostic Messages
  • Carping, Confessing, and Croaking
  • Strict Checks
  • Compiler Pragmas
  • Debugging Flags
  • Your Perl Configuration
  • The Devel::Peek Module
  • The Data::Dumper Module

 

2. Expert List Manipulation

 

  • The grep Operator
  • Lists, Arrays, and List Operators
  • Context
  • Context and Subroutines
  • Initializing Arrays and Hashes
  • Reference Syntax
  • Auto-vivification
  • Defined Values
  • Other List Operators
  • Usage of map, grep, and foreach

 

3. Blocks and Code References

 

  • Blocks
  • Subroutines
  • Subroutine Prototypes
  • Code Refs and Anonymous Subroutines
  • Typeglobbing for the Non-Squeamish
  • Local (Dynamic) Variables
  • Lexical Variables
  • Persistent Private Subroutine Variables
  • Closures
  • The eval Operator
  • The Block Form of eval
  • The String Form of eval
  • Block Form of eval for Exception Handling

 

4. Packages

 

  • Review of Packages
  • BEGIN and END Blocks
  • Symbol Tables
  • Package Variables
  • Calling Package Subroutines
  • Importing Package Symbols
  • Exporting Package Symbols
  • Using the Exporter Package
  • The use Function
  • AUTOLOAD and @ISA
  • AutoLoader and SelfLoader

 

5. Objects and Classes

 

  • Object-Oriented Stuff
  • Making Perl Object-Oriented
  • References
  • The bless Function
  • So, What's a Blessed Thing Good For?
  • Calling Class and Object Methods
  • Object Methods
  • Writing Classes
  • Constructors
  • Inheritance
  • What Perl Doesn't Do

 

6. Tied Variables

 

  • Why Use tie?
  • Tying a Scalar
  • Inside Tied Variables
  • untie
  • Another Tied Scalar Example
  • Tying an Array
  • A Tied Array Example
  • Tying Hashes
  • Tie::Hash and Tie::Array
  • Tying Filehandles
  • What Are DBM, NDBM, GDBM, SDBM, etc?
  • Using the DBM Modules

 

7. Installing and Using Perl Modules

 

  • Laziness, Impatience, and Hubris
  • CPAN
  • Using Modules
  • Installing a Perl Module
  • Unpacking the Module Source
  • The Configuration Step
  • The Build Step
  • The Test Step
  • The Install Step
  • Using CPAN.pm
  • Using Module Documentation

 

8. Introduction to DBI/DBD

 

  • The Old Way - DBPerls
  • A Better Way - DBI/DBD
  • Database Programming
  • Handles
  • Connecting to the Database
  • Creating a SQL Query
  • Getting the Results
  • Updating Database Data
  • Transaction Management
  • Finishing Up

 

9. DBI/DBD SQL Programming

 

  • Error Checking in DBI
  • Getting Connected
  • Drivers
  • Using Parameterized Statements
  • Statement Handle Attributes
  • Other Handle Attributes
  • Column Binding
  • The do Method
  • BLOBs and LONGs and Such
  • Installing DBI Drivers

 

10. Introduction to Perl/Tk

 

  • Tcl, Tk, Tcl/Tk, Tkperl, Perl/Tk, etc.
  • Perl/Tk
  • Creating a Perl/Tk Application
  • GUI Programming Overview
  • Adding Widgets
  • Scrolled Widgets
  • Configuring Widgets
  • Menus
  • More Fun with Menus
  • Using FileSelect

 

11. Perl/Tk Programming

 

  • Tk::Error and Tk::ErrorDialog
  • Configuring Widgets
  • Geometry Management
  • Geometry Management with grid()
  • The Frame Widget
  • Defining Widget Callbacks
  • Bindings
  • Nonblocking I/O with fileevent()
  • Tags
  • Other Widgets
  • Other Tk Commands
  • Getting Tk

 

12. Extending Perl with C/C++

 

  • Extending the Perl Interpreter
  • Overview of Perl5 XSUBs
  • Get Started with h2xs
  • Set up the Perl Wrapper Class
  • Write the XS Code
  • The XS File
  • Write Some Test Code
  • What Do You Want?
  • Returning Values on the Stack
  • A Walk Through an XSUB
  • Arguments to XSUBs
  • Other h2xs Options

 

13. Embedding the Perl Interpreter

 

  • Why Embed Perl?
  • Embedding Perl in a C Program
  • Compiling the Program
  • perlmain.c
  • Perl Data Types
  • Macros and Functions
  • Manipulating Scalars
  • Memory Management
  • Script Space
  • Evaluating Perl Expressions
  • Dynamic Loading
  • Multiple Perl Interpreters

 

14. Module Developement and Distribution

 

  • Distributing Modules
  • Get Started with h2xs
  • Files Created by h2xs
  • The Build Library (blib) Directory
  • Unit Testing and test.pl
  • Versions
  • Using blib
  • POD
  • POD Translators
  • Cutting a Distribution
  • Other Niceties
  • Makefile.PL

 

15. Design and Implementation

 

  • Think First
  • Object-Oriented Design
  • Object-Oriented Development
  • Library Modules
  • Utility Programs
  • Filters
  • Performance
  • Timing with Benchmark