Skip to main content.

Web Based Programming Tutorials

Homepage | Forum - Join the forum to discuss anything related to programming! | Programming Resources

Perl 5 Unleashed

appendix B -- Perl Module Archives 737

appendix B

Perl Module Archives 737


Perl is a widely used language for system maintenance, CGI programming, prototyping, and many other functions. Because it is so widely used, many programming examples are available. These range from entire programs to code libraries (modules) that can be used in your programs.

The module extends the Perl 4 concept of packages in Perl 5 to implement a new, standardized form of reusable software. These modules are kept in various archives on the Internet. In addition, there are several home pages devoted to Perl programming that contain links to module archives. This appendix details the resources available at the time of its writing.

Please note: This is not an attempt to detail every module archive. These archive sites represent a major portion of the available sites. Modules, code samples, and complete Perl programs are being produced at a steady pace. Newer archives and some older ones are certain to be missed by this appendix. If I have missed your site, I apologize. The best way to find these sites is to start with the sources listed here and explore.

CPAN Sites

The Comprehensive Perl Archive Network (CPAN) was established to provide a place where these modules could be organized and retrieved. The basic principle of CPAN is being distributed. It would be impossible to coordinate the numerous resources so that all the people contributing Perl material could enter their contributions into some central site. Therefore, most of the contents of the CPAN are mirrored from other sites; CPAN just pulls all the various resources together and layers them into a coherent whole.

Here are the sites available at the time of this writing; this information is likely to change the the time this book is published. The master CPAN site is at (Finland, Europe). Select the site nearest to you from the following list to get the best response time and bandwidth. As an alternative, use, which tries to guess the nearest site for you based on your host's Internet domain name.

South Africa
Hong Kong
New Zealand
Czech Republic
The Netherlands
North America
New York
South America

All the files under each of the directories in this list should be identical at all these sites because they are all automatically maintained mirrors of the master CPAN site.

If you can't find what you want, or want to check that what you've found is the latest version, you can contact the person associated with the module. These are also listed at the site and with the particular module in which you are interested.

The CPAN archives are mirrored and, except for brief periods, are identical. Here is the organization:

README.html The main document.
ENDINGS What to do about files with weird endings.
CPAN.html The list of sites from which CPAN is building itself.
RECENT.html The recent arrivals.
ROADMAP.html Organization of the CPAN sites.
authors/ Modules/extensions by author.
clpa/ comp.lang.perl.announce Usenet newsgroup archives.
doc/ Documentation.
indices/ Various index views of CPAN.
misc/ Miscellanea.
modules/ Modules/extensions.
ports/ Non-UNIX Perl ports, both as executables and source.
scripts/ Do not reinvent the wheel if you can avoid it.
src/ Source code and patches for Perl itself (and for some auxiliary utilities).

The basic archives are organized in three ways:

You can send feedback by e-mail to the CPAN administrators:

In order to examine these archives more fully, let's look at some examples by category.

Module Examples

I won't attempt to list all the available archives. By the time you read this, the contents will, hopefully, be greatly expanded. The modules are organized into several categories. These are detailed in a following section titled "Perl 5 Module List." This list is an excellent resource and is updated and issued periodically.

One important note: many of these modules are works in progress. When you choose to implement a module, be sure to read the accompanying documentation. Many are alpha and beta releases of modules or implement interfaces to standards that are, themselves, changing. Be careful, know what you are dealing with, and approach these modules with an open, informed attitude. If you have questions, contact the person responsible for the module.

The subsections that follow describe these broad categories. Some examples of the modules are presented in each category.

Perl Core Modules, Perl Language Extensions, and Documentation Tools

These modules deal with modifying/handling the Perl core, adding extensions to the Perl language, and documenting the language. An example is the Opcode module, which provides functions for the manipulation of sets of Perl opcodes, including the capability to mask (disable) sets of opcodes.

Development Support

These modules deal with using Perl for development; for example, Devel::embed, which provides utility functions for embedding a Perl interpreter and extensions in your C/C++ applications.

Operating System Interfaces

These are Perl modules that deal with specific operating systems or classes of operating systems. An example is BSD-resource, which is a Perl extension that implements the BSD process resource limit functions

and the BSD process priority functions

Networking, Device Control (Modems), and InterProcess Communication

These are modules that allow/extend Perl to perform networking, modem control, and interprocess communication. SNMP is a Perl 5 extension module that provides an interface to the CMU-SNMPv2 library. There are also modules for implementing FTP and TCP interfaces.

Data Types and Data Type Utilities

These are extensions related to data types and their manipulation. For related modules, see the next section, "Database Interfaces." Here's a list of the extensions:

Database Interfaces

These are extensions to interface with databases. Many utilize the database interface (DBI), which provides a common interface to database drivers for various database engines. Drivers planned or being developed include

