Perl News

Jon Orwant

As this issue goes to press, I'm just returning from the O'Reilly Perl Conference, held in San Jose from August 19 through 21. There's never been such a large gathering of Perl programmers (1047) in one place. Nor has there been such a large gathering of core Perl developers - about fifty attended a party Larry Wall hosted at his home nearby. By nearly any standard (except perhaps Internet access), the conference was a success, and O'Reilly will be hosting another one (time and place to be determined).

The conference began with two all-day tutorials: Randal Schwartz taught Learning Perl, and Tom Christiansen taught CGI and Web Programming in Perl. The following two days sported three simultaneous tracks: Programming in Perl, Perl for Win32, and Perl and the Web. There were five or six talks in each track.

There were also a few special talks: Larry Wall opened Wednesday with The Culture of Perl, interleaving theology and sound effects ( I ended the day with a talk about how Perl is used at the MIT Media Lab (

Thursday began with a talk by Andrew Schulman entitled The Web is the API: The New Programming Paradigm ( and ended with Eric Raymond's talk about freeware entitled "The Cathedral and the Bazaar," ( followed by a panel on freeware.

Lots happened at the conference; too much to summarize here. The three most important announcements were:

Attendees received free goodie bags with the usual swag - plus a free copy of Sriram Srinivasan's new O'Reilly book, Advanced Perl Programming. The goodie bag soon became my most treasured possession once my luggage was stolen from the conference hotel. I had a good time anyway.

New Modules

Version 1.1 of SWIG has been released. SWIG (Simplified Wrapper and Interface Generator) is a programming tool developed by Dave Beazley to simplify the integration of C, C++, and Objective C with scripting languages including Perl, Python, and Tcl. SWIG is a compiler that turns ANSI C/C++ declarations into the bindings needed to access them from the scripting languages. See

ApacheDBI 0.74, a module by Edmund Mergl that provides authentication, authorization, and persistent database connections for your Apache web server, is now available.

The O'reilly Conference

The O'Reilly Press Conference
Photo: Lawrence watson,

Randy Kobes put together an HTML collection of most of the CPAN modules. Visit it at

Calle Dybedahl's Archive::Tar module lets you create and manipulate tar files from Perl. If Paul Marquess' Compress::Zlib is available, Archive::Tar will use it to read and write gzipped tar files.

There are several new modules available for the X11 Window System, all in Stephen McCamant's X11-Protocol bundle: X11::Protocol, a raw interface to X servers, X11::Keysyms, a listing of X11 key symbols, and X11::Auth, an interface to .Xauthority files.

Stephen also contributed B::Graph, a layer between the Perl-internals-examining portion of Malcolm Beattie's Perl compiler (the B module) and particular graph layout tools (currently Dot and VGC). It examines the internal structures that Perl builds to represent your code (OPs and SVs) and generates specifications for multicolored boxes and arrows to represent them.

David Bonner's Chart is a graphics module that, like GIFgraph, lets you create line, bar, and pie charts as .gif images. Unlike GIFgraph, it lets you add legends to the charts. It requires Lincoln Stein's GD module.

Tyrell Software's PowerPerl is a Perl module that allows HTML pages to include Perl code with an eye toward security. This commercial product (not available on the CPAN) comes with a set of modules called PowerPaks that allow users to create CGI scripts without knowing any Perl.

The Data::Locations module, by Steffen Beyer, lets you insert placeholders into a collection of data (such as a file) so that you can read or write the data in any order you choose.

Steffen also uploaded version 3.0 of Tie::Handle, which lets you associate objects with filehandles.

Ben Sugars' IPC::Shareable module lets you tie a a variable to shared memory, making it easy to share the contents of that variable with other Perl processes. Currently either scalars or hashes can be tied; tying of arrays remains a work in progress. However, the variable being tied may contain arbitrarily complex data structures - including references to arrays, hashes of hashes, and so on. As this issue goes to press, a slight name change is being debated; whatever it is, it'll be in the IPC directory on the CPAN.

The Net::Pcap module, by Peter Lister, is a SWIG-generated interface to Van Jacobson's libpcap packet capture library. It lets a subroutine process packets on a network with Perl's regular expressions.

John Tobey's ExtUtils::DynaLib module lets you call C functions from dynamic libraries.

The IO::Tee module, by Chung-chieh Shan, takes a bunch of output handles and returns a pseudo-handle. Whenever you write something to that pseudo-handle, it's automatically written to all of the original handles. The RenderMan module, by Glenn Lewis, is an interface to the Blue Moon Rendering Tools by Larry Gritz. RenderMan lets you create realistic 3D objects.

LDAP, the Lightweight Directory Access Protocol, can be accessed from Perl programs via Clayton Donley's Net::LDAPapi module.

Paul Henson's File::lockf module is a wrapper around the lockf system call. Of course, Perl already has flock() and fcntl(), but lockf has some advantages over both: it handles network locks (unlike flock()) and has sensible arguments (unlike fcntl()).

RADIUS is a protocol used by terminal servers (e.g. Cisco, Ascend, Livingston, USR) for network authentication and accounting. Christopher Masto's RADIUS::Dictionary and RADIUS::Packet modules let you create servers and clients that speak the protocol (RFCs 2138 and 2139).

Russ Allbery's PGP::Sign lets you create and check PGP (Pretty Good Privacy) signatures. It's not an all-encompassing interface to PGP; for that, use Gerard Hickey's PGP module.

RPC::Simple, by Dominique Dumont, lets you make Remote Procedure Calls from Perl.

Chris Nandor released Mac::Apps::PBar, an AppleEvent module for the Macintosh progress bar.

Devel::SmallProf is a small profiler by Ted Ashton that lets you determine how much time is used by each line of your program. "Small" is in comparison to Dean Roehrich's Devel::DProf.

You can analyze and synthesize a string of comma-separated values with Alan Citterman's Text::CSV module.

The Parse::RecDescent module, by Damian Conway, generates top-down recursive-descent parsers from simple yacc-like grammar specifications. (yacc converts rules for parsing a language into a program that follows those rules.)

ObjectStore is a fast object-oriented database management system; Joshua Pritikin's ObjStore module provides a Perl interface to it.

You can now create SVR4-style pkgadd Perl distributions with Alan Burlison's mkpkg utility.

Michael Piotrowski's Locale::Iconv module provides a Perl interface to the iconv() character set conversion function, as defined by the X/Open Single UNIX Specification (XPG4).

You'll also find Locale::Msgcat in the Locale category set. This module, by Christophe Wolfhugel, provides access to XPG4 message catalog functions.

Nick Ing-Simmons' Sys::Sysconf module generates all of the constants that might be passed to POSIX::sysconf().

New modules should be cleared with the mailing list before uploading to the CPAN. We don't review the code so much as ensure that new modules have appropriate names. Information about other Perl news should be sent to

The Comprehensive Perl Archive Network (CPAN) .

_ _END_ _

Jon Orwant is the editor and publisher of The Perl Journal and is a doctoral candidate at the MIT Media Lab.