In case you haven't heard, there's a new way to grapple with input and output in Perl: Graham Barr's IO module set, which provides an object-oriented interface for files, pipes, and sockets. Graham also has a new version of the libnet bundle, which includes the Net::FTP, Net::NNTP, and Net::SMTP modules, among others.
Graham has also released a new version of his MailTools distribution, a set of modules that let your Perl programs read, create, sort, parse, and manipulate e-mail. Along the same lines, Kevin Johnson has released a new version of his Mail::Folder module.
The CDB_File module is Tim Goodwin's interface to Dan Bernstein's cdb package. cdb is yet another DBM in the spirit of the SDBM, GDBM, and Berkeley DB database managers - except that once you create your database, you can't modify it. The resulting "constant database" yields savings in both space and time. See http://pobox.com/~djb/cdb.html and CDB_File on the CPAN.
There are three new ways to find modules on the CPAN. The first, for browsing, is my CPAN/CPAN.html, which has brief descriptions of all the modules, some of them copied liberally from this column. The second, for searching, is Norbert Gövert and Ulrich Pfeifer's WAIT system at http://ls6-www.informatik.uni-dortmund.de/CPAN.html, which uses approximate matching to search module documentation. Finally, there's Randy Kobes' CPAN Search Engine at http://theory.uwinnipeg.ca/search/cpan-search.html, which lets you throw boolean queries against CPAN module names, files and directories, author names, and the Perl documentation.
The Comprehensive Perl Archive Network (CPAN)
Whatever Apple does with NeXT, MacPerl will continue to be useful. Matthias Neeracher, who wrote about MacPerl in TPJ #2, distinguished between the new part of the Apple OS - the "yellow box", and the familiar MacOS part - the "blue box." Since Perl compiles just fine on NeXTSTEP, it will run as-is on the yellow box. On the blue box, MacPerl will continue to thrive.
Nick Ing-Simmons has released the beginnings of two promising modules: Regexp, an XS wrapper on Perl's internal regex code that allows an OO interface (e.g. $re = new Regexp q/\w+/; $v = $re->match($line);) and Audio, a module for manipulating audio files.
Jason Smith has released a new version of ptkmines, a Perl/Tk version of Minesweeper. Available at http://hadron4.phys.rpi.edu/~smithj4/software/ptkmines.
Johan Vromans has released a new version of his Getopt::Long module, which provides sophisticated @ARGV processing.
The GNU Readline library, which supports command-line features such as line editing, history management, and word completion has been interfaced to Perl via Hiroo Hayashi's Term::ReadLine::Gnu module.
Thomas Boutell's shareware PerlMUD (Multi-User Dungeon) is available at http://www.boutell.com/perlmud/, or try it out at http://boutell.com:4197 or by telnetting to boutell.com, port 4097.
Steffen Beyer released a new version of his Set::IntegerFast module, which lets you perform efficient operations on sets of integers. Steffen also released Math::MatrixReal, which provides a slew of matrix operations. Then he released version 3.0 of his Date::DateCalc module, which offers a wide range of date calculations based on an ISO spec for the Gregorian calendar.
The Multi-Router Traffic Grapher (MRTG) is a tool written by Tobias Oetiker that monitors the traffic load on a network, generating HTML pages with GIF images. See http://www.ee.ethz.ch/~oetiker/webtools/mrtg.
PERCEPS is Mark Peskin's documentation generator for C++ header files. Let Perl read C++ so you won't have to. Mark's program can be found on the web at http://friga.mer.utexas.edu/mark/perl/perceps.html.
The Netscape::History module, by Neil Bowers and Richard Taylor, parses the history format of Netscape browsers.
Michael Fuhr's Net::DNS module is an interface to DNS (Domain Name System) resolvers. You perform any type of DNS query with the module.
Also in the Net:: category - Net::Ident, by Jan-Pieter Cornet. Net::Ident lets you extract the user name from the other end of a TCP/IP connection. (This only works if the remote site is running IDENTD.)
Gurusamy Sarathy has released a new version of Data::Dumper, which stringifies data structures. It's quite helpful for displaying nested data structures, or writing them to disk in a machine-independent format. There's also a new release of Gurusamy's Alias module, which lets you create short synonyms for variables no matter how many $, -> and {} symbols are in its name. Also check out his Tie::IxHash, which lets you pretend your hashes are ordered.
Version 0.4 of the Storable module, by Raphaël Manfredi, has been uploaded to the CPAN. It provides persistency for basic data structures (scalars, arrays, hashes, and references to them).
The Unix df command tells you how full your disks are. Should your Perl programs need to know, they can use Fabien Tassin's File::Df module.
Also in File:: is Carey Evans' File::Sync, which implements fsync() and sync(). These functions make sure that your computer and your disk are...in sync.
Fabrizio Pivari has created Graph Maker, which is a simple script that uses the GD module to generate GIFs. See the CPAN for CD and http://www.agip.it/~pivari/graphmaker.html for Graph Maker.
If you're into the other sort of graphs - the branch of mathematics called graph theory - try out Neil Bowers' graph-modules bundle, which contains modules for constructing directed graphs.
The Term::ANSIColor module, by Russ Allbery, will prove handy if you're always forgetting the escape codes for ANSI text attributes.
If you have a GIF, or most any other image, and you wished you knew how big it was, use Randy Ray's Image::Size module, which has a raft of new features in version 2.0.
Ilya Zakharevich's Text::TeX module enables parsing of TeX documents.
The PerlMenu package, by Steven Kunz, facilitates the creation of ASCII menus with William Setzer's Curses (character graphics) module.
Yet another Time module has been released. Patrick Ryan's Time::Period provides one function, inPeriod(), which determines whether a certain point in time falls within a given period.
Randal Schwartz, author of the O'Reilly Perl books, father of the JAPH, and triple felon (due to a tragic collision between computer law and common sense), has finished the 240 hours of community service imposed by the State of Oregon. 90 days jail time and $35,000 restitution remain as part of his sentence. See http://www.lightlink.com/fors/intro.html for details.
Advance notice: The 1st Annual Obfuscated Perl Contest, successor to last year's 0th Annual Contest,
If your module is of general interest to Perl programmers and is on the CPAN, let me know! Send a brief description to submissions@tpj.com for inclusion in this column.