Introduction to Perl
-  Origin and Design Goals of Perl 
 
-  Overview of Perl Features 
 
-  Getting and Installing Perl 
 
-  Accessing Documentation via perldoc 
 
-  HTML-Format Reference Documentation 
 
-  Perl Strengths and Limitations 
 
Getting Started With Perl
-  Explicit Invocation of the Perl Interpreter 
 
-  Running Perl on UNIX vs. Windows 
 
-  Running Perl from the Command Line 
 
-  Using Command Line Options 
 
-  Using Debug Mode 
 
-  Implicit Invocation of the Perl Interpreter 
 
-  Running and Debugging Perl Scripts 
 
-  Simple and Compound Statements 
 
-  Fundamental Input Techniques 
 
-  Using the print Function to Generate Standard Output 
 
Using Variables
-  Scalar Variables 
 
-  Introduction to Standard Data Types 
 
-  Retrieving Standard Input Using the Default Variable $_ 
 
-  Assigning Strings and Numbers to Scalar Variables 
 
-  Declaring Constants for Persistent Values 
 
-  Using strict to Declare Variables 
 
  Pattern Matching in Perl
-  Regular Expressions in Perl 
 
-  Using Pattern Matching Operators 
 
-  Altering Data with Substitutions in Regular Expressions 
 
-  Using Backreferences to Capture Data from Regular Expression Matching 
 
-  Global and Case-Insensitive Matches 
 
-  Altering Data with Character Translation 
 
-  Using Variables in Patterns 
 
Operators
-  Introduction to Fundamental Operators 
 
-  Operator Precedence and Associativity 
 
-  Using the Ternary Operator ?: as a Shortcut for the if Statement 
 
-  Using
 and <> File I/O Operators for Standard Input/Output 
 
-  Using the Shortcut Operators +=, -=, *=, /= 
 
  String Manipulation
-  String Comparison 
 
-  String Relations 
 
-  Concatenation 
 
-  Substring Manipulation 
 
-  Using chomp and chop to Eliminate EOL Characters 
 
-  Escape Characters for Formatting 
 
-  String Manipulation Functions 
 
Flow Control: Conditional Statements and Looping
-  Conditional Expressions and Logical Operators 
 
-  if/else/elsif and unless 
 
-  Constructing switch/case Equivalent Expressions 
 
-  while Loops and do Loops 
 
-  for and foreach Loops 
 
-  Labels 
 
-  Altering Program Flow with next, last, and redo 
 
-  Trapping Errors with the eval Function 
 
-  Terminating a Script with exit 
 
  Subroutines and Parameters
-  Simplifying Scripts with Subroutines 
 
-  Defining and Calling a Subroutine 
 
-  Passing Arguments by Value 
 
-  Passing Arguments by Reference 
 
-  Using return to Return a Value 
 
-  Controlling Variable Scope using my and local Keywords 
 
Arrays and Hashes
-  Defining Numeric Index Arrays 
 
-  Defining Associative Arrays 
 
-  Sorting Arrays with the sort Function 
 
-  Adding and Deleting Items Using push, pop, shift, and unshift 
 
-  Using slice, splice, and reverse 
 
-  Other Array Manipulation Techniques 
 
-  Looping through an Array 
 
-  Merging Arrays 
 
-  Introduction to Hashes 
 
-  Preallocating Memory to Optimize Hash Performance 
 
  Packages and Modules
-  The Power of Packages and Modules 
 
-  Introduction to Standard Modules 
 
-  Where to Find Modules on the Internet 
 
-  Installing a Module on UNIX or Windows 
 
-  Creating Packages for Portability 
 
-  Using Packages to Create Isolated Namespaces and to Separate Code 
 
File Manipulation
-  Using open and close 
 
-  Difference Between print and write 
 
-  Reading and Writing Arrays 
 
-  Directory Manipulation Using opendir, closedir, readdir, chdir, mkdir and rmdir 
 
  Input/Output Processing
-  Parsing Input 
 
