Copyright Notice

This text is copyright by CMP Media, LLC, and is used with their permission. Further distribution or use is not permitted.

This text has appeared in an edited form in WebTechniques magazine. However, the version you are reading here is as the author originally submitted the article for publication, not after their editors applied their creativity.

Please read all the information in the table of contents before using this article.

Web Techniques Column 70 (Feb 2002)

[suggested title: Retiring at 70]

It's the beginning of the end. This is the last column I'll be writing for WebTechniques, having been in it since the beginning for 70 issues. Next month, the magazine will be changing to a new format. Two words: ``no code''. The editors and I figured it'd be appropriate to give all of you loyal fans a peek into the inner workings of our six year relationship as my final piece.

How it got started

Ray Valdes had seen my bi-monthly columns that I was writing for Unix Review in the latter part of 1995. He approached me, asking if I'd like to do a monthly Perl column for a new web technology magazine that was being spun off from Dr. Dobbs (yet to be named).

I recall telling him at the time that I've never been a ``webmaster'' anywhere, except for my own smallish site at But I did know Perl, so as long as I could stay inside the areas with which I was familiar (or perhaps pressing outside them just a bit), I could probably write a few columns and see how it went. If it didn't work out, we'd part friends. But 70 columns later, I was still on the payroll.

The people

My interaction with the magazine has been interesting over the years. I'd like to thank the people that have edited my columns or worked with me to get the process going, including (in approximate chronological order): Ray Valdes (whom I just mentioned), Jon Erickson, Mike Floyd, Bob Kaehms, Tami Zemel, Keri Hayes, Dale Dougherty, Elisa Welch, Rusa Vuong, Alan Zeichick (for one column while Bob was out on paternity leave), Amit Asaravala, Maggie Berry, Allison Post, and finally Neil McAllister. My apologies if I left anyone out.

The editors apparently had to put up with less-than-satisfying working conditions. I got this email from one of them while I was trying to figure out why I didn't get a confirmation email:

Yeah, I complain loudly about ccMail every chance I get, for what good it does. All the IS guys hate it too. The gateway chokes and gags every other week or so, and then there are all these lost messages for which there is no official notice or explanation.


Please note that my email inside mfi has been flakey now for amost two weeks. Please send email directly to That will keep it outside of our internal mail gateway.

So much for vendor-based commercial solutions.

The schedule

I was notoriously late for most of my columns. In fact, I'd gotten my first ``so are you going to get the column in on time'' letter in Mar 96. After that, it became a ritual: ``Your column was due yesterday, when can we expect it?''. That's usually the time I started thinking about a topic. As I type this, I'm in the same mode. Old habits don't die.

When I missed an issue in Feb 97 (because I was later than late), I got this:

Did WebTechniques cancel your monthly column on Perl? I looked at the January and Febuary issue and was shocked to see that your column was missing. Is this just temporary or is this for good?

If its for good then Im going to write them and say that if they don't put you back in the magazine then Im going to pull my subscription.

And when I reassured another person that I was still on, I got this:

Glad to hear you're still writing for Web Techniques. When your column didn't appear in the last issue, I tossed the next subscription reminder. I'll renew my subscription now. Try not to miss any more deadlines, now, hear? :-)

The topics

The first column in January of 1996 was on using the CPAN. Since then, I've covered a huge variety of topics. I tried to evenly distribute the columns between server-side (CGI, mod_perl), client-side (LWP), and maintenance (HTML parsing, logging).

I've written over 7000 lines of code, using dozens of different modules from the CPAN. I've rewritten my link-checker four different ways. I've talked about image manipulation, guestbooks, chat areas, mini-web-servers, session management, hit counters, authentication, authorization, accounting. I've used Chatbot::Eliza to generate odd content. I've dealt with cookies on the server side and on the client side. I've written about uploading files, dealing with MIME, using DBI with MySQL, and wrangling XML and NNTP. I've shown how to deal with people who click ``submit'' too quickly, and how to make multi-page forms work well, including validating the fields. I've had robots that stuff forms, and forms that couldn't be robot-stuffed.

