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 |