DatabaseAuthor/E-mail Address
OracleTim Bunce <>
IngresTim Bunce <>
mSQLAlligator Descartes <>
InformixAlligator Descartes <>
InterbaseBill Karwin <>
DB2Mike <>

In addition, extensions are available for Sybase, msql, and Xbase.

User Interfaces

These modules include both graphic and text interfaces. The modules include

Other Programming Languages

These modules are interfaces to or emulations of other programming languages. At this writing, there are two categories: prolog and TCL.

Filenames, File Systems, and File Locking

All things having to do with files (with the exception of file handles, which are categorized with directories in a following section). File::Tools is a package that implements several file operations under a single umbrella. Libwww-perl is a collection of Perl modules that provides a simple and consistent programming interface (API) to the World Wide Web. There are also several file-locking modules.

String and Text Processing

String- and text-processing extensions seem a little silly in a language that is optimized for text processing. But the modules in this category do serve a purpose.

This category includes parsing and searching modules. There are font-handling utilities included in this category. is a Perl 5 class library for parsing the output from James Clark's SGMLS and NSGMLS parsers. Modules include approximate string-matching capabilities and emulation of the C scanf function.

The text-processing modules include

Options, Arguments, Parameters, and Configuration Files

These are modules to process options, arguments, and configuration files. ConfigReader is a set of classes for reading configuration files. The programmer can easily specify the directives to be read, as well as their default values and a parsing function or method to use. There are also a set of modules for processing both long and short (GNU-style) options.

Authentication, Security, and Encryption

One of a set of security modules. See the network section for additional modules. There are modules for DES, MD5, and PGP handling/interfaces.

World Wide Web

These include HTML, HTTP, CGI, MIME processing and more. Because much of Web page processing is basic text processing, many of the text-processing modules are also helpful. Some of the more useful modules deal with the inconsistencies in HTTP daemons, provide CGI interfaces, and process various MIME types.

Server and Daemon Utilities

UNIX, in general, and the Internet, specifically, depend on servers and daemons to perform much of their processing. These modules interface with or implement servers and daemons.

Image Processing

These modules perform image processing and bitmap manipulation. GD is an interface to the GD library that can create GIF images on-the-fly. OpenGL is a module that allows a Perl program to use OpenGL by letting it make function calls. pgperl is a version of the Perl language that has the PGPLOT FORTRAN library available, a very popular package for plotting astronomical data.

Mail and Usenet News

SMTP mail and Usenet news are essentially a set of text streams. Because Perl is optimized to handle text, it is an obvious choice for manipulating mail and news. Mailtools implements a set of tools for mail processing. POP3Client is, as its name applies, a post office protocol (POP) version 3 client. There are also a couple of NNTP clients and news-handling modules.

Control Flow Utilities

These modules implement callbacks and handle exceptions. For example, Religion provides simplified access to $SIG{__DIE__} and $SIG{__WARN__}, which allow control over what happens when a die() or warn() occurs and (as a side effect) enhance the standard error messages, which is especially useful if you are dealing with eval()s.

File and Directory Handles

These deal with directories and file handles as well as input/output stream utilities.

Miscellaneous Modules

Here is everything else. Because of its ease of use and versatility, Perl is being used in many different ways. At the time of this writing, there are utilities to implement an Archie server/client. There is a routine to interface to freeWAIS and implement a chat client. There is also a module that provides two interfaces to the Remedy Action Request System. The first is a basic interface to the C API provided with the AR system (Remedy::Ar). The second is an object-oriented version of the same (Remedy::Ar::Server and Remedy::Ar::Schema). There is also a Gann Neural Network C++ library and Perl extension.

Perl 5 Module List

If you program for Perl 5, you might want to get a copy of the Perl 5 Module list maintained by Tim Bunce <>.

Introduction to the Perl 5 Module List
This document is a semi-formal list of Perl 5 modules. The Perl 4 concept of packages has been extended in Perl 5, and a new standardized form of reusable software components has been defined: the Module. Perl 5 modules typically conform to certain guidelines that make them easier to use, reuse, integrate, and extend. The list is posted to comp.lang.perl.announce and comp.answers on a semi-regular basis. It has two key aims:
  • For developers: To change duplication of effort into cooperation
  • For users: To quickly locate existing software that can be reused
This list includes the Perl 5 standard modules, other completed modules, work-in-progress modules, and would-be-nice-to-have ideas for modules. It also includes guidelines for those wishing to create new modules, including how to name them.

To give you an idea what can be found on the list, here is the table of contents from revision 2.21 dated March 21, 1996. The list is posted periodically to the comp.lang.perl.announce and comp.answers newsgroups.


     Where Are The Modules Kept?
     Playing Your Part
     How To Get a More Recent Copy of the List
     Editorial Information and Copyright