-  Using Standard Input, Standard Output, and Standard Error 
 
-  String and Field Processing 
 
-  Using Streams and Pipes 
 
-  Using die to Quit with an Error 
 
-  Redirecting Standard Output and Standard Error to a File 
 
-  Getting Standard Input from a File 
 
Implementing Command Line Arguments
-  Reading Command Line Arguments from @ARGV 
 
-  Manipulating Positional Parameters with push, pop, shift 
 
-  Processing Command Line Options with getopt or getopts 
 
-  Analyzing Command Line Argument Values with the Getopt::Std and Getopt::Long Modules 
 
-  Reserved Variables 
 
-  Manipulating Identifiable Options Using GetOptions 
 
  Perl Report Formatting
-  Defining Report Formats 
 
-  Justifying Text (Left, Right, Center) 
 
-  Using write to Generate Reports 
 
-  Defining here Documents for Report Customization 
 
-  Creating Report Headers 
 
-  Using Built-in Variables to Control Report Appearance 
 
-  Printing Line Numbers on a Report 
 
-  Formatting Multi-Line Output 
 
-  Writing Formatted Text to a File 
 
Debugging In Perl
-  Using the Built-in Perl Debugger 
 
-  Starting the Debugger 
 
-  Debugger Command Syntax 
 
-  Checking for Script Syntax Errors 
 
-  Solving Compile-Time Errors 
 
-  Single-Stepping through a Script 
 
-  Executing to Breakpoints 
 
-  Setting Global Watches 
 
-  Printing Values of Variables 
 
-  Listing All Variables Used in the Script 
 
-  Using strict Error Checking 
 
-  Quitting the Debugger 
 
Web Architecture and CGI Scripting Overview
-  Static vs. Dynamic Web Pages 
 
- Serving a Static HTML Web Page 
 
- Serving a Dynamic HTML Web Page 
 
- Dynamic Web Page Capabilities 
 
-  The Common Gateway Interface 
 
- How Server-Side CGI Scripts Work  
 
-  Differences between Client-Side and Server-Side Script Environment 
 
-  Strengths and Weaknesses of Web Programming Languages 
 
CGI Scripting with Perl
-  Perl's Role in Distributed Web Applications 
 
-  Using Environment Variables to Control CGI Scripts 
 
-  Communicating with the Web Server 
 
-  Perl CGI Script Instantiation and Invocation 
 
-  Generating Output for the Browser 
 
-  CGI Security Mechanisms 
 
Servers and CGI
-  The Apache httpd.conf File 
 
-  Aliasing Standard Directories in Apache 
 
-  Using Standard Apache-Aliased Directories 
 
-  The Default Apache cgi-bin Directory 
 
-  Aliasing CGI-Enabled Directories in Apache 
 
Fundamentals of CGI Scripting with Perl
-  Perl's Role in Distributed Web Applications 
 
-  Using Environment Variables to Control CGI Scripts 
 
-  Communicating with the Web Server 
 
-  Perl CGI Script Instantiation and Invocation 
 
-  Generating Output for the Browser 
 
-  CGI Security Mechanisms 
 
-  The Importance of the "Shebang" Line 
 
-  "Shebang" Line CGI Errors 
 
-  Debugging CGI Errors 
 
-  Linux vs. Windows File Format Errors 
 
-  Setting Linux File Protections 
 
-  Specifying the Page MIME Type 
 
-  Generating Standards-Compliant HTML 
 
  Generating Dynamic Web Pages Using Perl/CGI
-  Generating Dynamic Web Pages and Dynamic Content 
 
-  The Role of JavaScript 
 
-  Generating JavaScript Using CGI 
 
-  Displaying Data in Tables 
 
- Using Environment Variables to Control CGI Scripts  
 
-  Displaying Data from Files 
 
-  CGI Output Stream Buffering 
 
Dynamic Behavior Based on Query Strings
-  The Query String Part of a URL 
 
-  Parsing the Query String 
 
-  Using Query Strings to Maintain Session State 
 
