|Unless otherwise noted, all modules and documentation mentioned here are available on CPAN, at http://www.perl.com/CPAN/.
This column's online companion is the Perl News at http://www.perl.org/news.html. To join the firstname.lastname@example.org mailing list, sent (semi-)daily with all the latest Perl news, send the message "subscribe daily-news" to email@example.com.
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 firstname.lastname@example.org.
"But how did we get here?" asked Milo.
"You jumped, of course," explained Canby. "That's the way most everyone gets here. It's really quite simple: every time you decide something without having a good reason, you jump to Conclusions whether you like it or not. It's such an easy trip to make that I've been here hundreds of times."
"But this is such an unpleasant-looking place," Milo remarked.
"Yes, that's true," admitted Canby; "it does look much better from a distance."
--- The Phantom Tollbooth, by Norton Juster
Microsoft is now supporting ActiveState, the folks who produce ActivePerl and Perl tools for Win32, for Perl development and support.
Of course, ActiveState has already been developing Perl for some time, but the Win32 Perl port is lacking in some key areas that Microsoft wants improved. The deal will bring a fork to Win32 Perl for the first time, implemented using threads and multiplicity. Since this code will be part of the Perl source, it will be under the same licensing as the rest of Perl, and other forkless platforms (VMS, Mac OS) could benefit too. The deal will also include globalization work, including Unicode support for %ENV and @ARGV strings, and Microsoft Installer support and PerlScript performance boosts (PerlScript is an ActiveX scripting engine).
Many users on web sites, mailing lists, and Usenet criticized the move, saying that Microsoft is beginning to "embrace and extend" Perl. Some cited the fact that Microsoft is now paying ActiveState, which employs the current head of Perl development, Gurusamy Sarathy, and expressed fears that Microsoft would control Perl development. Others believed Microsoft would introduce a proprietary or incompatible version of Perl.
Some members of the perl5-porters mailing list voiced their support for Sarathy and the deal. There was initial concern from some members, but their fears seemed to be allayed after a brief discussion. Noted Unix advocate Tom Christiansen said Win32 Perl being able to fork is a "tremendous thing," and added, "I'd say to reserve one's fears until there's something to fear." ActiveState CEO Dick Hardt emphasized that the Microsoft deal is good for Perl, and there isn't any real danger from Microsoft through the deal. "They're not controlling anything we're doing," he said.
More information can be found on the ActiveState web site (http://www.activestate.com/) including the press release and FAQ. Development under the deal has already begun, and a beta of the next version of Perl, 5.6, will include at least some of the Microsoft-funded code.
"What's this," you say, "about 5.6?" The next version of Perl will sport a new versioning system. Rather than 5.006 and 5.006_01, it will be called 5.6 and 5.6.1. Comparisons will likely be overloaded, so version 5.10 (should we get that far) will be greater than 5.6.
Sarathy said that he is aiming for a beta release by August 19th, right before the Perl Conference. The current stable releases of Perl are still 5.004_05 and 5.005_03, both being maintained by Chip Salzenberg. At the time of this writing, the most recent development version if 5.005_60.
Richard Foley maintains the perlbug database, which tracks bugs sent to email@example.com. The database is online for perusal at http://www.perl.org/perlbug/pbdb.cgi, and has been recently extended to track bugs for multiple platforms.
Perl Conference 3.0 (http://conference.oreilly.com/) came and went in August, but since this column's deadline came and went before TPC started, there's not much to say. The Monterey conference will include (included?) keynote addresses from former Apple guy Guy Kawasaki and Sun legend Bill Joy, with a full two-day program of Perl sessions (and two full days of sessions on Linux, Python, Apache, sendmail, and Tcl if participants somehow manage to get bored with the available Perl fare).
The first annual yet another perl conference (http://www.yapc.org/) was a big hit. The June conference kicked off with a keynote by Larry Wall, which organizer and TPJ contributor Kevin Lenzo said helped legitimize the affair. Lenzo announced that next year the conference would once again be held at Carnegie Mellon University, with even greater access to facilities than this year, allowing for more attendees.
Can we all handle one more event? Camp Camel (http://www.inlink.com/~perlguy/campcamel/) is being sponsored by Perl Mongers (http://www.pm.org/). It will be a free getaway for Mongers, held September 17–19 near Weyerhaeuser, Wisconsin.
Perl Mongers and ActiveState announced a forthcoming CD-ROM at yapc, which will contain documents and resources for using Perl, and should be available soon (if it isn't already). Perl Mongers also announced the White Camel Awards, to be presented at the Perl Conference. They were presented to the "unsung heroes" who have devoted extraordinary time, creativity, and energy for non-technical work for the Perl community: Tom Christiansen, Kevin Lenzo, and Adam Turoff.
Would you like to be a monger? Lots of new groups, as always, are forming. Most recent additions include, in these 50 states: Annapolis, Burbank, Cambridge MA, Columbus OH, Detroit, Elkins WV, Green Bay WI, Hanford CA, Harrisburg PA, Indianapolis, Irving TX, Kalamazoo MI, Louisville KY, Middletown NY, Milwaukee, Richmond IN, Sacramento, San Bernardino CA, San Jose CA, Sarasota FL, and Springfield MA.
And abroad: Bathgate (Scotland), Berlin, Bratislava (Slovakia), Cape Town, Donetsk (Ukraine), Dunedin (New Zealand), Edinburgh, Las Palmas de Gran Canaria (Spain), Lucerne (Switzerland), Maceio (Brazil), Manchester (United Kingdom), Munich, New South Wales (Australia), Nottingham (UK), Porto (Portugal), South Wales (UK), Torino (Italy), Varese (Italy), and Wageningen (Netherlands).
Some new books are hitting the shelves. Damian Conway's Object Oriented Perl, available from Manning Publications, is the first book devoted to OOP in Perl. Not to be outdone, O'Reilly has Mastering Algorithms in Perl by Jon Orwant, Jarkko Hietaniemi and John Macdonald, the first book devoted to algorithms in Perl. O'Reilly also has, for the programmer on the go, The Perl CD Bookshelf, which includes Perl in a Nutshell, Programming Perl, Perl Cookbook, Advanced Perl Programming, Learning Perl, and Learning Perl for Win32 Systems all on one CD-ROM. Okay, the CD-ROM is kinda-sorta not a book. So as a bonus, you can get something peripherally related to Perl, the new O'Reilly title MySQL & mSQL.
What else is new around the Internet? O'Reilly's www.perl.com has a new look with easier access to software, references, and documentation, daily recipes from the Perl Cookbook, news items, and Larry quotes. Elaine Ashton has CPAST, the Comprehensive Perl Arcana Society Tapestry (http://history.perl.org/). The name doesn't exactly say it, but as the acronym hints, the site is devoted to Perl history. Jeff Pinyan's CRAP is the Crusade to Reconstruct Awful Programs (http://www.crusoe.net/~jeffp/perl/crap/). The name and acronym say it all.
Along similar lines, Vicki Brown has the Fun With Perl list, devoted to code snippets, good and bad, that are remarkable for some reason. Send the body "subscribe" to firstname.lastname@example.org. In other list news, the MacPerl list archives are now online at http://bumppo.net/lists/mp.html (including a Sherlock plugin) thanks to Nathaniel Irons, and Sean Burke has a list for the MIDI-Perl distribution at email@example.com.
Moving right along the ether, a new online periodical devoted to Perl, PerlMonth, has been going along steadily since May. PerlMonth (http://www.perlmonth.com/) has an excellent group of authors, including several TPJ authors, and covers a wide range of topics each month.
Mark-Jason Dominus' Tie::HashHistory interposes itself between your program and a tied hash. Fetching and storing seem completely normal, but the module keeps a record of all the changes to the each key, and it can return a list of all the values the key has ever had, in chronological order.
Tangram from Jean-Louis Leroy makes objects persist in relational databases, and provides facilities for retrieving and filtering them. Persistence::Object::Simple is from Vipul Ved Prakash and provides persistence via Data::Dumper.
Sean M. Burke released a couple of modules for dealing with classes, Class::Classless and Class::BlackHole. The former provides a framework for classless OOP, and the latter is a base class allowing unhandled method calls to be treated as no-ops. Benjamin Franz released Class::ParmList and Class::NamedParams, base classes for working with named parameters.
Franz also released Search::InvertedText, an inverted indexing system suitable for medium scale searching. It requires his aforementioned Class:: modules, along with his modules Tie::DB_File::SplitHash (splits DB files into multiple files) and Tie::FileLRUCache (which implements a simple Least Recently Used cache).
MandrakeSoft is working on a project called DiskDrake, a hard disk partitioning system for Linux, written entirely in Perl/Gtk. See http://www.linux-mandrake.com/diskdrake/ for more information.
Metrowerks' flagship product CodeWarrior, a C, C++, and Java IDE for Windows and Mac OS, has a Perl plugin on the Pro 5 Reference CD-ROM that allows scripting of builds and access to the IDE with Perl.
BBEdit, the popular Mac OS text editor, has built-in support for MacPerl in version 5.1. Perl programs (including droplets, runtimes, and all other types) can be opened and saved directly from BBEdit. From the MacPerl menu, one can run or syntax check a program, with errors optionally going to the BBEdit error browser. The HTML preprocessor can now call Perl programs, and Perl filters can be used to process the contents of a text window.
Also released for MacPerl use is an updated cpan-mac, with tools and modules for using CPAN and installing modules. A new document macperlmodinstall discusses how to use these and other tools to download and install modules for use with MacPerl. Released into beta was Mac::Glue, which provides a framework for controlling Mac apps with MacPerl by providing vocabulary similar to AppleScript (Apple event terminology resources) to MacPerl. All of these are available at http://pudge.net/macperl/.
The Event module, which provides a standard event loop for developing event-driven applications, has reached version 0.51. Joshua N. Pritikin's module requires Perl 5.005_03 or greater, and should build on most Unix platforms. There is a perl-loop mailing list for discussion, hosted by perl.org.
Crypt::Rot13 from Julian Fondren is better than tr/A-Za-z/N-ZA-Mn-za-m/ not just because it offers an OOP interface, but also because you can rotate the letters at some number between 0 and 26 other than 13. Fondren's Text::Bastardize corrupts innocent text, with methods for censoring inappropriate content, rot13, numerical abbreviations, pig Latin, and k3w1t0k.
libxml is a group of modules from Ken MacLeod for working with XML.
Eric Bohlman released Text::Query::Advanced and Text::Query::Simple, both deriving from Text::Query, for matching text with boolean expressions. The advanced and simple modules are similar to the AltaVista advanced and simple searches. Loic Dachary wrote Text::Query::SQL, for converting queries into SQL statements.
There is Yet Another template module, this one from John Porter, called Text::Macros, which allows user-defined macro styles in templates.
Jcode from Dan Kogai performs character set translations for Japanese (to/from Unicode, kana variants, UTF-8, and others). It requires MIME::Base64.
Russ Allbery wrote Pod::SimpleText as a potential replacement for Pod::Text and pod2text in the Perl distribution. It uses Pod::Parser instead of implementing its own parsing, and can be subclassed easily (Pod::Text::Color and Pod::Text::Termcap are included).
Arnar M. Hrafnkelsson wrote File::FDpasser for passing open file descriptors between unrelated processes. Arnar also wrote Imager, a module for creating high-quality, 24-bit images, using external libraries to work with PNG, JPEG, GIF, and other formats.
Font:TTF, by Martin Hosken, provides facilities to manipulate TTF font files.
Tuomas J. Lukka wrote Graphics::Simple, a module that emulates something like the graphics API provided by Commodore-64 or VIC-20 in Perl, and can be extended to any number of graphic devices. Currently Gnome Canvas and PostScript are supported.
Ken MacFarlane's Image::DeAnim de-animates animated GIFs. It is designed to be used with a proxy server. GIFGraph::Map from Roman Kosenko creates image maps for use with graphs created with GIFGraph.
Astro::SLA from Tim Jenness provides access to the SLALIB library, used by writers of positional-astronomy applications. The library contains 171 routines that are mostly concerned with astronomical position and time, but some also have wider trigonometrical, numerical, and general applications.
SETI::Stats is a module from Martin Hamilton for processing SETI@home stats. SETI@home (http://setiathome.ssl.berkeley.edu/) is the Search for Extraterrestrial Intelligence at Home program, a distributed computing effort to analyze radio telescope data.
Robert Rothenberg's Bundle::Weather is a collection of modules for processing weather information (forecasts, observations, and so on).
Frank Tobin wrote PGP::GPG::MessageProcessor and PGP::PGP5::MessageProcessor to encrypt, sign, decrypt, and verify messages with GPG (GNU Privacy Guard) and PGP 5 (Pretty Good Privacy).
Doug MacEachern wrote Xmms, a suite of modules to control the popular xmms MP3 player, offering an optional shell interface to the player. Similarly, Audio::Play::MPG123, from Marc Lehmann, controls the mpg123 MP3 player. Joern Reder's MPEG::MP3Play (in version 0.01 as of this writing) does direct playback of MP3 files, interfacing to the Xaudio SDK.
Doug also released Apache::DB, which hooks the Perl debugger into mod_perl. Ask Bjorn Hansen's Apache::Usertrack is a Perl version of the Apache module mod_usertrack, and Matt Sergeant's Apache::MimeXML is a MIME encoding sniffer for XML files.
Tom Phoenix wrote List::Permutor to provide all possible permutations of a list. Graham Barr re-released the builtin distribution as Scalar::List::Utils, a package of subroutines that some people have wanted in the Perl core.
_ _END_ _