I've really enjoyed the variety of topics that I've been able to write about. Had you asked me at the beginning whether I could have done all of this, I would have flatly denied it. But all I had to do was watch the new modules being uploaded to the CPAN, and what people were asking about on the newsgroups and mailing lists, and the ideas came out of that. In fact, I still have 271 ideas saved up for future columns (or at least to investigate for the potential).

Behind the scenes

My column is written using POD (Perl Online Documentation), with GNU Emacs, although the first few months were just plain text. I do this because it marks the text up unambiguously, and it also makes it easy for me to HTML-ize the columns for my online archive at

In Nov 96, I accidentally sent my Unix Review column to WebTechniques, and vice versa. I had to quickly write both editors saying ``no no, it's this one instead, sorry!''. As if that wasn't enough, I repeated that in Nov 97. What is it about November?

I turned in the Dilbert-extractor program in May 97, initially listing it as Filbert and United HyperMedia to avoid a lawsuit for the publication, but the editors say go ahead with the original names. In Jan 99, I discovered Dan Wallach had lost in court for a similar program. Oops! Oddly, United Media changed the shape of the pages exactly once since then, right after my script came out, invalidating my script. Over the years, I've received numerous ``patches'' to make my scripts work again.

In Feb 98, WebTechniques went to a ``qualified'' circulation model (that is, becomes a freebie), and they wanted my photograph to better brand me to the ``qualified'' people. ``Letters to the editor'' moved to the front of the magazine. I paniced at the idea of having my picture in print.

In Aug 99, I found out that the column I had just written was already scarfed for use at the site itself. I reminded them that if they wanted any further custom programming done, all they had to do was suggest a topic.

The Aug 99 issue published some CGI Perl code (not mine) which permitted arbitrary commands to be executed on the webserver. Oops. And then the author rewrote it, and still ended up writing code that had major security holes. Maybe some people should stay away from writing CGI.

My first published photo (taken with my Nikon Coolpix camera) was in the Sep 99 issue, but I didn't recieve any photo credit, which had been a precondition of its use. That was corrected in the next issue.

While writing the Jan 00 column, I got to educate Jonathan Eisenzopf on the value of ``deep copying'' to fix a bug in XML::RSS. That became both a bugfix to that module, and a column for another magazine.

In Jan 2000, I get asked for an online graphic ``saved at 300 DPI'', and start one of my normal rants about that (``pixels do not HAVE a dpi!''). But I fear it fell on deaf ears.

Then there was the big redesign in Mar 00, which in my opinion, introduced some particularly ugly fonts and layout. I received feedback to this point as well. (Oddly enough, there was concern that it would ``lose the reader'' expressed by at least one senior associate. I wonder if that was foreshadowing?)

In Aug 00, we joked around about the upcoming ``collaboration'' issue, where one of the ideas was a ``chat server''. A challenge was raised to me by the other columnists to do it in less than 100 lines of Perl, which I did for the magazine. But the rest of the conversation was priceless. Unfortunately, I don't have room (or permission) to publish it here.

In Dec 00, I write a nice column parodying the ``Am I Hot or Not?'' site to illustrate how to do polling. However, the content I chose was deemed inappropriate for the magazine, so at the last second, I was forced to change the content. You can still see the original at my online archive.

As a result of that rift, and perhaps some other things that were going on at the time, I write column 60 (for Apr 2001) like it might be my last, and even got concerned letters from readers hoping that wasn't the case. But I decided to plow on.

I've gotten email from random vendors trying to get me to talk about commercial solutions. This always puzzles me, because had they actually taken the time to read any of my columns, I'm always taking about open-source solutions, not proprietary solutions.

Putting the column in other places