-  User-Defined Modules and CGI 
 
Processing HTML Forms with Perl CGI
-  Creating and Submitting HTML Forms 
 
-  HTML Input Elements 
 
-  Submitting a Form 
 
-  Form Interaction Summary 
 
-  Populating Form Elements Using CGI 
 
-  Processing HTML Forms 
 
- Characteristics ofMisc | BTS Admin the GET Method 
 
- GET Method Environment Variables 
 
- Characteristics of the POST Method 
 
- POST Method Environment Variables 
 
-  Using Form Data Validation to Check Data Values 
 
Development Cycle for HTML Forms
-  Dealing with Program Complexity 
 
-  Calendar and Time Functions 
 
-  Step 1 - Algorithm Development 
 
-  Step 2 - Algorithm Application 
 
-  Step 3 - Adding Form Elements 
 
-  Step 4 - Processing Form Elements 
 
  Using the Perl CGI.pm Module - Introduction
-  Orientation to CGI.pm 
 
-  The Power of Perl-Supplied Routines 
 
-  Simplifying Debugging 
 
-  Using CGI.pm in Object-Oriented Style 
 
-  Named Parameter Syntax 
 
-  Using CGI.pm in Procedural Style 
 
-  Importing Groups of CGI.pm Methods 
 
-  CGI.pm Output and XHTML 
 
-  Mixing CGI.pm Methods with Standard Perl 
 
-  Custom Tag Generation 
 
Form Processing with CGI.pm
-  Classes of CGI.pm Methods 
 
-  Specifying Arguments for HTML Tags 
 
-  Differentiating Blank & Missing Parameters 
 
-  Using Passed Parameters as Numbers 
 
Maintaining State with CGI.pm
-  State Information and the Web 
 
-  Using Extra Path Information 
 
-  Using Hidden Fields in Forms 
 
-  Using Client-Side Cookies 
 
-  Setting Cookies 
 
-  Cookie Parameters 
 
-  Setting Cookies from Form Data 
 
-  Deleting Cookies 
 
-  Form Validation and Cookie Storage 
 
-  Cookie Deletion 
 
-  Overcoming Cookie Limitations 
 
Using Relational Databases with Perl DBI: Basic RDB and SQL Concepts
-  Multi-Tiered Architecture 
 
-  Database Servers and Connections 
 
-  Database Concepts and Terminology 
 
-  Database Table Components 
 
-  Categories of SQL Statements 
 
-  The SQL INSERT Statement 
 
-  The SQL SELECT Statement 
 
-  The SQL UPDATE and DELETE Statements 
 
-  Determining Whether MySQL Is Running 
 
-  Starting and Controlling MySQL 
 
-  Creating a MySQL Database 
 
-  Installing Perl DBD-mysql and DBI Modules 
 
Accessing a Database Using Perl DBI
-  Database Access Life Cycle 
 
-  Using DBI and DBD to Connect to a Database 
 
-  Fundamental Data Storage and Retrieval Strategies 
 
-  DBI Query Syntax 
 
-  Using DBI Methods to Retrieve Database Information 
 
- Preparing a SQL Statement 
 
- Executing the SQL Statement Against the Database 
 
-  Fetching the Result Set to Achieve Workable Data in the Perl Script 
 
- Extracting Data Using an Array 
 
- Extracting Data Using a Hash 
 
-  Useful Utilities to Aid in Database Development 
 
-  Using Other Modules to Access Databases on the Web 
 
Performance Optimization Using ModPerl
-  Overview of Apache Web Server Functionality 
 
-  Comparing the Speed of CGI Scripting vs. ModPerl 
 
-  Configuring Apache with Perl and ModPerl 
 
-  Apache Strengths and Limitations 
 
-  Using the Apache::Registry Module 
 
-  Extending and Enhancing Apache Functionality 
 
  Developing Multi-Tiered Web Applications
-  Review of Multi-Tiered Web Application Components 
 
-  Putting It All Together 
 
-  Using High-Level Packages to Assist with Scalability and Maintainability