Unless otherwise noted, all modules and documentation mentioned here should be available on CPAN, at http://search.cpan.org.
This column's online companion is the Perl News at http://www.news.perl.org/. To join the email@example.com mailing list, sent (semi-)daily with all the latest Perl news, send mail to firstname.lastname@example.org.
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 email@example.com.
Soon, all your friends and colleagues will be on their way through Alaska's Northwest Passage via the Perl Whirl, starting May 29. Too bad you aren't with them. Where else could you see polar bears and closures in the same place? The folks at Geek Cruises (http://www.geekcruises.com/) are planning other cruises, so fear not.
The German Perl Workshop was held in March 2000, and their web site (http://www.gmd.de/Events/Perl-WS2000/) has all the information about it.
But it is not too late to get in on other Perl events this year. Yet Another Perl Conference (yapc) and O'Reilly's Perl Conference are on tap for this summer. Yapc 19100 (http://www.yapc.org/America/) is scheduled for June 21-23, once again held at Carnegie Mellon University in Pittsburgh, PA. The price for this low-cost, high-quality affair is set at $75 for the entire conference (not including housing), and is limited to 500 attendees (twice last year's inaugural event). This year's conference will feature special Lightning Talks (a series of consecutive five-minute talks), a Paintball Olympiad, and contributions from Larry Wall, Abigail, Damian Conway, Mark-Jason Dominus, Joseph Hall, purl, Randal Schwartz, Jon Orwant, and more.
Perl Conference 4.0 (http://conferences.oreilly.com/) will for the second straight year be held in Monterey, CA, but for the first time it will be held in July instead of August. Once again, it will be part of the larger O'Reilly Open Source Software Convention, featuring Linux, Apache, Python, Sendmail, and Tcl/Tk as well.
Lots of Perl Mongers groups (http://www.pm.org/) have joined the fold since last time; welcome one and all. In America: Fairfax VA, Greenville SC, Ithaca NY, New Orleans LA, Newport Beach CA, San Marcos TX, Santa Barbara CA, and Stamford CT. In the rest of the world: Bursa (Turkey), Calcutta (West Bengal, India), Hanoi (Vietnam), Istanbul (Turkey), Milano (Italy), Odense (Denmark), Pirmasens (Rheinland/Pfalz, Germany), Pordenone (Italy), Quebec City (Quebec, Canada), Shenzhen (Guangdong, China), Southport (Merseyside, United Kingdom), Tijuana (Baja California, Mexico), Tirgu Mures (Mures, Romania), Tyumen (Russia), Venice (Italy), Yogyakarta (Indonesia).
Joseph Hall has begun a new community project called Perlfaq Prime (http://www.perlfaq.com/), an ever-growing categorized and fully searchable set of user-supplied "faqtoids."
Another new site, from Block Stackers (http://www.blockstackers.com/), is Perl Monks (http://www.perlmonks.org/), a community for anyone trying to learn Perl or improve their current skills. Some of the features in the site include basic documentation, tutorials, question and answer forums, and sections for useful chunks of code.
That "other" Block Stackers site, Slashdot, and its owner, Andover.Net, held the Beanie Awards in January. These awards, spread across various categories relating to the free software community, were nominated for and voted on by Slashdot users. The Best Perl Module award went to CGI, Best Apache Module went to mod_perl, and Best Book went to the Camel book, Programming Perl. Camel co-author Tom Christiansen won for Best Newbie Helper.
Slashdot has released its current source, dubbed Slash, under the GPL. It is all done in Perl, MySQL, DBI, and mod_perl, and it is available at Slashcode (http://slashcode.com/). For our Russian colleagues, there's a new site called Pref News (http://simplex.ru/news/), a daily Russian-language e-zine dedicated to Perl, Unix, and database programming, with tutorials, articles, and interesting code snippets.
www.perl.com has been significantly active lately, posting a good article every other week or so. Recent offerings have included a continuation of Mark-Jason Dominus' series on dealing with spam, Kirrily Robert's defense of coding standards, and a debunking of the top ten myths of Perl by Simon Cozens. Kirrily's company, Netizen, has made its Perl training materials available for free under the Open Content License (http://www.opencontent.org/opl.shtml), which allows copying, distribution, and modification of content for commercial and non-commercial purposes, as long as no fee is charged. http://netizen.com.au/services/training/.
Several new Perl books are hitting the shelves: O'Reilly has Programming the Perl DBI by Alligator Descartes and Tim Bunce; Advice Press has Perl: Developer's Toolkit by Randy Kobes; and SAMS has Teach Yourself Perl in 24 Hours by Clinton Pierce.
Linux Magazine published an article by Larry Wall called Cultured Perl in October 1999, and posted it online at http://www.linux-mag.com/1999-10/uncultured_01.html. In the article, Wall traces the evolution of the language from gestation through adolescence.
O'Reilly & Associates has hired Jon Orwant, co-author of Mastering Algorithms with Perl and editor of The Perl Journal, as Chief Technology Officer. Orwant recently received a Ph.D. after over a decade of work at MIT Media Lab's Electronic Publishing Group. "I'll be wearing a lot of hats," said Orwant. "Some of those hats have to do with helping O'Reilly help the Perl community, some involve using Perl to streamline O'Reilly's internal operations, and some don't involve Perl at all. The hat that I may enjoy the most is making sure that Larry [Wall], an O'Reilly fellow, gets whatever support from us he needs."
CPAN authors can now be mailed using their CPAN ID @cpan.org. Abusers of this will be shot with extreme prejudice.
As of this writing, the second beta release of Perl 5.6 is out: version 5.5.670. It includes far too many fixes and features to mention here, but it is shaping up to be pretty darn cool. By the time you read this, Perl 5.6 should be released.
ActivePerl 5.6 is also in beta, including Windows-specific features like Unicode system calls, Windows Installer (just in time for Windows 2000!), and fork() emulation. Windows 95 and 98 are not supported in this release. However, two new platforms are supported. ActivePerl 5.6 comes in binary form for Linux on x86 platforms (with packages for Red Hat 6.0 and Debian 2.1) and Solaris on SPARC 2.6. All versions of ActivePerl 5.6 include Perl Package Manager support. Get ActivePerl from ActiveState at http://www.activestate.com/.
ActiveState has also released a CD with the source code and binary of ActivePerl build 523, a snapshot of the ActiveState module repository, a debug build of ActivePerl, a Y2K advisory module, and unlicensed versions of the Perl Developer Kit and PerlEx.
The Perl bug database (http://bugs.perl.org/) has a new web interface, and complete source code is now available.
Tom Christiansen has posted bunches of updates to his Perl Power Tools (a.k.a. The Unix Reconstruction Project) at http://doriath.perl.com/ppt/. The PPT project aims to rewrite all standard Unix tools in Perl.
John Tobey released the first Hurd translator written entirely in Perl, called pith (Perl Interface to The Hurd). pith (http://john-edwin-tobey.org/Hurd/) currently allows for only trivial translators, but plans are to make it a full-featured set of bindings for the Hurd libraries.
pesh (ftp://ftp.enlightenment.org/pub/enlightenment/pesh/) is a Perl interface to Englightenment IPC. Enlightenment (http://www.enlightenment.org/) is a popular X Window manager.
The KDE module, by Ashley Winters, is a Perl interface to the K Desktop Environment API.
Raino Pikkarainen wrote Astro::MoonPhase to calculate the phase of the moon at any given time. Rob Fugina wrote Astro::SunTime to calculate sunrises and sunsets. Fugina also wrote X10, for controlling X10 devices around your home.
Doug MacEachern wrote the Audio::RaveMP module to interface with the Rave MP audio player. And for an OOP interface to MP3 tags, Sander van Zoest wrote MPEG::ID3v1Tag and Matt DiMeo wrote MPEG::ID3v2Tag.
MIDI::Realtime, from Alex McLean, writes MIDI data to /dev/sequencer in real time, and Marc Lehmann's PDL::Audio modules produce pitches and scales.
Geo::GNUPlot, by James Lee Carpenter, plots latitude/longitude pairs on a world map. Carpenter's Geo::StormTracker works with weather advisory data.
James Tolley's CGI::SSI is an extensible SSI processor. CGI::ArgChecker, by J. David Lowe, is an extensive CGI parameter validation module that relies on Lowe's String::Checker, a generic module for validating strings.
Log::Agent, by Raphael Manfredi, implements a general logging framework.
Smil, from Chris Dawson, creates Synchronized Multimedia Integration Language files. Pete Ratzlaff's pBLADE provides access to the BLADE library (a web based environment similar to Zope, Mason, and Midgard).
As usual, a lot is happening in the Apache namespace. Ask BjØrn Hansen wrote Apache::DumpHeaders for watching HTTP transactions, looking at client and server headers. Clinton Wong wrote Apache::ReverseProxy, which translates an incoming URI to another URI, and Ken Hagan authored Apache::RewritingProxy, which rewrites the fetched documents to fix the links to point back to the proxy.
URI::Find and Email::Find, by Michael Schwern, find URLs and email addresses in strings. Email::Find requires Perl 5.005_63 or higher. Schwern also wrote Class::Fields, for inspecting the fields of a class, and Class::Accessor, which automatically creates accessors for objects. His Class::DBI offers simple persistence, using Class::Accessor.
DBIx::Copy, from Tobias Brox, copies data from one database to another. Doug Bloebaum's DBIx::OracleSequence is an interface to Oracle sequences.
Persistent, by David Winters and Greg Bossert, is a framework of classes that makes it easier to store and retrieve Perl objects to and from various types of data stores. You can store objects to various types of data stores such as text and DBM files, relational databases, LDAP directories, and so on, all with the same programming interface.
DBD::Unify from H. Merijn Brand provides DBI access to Unify databases.
David Harris wrote DB_File::Lock, which creates and flocks a lockfile automatically.
Matt Sisk wrote Finance::QuoteHist to extract historical stock quotes from various web sites. His HTML::TableExtract extracts HTML table data, and Francesc Guasch-Ortiz's HTML::Widgets::Menu aids in building HTML menus.
Bill Birthisel's MARC is a module for handling Machine Readable Cataloging records, and MARC::XML provides XML support for them.
Michael Koehne wrote yet another XML::Handler writer, called XML::Handler::YAWriter. Ryan Eatmon's XML::Stream transmits XML over a socket. XML::XPath, from Matt Sergeant, parses and evaluates XPath statements. Gisle Aas' Data::DumpXML dumps arbitrary data structures as XML.
Aas also wrote Image::Info, which retrieves basic information about image files, and Array::RefElem, which gives direct access to Perl internal functions for storing array and hash values. Mark-Jason Dominus' ArrayHashMonster creates objects that function as arrayrefs and hashrefs, so you can have ordered hashes. CArray, from Reini Urban, implements typed C arrays. Dominus also coded Async, which provides asynchronous evaluation of Perl code.
Mail::Ezmlm, by Guy Antony Halse, is an interface to the ezmlm mailing list manager software. Douglas Wilson's Convert::TNEF is for handling files encoded in TNEF (Transport Network Encapsulation Format, sometimes used for email attachments).
Crypt::Blowfish_PP, from Matthew Byng-Maddick, implements the Blowfish encryption algorithm in pure Perl. Francis J. Lacoste's GnuPG is a Perl interface to the GnuPG public key encryption system, communicating with gpg using shared memory and a status file descriptor.
Gustav Kristoffer Ek's Business::Cashcow clears Internet payment transactions with Danish Payment Systems through an SSL connection.
Dan Brian's Lingua::Wordnet is for accessing and manipulating Wordnet databases. James Briggs' Gettext emulates the gettext API.
Parse::FixedDelimiter and Parse::FixedLength, by Terrence Brannon, parse simple text records.
Sven Heinicke's LaTeX::Parser parses LaTeX files.
String::DiffLine, by Andrew D. Allen, finds the character and line position of the first difference of two strings.
Roland Huß's Schedule::Cron does cron-like scheduling of tasks. Schedule::Load, by Wilson Snyder, provides information and scheduling for server farms.
Jochen Wiedmann wrote Net::Spooler for creating spooling daemons._ _END_ _