Over the years, I've recieved quite a few requests for me to turn these columns into a book, or at least a CD-ROM. But in this business, the copyright is owned by the publisher as a ``work for hire'', so it's up to CMP to do the job now.

However, early in the column's life, I got permission to publish the articles on my own website, as long as the copyright was clear and CMP got right of first publication.

The feedback

Probably the best part of this job was the hundreds of letters I've received, including suggestions for my errata list, and ideas for new topics, or even just something to say my work was making a difference for them. Here's a bit of it to give you a flavor. As I didn't have time (see above) to get permission, I just ripped off the names.

From one reader, I got:

I appreciate your column in WEB Techniques; the flavor reminds me of that which I've come to appreciate in some of the better articles in Dr. Dobbs. It isn't a tutorial for rank beginners; it's a guiding hand to a professional who knows programming thoroughly but doesn't yet know all about PERL and WEB programming.

In Feb 97, someone notices how many things I'm doing:

People ask me when *I* find time to sleep-- but with all your output on Usenet and trade publications, not to mention your business, I have to wonder the same about you. :-)

I got email from the famous Matt Wright in Mar 97:

Yah, I get WebTechniques in the mail and I always read your columns. I also get Unix Review, and although I saw your name in the most recent edition I couldn't find any articles by you. Are you only an editor or do you write sometimes for Unix Review as well?

Admittedly, most of my Perl is a lot longer than it could be, and probably not as clean. I am hoping to fix that someday.. along with learning more about this OOP stuff. :-) Most of my code was written a year or two ago, and up until this last semester of school I had had no formal programming instruction. At least when you re-invent my stuff, you improve it, but there seem to be quite a few people out there who just re-invent it by changing my name to theirs. ;-)

I think that speaks for itself.

Another comment in Jun 97:

I've really enjoyed your columns. I can't tell you how happy I was to crack open what I thought was just another hype-mag and see actual code.

Ironic, now.

And in Jul 97:

I just wanted you to know that I have subscribed to Web Techniques mostly to get your column. I know that I can read the code and original article from your webpage but I hope you get some of the money I paid for the subscription (and I prefer the paper layout).

Also from Jul 97:

The amount of fun I have on the net everyday, especially with the perl scripts I've installed and tinkered with on my fledgling hobby/sorta commercial site, is due in no small part to the work you've done with the two perl books and your columns in WebTechniques.

In Jan 98:

BTW, Randal, I'm a fan your Web Techniques columns -- they're very helpful examples of some very interesting uses of Perl. :-)

In mar 98, someone commisserated at my mistake:

No, not a coding example, but a ``real life'' example. In the February 1998 issue of Web Techniques, first column at the bottom of page 29, you mentioned ``[blowing] away all the HTML files for Ouch. Never test on live data!''

I have served as the ``resident guru'' at the MANY startups and various large companies I have worked for. It is terribly important to teach the ``future gurus'' that you don't always know everything, even in your areas of expertise, and mistakes happen regularly. The real trick is knowing how to recover. It's great to see a known expert admit errors in print. I really appreciate it.

In Apr 98, someone asks how I put the line numbers in my article, and I reply:

    expand progname | perl -pe 's/^/\t=$.=\t/'

Of course it was done with Perl.

In May 98, I get:

Just wanted to thank you again for your work, and for being an inspiration to me in my own efforts to get better at helping people.

(I'm taking the opportunity to mention this now, because I think I'm about to use your WebTechniques Column 22 script as a basis for the current job on my plate. :)


In Jul 98, Bob Kaehms (then editor) gets this from a reader:

Being an ardent reader of Usenet groups relating to the Perl programming language, I've seen many pointers to the online copies of articles written by Randal Schwartz originally for your magazine. Randal has mentioned several times that these articles exist online through your permission and I wanted to extend a personal thank you for allowing this resource to be available. The columns have helped me a lot in my own programming efforts have been interesting enough to me that I've purchased several copies of your magazine from a Barnes and Nobles near me just to see what else might be going on in there.

