Perl News

Chris Nandor

Unless otherwise noted, all modules and documentation mentioned here should be available on CPAN, at You can search CPAN at

This column's online companion is the Perl News at To join the mailing list and get all the latest Perl news delivered to you, send mail to

If you have any Perl news, including new modules or major module updates, or have any comments or questions about Perl News, please send it to If your new module is not listed below, it might just be that we didn't know about it, so send in your mail.


Perl 6 is in development. In case you think this is a typographical error, it is version six. Not five, not five-dot-six, not the-version-formerly-known-as-five. Six. It isn't the Topaz project from Chip Salzenberg (an attempted rewrite of Perl in C++), but a complete rewrite, from scratch, by the Perl community. It is slated for alpha in July 2001, with a release six months later.

On July 18, the day before the sessions started at The O'Reilly Perl Conference 4.0 in Monterey, CA, a small group of Perl people, including Salzenberg, Perl creator Larry Wall, current pumpkings Gurusamy Sarathy and Jarkko Hietaniemi, and Nathan Torkington met to discuss Perl's future. After much gnashing of teeth, they decided that Perl should be rewritten. The consensus was that Perl is difficult to improve, extend, and embed, and these problems can only really be fixed by rewriting. And since there will be a rewrite, developers could take the opportunity to clean out some of the cruft, including bad and seldom-used features, and to implement some long-wanted features.

Later that same day, they brought their findings to a meeting for members of perl5-porters, the mailing list for core Perl development. After a consensus was reached there, a basic roadmap for the development of Perl 6 was forged. A core group of workers was selected (with Wall as language designer and Torkington as project manager), and a basic framework for moving forward was developed, noting that the old monolithic mailing list just wouldn't work any longer.

"Perl 5 was my rewrite of Perl," Wall said. "I think this should be the community's rewrite of Perl, and the community's rewrite of the community."

Since then, the community has been actively discussing development on a dozen mailing lists, creating Requests For Comment (RFCs), which will form the basis for the technical work ahead. A lot is happening (252 RFCs as this issue goes to press), a lot of people are working, and a lot is left to do. See the Perl 6 page at for more information.

Although Perl 6 is moving full speed ahead, Perl 5 is not being abandoned. Gurusamy Sarathy is maintaining 5.6, and Jarkko Hietaniemi, the newest pumpking, is hard at work on 5.7, the development branch leading up to 5.8.

The Perl 6 work begins as the Perl conference season begins to wrap up. In May, the Perl Whirl set sail, taking Perl programmers and teachers, and their families, to Alaska.

In June, the second yet another perl conference took place at Carnegie Mellon University. The location is quite important, because CMU has a campus-wide 802.11 wireless network, which conference attendees took full advantage of, carrying their Vaios and PowerBooks from room to room while checking email and chatting on IRC.

Larry Wall gave the keynote, comparing the journey of Christian in Pilgrim's Progress by John Bunyan to that of a Perl programmer. Damian Conway, however, stole the show with his mind-jarring paper on Quantum Superposition and the First Virtue, which is far too interesting and complex to be described here. See his Quantum::Superpositions module on CPAN.

Mark-Jason Dominus ran the popular Lightning Talks segment of yapc, where people were enjoined to give five-minute prepared talks about any subject they wished. Later, Jon Orwant gave the second talk in his nine-part series, Rebuilding Post-Apocalyptic Civiliation with Perl, and how Perl programmers will be the ones to survive, and about how a lot of art is really bad.

Kevin Lenzo, the man behind yapc, started Yet Another Society to be the parent organization behind yapc. More information can be found at Lenzo et al. are looking for a venue for next year's North American yapc (either Boston or Montreal), while the first yapc::Europe is also being held this year, September 22-24, 2000, at the Institute for Contemporary Arts in London.

While Perl 6 was the big news at the Perl Conference, other things happened. One of the coolest things was that, because many participants were addicted to the wireless access found at yapc, Yet Another Society set up a wireless network covering many of the conference rooms at TPC, too, and Tim O'Reilly will be trying to get wireless access for future O'Reilly Perl Conferences.

