Troubleshooters.Com and 1/2001 Troubleshooting Professional Present

Selected CPAN Modules
Copyright (C) 2000 by Steve Litt. All rights reserved. Materials from guest authors copyrighted by them and licensed for perpetual use to Troubleshooting Professional Magazine. All rights reserved to the copyright holder, except for items specifically marked otherwise (certain free software source code, GNU/GPL, etc.). All material herein provided "As-Is". User assumes all risk and responsibility for any outcome.

The following are just a very few of the handy modules you can find at CPAN (Comprehensive Perl Archive Network, http://www.cpan.org/.). It represents just the tip of the iceberg. Additionally, CPAN does not contain all the handy Perl modules. Many are available other places on the 'net. And of course, Python and other languages have their own handy modules.
 
Netscape::Bookmarks parse, manipulate, or create Netscape Bookmarks files
Netscape::History Object class for accessing Netscape history database
AltaVista::SearchSDK Perl extension for AltaVista Search Software Development Kit. Think that might be valuable in certain situations?
DBI and DBD Database interfaces for many databases, including Altera SQL Server, CSV files, DB2, Empress, MS SQLServer and Sybase, Informix, Informix SE 4.10, Ingres, Msql, Mysql, ODBC, Oracle, QBase, PCDOCS/Fulcrum SearchServer, Solid, Sybase, and XBase.
XBase Read/write interface to XBase files 
VCS::CVS Interface to GNU's CVS 
IO:: All sorts of wrappers for file and pipe I/O.
Log:: All sorts of logging functionality.
AtExit atexit() function to register exit-callbacks 
Callback Define easy to use function callback objects 
Archive::Tar  Read, write and manipulate tar files
Archive::Zip Provide an interface to ZIP archive files. 
Compress:: Interfaces to various compression, including Bzip2, LZO, Lev-Zimpel-Vogt, Info-Zip zlib. Note that some of these technologies may be patented -- please don't do anything illegal.
Convert:: Conversion to and from many formats, including ASN.1, BER messages (can you say SNMP?), Mac BinHex, ASCII to/from EBCDIC, scientific notation numeric conversion, multi character set conversions, and UUencode and UUdecode 
File:: Many, many functionalities including return basename of a filename, csh-compatible filename globbing, Check file/dir tree against a specification, Symbolic chmod, File compare, Copying files or filehandles, Persistent counter class, Free disk space utilities, Call func for every item in a directory tree, Auto-create locks, Parse directory listings, File locking using flock() and lockf(), Interface to lockf system call, File path and name utilities, Read/write/append files quickly, Emulate some functions of sort(1), Handling files and directories portably,
 A by-name interface for the stat function, POSIX/*nix fsync() and sync(), A more efficient tail -f. 
Filesys:: Includes  Disk free based on Filesys::Statvfs, OS independant parser of the df command, Interface to the statvfs() system call, and Translate mode 0644 to -rw-r--r--.
Algorithm:: Diff (also Longest Common Subsequence), Knuth's sample algorithm, Knuth's shuffle algorithm, Handy and fast permutation with object oriented interface.
Array:: Comparing arrays, handling arrays using IntSpan techniques, and print elements in vertically sorted columns (think this might be nice for quick reports?) 
Bit::Vector Efficient bit vector and set base class 
Class:: This is for those guys who truly think OOP. Includes:
Accessor - Automated accessor generation,
BlackHole - Base class to treat unhandled method calls as no-ops,
Classless - framework for classless OOP,
Contract - Design-by-Contract OO in Perl.,
DBI - imple Object Persistance,
Fields - Inspect the fields of a class,
Handler - Create Apache-like pseudoclass event handler,
ISA - report the search path for a class's ISA tree,
MethodMaker - a module for creating generic methods,
Multimethods - Support multimethods and function overloading in Perl,
Mutator - Dynamic polymorphism inplemented in Perl,
NamedParms - A lightweight named parameter handling system,
ParamParser - Perl module that provides complex parameter list parsing,
ParmList - A collection of routines for processing named parameter lists for method calls,
Singleton - Implementation of a "Singleton" class,
Template - Struct/member template builder,
Translucent - A base class for translucency,
Tree - C++ class hierarchies & disk directories,
Whitehole - base class to treat unhandled method calls as errors. 
Data::DRef
Data::Dumper
Data::Flow
Data::Locations
Data::Reporter 
Nested data access using delimited strings
Convert data structure into perl code
Acquire data based on recipes
Handles nested insertion points in your data
Ascii Report Generator 
Date:: Gregorian calendar date calculations, Conversion between Gregorian, Hebrew, more? 
Decision::Markov Build/evaluate Markov models for decisions. I don't know what this is, but it sure sounds interesting.
DFA:: Discrete Finite Automata command processor and an "augmented transition network". Can you say Comp Sci?
Heap:: For you guys who want to implement your own heap in Perl. 
Math:: It's a rare programmer who knows enough math to use everything in this set of modules. Includes all sorts of stuff, simple, complex, and even obscure. If it involves math or numbers, look here.
Object::Interface
Object::Transaction 
Allows specification of an abstract base class
Virtual base class for transactions on files containing serialized hash objects (say what?)
Persistent:: An Abstract Persistent Base Class, an Abstract Persistent Class implemented using a DBI Data Source, and persistent classes implemented using a LDAP Directory, a mSQL database, a MySQL database, a Sybase database, and an Oracle database.
Set::Bag
Set::IntRange
Set::IntSpan
Set::Object
Set::Scalar
Set::Window
bag (multiset) class
Set of integers (arbitrary intervals, fast)
Set of integers newsrc style '1,5-9,11' etc
Set of Objects (smalltalkish: IdentitySet) JLLEROY
Set of scalars (inc references)
Manages an interval on the integer line
Sort::ArbBiLex
Sort::Fields
Sort::PolySort
Sort::Versions 
make sort functions for arbitrary sort orders
Sort lines containing delimited fields
general rules-based sorting of lists
sorting of revision (and similar) numbers 
Statistics:: If your assignment involves statistical analysis, use this stuff to substitute for your missing Statistics expertise.
Chart::Base
Chart::GnuPlot
Chart::Graph
Chart::Pie
Chart::Plot
Chart::XMGR
Business chart widget collection
Access to gnuplot library
front-end to gnuplot and XRT
Implements "new Chart::Pie()"
Graph two-dimensional data (uses GD.pm)
interface to XMGR plotting package
GD GIF editing/painting/manipulation
GIFgraph Package to generate GIF graphs, uses GD.pm
Gimp Rich interface to write plugins for The Gimp
Graphics::Libplot
Graphics::Simple
Binding for C libplotter plotting library
Simple drawing primitives
Image::Grab
Image::Magick
Image::Size
Grabbing images off the Internet
Read, query, transform, and write images
Measure size of images in common formats
MPEG::MP3Info Extract/edit tag information in MP3 files
OpenGL Interface to OpenGL drawing/imaging library
PGPLOT scientific graphs