In Jul 98, I get:

again thanks for the help, the WebTechniques work is really smart/crafty code, i really like how you keep it clear and succinct, and cutting down on rem statements all over the place, since your code is really readable!

In Sep 98:

First off - thanks for all the great books and columns. I learn something new with each issue of Web Techniques. I really like the way you introduce new segments of modules I haven't used before. Forces me to go look at them!

In Apr 99, I got a spelling flame about my March column, telling me that ``existance'' should be ``existence'', ``servicable'' should be ``serviceable'', and ``persistant'' should be ``persistent''. Where's Perl's spell-check?

Another fan, in May 99:

I subcribe [yeah, that's the way he wrote it] to WEB Techniques mostly to read your columns on PERL.

Apparently, he wasn't aware that my column was all online.

An Aug 99 comment:

I am a subscriber to Web Techniques and I would like to say that I always enjoy your ``Programming with Perl'' article. While I am not advanced enough o fully understand all that you do I do manage to take a tidbit here and there.

In Oct 99, I received:

I am a regular reader of all your technical articles and i am really fascinated by your style of writing and the technical content presented. Congrats !

In Dec 99:

First, thank you for all your help in educating me with both your book work and your Web Techniques columns, and a particular thanks for doing it with a touch of humor. I do believe I can pick out the parts of 'Programming Perl' that you contributed to as I read along.

And in Jan 00:

Firstly, can I thank you for taking time to answer my posting - I was very surprised that someone as well known as you came to my rescue!

Mar 00:

Just wanted to say thank you for the great examples on your page. Needless to say, they're very well done, and are giving me a great help (to hopefully), to start something off on my own (God you gotta love this Linux stuff).

And in Apr 00:

I have been programming cgi (sort of) for the past year and I must say I really, really, really appreciate your site and the information you give!  I have spent hours reading all the great explanations you have and the great programs....thanks a bunch! 

From Jul 00:

Hi, I just have to say that I have read your magazine/articles since 1996. I have looked upon them as a source of inspiration and ideas.

Another happy customer in Sep 00:

Just want to say a BIG THANK YOU! Your August column in Web Techniques allowed me to transfer 60MB of data between two ISPs w/o loosing modification times on most of the uploaded files (this was a requisite feature). I had no telnet access on the former ISP account and was wondering how I could mirror the contents w/o using a CPAN package. Your script arrived just at the right moment to help me write a quick hack. I wasn't aware you could do such things in Perl! ;-)

And another in Sep 00:

Thank you very much for your WebTechniques columns; they're generally the first thing I read in each issue.

From Dec 00:

I've been reading your web technique columns at, those techniques are pretty amazing! How did you learn to create and apply those techniques (or ideas)?

To which I replied:

Every month, someone pays me to be clever for two and a half columns. Therefore, I spend between one and ten hours researching some new module or idea I stumbled across on the net, and then write about what I discovered, and then I get a check 30 days later.

I'm much more stupid than I appear to be on the net. :)

From the author of GraphViz (Stephen C. North) on my Jan 01 column referencing GraphViz:

Thank you for the good ink!

You're welcome, Stephen.

In Sep 01:

For starters, I would like to say I am very grateful for all your contributions to the Perl community. I attribute a great deal of my Perl knowledge and enthusiasm to you. Thanks.


None, this time. And never again.

So long, and thanks for all the fish.

Randal L. Schwartz is a renowned expert on the Perl programming language (the lifeblood of the Internet), having contributed to a dozen top-selling books on the subject, and over 200 magazine articles. Schwartz runs a Perl training and consulting company (Stonehenge Consulting Services, Inc of Portland, Oregon), and is a highly sought-after speaker for his masterful stage combination of technical skill, comedic timing, and crowd rapport. And he's a pretty good Karaoke singer, winning contests regularly.

Schwartz can be reached for comment at or +1 503 777-0095, and welcomes questions on Perl and other related topics.