The conference had two days filled with tutorials, and two more filled with talks, with BOFs, parties, and more sprinkled about. Wall again gave the keynote, this year focusing on music. He brought out a plethora of pitchmakers and discussed similarities and differences between programming Perl and playing music.

Bunches of awards were given out at the conference. The annual Perl Conference awards from O'Reilly were given to Nathan Bailey, Andrew Bromage, and Andrew Creer for Best Web Application (My.University); Bradley M. Kuhn for Best Technical Paper (perljvm); and Andy Wardley for Best New Module (Template Toolkit). Damian Conway again won the Larry Wall Award for his Text::Autoformat module. Damian was withdrawn from future consideration, and the Best Technical Paper award will henceforth be known as the Damian Conway Award.

The Perl Mongers and O'Reilly gave out the White Camel awards, given to people with significant non-technical contributions to Perl: Elaine Ashton for Perl User Groups, Chris Nandor for Perl Community, and Nathan Torkington for Perl Advocacy.

Ashton, Conway, and Dominus judged a Perl poetry contest. Honorable mentions went to R. Geoffrey Avery, Brad Baxter, and Steve Trigg. Nathan Torkington's wife Jenine Abarbanel won third place for her "Perl widow" haiku; Paul Makepeace took second with his Latin haiku; and Ronald J. Kimball won first for his haiku that was not only about nature, as all haikus should be, but was also written in Perl.

ActiveState had a contest, too; the Perl Power Contest for innovative programs using Perl. Michael G. Schwern won for his Tie::Math module, which lets you tie a hash to mathematical functions.

O'Reilly has released the long-awaited third edition of the Camel book, a.k.a. Programming Perl by Larry Wall, Tom Christiansen, and Jon Orwant; and the second edition of CGI Programming with Perl by Scott Guelich, Shishir Gundavaram, and Gunther Birznieks. Wrox Press has published Beginning Perl, by Simon Cozens.


ActiveState has released its beta of PerlMx, the mail filter engine for Sendmail, and has announced plans for VisualPerl and VisualPython, to run under Microsoft's Visual Studio 7.0.

There's another Win32 Perl in town. IndigoStar (which also distributes Perl2Exe) has released IndigoPerl, a binary build of Perl 5.6 that comes with an integrated Apache web server.

Solutionsoft has released Perl Builder 2.0 for Windows, with a pre-release available for a Linux version of the Perl IDE.

