The Linux Magazine Perl columns!

First things first

If you haven't seen my home page, you should probably start there first. Also, you might want to check out the other columns too!

Perl Training Classes

Learn Perl now! To find out about my on-site and open-enrollment classes, send a blank message to You'll get the answer back by email, so make sure your browser has your correct address if you follow this link. Or visit our Web site!

Some semblance of a description

I'm busy writing this monthly column for Linux Magazine magazine. They've agreed to let me put them online as soon as they've appeared in print.

Because I'm generally busy (or lazy), I simply ran the source files through the pod2html translator so that I could put them online here. It makes them ugly sometimes, but you'll just have to live with that for now until someone comes up with a better solution.

Table of contents

Using things from the CPAN (Jun 99) listing
Tieing up loose ends (Jul 99) listing
Scripting your Apache server with Perl (Aug 99) listing
Random sentence generator (Sep 99) listing
Many ways to launch processes (Oct 99)  
No News is not Good News (Nov 99) listing
Watching your web server (Dec 99) listing
Getting better references (Jan 00)  
Subroutine references (Feb 00)  
Filehandle references (Mar 00)  
Intro to objects, part 1 (Apr 00)  
Intro to objects, part 2 (May 00)  
Moving your news service (Jun 00) listing
Capturing CGI Errors as Email (Jul 00) listing
Getting your kids to do the work (Aug 00) listing
Forking parallel link checker (Sep 00) listing
Throttling your web server (Oct 00) listing
Discovering incomprehensible docs (Nov 00) listing
Chaining Babelfish for silly translations (Dec 00) listing
Caching in your chips (Jan 01) listing
Getting some directory assistance (Feb 01)  
Headlines in the news (Mar 01) listing
Authenticated remote updates (Apr 01) listing
Processing footnotes (May 01) listing
Simple online quiz technique [part 1] (Jun 01) listing
Simple online quiz technique [part 2] (Jul 01) listing
Understanding regular expressions (Aug 01)  
Cleaning out a logging database (Sep 01) listing
Safe undumping (Oct 01) listing
Finding files incrementally (Nov 01) listing
Word of the day for PostgresSQL (Dec 01) listing
Smoke and mirrors (Jan 02) listing
Who's got the button? (Feb 02) listing
Caching those database accesses (Mar 02) listing
Serving up a piece of tar (Apr 02) listing
Filling a pipe - web traffic analysis (May 02) listing
Looking for lossage (Jun 02) listing
Template-driven file management (Jul 02) listing
Watching long processes through CGI (Aug 02) listing
Handling partially-filled query forms (Sep 02) listing
Doing many things at once (Oct 02) listing
Mirroring your own mini-CPAN (Nov 02) listing
Browsing a local CPAN mirror (Dec 02) listing
What Perl got right (Jan 03)  
Finding things (Feb 03)  
Finding things by rule (Mar 03)  
Web scraping with WWW::Mechanize (Apr 03) listing
Persistent storage for data (May 03)  
The Wrong Parser for the Right Reasons (Jun 03)  
Finding Similar Images (Aug 03) listing
The Basics of Hashes (Sep 03)  
Checking links with Class::DBI (Oct 03) listing
Checking website health [part 1] (Nov 03)  
Checking website health [part 2] (Dec 03) listing
Using xsh to scrape web pages (Jan 04) listing
Prototype Programming for Classless Classes (Feb 04)  
Creating an Inline language (Mar 04) listing
List Manipulation (Apr 04)  
Using Perl/Tk for Simple Graphing (May 04) listing
Introduction to Template Toolkit - Part 1 (Jun 04)  
Introduction to Template Toolkit - Part 2 (Jul 04)  
Introduction to Template Toolkit - Part 3 (Aug 04)  
Template Toolkit for Proxy Server Management (Sep 04)  
Introduction to mod_perl (part 1) (Oct 04)  
Introduction to mod_perl (part 2) (Nov 04)  
Introduction to mod_perl (part 3) (Jan 05)  
Creating Class::DBI relationships automatically (Feb 05) listing
Fit to be tied (part 1) (Mar 05)  
Fit to be tied (part 2) (Apr 05)  
Introduction to CGI::Prototype (part 1) (May 05)  
Introduction to CGI::Prototype (part 2) (Jun 05)  
Introduction to CGI::Prototype (part 3) (Jul 05)  
File::Finder: finding files easier (Aug 05)  
Babysitting an interactive CPAN update (Sep 05) listing
Profiling in Template Toolkit via overriding (Nov 05) listing
Debugging Web Applications (Dec 05)  
Using a database for a web server log (part 1) (Jan 06) listing
Using a database for a web server log (part 2) (Feb 06) listing
Building a static website with Template Toolkit (Mar 06) listing
Adapting CGI::Prototype for Apache Action Scripts (Apr 06)  
Packing it in (May 06)  
Web 2.0 meets Usenet 1.0 (Jun 06) listing
Progress Bars for Download (Jul 06) listing
Pluggable Behavior with a twist (Aug 06) listing
Searching my columns with POE and IRC (Sep 06) listing
Wrap your database rows with Rose (Oct 06)  
Setting up Rose::DB::Object Metadata (Nov 06) listing
Using Rose::DB::Object (Dec 06)  
Rose::DB::Object's many-to-many mappings (Jan 07)  
The Big Modules in the Mini-CPAN (Feb 07)  
Sanity-checking your Perl code (Mar 07)  
HTML Scraping with XPath (Apr 07) listing
Fingering myself with Twitter (May 07) listing
The Moose is Flying (part 1) (Jun 07)  
The Moose is Flying (part 2) (Jul 07)  
Always wear your utility belt (part 1) (Aug 07)  
Always wear your utility belt (part 2) (Sep 07)  
Many happy returns with Contextual::Return (Oct 07)