Part 1 - Modules: Creation, Use and Abuse

1)   Perl 5 Module Terminology
2)   Guidelines for Module Creation
3)   Guidelines for Converting Perl 4 Library Scripts into Modules
4)   Guidelines for Reusing Application Code

Part 2 - The Perl 5 Module List

1)   Module Listing Format
2)   Perl Core Modules, Perl Language Extensions and Documentation Tools
3)   Development Support
4)   Operating System Interfaces
5)   Networking, Device Control (modems) and InterProcess Communication
6) ! Data Types and Data Type Utilities
7)   Database Interfaces
8)   User Interfaces
9)   Interfaces to or Emulations of Other Programming Languages
10)  File Names, File Systems and File Locking (see also File Handles)
11)  String Processing, Language Text Processing, Parsing and Searching
12)  Option, Argument, Parameter and Configuration File Processing
13)  Internationalization and Locale
14)  Authentication, Security and Encryption
15)  World Wide Web, HTML, HTTP, CGI, MIME
16)  Server and Daemon Utilities
17)  Archiving, Compression and Conversion
18)  Images, Pixmap and Bitmap Manipulation, Drawing and Graphing
19)  Mail and Usenet News
20)  Control Flow Utilities (callbacks and exceptions etc)
21)  File Handle and Input/Output Stream Utilities
22)  Microsoft Windows Modules
23)  Miscellaneous Modules

Part 3 - Big Projects Registry

1)   Introduction
2)   Items in the Todo File
3)   Perl Compiler
4)   Multi-threading
5)   Object Management Group CORBA & IDL
6)   Expand Tied Array Interface
7)   Tied File Handles
8)   Extend Yacc To Write XS Code
9)   Updatable Module List via WWW Forms
10)  Approximate Matching Regular Expressions

Part 4 - Who's Who and What's Where

1) ! Information / Contact Reference Details
2)   Perl Frequently Asked Questions (FAQ) Files
3)   Other Perl Archive Sites

Key: '+' indicates a new section or item,
     '!' indicates a changed section or item (typically new modules).


Again, because Perl is a popular language designed to get things done, there is a lot of help out there. It is likely that someone has done what you are attempting or has done something similar and can point you to a code example or module similar to the one you are designing.

Newsgroups are a good place to interact with these resources and a good place to find out about new modules available at the various sites. You might want to start with these newsgroups when you are looking for a particular module or need help with your Perl programming.

One note: there appears to be a great deal of cross-posting in these newsgroups. If you look to these groups to find something (and you probably will have to examine them all), you'll have to wade through a lot of cross-postings to find the "good stuff."

comp.lang.perl... This set of newsgroups covers information about Perl in general. Much of the discussion in the specific groups covers using Perl for utility purposes and also as a CGI scripting language. Presumably, any new newsgroup started will be under this high-level structure.
comp.lang.perl.announce Information about Perl itself and new modules for Perl programming.
comp.lang.perl The main newsgroup about Perl. This is a good place to start when you're looking for Perl information.
comp.lang.perl.modules Discussions of Perl modules. This newsgroup also contains information about new/revised Perl modules available.
comp.lang.perl.misc Intended as a place where discussions that don't fit in the other newsgroups end up. However, it seems mostly to be a place where cross-postings end up.
comp.lang.perl.modules Discussions of Perl modules. This newsgroup also contains information about new/revised Perl modules available. Discussions of tk use with Perl.

Web Pages

Here are Web pages devoted to Perl. They can be good sources of information and modules. If I have missed your site (or your favorite site), I apologize. Any attempt to compile a "complete" list of any type on the Internet is futile. (The Open Text Search Index returned 13,035 references for Perl.)

These are examples of the large amount of information available on the Web about Perl. Many contain links and are valuable starting points for resources. They are presented in alphabetical order with my comments:

Web Page TitleAddress/Content
Adam Rifkin's Perl
Perl links.
Andy Dougherty's
Perl 5 Page perl.html
Perl 5 links.
An Introduction to Perl
Computers and Internet:
Internet:World Wide Web:
Programming:Perl Scripts
Index of Perl/HTML
ArchivesLinks to scripts and archives involving HTML.
Jeffrey's Perl Stuff
A collection of Perl written by Jeffrey.
Lincoln Stein's Homepage
Perl utilities.
Malcolm Beattie's work
on Perl 5
Information on the Tk extension to Perl.
Matt Kruse's Perl Scripts
Original scripts by Kruse. Here is his introduction:
"Welcome to my page of Perl scripts! I think I have
some good scripts below, and I hope you find them
useful. I don't claim to be a Perl master, or even an
experienced programmer. But my emphasis is
developing applications that are original, useful, and
challenging to me. I can always learn to program better
(and I always am), but originality and conceptual design
are, in my opinion, things that aren't as easy to learn."
Web Page TitleAddress/Content
Matt's Script Archive
It seems as if people named Matt are into Perl programming. This is a different Matt, but the same concept - as Kruse's page. These are specifically for the Web.
Perl links.
Perl for Win32
Information on the specific Perl implementation for
Windows 95/NT.
Perl Language Homepage
A great deal of information about Perl. Search for Perl
archives and more.
Perl on VMS
Perl Pages
A small site with a mailer and BBS package for WWW.
Perl Program for Retrieving
Web DocumentsA site devoted to this particular Perl script.
Perl Reference Materials
A list of reference materials including books, online
guides, FAQs, the man page, newsgroups, archives, and
other resources.
Perl goodies related to the WWW.
Information on and links to Perl version 5 for IRIX.
Pernicious Perl Page
A growing set of links about Perl on the Web.
SCG Script Archives
Currently contains modules useful to maintaining
WWW documents.
By Tom Christiansen. Here is his description: "This is
a cookbook of recipes for building up complex data
structures in Perl. It has been extracted from a much
larger and more expository document to be published in
pod format and included with the standard Perl
distribution. The goal is to provide cookbook-like,
cut-and-paste examples of the most often used data
structures in Perl."
Web Page TitleAddress/Content
The Perl Packrats
A semi-complete listing of Perl archives.
Web Developer's Virtual
Library:PerlPerl links.
Web Hacking Scripts
Interesting scripts from Tom Christensen.
Web Weaver's Warren
A Perl-related archive.
Perl links.
Yahoo! - Computers and
Yahoo! is one of the Web's most noted search indexes.
This page lists Perl links from that resource.

Frequently Asked Questions (FAQ) Lists

Like many things on the Internet, there are FAQs maintained about Perl. They can be useful in determining what is available and what can be done. These FAQs are posted periodically in the Perl newsgroups. Here are two with sources at the time of this writing.

Perl Meta-FAQ

The meta-FAQ is a list detailing other resources and FAQs. This is a good source if you are looking for a version of Perl for a specific platform or with a particular capability:

Perl FAQ

The main FAQ for the Perl language. It contains questions about programming, sources of modules, and more on the Perl language:

Mailing Lists

At the time of this writing, there are a number of mailing lists related to Perl.
This list is for discussion of Perl 5 design and porting issues. Subscribe by e-mailing with subscribe perl5-porters {your mail address}.
These lists are used to discuss issues involving Windows NT and Perl 5. Subscribe by e-
mailing with subscribe {perl-win32|perl-win32-users|perl-win32_announce} {your mail address}.
This list is for discussions related to archiving of Perl materials, particularly the Comprehensive Perl Archive Network (CPAN). Subscribe by e-mailing with subscribe perl-packrats {your mail address}.
This list is for discussion related to using to build and install Perl 5 extensions and for disributing patches to this module. Subscribe by e-mailing majordomo@franz.ww.TU-Berlin.DE with subscribe makemaker {your mail address}.
This list is for people working on and with the Tk modules in Perl. Subscribe by e-mailing with subscribe ptk {your mail address}.
This mailing list is for developers working on Perl CGI modules. Subscribe by e-mailing with subscribe CGI-perl {your mail address}.
This mailing list is for developers working on or using libwww-perl. Subscribe by e-mailing libwww-perl-request@ics.UCI.EDU with subscribe libwww-perl {your mail address}.
The DBperl Mailing Lists
Send mail to
MacPerl Mailing List
This mailing list is for discussions related to Perl on the Mac. Send mail to with the body subscribe.

Other Resources

Of course, you can use any of the Internet search engines out there. You might want to limit your searches, however. As mentioned, when I selected Perl at the Open Text Index, I received over 13,000 hits! I'd suggest that you use Perl along with other keywords describing the type of module you are looking for. For example, by specifying both Perl and modules, the number of hits was reduced to 45.

There are other resources on the Internet. Again, not complete, but a good starting point.

Sunsite Perl Archives
Check the INDEX for the table of contents. Mirrors the defunct Coombs archive.
Ohio State University
Software Research
AssociatesBesides scripts, this site also archives various versions of Perl, including those for MS-DOS (4.036), PerlMac, and Windows NT
This site includes modules for Win32 Perl, including an ODBC interface module.


The number of Perl resources is growing on the Internet, primarily due to the popularity and utility of this language. Use this appendix as a starting point for your Perl search. In addition, check my personal Perl page at

I will try not to duplicate the other resources on the Net, but will attempt to keep up with additional and informative Perl resources (as well as post a couple of my own Perl scripts).