The folks over at CPAN have set up some aliases in the domain. There are now a bunch of two-letter country hostnames set up (,, etc.), and aliases for WAIT (, perlfaq (, and the Perl pod set (

Alan J. Fry has released Pod::Pdf, for converting pod to pretty PDF, and Peter Prymmer has released Pod::Rtf (a.k.a. Pod2WinHlp) and Pod::Hlp (a.k.a. Pod2VMSHlp).

Damian Conway has released several modules. In addition to his award-winning Text::Autoformat which performs automatic text wrapping and formatting, and Quantum::Superpositions which hurts my head, he's also released Switch for providing Perl with switch statements and Class::Contract for design-by-contract OO.

Class::Translucent, by Michael Granger, is a base class for translucency. Michael G. Schwern's Class::WhiteHole is a base class for treating unhandled method calls as errors.

Dave Rolsky's Exception::Class module allows declarations of real exception classes; his StackTrace aids in encapsulating the information returned by Perl's builtin caller function. Kyle R. Burton's Exception provides exception handling, including a base exception class.

Abigail's End module provides END {} functionality for arbitrary blocks.

Devel::Coverage, by Randy J. Ray, performs coverage analysis.

Marc Lehmann's Convert::Scalar plays with the flags of an SV, Perl's internal data type that holds a scalar value. Those flags control the attributes of a scalar, including utf8, magic, and taintedness.

Ray Finch wrote Clone, which recursively copies nested data structures. DelayLine, by Lars Thegler, creates a data structure like a FIFO with an adjustable time delay for when a value will be available in it.

Tie::Cycle, by brian d foy, cycles through a list of values via a scalar. Dave Cross' Array::Compare compares arrays, and Terrence Brannon's Array::Reform converts an array into an N-sized array of arrays.

For dumping arrays to JavaScript, Ariel Brosh and Jerrad Pierce have written Data::JavaScript and Data::JavaScript::LiteObject, respectively.

Template::Plugin::Java, by Rafael Kitover, generates Java classes from XML description files and templates. Mark Ethan Trostler's Java accesses a local or remote JVM.

Amir Karger has finally merged my first computer language with my favorite computer language; Language::Basic is a BASIC interpreter.

Steve A. Fink has written a pair of parsing modules; Parse::YALALR is Yet Another LALR parser, and Parse::Vipar is a visual LALR parser debugger.

AI::NeuralNet::BackProp, by Josiah Bryan, is a simple back-propagation neural net.

Do you feel like you're missing out on something when your friend wants to "IM" (instant message) you? In addition to Net::AIM by Areyh Goldsmith, you can use the AOL Instant Messenger protocol with Joshua Harding's AOL::TOC and Riad Wahby's Net::AOLIM.

Armin Obersteiner's CDDB_get talks to your CD-ROM drive and a CDDB server to get information about your audio CDs.

Marko Asplund's IO::Socket::SSL can create secure sockets, and Michael Kulakov wrote Net::Daemon::SSL to create portable and secure daemons.

Net::Pager, by Joe Lauer, sends pages to any pager/phone around the world. Net::Whois::Raw, by Ariel Brosh, parses raw whois information (since Network Solutions keeps changing the format).

Lincoln D. Stein's IO::Socket::Multicast is for sending and receiving multicast messages. His IO::Interface module accesses network card configuration information.

Net::Telnet::Cisco, by Joshua Keroes, interacts with a Cisco router.

Sean Dague's Mail::Stats gets statistics on procmail-generated mailbox files. Sendmail::Milter, by Charles Ying, is an interface to Sendmail's mail filter API. Johan Vromans' Mail::Procmail provides procmail-like facility for creating easy mail filters. Mail::FilterXML, by Matthew MacKenzie, is a filter for Mail::Audit (Simon Cozens' module for procmail-like filters, introduced in TPJ #18) allowing specification of filter rules in XML.

XML::Driver::HTML, by Michael Koehne, is a SAX driver. It handles HTML that isn't well-formed, using HTML::TreeBuilder. Robert Hanson's XML::EasyOBJ provides easy XML object navigation.

Angus Wood and Andy Murren wrote CGI::WML, a subclass of for WML output and methods.

T.J. Mather wrote HTML::FillInForm to populate HTML forms with CGI data. Peter Haworth's HTML::StickyForms generates HTML forms for CGI or mod_perl.

Want a web application framework? Try Colin Kong's LibWeb, Marc Lehmann's PApp, or Jesse Erlbaum's CGI::Application.

Terrence Brannon's CGI::Cache caches the results of CGI scripts. CGI::PathInfo, by Benjamin Franz, is for using PATH_INFO values like QUERY_STRING parameters.

Tim Hammerquist's ASP::NextLink is a Perl implementation of the NextLink ASP component.

HTTP::DAV, by Patrick Collins, is a WebDAV client library.

Geoffrey Young's Apache::SimpleReplace, a simple template framework, is a rename of Apache::Wrapper. His Apache::Dispatch calls PerlHandler subroutines with the ease of CGI scripts. Apache::Motd, by Carlos Ramirez, prints a message of the day. Roman Kosenko's Apache::PrettyPerl pretty-prints Perl code in HTML.

Dave Moore's Apache::PerlVINC allows mod_perl to have different versions of the same modules assigned to directories or virtual hosts.

Ken Williams wrote Apache::AuthCookie for authentication and authorization via cookies. Jacob Davies' Apache::AuthCookieDBI authenticates against a database via DBI. Apache::AuthTicket, by Michael Schout, handles cookie-based tickets.

Apache::GD::Graph, by Rafael Kitover, generates charts in an Apache handler.

Leon Brocard's GraphViz is an interface to the GraphViz graphing tool. Diab Jerius' Image::DS9 is an interface to the DS9 image display and analysis program.

Dialog, from Michael Samanov, is an interface to dialog(3). Ashish Gulhati's PerlVision creates text UI widgets. Ashish also wrote Persistence::Database::SQL for object persistence in SQL databases and Persistence::Object::Postgres for object persistence with PostgreSQL. IO::BLOB::Pg, by Mark A. Hershberger, emulates the IO::File interface for PostgreSQL large objects.

Martin Hosken wrote Font::Fret, a font reporting tool.

PDL::IO::Grib, by Jim Edwards, provides utilities for the grib file format.

Games::Alak, yet another game from Sean M. Burke, is a simple game-tree implementation of a gomoku-like game (discussed in TPJ #18).

Andy Wardley's Kite is a collection of modules useful in kite design and construction. He also wrote DBO, an object-oriented database abstraction layer.

DBIx::Schema, by Jason McIntosh, is a SQL abstraction layer for working with whole schemas. Ariel Brosh's Data::Direct emulates sequential access to SQL tables. TableMap, by Balázs Szabé, maps relational tables into hashes.

DBIx::Password, by Brian Aker, creates a global file for DBI passwords.

Ilya Verlinsky and Philippe Chane You Kaye wrote Isam, for low-level access to Informix C-Isam and Blue Byte D-Isam files. DB::Appgen is an interface to APPGEN databases.

GNOME::GNORBA, by Owen Taylor, is for using ORBit with GNOME.

Randy J. Ray's RPM is an interface to the API for the RedHat Package Manager.

Barrie Slaymaker wrote IPC::Run to run subprocesses with piping, redirection, and pseudo-ttys. IPC::XPA, by Diab Jerius, is an interface to the XPA messaging system.

Proc::Background, by Blair Zajac, is a generic interface to Unix and Win32 background process management. Proc::PID_File, from Steven Haryanto, manages PID files. Config::IniFiles, by Rich Bowen, reads .ini-style configuration files.

David Boyce's Env::Path performs advanced operations on path variables. His ClearCase::SyncTree synchronizes a tree of files with a tree of elements.

File::SearchPath, by Robert Spier, searches a Unix-style path for a file. File::Temp, by Tim Jenness, safely returns the name and handle of a new temporary file. Johan Vromans' Dir::Purge purges directories to a given number of files.

Randy Maas wrote a simple Discrete Finite Automaton implementation in DFA::Simple.

Math::Libm, by Daniel S. Lewart, is an interface to libm, the C math library.

Kurt Kincaid has been busy making the world's information a bit safer. Crypt::OTP provides One Time Pad encryption; Crypt::RC4 implements the RC5 algorithm; and Crypt::Solitaire implements Bruce Schneier's Solitaire algorithm, popularized in the Neal Stephenson novel Cryptonomicon.

Crypt::RandPasswd, by John D. Porter, is a random password generator based on FIPS-181. GPG, by Philippe Froidevaux, is another interface to GNU Privacy Guard. Crypt::xDBM_File, by Eric Estabrooks, encrypts almost any kind of DBM file.

Text::TreeFile, from John Kirk, reads a tree of text strings into a data structure.

Alan Schwartz's Locale::PO manipulates .po entries from GNU's gettext.

Text::DoubleMetaphone, by Maurice Aubrey, phonetically encodes words using Lawrence Philips' improved version of the original metaphone algorithm.

ProLite, by Marc D. Spencer, controls Pro-Lite LED message signs. Marc Lehmann's RCU is an interface to remote control units. Slinke, by Brian Paulsen, controls Slink-e, an IR and S-link microcontroller.

_ _END_ _

Chris Nandor ( is a little teapot, short and stout.