The Perl 5 Module List

Maintained by Tim Bunce and Andreas König <modules@perl.com>;
$Revision: 3.28 $$Date: 2000/02/08 20:53:57 $

Contents

Introduction
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
5) Namespace Coordination

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, Hardware Drivers
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, Directory Handle and Input/Output Stream Utilities
22) Microsoft Windows Modules
23) Miscellaneous Modules
24) Interface Modules to Commercial Software

Part 3 - Big Projects Registry

1) Items in the Todo File
2) Multi-threading
3) Object Management Group CORBA & IDL
4) Expand Tied Array Interface
5) Extend Yacc To Write XS Code
6) Approximate Matching Regular Expressions

Part 4 - Standards Cross-reference

1) IETF - Internet Engineering Task Force (RFCs)
2) ITU - International Telegraph Union (X.*)
3) ISO - International Standards Organization (ISO*)

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

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


Introduction

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 standardised form of reusable software component has been defined: the Module.

Perl 5 Modules typically conform to certain guidelines which make them easier to use, reuse, integrate and extend.

This list will be posted to comp.lang.perl.announce and comp.answers on a semi-regular basis. It has two key aims:

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.

Where Are The Modules Kept?

Most, but not all, of the modules can be found within CPAN, the Comprehensive Perl Archive Network of mirrored FTP sites. Within the CPAN scheme the modules described in this list can be found in the modules/ directory below the CPAN root directory. CPAN is a worlswide network of mirrors and you can find your closest mirror in the file http://www.cpan.org/SITES.html

NOTE: If you can't find what you want, or wish to check that what you've found is the latest version, or wonder why a module mentioned in this list is not on CPAN, you should contact the person associated with the module (and not the maintainers of the archives or this list). Contact details are given at the start of Part 5.

Playing Your Part

Perl is a huge collaborative effort. Everyone who uses perl is benefiting from the contributions of many hundreds, maybe thousands, of people. How much time has perl saved you since you started using it?

Do you have any modules you could share with others? For example, you may have some perl4 scripts from which generally useful, and reusable, modules could be extracted. There may be many people who would find your work very useful. Please play your part and contribute to the Perl community where you can. [ end of sermon :-]

Help save the world! Please submit new entries and updates to us so we can keep this list up-to-date. Send the new or corrected entry by email to modules@perl.org (or modules@franz.ww.tu-berlin.de in case the above doesn't work). Please do not send code to this address. Instead upload your module, once registered, to the PAUSE site for forwarding on to CPAN. See section 2, especially 2.6 and 2.11.

How To Get a More Recent Copy of the List

This Module List is posted to comp.lang.perl.modules, comp.answers and news.answers bi-weekly with a long expiry time (over a month). The first place to look for a more recent copy is therefore your own Usenet spool area.

You should be able to get a copy from one of these places:

1.) ASCII version: 2.) HTML version:

Editorial Information and Copyright

This document is Copyright (c) 1997 by Tim Bunce and Andreas König. All rights reserved. Permission to distribute this document, in full or part, via electronic means (emailed, posted or archived) or printed copy is granted providing that no charges are involved, reasonable attempt is made to use the most current version, and all credits and copyright notices are retained. Requests for other distribution rights, including incorporation in commercial products, such as books, magazine articles, or CD-ROMs should be made to Tim.Bunce@ig.co.uk and Andreas.Koenig@mind.de .

Disclaimer: The content of this document is simply a collection of information gathered from many sources with little or no checking. There are NO warranties with regard to this information or its use.

A little background information... I (Tim) created the Module List in August 1994 and maintained it manually till April 1996. By that time Andreas had implemented the Perl Authors Upload Server (PAUSE) and it was happily feeding modules through to the CPAN archive sites (see http://www.cpan.org/modules/04pause.html for details). Since PAUSE held a database of module information which could be maintained by module authors it made sense for the module listing part of the Module List to be built from that database. In April 1996 Andreas took over the automatic posting of the Module List and I now maintain the other parts of the text. We plan to add value to the automation over time.

Part 1 - Modules: Creation, Use and Abuse

1) Perl 5 Module Terminology

Perl 5 implements a class using a package, but the presence of a package doesn't imply the presence of a class. A package is just a namespace. A class is a package that provides subroutines that can be used as methods. A method is just a subroutine that expects, as its first argument, either the name of a package (for "static" methods), or a reference to something (for "virtual" methods).

A module is a file that (by convention) provides a class of the same name (sans the .pm), plus an import method in that class that can be called to fetch exported symbols. This module may implement some of its methods by loading dynamic C or C++ objects, but that should be totally transparent to the user of the module. Likewise, the module might set up an AUTOLOAD function to slurp in subroutine definitions on demand, but this is also transparent. Only the .pm file is required to exist.

2) Guidelines for Module Creation

2.1 Do similar modules already exist in some form?

If so, please try to reuse the existing modules either in whole or by inheriting useful features into a new class. If this is not practical try to get together with the module authors to work on extending or enhancing the functionality of the existing modules. A perfect example is the plethora of packages in perl4 for dealing with command line options.

If you are writing a module to expand an already existing set of modules, please coordinate with the author of the package. It helps if you follow the same naming scheme and module interaction scheme as the original author.

2.2 Try to design the new module to be easy to extend and reuse.

Use blessed references. Use the two argument form of bless to bless into the class name given as the first parameter of the constructor, e.g.:

sub new { my $class = shift; return bless {}, $class; }
or even this if you'd like it to be used as either a static or a virtual method.

sub new { my $self = shift; my $class = ref($self) || $self; return bless {}, $class; }
Pass arrays as references so more parameters can be added later (it's also faster). Convert functions into methods where appropriate. Split large methods into smaller more flexible ones. Inherit methods from other modules if appropriate.

Avoid class name tests like: die "Invalid" unless ref $ref eq 'FOO'. Generally you can delete the "eq 'FOO'" part with no harm at all. Let the objects look after themselves! If it's vital then you can use the UNIVERSAL methods isa and can. Generally, avoid hardwired class names as far as possible.

Avoid $r->Class::func() where using @ISA=qw(... Class ...) and $r->func() would work (see perlbot man page for more details).

Use autosplit or the SelfLoader module so little used or newly added functions won't be a burden to programs which don't use them. Add test functions to the module after __END__ either using autosplit or by saying:

eval join('',<main::DATA>) || die $@ unless caller();
Does your module pass the 'empty sub-class' test? If you say "@SUBCLASS::ISA = qw(YOURCLASS);" your applications should be able to use SUBCLASS in exactly the same way as YOURCLASS. For example, does your application still work if you change: $obj = new YOURCLASS; into: $obj = new SUBCLASS; ?

Avoid keeping any state information in your packages. It makes it difficult for multiple other packages to use yours. Keep state information in objects.

Always use -w. Try to "use strict;" (or "use strict qw(...);"). Remember that you can add "no strict qw(...);" to individual blocks of code which need less strictness. Always use -w. Always use -w! Follow the guidelines in the perlstyle(1) manual.

2.3 Some simple style guidelines

The perlstyle manual supplied with perl has many helpful points.

Coding style is a matter of personal taste. Many people evolve their style over several years as they learn what helps them write and maintain good code. Here's one set of assorted suggestions that seem to be widely used by experienced developers:

Use underscores to separate words. It is generally easier to read $var_names_like_this than $VarNamesLikeThis, especially for non-native speakers of English. It's also a simple rule that works consistently with VAR_NAMES_LIKE_THIS.

Package/Module names are an exception to this rule. Perl informally reserves lowercase module names for 'pragma' modules like integer and strict. Other modules normally begin with a capital letter and use mixed case with no underscores (need to be short and portable).

You may find it helpful to use letter case to indicate the scope or nature of a variable. For example:

$ALL_CAPS_HERE constants only (beware clashes with perl vars) $Some_Caps_Here package-wide global/static $no_caps_here function scope my() or local() variables
Function and method names seem to work best as all lowercase. E.g., $obj->as_string().

You can use a leading underscore to indicate that a variable or function should not be used outside the package that defined it.

For method calls use either

$foo = new Foo $arg1, $arg2; # no parentheses $foo = Foo->new($arg1, $arg2);
but avoid the ambiguous form

$foo = new Foo($arg1, $arg2); # Foo() looks like function call
It can be very helpful if the names of the classes that your module uses can be specified as parameters. Consider:

$dog_class = $args{dog_class} || 'Dog'; $spot = $dog_class->new(...);
This allows the user of your module to specify an alternative class (typically a subclass of the one you would normally have used).

On how to report constructor failure, Larry said:

I tend to see it as exceptional enough that I'll throw a real Perl exception (die) if I can't construct an object. This has a couple of advantages right off the bat. First, you don't have to check the return value of every constructor. Just say "$fido = new Doggie;" and presume it succeeded. This leads to clearer code in most cases.

Second, if it does fail, you get a better diagnostic than just the undefinedness of the return value. In fact, the exception it throws may be quite rich in "stacked" error messages, if it's rethrowing an exception caught further in.

And you can always catch the exception if it does happen using eval {}.

If, on the other hand, you expect your constructor to fail a goodly part of the time, then you shouldn't use exceptions, but you should document the interface so that people will know to check the return value. You don't need to use defined(), since a constructor would only return a true reference or a false undef. So good Perl style for checking a return value would simply say

$conn = new Connection $addr or die "Couldn't create Connection";
In general, make as many things meaningful in a Boolean context as you can. This leads to straightforward code. Never write anything like

if (do_your_thing() == OK)
in Perl. That's just asking for logic errors and domain errors. Just write

if (do_your_thing())
Perl is designed to help you eschew obfuscation, if that's your thing.

2.4 Select what to export.

Do NOT export method names! Do NOT export anything else by default without a good reason!

Exports pollute the namespace of the module user. If you must export try to use @EXPORT_OK in preference to @EXPORT and avoid short or common names to reduce the risk of name clashes.

Generally anything not exported is still accessible from outside the module using the ModuleName::item_name (or $blessed_ref->method) syntax. By convention you can use a leading underscore on names to informally indicate that they are 'internal' and not for public use.

(It is actually possible to get private functions by saying: my $subref = sub { ... }; &$subref; But there's no way to call that directly as a method, since a method must have a name in the symbol table.)

As a general rule, if the module is trying to be object oriented then export nothing. If it's just a collection of functions then @EXPORT_OK anything but use @EXPORT with caution.

2.5 Select a name for the module.

This name should be as descriptive, accurate and complete as possible. Avoid any risk of ambiguity. Always try to use two or more whole words. Generally the name should reflect what is special about what the module does rather than how it does it.

Having 57 modules all called Sort will not make life easy for anyone (though having 23 called Sort::Quick is only marginally better :-). Imagine someone trying to install your module alongside many others. If in any doubt ask for suggestions in comp.lang.perl.modules or modules@perl.org .

Please use a nested module name to informally group or categorise a module, e.g., placing a sorting module into a Sort:: category. A module should have a very good reason not to have a nested name. Please avoid using more than one level of nesting for module names (packages or classes within modules can, of course, use any number).

Module names should begin with a capital letter. Lowercase names are reserved for special modules such as pragmas (e.g., lib and strict).

Note that module names are not related to class hierarchies. A module name Foo::Bar does not in any way imply that Foo::Bar inherits from Foo. Nested names are simply used to provide some useful categorisation for humans. The same is generally true for all package names.

Since the CPAN is huge and growing daily, it's essential that module authors choose names which lend themselves to browsing. That means minimizing acronyms, cute names, and jargon. Also, don't make up a new top level category unless you have a good reason; please choose an already-existing category when possible. Send mail to modules@perl.org before you upload, so we can help you select a name.

If you insist on a name that we consider inappropriate, we won't prevent you from uploading your module -- but it'll remain in your "author" directory and won't be directly visible from CPAN/modules/by-module.

We appreciate the efforts of the contributors who have helped make the CPAN the world's largest reusable code repository. Please help us enhance it by working with us to choose the best name possible.

If you are developing a suite of related modules/classes it's good practice to use nested classes with a common prefix as this will avoid namespace clashes. For example: Xyz::Control, Xyz::View, Xyz::Model etc. Use the modules in this list as a naming guide.

If adding a new module to a set, follow the original author's standards for naming modules and the interface to methods in those modules.

If developing modules for private internal or project specific use, that will never be released to the public, then you should ensure that their names will not clash with any future public module. You can do this either by using the reserved Local::* category or by using an underscore in the top level name like Foo_Corp::*.

To be portable each component of a module name should be limited to 11 characters. If it might be used on DOS then try to ensure each is unique in the first 8 characters. Nested modules make this easier.

2.6 Have you got it right?

How do you know that you've made the right decisions? Have you picked an interface design that will cause problems later? Have you picked the most appropriate name? Do you have any questions?

The best way to know for sure, and pick up many helpful suggestions, is to ask someone who knows. The comp.lang.perl.modules Usenet newsgroup is read by just about all the people who develop modules and it's generally the best place to ask first. If you need more help then try modules@perl.org .

All you need to do is post a short summary of the module, its purpose and interfaces. A few lines on each of the main methods is probably enough. (If you post the whole module it might be ignored by busy people - generally the very people you want to read it!)

Don't worry about posting if you can't say when the module will be ready - just say so in the message. It might be worth inviting others to help you, they may be able to complete it for you!

2.7 README and other Additional Files.

It's well known that software developers usually fully document the software they write. If, however, the world is in urgent need of your software and there is not enough time to write the full documentation please at least provide a README file containing:

If the README file seems to be getting too large you may wish to split out some of the sections into separate files: INSTALL, Copying, ToDo etc.

2.8 Adding a Copyright Notice.

How you choose to licence your work is a personal decision. The general mechanism is to assert your Copyright and then make a declaration of how others may copy/use/modify your work.

Perl, for example, is supplied with two types of licence: The GNU GPL and The Artistic License (see the files README, Copying and Artistic). Larry has good reasons for NOT just using the GNU GPL.

My personal recommendation, out of respect for Larry, Perl and the perl community at large is to simply state something like:

Copyright (c) 1997 Your Name. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
This statement should at least appear in the README file. You may also wish to include it in a Copying file and your source files. Remember to include the other words in addition to the Copyright.

2.9 Give the module a version/issue/release number.

To be fully compatible with the Exporter and MakeMaker modules you should store your module's version number in a non-my package variable called $VERSION. This should be a valid floating point number with at least two digits after the decimal (ie hundredths, e.g, $VERSION = "0.01"). See Exporter.pm for details.

Don't use a "1.3.2" style version directly. If you use RCS or a similar system which supports multilevel versions/branches you can use this (but put it all on one line for MakeMaker VERSION_FROM):

$VERSION = do { my @r=(q$Revision: 3.28 $=~/\d+/g); sprintf "%d."."%02d"x$#r,@r };

It may be handy to add a function or method to retrieve the number. Use the number in announcements and archive file names when releasing the module (ModuleName-1.02.tar.gz). See perldoc ExtUtils::MakeMaker.pm for details.

2.10 Listing Prerequisites in a Bundle module

If your module needs some others that are available on CPAN, you might consider creating a 'bundle' module that lists all the prerequisites in a standardized way. Automatic installation software such as the CPAN.pm module can take advantage of such a listing and enable your users to install all prerequisites and your own module with one single command. See the CPAN.pm module for details.

2.11 How to release and distribute a module.

By far the best way to release modules is to register yourself with the Perl Authors Upload Server (PAUSE). By registering with PAUSE you will be able to easily upload (or mirror) your modules to the PAUSE server from where they will be mirrored to CPAN sites across the planet.

It's good idea to post an announcement of the availability of your module to the comp.lang.perl.announce Usenet newsgroup. This will at least ensure very wide once-off distribution.

If not using PAUSE you should place the module into a major ftp archive and include details of it's location in your announcement. Some notes about ftp archives: Please use a long descriptive file name which includes the version number. Most incoming directories will not be readable/listable, i.e., you won't be able to see your file after uploading it. Remember to send your email notification message as soon as possible after uploading else your file may get deleted automatically. Allow time for the file to be processed and/or check the file has been processed before announcing its location.

FTP Archives for Perl Modules:

Follow the instructions and links on

http://www.cpan.org/modules/04pause.html

or upload to:

ftp://pause.kbx.de/incoming

and notify upload@pause.kbx.de .

By using the PAUSE WWW interface you can ask the Upload Server to mirror your modules from your ftp or WWW site into your own directory on CPAN. Please remember to send us an updated entry for the Module list!

2.12 Take care when changing a released module.

Always strive to remain compatible with previous released versions (see 2.2 above) Otherwise try to add a mechanism to revert to the old behaviour if people rely on it. Document incompatible changes.

3) Guidelines for Converting Perl 4 Library Scripts into Modules

3.1 There is no requirement to convert anything.

If it ain't broke, don't fix it! Perl 4 library scripts should continue to work with no problems. You may need to make some minor changes (like escaping non-array @'s in double quoted strings) but there is no need to convert a .pl file into a Module for just that. See perltrap.pod for details of all known perl4-to-perl5 issues.

3.2 Consider the implications.

All the perl applications which make use of the script will need to be changed (slightly) if the script is converted into a module. Is it worth it unless you plan to make other changes at the same time?

3.3 Make the most of the opportunity.

If you are going to convert the script to a module you can use the opportunity to redesign the interface. The 'Guidelines for Module Creation' above include many of the issues you should consider.

3.4 The pl2pm utility will get you started.

This utility will read *.pl files (given as parameters) and write corresponding *.pm files. The pl2pm utilities does the following: Being a mechanical process pl2pm is not bullet proof. The converted code will need careful checking, especially any package statements. Don't delete the original .pl file till the new .pm one works!

4) Guidelines for Reusing Application Code

4.1 Complete applications rarely belong in the Perl Module Library.

4.2 Many applications contain some perl code which could be reused. Help save the world! Share your code in a form that makes it easy to reuse.

4.3 Break-out the reusable code into one or more separate module files.

4.4 Take the opportunity to reconsider and redesign the interfaces.

4.5 In some cases the 'application' can then be reduced to a small fragment of code built on top of the reusable modules. In these cases the application could invoked as:

5) Namespace Coordination

The maintainers of the module list are not the Internic for perl namespaces. They do neither sell namespaces nor can they establish property rights. What they try to do is to minimize namespace clashes and maximize usablility of the CPAN archive by setting up a catalogue of modules and control the indexers. Time permitting, they will also try to give advice for what they think is a proper usage of the namespace.

It is an important part of the namespace concept that the module list maintainers do not guarantee to you that somebody else won't use the, say, Foo::Bar namespace. The upload area is not censored except for abuse. People are free to upload any modules they like. Instead, there are several levels of protection for your namespaces:

a) The most important is the module list which actually lists and proclaims your namespace.

b) The second is the indexing mechanism of the CPAN. Modules are indexed on a first-come-first-serve basis. The module namespace that is uploaded for the first time ever gets indexed, but not the module of the second one who tries to use the same namespace.

c) As the whole process is trying to benefit the community, all parties are subject to a wider monitoring within the community. This is sometimes referred to as security by visibility.

d) So the next level of namespace protection is the common sense. Your own common sense. Help to save the world. If you get the impression that something goes wrong with regard to namespaces, please write to modules@perl.org and let them know.

e) The perhaps most interesting namespace protection is provided by the perl symbol table itself. A namespace Foo:: is just a package name and its relationship to a namespace Foo::Bar:: is not predetermined whatsoever. The two namespaces can be closely or loosely related or not related at all, but what's most important, they can be writen by different authors who may work rather independently from each other. So if you have registered any namespace, it does not mean that you own the whole namespace tree that starts there. If you are registered as the contact for Foo::Bar, you are not necessarily also associated with Foo::Bar::Baz.

f) In a few rare cases the module list people restrict indexing of certain categories. For example: DBI::* under the control of Tim Bunce Sun::* under the control of Sun Microsystems

Part 2 - The Perl 5 Module List

The remainder of this document is divided up into sections. Each section deals with a particular topic and lists all known modules related to that topic. Modules are only listed in one section so check all sections that might related to your particular needs.

All the information corresponds to the latest updates we have received. We don't record the version number or release dates of the listed Modules. Nor do we record the locations of these Modules. Consult the contact, try the usual perl CPAN sites or ask in comp.lang.perl.modules. Please do *not* ask us directly, we simply don't have the time. Sorry.

1) Module Listing Format

Each Module listing is very short. The main goal is to simply publish the existence of the modules, or ideas for modules, and enough contact information for you to find out more. Each listing includes some characters which convey (approximate) basic status information.

For example:

Name           DSLI  Description                                  Info
-------------  ----  -------------------------------------------- -----
Fcntl          Sdcf  Defines fcntl() constants (see File::Lock)   JHI

Where the 'DSLI' characters have the following meanings:

Where letters are missing they can usually be inferred from the others. For example 'i' implies 'id', 'S' implies 'Su'.

The Info column gives a contact reference 'tag'. Lookup this tag in the "Information / Contact Reference Details" section in Pert 3 of this document. If no contact is given always try asking in comp.lang.perl.modules.

Most Modules are nested in categories such as IPC::Open2 and IPC::Open3. These are shown as 'IPC::' on one line then each module listed below with a '::' prefix.

Ideas For Adoption

Modules listed as in the 'i' Development Stage with no contact reference are ideas without an owner. Feel free to 'adopt' these but please let me know so that we can update the list and thus inform anyone else who might be interested. Adoption simply means that you either hope to implement the module one day or would like to cooperate with anyone else who might be interested in implementing it.

Cooperation

Similarly, if an idea that interests you has been adopted by someone please contact them so you can share ideas. Just because an idea has been adopted does NOT imply that it's going to be implemented. Just because a module is listed and being implemented does NOT mean it'll get finished. Waiting silently in the hope that the Module will appear one day is unlikely to be fruitful! Offer to help. Cooperate. Pool your efforts. Go on, try it!

The same applies to modules in all states. Most modules are developed in limited spare time. If you're interested in a module don't just wait for it to happen, offer to help.

Module developers should feel free to announce incomplete work early. If you're not going to be able to spend much time on something then say so. If you invite cooperation maybe someone will implement it for you!

2) Perl Core Modules, Perl Language Extensions and Documentation Tools

Name              DSLI Description                                  Info
------------      ---- -------------------------------------------- ----
CORE              Sucf Internal package for perl native functions   P5P
UNIVERSAL         SucO Internal universal base-class                JACKS
SUPER             SucO Internal class to access superclass methods  P5P
DynaLoader        SucO Dynamic loader for shared libraries          P5P
AutoLoader        SupO Automatic function loader (using AutoSplit)  P5P
SelfLoader        SdpO Automatic function loader (using __DATA__)   JACKS
Exporter          SupO Implements default import method for modules P5P
Carp              Supf Throw exceptions outside current package     P5P
Config            Supf Stores details of perl build configuration   P5P
English           Supf Defines English names for special variables  P5P
Symbol            SupO Create 'anonymous' symbol (typeglobs) refs   CHIPS
Opcode            Supf Disable named opcodes when compiling code    TIMB
Taint             bdpf Utilities related to tainting                PHOENIX

Perl Pragmatic Modules

builtin           adcf A selection of subs destined for the core    GBARR
constant          Supf Define compile-time constants                P5P
diagnostics       Sdpf For reporting perl diagnostics in full form  TOMC
enum              cdpf resemble enumerated types in C               ZENIN
integer           Supf Controls float vs. integer arithmetic        P5P
less              Supf Controls optimisations (yet unimplemented)   P5P
lib               Supf Simple way to add/delete directories in @INC P5P
overload          SdpO Overload perl operators for new data types   ILYAZ
sigtrap           Supf For trapping an abort and giving a traceback P5P
strict            Supf Controls averments (similar to pragmas)      P5P
subs              Supf use subs qw(x y); is short for sub x; sub y; P5P
vars              Supf predeclare variable names                    P5P

Perl Language Extensions

Alias             bdcf Convenient access to data/code via aliases   GSAR
Error             adpO Error/exception handling in an OO-ish way    GBARR
Perl              adcO Create Perl interpreters from within Perl    GSAR
Protect           bdpf declare subs private or member               JDUNCAN
Safe              SdcO Restrict eval'd code to safe subset of ops   MICB
Softref           bdcf Extension for weak/soft referenced SVs       ILYAZ
Exporter::
::Import          Rdpn Alternate symbol exporter                    GARROW
::Options         adpO Extends Exporter to handle use-line options  YSTH
::PkgAlias        adpf Load a module into multiple namespaces       JDPORTER
Symbol::
::Table           RdpO OO interface to package symbols              GARROW
Test              Sdpf Utilities for writing test scripts           JPRIT
Test::
::Harness         Supf Executes perl-style tests                    P5P

The Perl Compiler

B                 aucO The Perl Compiler                            MICB
O                 aucO Perl Compiler frontends                      MICB
B::
::Fathom          bdpO Estimate the readability of Perl code        KSTAR
::Graph           bdpr Perl Compiler backend to diagram OP trees    SMCCAM
::LexInfo         bdcO Show info about subroutine lexical variables DOUGM
::Size            bdcO Measure size of Perl OPs and SVs             DOUGM
::TerseSize       bdpO Info about ops and their (estimated) size    DOUGM

Source Code Filters

Filter::Util::
::Exec            bdcf Interface for creation of coprocess Filters  PMQS
::Call            bdcf Interface for creation of Perl Filters       PMQS
Filter::
::exec            bdcf Filters script through an external command   PMQS
::sh              bdcf Filters script through a shell command       PMQS
::cpp             bdcf Filters script through C preprocessor        PMQS
::tee             bdcf Copies to file perl source being compiled    PMQS
::decrypt         bdcf Template for a perl source decryption filter PMQS

Module Support

Module::
::Reload          Rdpf Reloads files in %INC based on timestamps    JPRIT

Documentation Tools:

Pod::
::Diff            cdpf compare two POD files and report diff        IANC
::HTML            cdpr converter to HTML                            KJALB
::Index           cdpr index generator                              KJALB
::Latex           cdpr converter to LaTeX                           KJALB
::Lint            cdpO Lint-style validator for pod                 NEILB
::Man             cdpr converter to man page                        KJALB
::MIF             adpO converter to FrameMaker MIF                  JNH
::Parser          bdpO Base class for parsing pod syntax            BRADAPP
::Pod             cdpr converter to canonical pod                   KJALB
::RTF             cdpr converter to RTF                             KJALB
::Sdf             cdpf converter to SDF                             IANC
::Select          bdpf Print only selected sections of pod docs     BRADAPP
::Simplify        cdpr Common pod parsing code                      KJALB
::Texinfo         cdpr converter to texinfo                         KJALB
::Text            Supf convert POD data to formatted ASCII text     TOMC
::Usage           bdpf Print Usage messages based on your own pod   BRADAPP

3) Development Support

Name              DSLI Description                                  Info
------------      ---- -------------------------------------------- ----
AutoSplit         Supf Splits modules into files for AutoLoader     P5P
Benchmark         Supf Easy way to time fragments of perl code      P5P
FindBin           adpf Locate current script bin directory          GBARR
DoWhatIWant       i    Does what you want without even asking
ExtUtils::
::DynaGlue        adcr Methods for generating Perl extension files  DOUGM
::MakeMaker       SupO Writes Makefiles for extensions              MMML
::Manifest        Supf Utilities for managing MANIFEST files        MMML
::Typemap         i    xsubpp typemap handling                      WPS
::Embed           Sdpf Utilities for embedding Perl in C/C++ apps   DOUGM
::F77             RdpO Facilitate use of FORTRAN from Perl/XS code  KGB
Carp::
::Assert          adpf Stating the obvious to let the computer know MSCHWERN
::CheckArgs       Rdpf Check subroutine argument types              GARROW
Coy               Rdpn Like Carp - only prettier                    DCONWAY
Devel::
::CallerItem      RupO 'caller()' Object wrapper + useful methods   JACKS
::CoreStack       adpf generate a stack dump from a core file       ADESC
::Coverage        adpf Coverage analysis for Perl code              RJRAY
::DebugAPI        bdpf Interface to the Perl debug environment      JHA
::DebugInit       i    Create a .gdbinit or similar file            JASONS
::DProf           Rdcf Execution profiler                           DMR
::DumpStack       Rupf Dumping of the current function stack        JACKS
::Leak            Rdcf Find perl objects that are not reclaimed     NI-S
::PPPort          bdcn Portability aid for your XS code             KJALB
::Peek            adcf Peek at internal representation of Perl data ILYAZ
::RegExp          adcO Access perl internal regex functions         ILYAZ
::SmallProf       Rdpf Line-by-line profiler                        ASHTED
::Symdump         RdpO Perl symbol table access and dumping         ANDK
::TraceFuncs      adpO Trace funcs by using object destructions     JOEHIL
::TraceLoad       Rdpf Traces the loading of perl source code       JPRIT
Exception::
::Cxx             Rd+f Cause perl to longjmp using C++ exceptions   JPRIT
Perf::               Performance measurement other than benchmarks
::ARM             a    Application Response Measurement             BBACKER
Usage             bupr Type and range checking on subroutine args   JACKS
Rcs               adcf Alternate RCS interface (see VCS::RCS)       CFRETER
VCS               ampO Generic interface to Version Control Systems LBROCARD
VCS::
::CVS             Rdpo Interface to GNU's CVS                       RSAVAGE
::PVCS            i    PVCS Version Manager (intersolv.com)         BMIDD
::RCS             idpf Interface layer over RCS (See also Rcs)      RJRAY
::RCE             idcf Perl layer over RCE C API                    RJRAY
Include           adpO Parse C header files for use in XS           GBARR
Make              adpO Makefile parsing, and 'make' replacement     NI-S
ClearCase         idcf Environment for ClearCase revision control   BRADAPP
ClearCase::
::Ct              Rdpf Generic cleartool wrapper                    DSB

4) Operating System Interfaces, Hardware Drivers

Name              DSLI Description                                  Info
------------      ---- -------------------------------------------- ----
Env               Supf Alias environment variables as perl vars     P5P
Errno             cdpf Constants from errno.h EACCES, ENOENT etc    GBARR
Fcntl             Sdcf Defines fcntl() constants (see File::Lock)   JHI
Ioctl             adcf ioctl(2) constants                           JPRIT
POSIX             SupO An interface to most (all?) of POSIX.1       P5P
Shell             Supf Run shell commands transparently within perl P5P
BSD::
::HostIdent       i    s/gethostname(), s/gethostid()               JHI
::Ipfwgen         bdpf Generate ipfw(8) filters                     MUIR
::Resource        Rdcf getrusage(), s/getrlimit(), s/getpriority()  JHI
Async::
::Group           adpO Deal with simultaneous asynchronous calls    DDUMONT
::Process         i    class to run sub-processes                   DDUMONT
Proc::
::Background      RdpO OS independent background process objects    BZAJAC
::ExitStatus      cdpf Interpret and act on wait() status values    ROSCH
::Forkfunc        Rdpf Simple lwall-style fork wrapper              MUIR
::ProcessTable    adcO Unix process table information               DURIST
::SafePipe        cdpf popen() and `` without calling the shell     ROSCH
::Simple          adpO Fork wrapper with objects                    MSCHILLI
::Spawn           Rdpf Run external programs                        GARROW
::SyncExec        cdpf Spawn processes but report exec() errors     ROSCH
::times           adpf By-name interface to process times function  TOMC
GTop              bdcO Perl interface to libgtop                    DOUGM
Schedule::           See also Schedule:: in chapter 23
::At              Rd   OS independent interface to the at command   JOSERODR
Quota             Rdcf Disk quota system functions, local & remote  TOMZO
Sys::
::AlarmCall       Rupf Timeout on any sub. Allows nested alarms     JACKS
::Hostname        Supf Implements a portable hostname function      P5P
::Sysconf         bdpf Defines constants for POSIX::sysconf()       NI-S
::Syslog          Supf Provides same functionality as BSD syslog    P5P
    Note: The Sys:: namespace is considered harmful as it is giving no
    clue about which system. Placing additional modules into this
    namespace is discouraged.

Platform Specific Modules

Be::
::Attribute       Rd+f Manipulate BeOS BFS MIME file attributes     TSPIN
::Query           Rd+f Query a BeOS file system                     TSPIN
FreeBSD::
::SysCalls        cdcf FreeBSD-specific system calls                GARY
Mac::                Macintosh specific modules
::AppleEvents     bmcO AppleEvent manager and AEGizmos              MCPL
::AssistantFrames RdpO Easy creation of assistant dialogs           GBAUER
::Components      bmcO (QuickTime) Component manager                MCPL
::Files           bmcO File manager                                 MCPL
::Gestalt         bmcO Gestalt manager: Environment enquiries       MCPL
::Memory          bmcO Memory manager                               MCPL
::MoreFiles       bmcO Further file management routines             MCPL
::OSA             bmcO Open Scripting Architecture                  MCPL
::Processes       bmcO Process manager                              MCPL
::Resources       bmcO Resource manager                             MCPL
::Types           bmcO (Un-)Packing of Macintosh specific types     MCPL
Mac::AppleEvents::
::Simple          Rdph Simple access to Mac::AppleEvents            CNANDOR
Mac::Apps::
::Anarchie        RdpO Control Anarchie 2.01+                       CNANDOR
::Launch          Rdpf MacPerl module to launch / quit apps         CNANDOR
::MacPGP          RdpO Control MacPGP 2.6.3                         CNANDOR
::PBar            RdpO Control Progress Bar 1.0.1                   CNANDOR
Mac::Comm::
::OT_PPP          RdpO Control Open Transport PPP / Remote Access   CNANDOR
Mac::
::Glue            bdpO Control apps with AppleScript terminology    CNANDOR
Mac::OSA::
::Simple          Rdph Simple access to Mac::OSA                    CNANDOR
MSDOS::
::Attrib          bdcf Get/set DOS file attributes in OS/2 or Win32 CJM
::Descript        bdpO Manage 4DOS style DESCRIPT.ION files         CJM
::SysCalls        adcf MSDOS interface (interrupts, port I/O)       DMO
MVS::
::VBFile          bdpf Read MVS VB (variable-length) files          GROMMEL
NeXTStep::
::NetInfo         idcO NeXTStep's NetInfo (like ONC NIS)            PGUEN
Netware::
::NDS             cd+O Interface to Novell Directory Services       KTHOMAS
::Bindery         cd+O Interface to Novell Bindery mode calls       KTHOMAS
OS2::
::ExtAttr         RdcO (Tied) access to extended attributes         ILYAZ
::FTP             bncf Access to ftplib interface                   ILYAZ
::PrfDB           RdcO (Tied) access to .INI-style databases        ILYAZ
::REXX            RdcO Access to REXX DLLs and REXX runtime         ILYAZ
::UPM             bncf User Profile Management                      ILYAZ
Riscos::
::*               i    Namespace for Risc-OS (Acorn et.al.)         RISCOSML
SGI::
::SysCalls        cdcf SGI-specific system calls                    AMOSS
::GL              adcr SGI's Iris GL library                        AMOSS
::FM              adcr SGI's Font Management library                AMOSS
Solaris::
::MapDev          bdpf Maps sdNN disk names to cNtNdN disk names    ABURLISON
::Kstat           adcO Access kernel performance statistics         ABURLISON
::Kmem            idcf Read values from the running kernel          ABURLISON
::MIB             idcO Access STREAMS network statistics            ABURLISON
::NDD             idcO Access network device statistics             ABURLISON
Unix::
::ConfigFile      adpO Abstract interfaces to Unix config files     SSNODGRA
::Processors      bdcO Interface to per-processor information       WSNYDER
::Syslog          i    Interface to syslog functions in a C-library MHARNISCH
::UserAdmin       Rdpf Interface to Unix Account Information        JZAWODNY
VMS::
::Filespec        Sdcf VMS and Unix file name syntax                CBAIL
::Lock            cnco Object interface to $ENQ (VMS lock mgr)      BHUGHES
::Persona         Rdcf Interface to the VMS Persona services        DSUGAL
::Priv            Rdcf Access VMS Privileges for processes          DSUGAL
::Process         Rdcf Process management on VMS                    DSUGAL
::Queue           bdcf Manage queues and entries                    DSUGAL
::SysCalls        i    VMS-specific system calls                    CBAIL
::System          Rdcf VMS-specific system calls                    DSUGAL

Portable Digital Assistants

PDA::
::Pilot           amcO Interface to pilot-link library              KJALB
::PilotDesktop    i    Managing Pilot Desktop databases software    JWIEGLEY

Hardware related modules

Hardware::
::Simulator       adpf Simulate different pieces of hardware        GSLONDON
Device::
::SerialPort      bdpO POSIX clone of Win32::SerialPort             BBIRTH
::SVGA            c    SVGA Graphic card driver                     SCOTTVR

5) Networking, Device Control (modems) and InterProcess Communication

Name              DSLI Description                                  Info
------------      ---- -------------------------------------------- ----
Socket            Smcf Defines socket-related constants             GNAT
Ptty              adcf Pseudo terminal interface functions          NI-S
Net::
::ACAP            adpO Interface to ACAP Protocol (Internet-Draft)  KJOHNSON
::Bind            adpO Interface to bind daemon files               KJOHNSON
::CDDB            cdpr Interface to the CDDB (CD Database)          DSTALDER
::Cmd             cdpO For command based protocols (FTP, SMTP etc)  GBARR
::DNS             bdpO Interface to the DNS resolver                MFUHR
::Dict            cdpO Client of Dictionary Server Protocol (DICT)  ABIGAIL
::Dnet            cdcO DECnet-specific socket usage                 SPIDB
::Domain          adpf Try to determine TCP domain name of system   GBARR
::DummyInetd      RdpO A dummy Inetd server                         GBARR
::FTP             adpf Interface to File Transfer Protocol          GBARR
::Gen             RdcO Generic support for socket usage             SPIDB
::Goofey          RdpO Communicate with a Goofey server             GOSSAMER
::Hotline         RdpO Interface to the Hotline protocol            JSIRACUSA
::ICAP            adpO Interface to ICAP Protocol (Internet-Draft)  KJOHNSON
::ICB             bdpO ICB style chat server interface              JMV
::ICQ             cmpO NEVER FINISHED - NOT UNDER DEVELOPMENT       GOSSAMER
::IMAP            adpO Interface to IMAP Protocol (RFC2060)         KJOHNSON
::IRC             cdpO Internet Relay Chat interface                DSHEPP
::Ident           RdpO Performs ident (rfc1413) lookups             JPC
::Inet            RdcO Internet (IP) socket usage                   SPIDB
::Interface       a    ifconfig(1) implementation                   SRZ
::LDAP            adpO Interface to LDAP Protocol (RFC1777)         PLDAP
::LDAPapi         Rdcf Interface to UMICH and Netscape LDAP C API   CDONLEY
::NIS             adcO Interface to Sun's NIS                       RIK
::NISPlus         adcO Interface to Sun's NIS+                      RIK
::NNTP            adpO Client interface to NNTP protocol            GBARR
::Netmask         adpO Understand and manipulate network blocks     MUIR
::Netrc           adpO Support for .netrc files                     GBARR
::PH              RdpO CCSO Nameserver Client class                 GBARR
::POP3            adpO Client interface to POP3 protocol            GBARR
::Pcap            adcr An interface for LBL's packet capture lib    PLISTER
::Ping            SupO TCP and ICMP ping                            RMOSE
::SMTP            adpf Interface to Simple Mail Transfer Protocol   GBARR
::SNMP            adpO Interface to SNMP Protocol (RFC1157)         GBARR
::SNPP            cdpO Client interface to SNPP protocol            GBARR
::SOCKS           cdcf TCP/IP access through firewalls using SOCKS  SCOOPER
::SSLeay          bmhf Secure Socket Layer (based on OpenSSL)       SAMPO
::TCP             RdcO TCP-specific socket usage                    SPIDB
::TFTP            cdpf Interface to Trivial File Transfer Protocol  GSM
::Telnet          adpO Interact with TELNET port or other TCP ports JROGERS
::Time            adpf Obtain time from remote machines             GBARR
::Traceroute      bdpO Trace routes                                 HAG
::UDP             RdcO UDP-specific socket usage                    SPIDB
::hostent         adpf A by-name interface for hosts functions      TOMC
::netent          adpf A by-name interface for networks functions   TOMC
::protoent        adpf A by-name interface for protocols functions  TOMC
::servent         adpf A by-name interface for services functions   TOMC
::xAP             adpO Interface to IMAP,ACAP,ICAP substrate        KJOHNSON
Net::IMAP::
::Simple          bdpO Only implements the basic IMAP features      JPAF
IPC::
::Chat2           ?    Out-of-service during refit!                 GBARR
::ChildSafe       RdcO Control child process w/o risk of deadlock   DSB
::Globalspace     cdpO Multi-process shared hash and shared events  JACKS
::Locker          RdpO Shared semaphore locks across a network      WSNYDER
::Mmap            i    Interface to Unix's mmap() shared memory     MICB
::Open2           Supf Open a process for both reading and writing  P5P
::Open3           Supf Like IPC::Open2 but with error handling      P5P
::Session         adpO remote shell session mgr; wraps open3()      STEVEGT
::Signal          Rdpf Translate signal names to/from numbers       ROSCH
::SysV            adcr shared memory, semaphores, messages etc      JACKS
RPC::                Remote Procedure Calls (see also DCE::RPC)
::pServer         RdpO Interface for building Perl Servers          JWIED
::pClient         RdpO Interface for building pServer Clients       JWIED
::ONC             adcO ONC RPC interface (works with perlrpcgen)    JAKE
::Simple          adpO Simple OO async remote procedure calls       DDUMONT
DCE::                Distributed Computing Environment (OSF)
::ACL             bdcO Interface to Access Control List protocol    PHENSON
::DFS             bdcO DCE Distributed File System interface        PHENSON
::Login           bdcO Interface to login functions                 PHENSON
::RPC             c    Remote Procedure Calls                       PHENSON
::Registry        bdcO DCE registry functions                       PHENSON
::Status          bdpr Make sense of DCE status codes               PHENSON
::UUID            bdcf Misc uuid functions                          PHENSON
NetPacket::
::ARP             adpO  Address Resolution Protocol                 TIMPOTTER
::Ethernet        adpO  Ethernet framed data                        TIMPOTTER
::IGMP            adpO  Internet Group Management Protocol          TIMPOTTER
::IP              adpO  Internet Protocol                           TIMPOTTER
::TCP             adpO  Transmission Control Protocol               TIMPOTTER
::UDP             adpO  User Datagram Protocol                      TIMPOTTER
Proxy             i    Transport-independent remote processing      MICB
Proxy::
::Tk              ?    Tk transport class for Proxy (part of Tk)    MICB
IPChains          RdcO Create and Manipulate ipchains               JESSICAQ
SNMP              RdcO Interface to the UCD SNMP toolkit            GSM
TFTP              bdpO Interface to TFTP (rfc1350)                  GSM
ToolTalk          adcr Interface to the ToolTalk messaging service  MARCP
SNMP::
::Monitor         adpO Accounting and graphical display             JWIED
Mon::
::Client          RdpO Network monitoring client                    TROCKIJ
::SNMP            RdpO Network monitoring suite                     TROCKIJ
Parallel::
::Pvm             bdcf Interface to the PVM messaging service       EWALKER
CORBA::
::IOP::IOR        adpO Decode, munge, and re-encode CORBA IORs      PHILIPA
::IDLtree         adpf IDL to symbol tree translator                OMKELLOGG
Modem::
Vgetty            bdpO Interface to voice modems using vgetty       YENYA
ControlX10::
::CM10            RmpO Control unit for X10 modules                 BBIRTH
::CM17            RmpO inexpensive RF transmit-only X10             BBIRTH

6) Data Types and Data Type Utilities (see also Database Interfaces)

Name              DSLI Description                                  Info
------------      ---- -------------------------------------------- ----
Math::
::Amoeba          Rdpr Multidimensional Function Minimisation       JARW
::Approx          adpO Approximate x,y-values by a function         ULPFR
::BigFloat        SupO Arbitrary size floating point math package   MARKB
::BigInt          SupO Arbitrary size integer math package          MARKB
::BigInteger      adc  Arbitrary size integer as XS extension       GARY
::BigRat          ?    Arbitrary size rational numbers (fractions)  MARKB
::Brent           Rdpr One-dimensional Function Minimisation        JARW
::Complex         SdpO Complex number data type                     RAM
::Derivative      Rdpr 1st and 2nd order differentiation of data    JARW
::Expr            adpO Parses agebraic expressions                  HAKANARDO
::Fortran         Rdpf Implements Fortran log10 & sign functions    JARW
::Fourier         i    Fast Fourier Transforms                      AQUMSIEH
::Fraction        bdpO Fraction Manipulation                        KEVINA
::Geometry        adpf 2D and 3D algorithms                         GMCCAR
::IEEE            i    Interface to ANSI/IEEE Std 754-1985 funcs
::Integral        i    Integration of data                          AQUMSIEH
::Interpolate     Rdpr Polynomial interpolation of data             MATKIN
::LinearProg      idp  Linear programming utilities                 JONO
::Matrix          adpO Matrix data type (transpose, multiply etc)   ULPFR
::MatrixBool      RdcO Matrix of booleans (Boolean Algebra)         STBEY
::MatrixCplx      idpO Matrix data type for Complex Numbers         STBEY
::MatrixReal      RdpO Everything you ever wanted to do with Matr.  STBEY
::Pari            adcf Interface to the powerful PARI library       ILYAZ
::Polynomial      RdpO Polynomials as objects                       MATKIN
::Prime           i    Prime number testing                         GARY
::RandomPrime     i    Generates random primes of x bits            GARY
::SigFigs         Rdpf Math using scientific significant figures    SBECK
::Spline          RdpO Cubic Spline Interpolation of data           JARW
::Trig            bdpf tan asin acos sinh cosh tanh sech cosech     JARW
::TrulyRandom     i    based on interrupt timing discrepancies      GARY
::VecStat         Rdpr Some basic numeric stats on vectors          JARW
::ematica         adcO Interface to the powerful Mathematica system ULPFR
Statistics::
::ChiSquare       Rdpf Chi Square test - how random is your data?   JONO
::Descriptive     RdpO Descriptive statistical methods              COLINK
::LTU             RdpO Implements Linear Threshold Units            TOMFA
::MaxEntropy      Rdpf Maximum Entropy Modeling                     TERDOEST
::OLS             bdpO ordinary least squares (curve fitting)       SMORTON
::ROC             bdpO ROC curves with nonparametric conf. bounds   HAKESTLER
Algorithm::
::Diff            bdpr Diff (also Longest Common Subsequence)       MJD
::Permute         a    Easy and fast permutation                    EDPRATOMO
Algorithm::Numerical::
::Shuffle         Rdph Knuth's shuffle algorithm                    ABIGAIL
::Sample          RDph Knuth's sample algorithm                     ABIGAIL
PDL               amcf Perl Data Language - numeric analysis env    PERLDL
PDL::
::PP              amcf Automatically generate C code for PDL        PERLDL
::Meschach        amcf Links PDL to meschach matrix library         EGROSS
::NetCDF          adcr Reads/Writes NetCDF files from/to PDL objs   DHUNT
::Options         Rdph Provides hash options handling for PDL       TJENNESS
::Slatec          amof Interface to slatec (linpack+eispack) lib.   PERLDL
Array::
::Heap            cdpf Manipulate array elements as a heap          JMM
::PrintCols       adpf Print elements in vertically sorted columns  AKSTE
::Substr          idp  Implement array using substr()               LWALL
::Vec             idp  Implement array using vec()                  LWALL
::Virtual         idp  Implement array using a file                 LWALL
Heap              bdpO Define Heap interface                        JMM
Heap::
::Binary          bdpO Implement Binary Heap                        JMM
::Binomial        bdpO Implement Binomial Heap                      JMM
::Fibonacci       bdpO Implement Fibonacci Heap                     JMM
::Elem            bdpO Heap Element interface, ISA                  JMM
Heap::Elem::
::Num             bdpO Numeric heap element container               JMM
::NumRev          bdpO Numeric element reversed order               JMM
::Str             bdpO String heap element container                JMM
::StrRev          bdpO String element reversed order                JMM
::Ref             bdpO Obj ref heap element container               JMM
::RefRev          bdpO Obj ref element reversed order               JMM
Scalar::
::Util            bdcf Scalar utilities (dualvar reftype etc)       GBARR
List::
::Util            bdcf List utilities (eg min, max, reduce)         GBARR
Bit::
::Vector          RdcO Efficient bit vector and set base class      STBEY
Set::
::IntRange        RdcO Set of integers (arbitrary intervals, fast)  STBEY
::IntSpan         adpO Set of integers newsrc style '1,5-9,11' etc  SWMCD
::Object          bdcO Set of Objects (smalltalkish: IdentitySet)   JLLEROY
::Scalar          adpO Set of scalars (inc references)              JHI
::Window          bdpO Manages an interval on the integer line      SWMCD
Graph::
::Element         RdpO Base class for element of directed graph     NEILB
::Node            RdpO A node in a directed graph                   NEILB
::Edge            RdpO An edge in a directed graph                  NEILB
::Kruskal         Rdpf Kruskal Algorithm for Minimal Spanning Trees STBEY
Decision::
::Markov          bdpO Build/evaluate Markov models for decisions   ALANSZ
Date::
::Calc            Rdcf Gregorian calendar date calculations         STBEY
::Convert         cdpO Conversion between Gregorian, Hebrew, more?  MORTY
::CTime           adpf Updated ctime.pl with mods for timezones     GBARR
::Format          Rdpf Date formatter ala strftime                  GBARR
::Interval        idpO Lightweight normalised interval data type    KTORP
::Language        adpO Multi-language date support                  GBARR
::Manip           Rdpf Complete date/time manipulation package      SBECK
::Parse           Rdpf ASCII Date parser using regexp's             GBARR
::Time            idpO Lightweight normalised datetime data type    TIMB
Time::
::Avail           Rdpf Calculate min. remaining in time interval    PSANTORO
::CTime           Rdpf Format Times ala ctime(3) with many formats  MUIR
::DaysInMonth     Rdpf Returns the number of days in a month        MUIR
::HiRes           Rdcf High resolution time, sleep, and alarm       DEWEG
::JulianDay       Rdpf Converts y/m/d into seconds                  MUIR
::Local           Supf Implements timelocal() and timegm()          P5P
::ParseDate       Rdpf Parses many forms of dates and times         MUIR
::Period          Rdpf Code to deal with time periods               PRYAN
::Timezone        Rdpf Figures out timezone offsets                 MUIR
::Zone            Rdpf Timezone info and translation routines       GBARR
::gmtime          Supf A by-name interface for gmtime               TOMC
::localtime       Supf A by-name interface for localtime            TOMC
Calendar::
::CSA             adcO interface with calenders such as Sun and CDE KJALB
::Hebrew          cdpO Hebrew calendar conversion/manipulation      YSTH
::RCM             i    Russell Calendar Manager                     HTCHAPMAN
Tie::
::Hash            Supr Base class for implementing tied hashes      P5P
::Scalar          Supr Base class for implementing tied scalars     P5P
::Array           c    Base class for implementing tied arrays      CHIPS
::CPHash          bdpO Case preserving but case insensitive hash    CJM
::Cache           Mdpr In memory size limited LRU cache             CHAMAS
::DB_Lock         Rdpr Tie DB_File with automatic locking           KWILLIAMS
::DBI             RdpO Tie hash to a DBI handle                     LDS
::Dir             adpr Tie hash for reading directories             GBARR
::File            adpr Tie hash to files in a directory             AMW
::FileLRUCache    bdph File based persistent LRU cache              SNOWHARE
::Handle          RdpO Base class for implementing tied filehandles STBEY
::HashDefaults    adpr Let a hash have default values               JDPORTER
::IxHash          RdpO Indexed hash (ordered array/hash composite)  GSAR
::ListKeyedHash   Rdpr Use lists to key multi-level hashes          SNOWHARE
::Mem             adcO Bind perl variables to memory addresses      PMQS
::Multidim        adpr "tie"-like multidimensional data structures  JDPORTER
::OffsetArray     adpr Tie one array to another, with index offset  JDPORTER
::Quick           i    Simple way to create ties                    TIMB
::RndHash         bdpO choose a random key of a hash in O(1) time   DFAN
::SecureHash      RdpO Enforced encapsulation of Perl objects       DCONWAY
::SentientHash    cdpr Tracks changes to nested data structures     ANDREWF
::ShadowHash      adpO Merge multiple data sources into a hash      RRA
::ShiftSplice     i    Defines shift et al in terms of splice       LWALL
::SubstrHash      SdpO Very compact hash stored in a string         LWALL
::TextDir         Rdpr ties a hash to a directory of textfiles      KWILLIAMS
::Watch           bdpO Watch variables, run code when read/written  LUSOL
Tie::Cache::
::LRU             adpr A Least-Recently Used cache                  MSCHWERN
Class::
::Eroot           RdpO Eternal Root - Object persistence            DMR
::Multimethods    Rdpf A multiple dispatch mechanism for Perl       DCONWAY
::NamedParms      MdpO A named parameter accessor base class        SNOWHARE
::ParmList        MdpO A named parameter list processor             SNOWHARE
::Singleton       bdpO Implementation of a "Singleton" class        ABW
::Template        Rdpr Struct/member template builder               DMR
::Tree            Mdpo C++ class hierarchies & disk directories     RSAVAGE
::TOM             RmpO Transportable Object Model for perl          JDUNCAN
Object::
::Info            Rupf General info about objects (is-a, ...)       JACKS
::Transaction     bdpO Transactions on serialized HASH files        MUIR
POE::                Perl Object Environment
::Kernel          RdpO An event queue that dispatches events        RCAPUTO
::Session         RdpO state machine running on POE::Kernel events  RCAPUTO
MOP               i    Meta Object Protocol (Tool collection)       ORTALO
SOOP              RdpO Safe Object Oriented Programming             GARROW
Ref               RdpO Print, compare, and copy perl structures     MUIR
Sort::
::ArbBiLex        Rdpf sort functions for arbitrary sort orders     SBURKE
::Fields          bdpf sort text lines by alpha or numeric fields   JNH
::PolySort        bdpO general rules-based sorting of lists         DMACKS
::Versions        Rdpf sorting of revision (and similar) numbers    KJALB

Data Type Marshaling (converting to/from strings) and Persistent Storage

FreezeThaw        bdpf Convert arbitrary objects to/from strings    ILYAZ
Persistence::
::Object          adpO Store Object definitions with Data::Dumper   VIPUL
Storable          bdcr Persistent data structure mechanism          RAM
Marshal::
::Dispatch        cdpO Convert arbitrary objects to/from strings    MUIR
::Packed          cdpO Run-length coded version of Marshal module   MUIR
::Eval            cdpO Undo serialization with eval                 MUIR
Tangram           RmpO Object persistence in relational databases   JLLEROY
WDDX              RdpO Allows distributed data exchange via XML     GUELICH
Data::
::Check           cdpO Checks values for various data formats       KENHOLM
::DRef            adph Nested data access using delimited strings   EVO
::Dumper          RdpO Convert data structure into perl code        GSAR
::Flow            RdpO Acquire data based on recipes                ILYAZ
::Locations       RdpO Handles nested insertion points in your data STBEY
::Reporter        RdpO Ascii Report Generator                       RVAZ
::Walker          adpO Navigate through Perl data structures        JNOLAN
Tree::
::Base            cdpO Defines a basic binary search tree           MSCHWERN
::Fat             Rdcf Embeddable F-Tree algorithm suite            JPRIT
::Smart           cdpO Splay tree, fastest for commonly accessed ke MSCHWERN
::Trie            bdpO An implementation of the Trie data structure AVIF
DFA::
::Command         Mdpo Discrete Finite Automata command processor   RSAVAGE
::Kleene          R    Kleene's Algorithm for DFA                   STBEY
::Simple          cdpO An "augmented transition network"            RANDYM

7) Database Interfaces (see also Data Types)

Name              DSLI Description                                  Info
------------      ---- -------------------------------------------- ----
DBI               amcO Generic Database Interface (see DBD modules) DBIML
DBIx::               Extensions to the DBI
::HTMLView        cdpO Creating web userinterfaces to DBI dbs       HAKANARDO
::Recordset       bmpO Access/Modify DBI handles via Arrays/Hashs   GRICHTER
::Table           bdpO OO access to DBI database tables             DLOWE
::Tree            adpO Expand self-referential table into a tree    BJEPS
DBD::
::ASAny           adcO Adaptive Server Anywhere Driver for DBI      SMIRNIOS
::Altera          bdpO Altera SQL Server for DBI - pure Perl code   DSOUFLIS
::CSV             adcO SQL engine and DBI driver for CSV files      JWIED
::DB2             adcO DB2 Driver for DBI                           MHM
::Empress         adcO Empress RDBMS Driver                         SWILLIAM
::FreeTDS         adcO DBI driver for MS SQLServer and Sybase       SPANNRING
::SearchServer    cdcO PCDOCS/Fulcrum SearchServer Driver for DB    SHARI
::Illustra        bmcO Illustra Driver for DBI                      PMH
::Informix        amcO Informix Driver for DBI                      JOHNL
::Informix4       amcO DBI driver for Informix SE 4.10              GTHYNI
::Ingres          bmcO Ingres Driver for DBI                        HTOUG
::Multiplex       a    Spreading database load acrross servers      TIMB
::ODBC            amcO ODBC Driver for DBI                          DBIML
::Oracle          amcO Oracle Driver for DBI                        TIMB
::QBase           amcO QBase Driver for DBI                         BENLI
::Solid           amcO Solid Driver for DBI                         TWENRICH
::Sybase          amcO Sybase Driver for DBI                        MEWP
::XBase           ampO XBase driver for DBI                         JANPAZ
::mSQL            RmcO Msql Driver for DBI                          JWIED
::mysql           RmcO Mysql Driver for DBI                         JWIED
::pNET            amcO DBD proxy driver                             JWIED
Oraperl           Rmpf Oraperl emulation interface for DBD::Oracle  DBIML
Ingperl           bmpf Ingperl emulation interface for DBD::Ingres  HTOUG
Sybase::
::Async           cdpO interact with a Sybase asynchronously        WORENKD
::BCP             RdcO Sybase BCP interface                         MEWP
::DBlib           RdcO Sybase DBlibrary interface                   MEWP
::Sybperl         Rdpf sybperl 1.0xx compatibility module           MEWP
::CTlib           RdcO Sybase CTlibrary interface                   MEWP
Ace               i    Interface to ACEDB (Popular Genome DB)       LDS
BBDB              a    Insiduous big brother database               LAXEN
Datascope         Rdcf Interface to Datascope RDBMS                 DANMQ
LotusNotes        i    Interface to Lotus Notes C/C++ API           MBRECH
Msql              RmcO Mini-SQL database interface                  JWIED
Mysql             RmcO mysql database interface                     JWIED
ObjStore          Rm+O ObjectStore OODBMS Interface                 JPRIT
Pg                Rdcf PostgreSQL SQL database interface            MERGL
PgSQL             adpO "Pure perl" interface to PostgreSQL          GTHYNI
Postgres          Rdcr PostgreSQL interface with Perl5 coding style VKHERA
Sprite            RdpO Limited SQL interface to flat file databases SHGUN
Xbase             bdpf Read Xbase files with simple IDX indexes     PRATP
XBase             bdpO Read/write interface to XBase files          JANPAZ

Tied Hash File Interfaces:

AnyDBM_File       Sup  Uses first available *_File module above     P5P
BerkeleyDB        Rdco Interface to Berkeley DB 2 & 3               PMQS
CDB_File          adc  Tie to CDB (Bernstein's constant DB) files   TIMPX
DBZ_File          adc  Tie to dbz files (mainly for news history)   IANPX
DB_File           Suc  Tie to DB files                              PMQS
GDBM_File         Suc  Tie to GDBM files                            P5P
MLDBM             RdpO Transparently store multi-level data in DBM  GSAR
NDBM_File         Suc  Tie to NDBM files                            P5P
ODBM_File         Suc  Tie to ODBM files                            P5P
SDBM_File         Suc  Tie to SDBM files                            P5P
AsciiDB::
::Parse           i    Generic text database parsing                MICB
::TagFile         adpO Tie class for a simple ASCII database        JOSERODR
Db::
::Ctree           bdcr Faircom's CTREE+ database interface          REDEN
::Documentum      bdcf Documentum EDMS Perl client interface        BRIANSP
::dmObject        cdpO Object-based interface to Documentum EDMS    JGARRISON
DbFramework::
::Attribute       adpO Relational attribute class                   PSHARPE
::DataModel       adpO Relational data model/schema class           PSHARPE
::DataType        adpO Attribute data type class                    PSHARPE
::ForeignKey      adpO Relational foreign key class                 PSHARPE
::Key             adpO Relational key class                         PSHARPE
::Persistent      adpO Persistent object class                      PSHARPE
::PrimaryKey      adpO Relational primary key class                 PSHARPE
::Table           adpO Relational table/entity class                PSHARPE
::Util            adhO Utility functions/methods                    PSHARPE
DTREE             cdcf Interface to Faircom DTREE multikey ISAM db  JWAT
Fame              adcO Interface to FAME database and language      TRIAS
NetCDF            bmcr Interface to netCDF API for scientific data  SEMM
Stanza            i    Text format database used by OSF and IBM     JHI
VDBM              i    Client/server-layers on top of DBM files     RAM
MARC              bmpO MAchine Readable Catalog (library bib. data) PERL4LIB
MARC::
::XML             ampO MAchine Readable Catalog / XML Extension     PERL4LIB
Metadata::
::Base            bdpO Base metadata functionality                  DJBECKETT
::IAFA            bdpO IAFA templates metadata                      DJBECKETT
::SOIF            bdpO Harvest SOIF metadata                        DJBECKETT
OLE::
::PropertySet     aupO Property Set interface                       MSCHWARTZ
::Storage         aupO Structured Storage / OLE document interface  MSCHWARTZ
Spreadsheet::
::Excel           i    Interface to Excel spreadsheets              RRAWLINGS
::Lotus           i    Interface to Lotus 1-2-3 spreadsheets        RRAWLINGS
X500::
::DN              Mdpo X500 Distinguished Name parser               RSAVAGE

8) User Interfaces (Character and Graphical)

Name              DSLI Description                                  Info
------------      ---- -------------------------------------------- ----
Term::
::ANSIColor       Rdpf Color output using ANSI escape sequences     RRA
::Cap             Supf Basic termcap: Tgetent, Tputs, Tgoto         TSANDERS
::Complete        Supf Tab word completion using stty raw           WTOMPSON
::Control         idpf Basic curses-type screen controls (gotxy)    KJALB
::Gnuplot         adcf Draw vector graphics on terminals etc        ILYAZ
::Info            adpf Terminfo interface (currently just Tput)     KJALB
::Prompt          adpf Prompt a user                                ALLENS
::Query           Rdpf Intelligent user prompt/response driver      AKSTE
::ReadKey         Rdcf Read keystrokes and change terminal modes    KJALB
::ReadLine        Sdcf Common interface for various implementations ILYAZ
::Screen          RdpO Basic screen + input class (uses Term::Cap)  MRKAE
::Size            adcf Simple way to get terminal size              TIMPX
::TUI             bdpf User interface based on Term::ReadLine       SBECK
Term::ReadLine::
::Perl            RdpO GNU Readline history and completion in Perl  ILYAZ
::Gnu             RdcO GNU Readline XS library wrapper              HAYASHI

Major Character User Interface Modules:

Cdk               RdcO Collection of Curses widgets                 GLOVER
Curses            adcO Character screen handling and windowing      WPS
NCurses           cdcO Curses using the ncurses package             WPS
PV                bmpO PerlVision curses windowing (OO widgets etc) AGUL
PerlMenu          Mdpf Curses-based menu and template system        SKUNZ
Curses::
::Forms           cdpO Form management for Curses::Widgets          CORLISS
::Widgets         Rdpf Assorted widgets for rapid interfaces        CORLISS
Emacs             cdcf Support for Perl embedded in GNU Emacs       JTOBEY
Emacs::
::Lisp            bdch Perl-to-Emacs-Lisp glue                      JTOBEY

Tk X Windows User Interface Modules:

Tk                bmcO Object oriented version of Tk v4             TKML
   See the Tk module list at
   http://www.cpan.org/modules/by-module/Tk/tk-modlist.html

Other Major X Windows User Interface Modules:

Gtk               bdcO binding of the Gtk library used by GIMP      KJALB
Gtk::
::Dialog          adph Simple interface to create dialogs in Gtk    ALISTAIRC
Fresco            cd+O Interface to Fresco (post X11R6 version)     BPETH
Glade             adph Glade/Gtk+/Gnome UI source code generator    DMUSGR
Gnome             bdcO Bindings to the Gnome Desktop Toolkit        KJALB
Qt                ad+O Interface to the Qt toolkit                  AWIN
Sx                Rdcf Simple Athena widget interface               FMC
X11::
::Auth            adpO Read and handle X11 '.Xauthority' files      SMCCAM
::Fvwm            RdcO interface to the FVWM window manager API     RJRAY
::Keysyms         adpf X11 key symbols (translation of keysymdef.h) SMCCAM
::Lib             bdcO X11 library interface                        KENFOX
::Motif           bdcO Motif widget set interface                   KENFOX
::Protocol        adpO Raw interface to X Window System servers     SMCCAM
::Toolkit         bdcO X11 Toolkit library interface                KENFOX
::Wcl             bdcO Interface to the Widget Creation Library     JHPB
::XEvent          bdcO provides perl OO acess to XEvent structures  MARTINB
::XFontStruct     bdcO provides perl OO access to XFontStruct       MARTINB
::XRT             adcO XRT widget set (commercial) interface        KENFOX
::Xbae            adcO Xbae matrix (spreadsheet like) interface     KENFOX
::Xforms          bdcO provides the binding to the xforms library   MARTINB
::Xpm             adcf X Pixmap library interface                   KENFOX

Abstract Graphical User Interfaces modules

GUI::
::Guido           i    bd+O Communicate with objects in a GUI       TBRADFUTE

9) Interfaces to or Emulations of Other Programming Languages

Name              DSLI Description                                  Info
------------      ---- -------------------------------------------- ----
Clips             adpO Interface to the Expert System Clips         MSULLIVAN
Rc                cdcO Perl interface for the Rc shell              JPRIT
SICStus           adcO Interface to SICStus Prolog Runtime          CBAIL
C::
::DynaLib         bdcO Allows direct calls to dynamic libraries     JTOBEY
::Scan            RdpO Heuristic parse of C files                   ILYAZ
Tcl               RdcO Complete access to Tcl                       MICB
::Tk              RdcO Complete access to Tk *via Tcl*              MICB
Language::
::Prolog          adpO An implementation of Prolog                  JACKS
::PGForth         i    Peter Gallasch's Forth implementation        PETERGAL
Fortran::
::NameList        adpf Interface to FORTRAN NameList data           SGEL
ShellScript::
::Env             adpO Simple sh and csh script generator           SVENH
Verilog::
::Pli             Rdch Access to simulator functions                WSNYDER
::Language        Rdpf Language support, number parsing, etc        WSNYDER
::Parser          RdpO Language parsing                             WSNYDER
::SigParser       RdpO Signal and module extraction                 WSNYDER
FFI               cdcf Low-level Foreign Function Interface         PMOORE
FFI::
::Library         cdcO Access to functions in shared libraries      PMOORE
FFI::Win32::
::Typelib         idcO FFI taking definitions from a type library   PMOORE
::COM             idcO Access to COM using VTBL interface           PMOORE

10) File Names, File Systems and File Locking (see also File Handles)

Name              DSLI Description                                  Info
------------      ---- -------------------------------------------- ----
Cwd               Supf Current working directory functions          P5P
File::
::Attrib          idpO Get/set file attributes (stat)               TYEMQ
::BSDGlob         bdcf Secure, csh-compatible filename globbing     GBACON
::Basename        Supf Return basename of a filename                P5P
::CheckTree       Supf Check file/dir tree against a specification  P5P
::Compare         Supf Compare file contents quickly                P5P
::Copy            adpf Copying files or filehandles                 ASHER
::CounterFile     RdpO Persistent counter class                     GAAS
::Df              adpf Free disk space utilities (h2ph required)    FTASSIN
::Find            Supf Call func for every item in a directory tree P5P
::Flock           adpf flock() wrapper.  Auto-create locks          MUIR
::Glob            adpf Filename globing (ksh style)                 TYEMQ
::Listing         Rdpf Parse directory listings                     GAAS
::Lock            adcf File locking using flock() and lockf()       JHI
::LckPwdF         adcf Lock and unlock the passwd file              ALLENS
::Path            Supf File path and name utilities                 P5P
::Rsync           i    Copy efficiently over the net and locally    LEAKIN
::Signature       cdpf Heuristics for file recognition              JHI
::Slurp           bdpf Read/write/append files quickly              MUIR
::Sort            Rdpf Sort a file or merge sort multiple files     CNANDOR
::Spec            bdpO Handling files and directories portably      KJALB
::Sync            bdcf POSIX/*nix fsync() and sync()                CEVANS
::Tail            bdpO A more efficient tail -f                     MGRABNAR
::MultiTail       adpO Tail multiple files                          SGMIANO
::chmod           Mdpf Allows for symbolic chmod notation           PINYAN
::lockf           bdcf Interface to lockf system call               PHENSON
::stat            Supf A by-name interface for the stat function    TOMC
Filesys::
::AFS             RucO AFS Distributed File System interface        NOG
::Df              Rdpr Disk free based on Filesys::Statvfs          IGUTHRIE
::DiskFree        adpO OS independant parser of the df command      ABARCLAY
::Statvfs         Rdcf Interface to the statvfs() system call       IGUTHRIE
::dfent           adpf By-name interface                            TOMC
::mntent          adpf By-name interface                            TOMC
::statfs          adpf By-name interface                            TOMC
LockFile::             Application-level locking facilities
::Lock            i    Lock handles created by LockFile::* schemes  RAM
::Manager         i    Records locks created by LockFile::*         RAM
::Scheme          i    Abstract superclass for locking modules      RAM
::Simple          adpr Simple file locking mechanism                RAM
Stat::
::lsMode          Rdpf Translate mode 0644 to -rw-r--r--            MJD

11) String Processing, Language Text Processing, Parsing and Searching

Name              DSLI Description                                  Info
------------      ---- -------------------------------------------- ----
String::
::Approx          Rdpf Approximate string matching and substitution JHI
::BitCount        adpf Count number of "1" bits in strings          WINKO
::CRC             Rdcf Cyclic redundency check generation           MUIR
::CRC32           R?c? ZMODEM-like CRC32 generation of strings as w SOENKE
::Edit            adpf Assorted handy string editing functions      TOMC
::Parity          adpf Parity (odd/even/mark/space) handling        WINKO
::RexxParse       Rdph Perl implementation of REXX 'parse' command  BLCKSMTH
::Scanf           Rdpf Implementation of C sscanf function          JHI
::ShellQuote      adpf Quote string for safe passage through shells ROSCH

Language text related modules

Text::
::Abbrev          Supf Builds hash of all possible abbreviations    P5P
::Bastardize      cdpO corrupts text in various ways                AYRNIEU
::Bib             RdpO Module moved to Text::Refer                  ERYQ
::BibTeX          adcO Parse BibTeX files                           GWARD
::CSV             adpO Manipulate comma-separated value strings     ALANCITT
::CSV_XS          adpO Fast 8bit clean version of Text::CSV         JWIED
::DelimMatch      RdpO Match (possibly nested) delimited strings    NWALSH
::FillIn          RdpO Fill-in text templates                       KWILLIAMS
::Format          RdpO Advanced paragraph formatting                GABOR
::Graphics        RdpO Graphics rendering toolkit with text output  SFARRELL
::Invert          cdpO Create/query inv. index of text entities     NNEUL
::Macros          adpO template macro expander (OO)                 JDPORTER
::Metaphone       bdcf A modern soundex. Phonetic encoding of words MSCHWERN
::MetaText        bdpO Text processing/markup meta-language         ABW
::Morse           cdpf convert text to/from Morse code              JONO
::ParseWords      Supf Parse strings containing shell-style quoting HALPOM
::Refer           RdpO Parse refer(1)-style bibliography files      ERYQ
::SimpleTemplate  adpO Template for dynamic text generation         TAIY
::Soundex         Sdhf Convert a string to a soundex value          MARKM
::Tabs            Sdpf Expand and contract tabs ala expand(1)       MUIR
::TeX             cdpO TeX typesetting language input parser        ILYAZ
::Template        MdpO Expand template text with embedded perl      MJD
::Vpp             RdpO Versatile text pre-processor                 DDUMONT
::Wrap            Sdpf Wraps lines to make simple paragraphs        MUIR
Text::Wrap::
::Hyphenate       a    Like Text::Wrap with ability to hyphenate    MJD

Other Text:: modules (these should be under String:: but pre-date it)

Text::
::Balanced        Mdpf Extract balanced-delimiter substrings        DCONWAY
::Parser          adpO String parser using patterns and states      PATM
::Trie            adpf Find common heads and tails from strings     ILYAZ

Stemming algorithms

Text::
::English         adpf English language stemming                    IANPX
::German          adpf German language stemming                     ULPFR
::Stem            bdpf Porter algorithm for stemming English words  IANPX

Natural Languages

Lingua::
::DetectCharset   a    Heuristics to detect coded character sets    JNEYSTADT
::Ispell          adpf Interface to the Ispell spellchecker         JDPORTER
::Stem            Rdph Word stemmer with localization               SNOWHARE

Specific Natural Languages

Lingua::
::EN              i    Namespace for English language modules
::PT              bupf Namespace for Portugese language modules     EGROSS
Lingua::EN::
::Cardinal        i    Convert numbers to words                     HIGHTOWE
::Hyphenate       Rdpf Syllable based hyphenation                   DCONWAY
::Infinitive      Mdpo Find infinitive of a conjugated word         RSAVAGE
::Inflect         Mdpf English singular->plural and "a"->"an"       DCONWAY
::Ordinal         i    Convert numbers to words                     HIGHTOWE
::Squeeze         bdpf Shorten english text for Pagers/GSM phones   JARIAALTO
::Syllable        a    Estimate syllable count in words             GREGFAST
Lingua::RU::
::Charset         anpf Detect/Convert russian character sets.       FARBER
ERG               Rdpf An extensible report generator framework     PHOENIXL
PostScript::
::Barcode         bdpf Various types of barcodes as PostScript      COLEMAN
::Basic           bdpO Basic methods for postscript generation      STWIGGER
::Document        bdpO Generate multi-page PostScript               SHAWNPW
::Elements        bdpO Objects for shapes, lines, images            SHAWNPW
::Font            RdpO analyzes PostScript font files               JV
::FontInfo        RdpO analyzes Windows font info files             JV
::FontMetrics     RdpO analyzes Adobe Font Metric files             JV
::Metrics         bdpO Font metrics data used by PS::TextBlock      SHAWNPW
::Resources       RdpO loads Unix PostScript Resources file         JV
::TextBlock       bdpO Objects used by PS::Document                 SHAWNPW
Font::
::AFM             RdpO Parse Adobe Font Metric files                GAAS
::TFM             adpO Read info from TeX font metric files         JANPAZ
::TTF             bdpO TrueType font manipulation module            MHOSKEN
Number::
::Format          adpO Package for formatting numbers for display   WRW
Parse::
::ePerl           Rdcr Embedded Perl (ePerl) parser                 RSE
::Lex             adpO Generator of lexical analysers               PVERD
::RecDescent      MdpO Recursive descent parser generator           DCONWAY
::Yapp            RdpO Generates OO LALR parser modules             FDESAR
Search::
::Dict            Supf Search a dictionary ordered text file        P5P
::InvertedIndex   bdpO Inverted index database support              SNOWHARE
SGML::
::Element         cdpO Build a SGML element structure tree          LSTAF
::SPGrove         bd+O Load SGML, XML, and HTML files               KMACLEOD
SGMLS             RdpO A Post-Processor for SGMLS and NSGMLS        INGOMACH
XML               RmhO Large collection of XML related modules      XMLML
    The namespace for low level-level interface modules below XML is
    documented in a separate XML module list that is available at
    http://www.cpan.org/modules/by-module/XML/perl-xml-modules.html
    It is discouraged to put higher level XML modules into the XML
    namespace to avoid bloat.
RTF::
::Base            i    Classes for Microsoft Rich Text Format       NI-S
::Document        a    Generate Rich Text (RTF) Files               RRWO
::Generator       i    Next Generation of RTF::Document             RRWO
::Group           a    Base class for manipulating Rich Text Format RRWO
::Parser          a    Base class for parsing RTF files             PVERD
SQL::
::Statement       adcO Small SQL parser and engine                  JWIED
::Builder         adpO OO interface for creating SQL statements     ZENIN
TeX::
::DVI             adpO Methods for writing DVI (DeVice Independent) JANPAZ
::Hyphen          adpO Hyphenate words using TeX's patterns         JANPAZ
FrameMaker        cdpO Top level FrameMaker interface               PEASE
FrameMaker::
::FDK             idcO Interface to Adobe FDK                       PEASE
::MIF             cdpO Parse and Manipulate FrameMaker MIF files    PEASE
::Control         cdpO Control a FrameMaker session                 PEASE
Marpa             cd+O Context Free Parser                          JKEGL
Chatbot::
::Eliza           RdpO Eliza algorithm encapsulated in an object    JNOLAN
Quiz::
::Question        cdpO Questions and Answers wrapper                RFOLEY
Template::
::*               RdpO Extensive Toolkit for template processing    ABW

12) Option, Argument, Parameter and Configuration File Processing

Name              DSLI Description                                  Info
------------      ---- -------------------------------------------- ----
Getopt::
::Declare         MdpO An easy-to-use WYSIWYG command-line parser   DCONWAY
::EvaP            Mdpr Long/short options, multilevel help          LUSOL
::Gnu             adcf GNU form of long option handling             WSCOT
::Help            bdpf Yet another getopt, has help and defaults    IANPX
::Long            Sdpr Advanced option handling                     JV
::Mixed           Rdpf Supports both long and short options         CJM
::Regex           ad   Option handling using regular expressions    JARW
::Simple          MdpO A simple-to-use interface to Getopt::Long    RSAVAGE
::Std             Supf Implements basic getopt and getopts          P5P
::Tabular         adpr Table-driven argument parsing with help text GWARD
ConfigReader      cdpO Read directives from configuration file      AMW
Resources         bdpf Application defaults management in Perl      FRANCOC
IniConf                Read/Write INI-Style configuration files     RBOW
App::                General application development tools
::Config          bdpO Configuration file mgmt                      ABW
CfgTie            adph Framework for tieing system admin tasks      RANDYM

13) Internationalization and Locale

Name              DSLI Description                                  Info
------------      ---- -------------------------------------------- ----
I18N::
::Charset         Rdpf Character set names and aliases              MTHURN
::Collate         Sdpr Locale based comparisons                     JHI
::LangTags        Rdpf compare & extract language tags (RFC1766)    SBURKE
::WideMulti       i    Wide and multibyte character string          JHI
Locale::
::Country         Rdpf ISO 3166 two letter country codes            NEILB
::Date            adpf Month/weekday names in various languages     JHI
::Langinfo        cdcf The <langinfo.h> API                         JHI
::Language        Rdpf ISO 639 two letter language codes            NEILB
::Msgcat          RdcO Access to XPG4 message catalog functions     CHRWOLF
::PGetText        bdpf What GNU gettext does, written in pure perl  MSHOYHER
::gettext         Rdcf Multilanguage messages                       PVANDRY
Unicode::
::String          RdcO String manipulation for Unicode strings      GAAS
::Map8            RdcO Convert between most 8bit encodings          GAAS
No::
::Dato            Rdpf Norwegian stuff                              GAAS
::KontoNr         Rdpf Norwegian stuff                              GAAS
::PersonNr        Rdpf Norwegian stuff                              GAAS
::Sort            Rdpf Norwegian stuff                              GAAS
::Telenor         Rdpf Norwegian stuff                              GAAS
Cz::
::Cstocs          adpO Charset reencoding                           JANPAZ
::Sort            adpO Czech sorting                                JANPAZ
::Speak           bdpf number, etc. convertor to the Czech language YENYA

14) Authentication, Security and Encryption (see also Networking)

Name              DSLI Description                                  Info
------------      ---- -------------------------------------------- ----
User::
::pwent           adpf A by-name interface to password database     TOMC
::grent           adpf A by-name interface to groups database       TOMC
::utent           cdcO Interface to utmp/utmpx/wtmp/wtmpx database  ROSCH
PGP::          adpO  Simple interface to PGP subprocess via pipes PGPML
::Sign            bdpr Create/verify PGP/GnuPG signatures, securely RRA
DES               adcf DES encryption (libdes)                      EAYNG
Des               adcf DES encryption (libdes)                      MICB
GSS               adcO Generic Security Services API (RFC 2078)     MSHLD
Digest::
::MD5             Rdch  MD5 message digest algorithm                GAAS
::MD2             Rdch  MD2 message digest algorithm                GAAS
::SHA1            cdch  NIST SHA message digest algorithm           UWEH
::HMAC            Rdph  HMAC message integrity check                GAAS
Crypt::
::CBC             adpO Cipherblock chaining for Crypt::DES/IDEA     LDS
::DES             a    DES encryption (libdes)                      GARY
::ElGamal         bdpO ElGamal digital signatures and keys          VIPUL
::IDEA            a    International Data Encryption Algorithm      GARY
::Keys            adpO Management system for cryptographic keys     VIPUL
::Passwd          bdc? Perl wrapper around the UFC Crypt            LUISMUNOZ
::PasswdMD5       bdc? Interoperable MD5-based crypt() function     LUISMUNOZ
::PRSG            a    160 bit LFSR for pseudo random sequences     GARY
::Random          bdpO Cryptographically Strong Random Numbers      VIPUL
::Rot13           cdpO simple encryption often seen on usenet       AYRNIEU
::RSA             bdpO RSA encryption, decryption, key generation   VIPUL
::Twofish         Rdpf Twofish Encryption Algorothm                 NISHANT
::UnixCrypt       Rdpf Perl-only implementation of crypt(3)         MVORL
OpenCA            Rdpf Tools for running a Certification Authority  MADWOLF
Authen::
::ACE             adcO Interface to Security Dynamics ACE (SecurID) DCARRIGAN
::Krb4            RdcO Interface to Kerberos 4 API                  JHORWITZ
::Krb5            RdcO Interface to Kerberos 5 API                  JHORWITZ
::PAM             bdch Interface to PAM library                     NIKIP
::TacacsPlus      adcO Authentication on tacacs+ server             MSHOYHER
::Ticket          adpO Suite consisting of master/client/tools      JSMITH
RADIUS::
::Dictionary      bdpO Object interface to RADIUS dictionaries      CHRMASTO
::Packet          bdpO Object interface to RADIUS (rfc2138) packets CHRMASTO
::UserFile        bdpO Manipulate a RADIUS users file               OEVANS
SSLeay::
::*               cdcO Interface to SSLeay                          EAYNG

15) World Wide Web, HTML, HTTP, CGI, MIME etc (see Text Processing)

Name              DSLI Description                                  Info
------------      ---- -------------------------------------------- ----
URI::
::Attr            ampO Stores attributes in the URI name space      LWWWP
::Escape          Rmpf General URI escaping/unescaping functions    LWWWP
::URL             RmpO Uniform Resource Locator objects             LWWWP
CGI::
::Authent         Mdpf request the HTTP authentification            JENDA
::Base            RmpO Complete HTTPD CGI Interface class           CGIP
::BasePlus        RmpO Extra CGI::Base methods (incl file-upload)   CGIP
::CList           bdpO Manages hierarchical collapsible lists       PEARCEC
::Cache           adpf Speed up slow CGI scripts by caching         BROCSEIB
::Carp            cmpf Drop-in Carp replacement for CGI scripts     CGIP
::Debug           adpn show CGI debugging data                      JONAS
::Deurl           Mdpr decode the CGI parameters                    JENDA
::Enurl           Mdpr encode the CGI parameters                    JENDA
::Formalware      Mdpo Convert an XML file to a suite of CGI forms  RSAVAGE
::Imagemap        adpO Imagemap handling for specialized apps       MIKEH
::LogCarp         Rdph Error, log, bug streams, httpd style format  MIKEKING
::MiniSvr         RmpO Fork CGI app as a per-session mini server    CGIP
::Minimal         MdpO A micro-sized CGI handler                    SNOWHARE
::MxScreen        i    Screen multi-plexer framework                RAM
::Out             adpf Buffer CGI output and report errors          MUIR
::Persistent      adpO Transparent State Persistence in CGI scripts VIPUL
::Query           adpO Parse CGI quiry strings                      MPECK
::Request         RmpO Parse CGI request and handle form fields     CGIP
::Response        ampO Response construction for CGI applications   CGIP
::Screen          adpO Create multi screen CGI-scripts              ULPFR
::Session         cmpO Maintain session/state information           MGH
::SpeedyCGI       bdcn Run CGI scripts persistenly                  HORROCKS
::Validate        adpO Advanced CGI form parser                     ZENIN
::XMLForm         adpO Create/query XML for forms                   MSERGEANT
HTML::
::Base            adpO Object-oriented way to build pages of HTML   GAND
::CalendarMonth   bdpO Calendar Months as HTML::Element trees       MSISK
::EP              adpO Modular, extensible Perl embedding           JWIED
::Element         ampO Representation of a HTML parsing tree        LWWWP
::ElementGlob     bdpO Manipulate multiple elements at once         MSISK
::ElementRaw      bdpO Graft HTML strings on an HTML::Element       MSISK
::ElementSuper    bdpO Various HTML::Element extensions             MSISK
::ElementTable    bdpO HTML::Element table manipulation             MSISK
::Embperl         Rmcf Embed Perl in HTML                           GRICHTER
::Entities        Rmpf Encode/decode HTML entities                  LWWWP
::Formatter       ampO Convert HTML to plain text or Postscript     LWWWP
::HeadParser      RmpO  Parse <HEAD> section of HTML documents      LWWWP
::LinkExtor       RmpO  Extract links from HTML documents           LWWWP
::Mason           bdpO Build sites from modular Perl/HTML blocks    JSWARTZ
::ParseForm       i    Parse and handle HTML forms via templates    NMONNET
::Parser          RmpO  Basic HTML Parser                           LWWWP
::QuickCheck      cdpf Fast simple validation of HMTL text          YLU
::Simple          bdpf Simple functions for generating HTML         TOMC
::SimpleParse     RdpO Bare-bones HTML parser                       KWILLIAMS
::Stream          RdpO HTML output stream                           ERYQ
::Subtext         adpO Text substitutions on an HTML template       KAELIN
::Table           bnpO Write HTML tables via spreadsheet metaphor   STLACY
::TableLayout     bdpO an extensible OO layout manager              SFARRELL
::Template        RmpO A simple templating system allow Perl to con SAMTREGAR
::TokeParser      RmpO  Alternative HTML::Parser interface          LWWWP
::Validator       bdpO HTML validator utilizing nsgmls and libwww   SAIT
HTTP::
::Cookies         RmpO Storage of cookies                           LWWWP
::Date            Rmpf Date conversion for HTTP date formats        LWWWP
::Daemon          RmpO Base class for simple HTTP servers           LWWWP
::Headers         RmpO Class encapsulating HTTP Message headers     LWWWP
::Message         RmpO Base class for Request/Response              LWWWP
::Request         RmpO Class encapsulating HTTP Requests            LWWWP
::Response        RmpO Class encapsulating HTTP Responses           LWWWP
::Status          Rmpf HTTP Status code processing                  LWWWP
::Negotiate       Rmpf HTTP content negotiation                     LWWWP
HTTP::Request::
::Common          Rmpf Functions that generate HTTP::Requests       LWWWP
::Form            RdpO Generates HTTP::Request objects out of forms GBAUER
HTTPD::
::UserAdmin       bdpO Management of server user databases          LDS
::GroupAdmin      bdpO Management of server group databases         LDS
::Authen          bdpO Preform HTTP Basic and Digest Authentication LDS
::Config          cdpO Management of server configuration files     LDS
::Access          cdpO Management of server access control files    LDS
WWW::
::Robot           adpO Web traversal engine for robots & agents     NEILB
::RobotRules      ampO Parse /robots.txt file                       LWWWP
::Search          adpO Front-end to Web search engines              JOHNH
LWP               RmpO Libwww-perl                                  LWWWP
LWP::
::Conn            ampO LWPng stuff                                  LWWWP
::MediaTypes      Rmpf Media types and mailcap processing           LWWWP
::Parallel        RmpO Allows parallel http and ftp access with LWP MARCLANG
::Protocol        RmpO LWP support for URL schemes (http, file etc) LWWWP
::RobotUA         RmpO A UserAgent for robot applications           LWWWP
::Simple          Rmpf Simple procedural interface to libwww-perl   LWWWP
::UA              ampO LWPng stuff                                  LWWWP
::UserAgent       RmpO A WWW UserAgent class                        LWWWP
MIME::
::Base64          Rdhf Encode/decode Base 64 (RFC 2045)             GAAS
::QuotedPrint     Rdpf Encode/decode Quoted-Printable               GAAS
::Decoder         adpO OO interface for decoding MIME messages      ERYQ
::Entity          adpO An extracted and decoded MIME entity         ERYQ
::Head            adpO A parsed MIME header                         ERYQ
::IO              adpO Simple I/O handles for filehandles/scalars   ERYQ
::Latin1          adpO Encoding 8-bit Latin-1 as 7-bit ASCII        ERYQ
::Lite            RdpO Single module for composing simple MIME msgs ERYQ
::Parser          adpO Parses streams to create MIME entities       ERYQ
::ParserBase      adpO For building your own MIME parser            ERYQ
::Types           adpr Returns the MIME type for a filename/suffix  OKAMOTO
::Words           cdpf Encode/decode RFC1522-escaped header strings ERYQ
Apache            RmcO Interface to the Apache server API           DOUGM
   For a concise listing of Apache modules see
   http://www.cpan.org/modules/by-module/Apache/apache-modlist.html
Netscape::
::Cache           bdpO Access Netscape cache files                  SREZIC
::History         bdpO Class for accessing Netscape history DB      NEILB
::HistoryURL      bdpO Like a URI::URL, but with visit time         NEILB
::Server          adcO Perl interface to Netscape httpd API         BSUGARS
HyperWave::
::CSP             cdpO Interface to HyperWave's HCI protocol        GOSSAMER
WebFS::
::FileCopy        Rdpf Get, put, copy, delete files located by URL  BZAJAC
WebCache::
::Digest          bdpf Internet Cache Protocol (RFCs 2186 and 2187) MHAMILTON
Authorizenet      bdpf Get Credit Card Info from authorizenet       DLINCOLN
BizTalk           RdpO Microsoft BizTalk Framework Toolkit          SIMONJ
Catalog           bmpO Manage/display resources catalog (URLs etc.) LDACHARY
CGI_Lite          MnpO Light-weight interface for fast apps         SHGUN
FCGI              Rdcr Fast CGI                                     SKIMO
WING              RmhO Apache based IMAP/NNTP Gateway               MICB
WOMP              cdpO CGI App Dev Suite: authen/state/html         SPADKINS
CIPP              RdpO Preprocessor for embedding Perl, SQL in HTML JRED

16) Server and Daemon Utilities

Name              DSLI Description                                  Info
------------      ---- -------------------------------------------- ----
Event             bmch fast, generic event loop                     JPRIT
Event::
::Stats           Rmcf Collects statistics for Event                JPRIT
::tcp             bmpO TCP session layer library                    JPRIT
EventServer       RupO Triggers objects on i/o, timers & interrupts JACKS
::Functions       Rupf Utility functions for initializing servers   JACKS
::*Wrapper        Rupf Bunch of wrappers for different server types JACKS
::Gettimeofday    Rupr gettimeofday syscall wrapper                 JACKS
::Signal          Rupr signalhandler for the eventserver            JACKS
Server::Server::
::EventDriven     RupO See 'EventServer' (compatibility maintained) JACKS
Server::Echo::
::MailPipe        cup  A process which accepts piped mail           JACKS
::TcpDForking     cup  TCP daemon which forks clients               JACKS
::TcpDMplx        cup  TCP daemon which multiplexes clients         JACKS
::TcpISWFork      cup  TCP inetd wait process, forks clients        JACKS
::TcpISWMplx      cup  TCP inetd wait process, multiplexes clients  JACKS
::TcpISNowait     cup  TCP inetd nowait process                     JACKS
::UdpD            cup  UDP daemon                                   JACKS
::UdpIS           cup  UDP inetd process                            JACKS
Server::Inet::
::Functions       cdpf Utility functions for Inet socket handling   JACKS
::Object          cupO Basic Inet object                            JACKS
::TcpClientObj    cupO A TCP client (connected) object              JACKS
::TcpMasterObj    cupO A TCP master (listening) object              JACKS
::UdpObj          cupO A UDP object                                 JACKS
Server::FileQueue::
::Functions       cupf Functions for handling files and mailboxes   JACKS
::Object          cupO Basic object                                 JACKS
::DirQueue        cupO Files queued in a directory                  JACKS
::MboxQueue       cupO Mail queued in a mail box                    JACKS
Server::Mail::
::Functions       cupf Functions for handling files and mailboxes   JACKS
::Object          cupO Basic mail object                            JACKS
MailBot           cdpO Archive server, listserv, auto-responder     RHNELSON
NetServer::
::Generic         adpO generic OOP class for internet servers       CHSTROSS
::ProcessTop      Rmpf Gives a top-like control screen for Event    JPRIT
Time::
::Warp            Rmcf Change the start and speed of Event time     JPRIT
Spool::
::Queue           i    Generic printer spooling facilities          RAM

17) Archiving, Compression and Conversion

Name              DSLI Description                                  Info
------------      ---- -------------------------------------------- ----
Compress::
::Bzip2           Rdcf Interface to the Bzip2 compression library   AZEMGI
::LZO             Rdcf Interface to the LZO compression library     MFX
::Zlib            RdcO Interface to the Info-Zip zlib library       PMQS
Convert::
::BER             adpO Class for encoding/decoding BER messages     GBARR
::BinHex          cdpO Convert to/from RFC1741 HQX7 (Mac BinHex)    ERYQ
::EBCDIC          adpf ASCII to/from EBCDIC                         CXL
::Recode          Rdpf Mapping functions between character sets     GAAS
::SciEng          bdpO Convert numbers with scientific notation     COLINK
::Translit        MdpO String conversion among many character sets  GENJISCH
::UU              bdpf UUencode and UUdecode                        ANDK
::UUlib           Rdcr Intelligent de- and encode (B64, UUE...)     MLEHMANN
AppleII::
::Disk            bdpO Read/write Apple II disk image files         CJM
::ProDOS          bdpO Manipulate files on ProDOS disk images       CJM
::DOS33           i    Manipulate files on DOS 3.3 disk images      CJM
::Pascal          i    Manipulate files on Apple Pascal disk images CJM
Archive::
::Tar             adpO Read, write and manipulate tar files         CDYBED

18) Images, Pixmap and Bitmap Manipulation, Drawing and Graphing

Name              DSLI Description                                  Info
------------      ---- -------------------------------------------- ----
GD                adcO GIF editing/painting/manipulation            LDS
OpenGL            adcf Interface to OpenGL drawing/imaging library  FIJI
PGPLOT            Rdof PGPLOT plotting library - scientific graphs  KGB
PixDraw           adcO Drawing and manipulating true color images   KSB
GIFgraph          RdpO Package to generate GIF charts, uses GD      MVERB
VRML              RdpO VRML methods independent of specification    HPALM
VRML::
::VRML1           RdpO VRML methods with the VRML 1.0 standard      HPALM
::VRML2           RdpO VRML methods with the VRML 2.0 standard      HPALM
::Color           Rdpf color functions and X11 color names          HPALM
::Base            RdpO common basic methods                         HPALM
::Browser         i    A complete VRML viewer                       LUKKA
Graphics::
::Libplot         RdcO Binding for C libplotter plotting library    JLAPEYRE
::Plotter         Rd+O Binding for C++ libplotter plotting library  MAKLER
::Simple          idcO Simple drawing primitives                    NEERI
::Turtle          idp  Turtle graphics package                      NEERI
Image::
::Colorimetry     cdpO transform colors between colorspaces         JONO
::Grab            RdpO Grabbing images off the Internet             MAHEX
::Magick          RdcO Read, query, transform, and write images     JCRISTY
::ParseGIF        RnpO Parse GIF images into component parts        BENL
::Size            Rdpf Measure size of images in common formats     RJRAY
Chart::
::Base            RdpO Business chart widget collection             NINJAZ
::Gdchart         bdch based on Bruce V's C gdchart distribution    MHEMPEL
::GnuPlot         RdpO Access to gnuplot library                    NPESKETT
::Graph           Rmpr front-end to gnuplot and XRT                 MHYOUNG
::PNGgraph        RdpO Package to generate PNG graphs, uses GD.pm   SBONDS
::Pie             adpO Implements "new Chart::Pie()"                KARLON
::Plot            bdcO Graph two-dimensional data (uses GD.pm)      SMORTON
::XMGR            Rdph interface to XMGR plotting package           TJENNESS
MPEG::
::MP3Info         bdpf Manipulate / fetch info from MP3 audio files CNANDOR
Xmms              bdcO Interactive remote control shell for xmms    DOUGM
Xmms::
::Config          bdcO Perl interface to the xmms_cfg_* API         DOUGM
::Remote          bdcO Perl interface to the xmms_remote_* API      DOUGM
::Plugin          i    Perl interface to the xmms plugin APIs       DOUGM
Gimp              Mmch Rich interface to write plugins for The Gimp MLEHMANN
T3D               cdpO Realtime extensible 3D rendering             GJB
ThreeD            i    Namespace root for all kinds of 3D modules   ADESC
RenderMan         a    Manipulate RenderMan objects                 GMLEWIS

19) Mail and Usenet News

Name              DSLI Description                                  Info
------------      ---- -------------------------------------------- ----
Mail::
::Address         adpf Manipulation of electronic mail addresses    GBARR
::Alias           adpO Reading/Writing/expanding of mail aliases    GBARR
::Cap             adpO Parse mailcap files as specified in RFC 1524 GBARR
::Ezmlm           bdpO Object methods for ezmlm mailing lists       GHALSE
::Field           RdpO Base class for handling mail header fields   GBARR
::Folder          adpO Base-class for mail folder handling          KJOHNSON
::Freshmeat       RdpO Parses newsletters from http://freshmeat.net ASPIERS
::Header          RdpO Manipulate mail RFC822 compliant headers     GBARR
::Internet        adpO Functions for RFC822 address manipulations   GBARR
::MH              adcr MH mail interface                            MRG
::Mailer          adpO Simple mail agent interface (see Mail::Send) GBARR
::POP3Client      RdpO Support for clients of POP3 servers          SDOWD
::Send            adpO Simple interface for sending mail            GBARR
::Sender          MdpO socket() based mail with attachments, SMTP   JENDA
::Sendmail        Rdpf Simple platform independent mailer           MIVKOVIC
::UCEResponder    i    Spamfilter                                   CHSTROSS
::Util            adpf Mail utilities (for by some Mail::* modules) GBARR
News::
::Article         adpO Module for handling Usenet articles          AGIERTH
::Gateway         ampO Mail/news gatewaying, moderation support     RRA
::NNTPClient      bdpO Support for clients of NNTP servers          RVA
::Newsrc          adpO Manage .newsrc files                         SWMCD
::Scan            cdpO Gathers and reports newsgroup statistics     GBACON
NNTP::
::Server          i    Support for an NNTP server                   JOEHIL
NNML::
::Server          adpO An simple RFC 977 NNTP server                ULPFR
IMAP::
::Admin           RdpO IMAP Administration                          EESTABROO

20) Control Flow Utilities (callbacks and exceptions etc)

Name              DSLI Description                                  Info
------------      ---- -------------------------------------------- ----
AtExit            Rdpr atexit() function to register exit-callbacks BRADAPP
Callback          RdpO Define easy to use function callback objects MUIR
Memoize           bdpr Automatically cache results of functions     MJD
Religion          adpr Control where you go when you die()/warn()   KJALB
Hook::
::PrePostCall     adpO Add actions before and after a routine       PVERD

21) File Handle, Directory Handle and Input/Output Stream Utilities

Name              DSLI Description                                  Info
------------      ---- -------------------------------------------- ----
IO::
::AtomicFile      adpO Write a file which is updated atomically     ERYQ
::Dir             cdpO Directory handle objects and methods         GBARR
::File            cdpO Methods for disk file based i/o handles      GBARR
::Handle          cdpO Base class for input/output handles          GBARR
::Lines           bdpO I/O handle to read/write to array of lines   ERYQ
::Pipe            cdpO Methods for pipe handles                     GBARR
::Ptty            adcf Pseudo terminal interface functions          GBARR
::Pty             cdpO Methods for pseudo-terminal allocation etc   PEASE
::React           RdpO OO Expect-like communication                 GARROW
::STREAMS         cdcO Methods for System V style STREAMS control   NI-S
::Scalar          RdpO I/O handle to read/write to a string         ERYQ
::ScalarArray     RdpO I/O handle to read/write to array of scalars ERYQ
::Seekable        cdpO Methods for seekable input/output handles    GBARR
::Select          adpO Object interface to system select call       GBARR
::Socket          cdpO Methods for socket input/output handles      GBARR
::Stty            bdpf POSIX compliant stty interface               AUSCHUTZ
::Tee             RdpO Multiplex output to multiple handles         KENSHAN
::Wrap            RdpO Wrap old-style FHs in standard OO interface  ERYQ
::WrapTie         adpO Tie your handles & retain full OO interface  ERYQ
::Zlib            adpO IO:: style interface to Compress::Zlib       TOMHUGHES
FileHandle        SupO File handle objects and methods              P5P
FileCache         Supf Keep more files open than the system permits P5P
DirHandle         SupO Directory handle objects and methods         CHIPS
SelectSaver       SupO Save and restore selected file handle        CHIPS
Selectable        cdpO Event-driven I/O streams                     MUIR
Log::
::Agent           i    A general logging framework                  RAM
::Topics          Rdpf Control flow of topic based logging messages JARW
Expect            RdpO Close relative of Don Libes' Expect in perl  AUSCHUTZ

22) Microsoft Windows Modules

Name              DSLI Description                                  Info
------------      ---- -------------------------------------------- ----
Win32::
::AbsPath         Rdpf relative paths to absolute, understands UNCs JENDA
::ASP             Rdpr Makes PerlScript ASP development easier      MSERGEANT
::AdminMisc       Rdcf Misc admin and net functions                 DAVEROTH
::COM             cd+O Access to native COM interfaces              JDB
::ChangeNotify    bdcO Monitor changes to files and directories     CJM
::Event           bdcO Use Win32 event objects for IPC              CJM
::EventLog        adcf Interface to Win32 EventLog functions        WIN32
::FileOp          Mdpf file operations + fancy dialogs, INI files   JENDA
::FileType        RdpO modify Win32 fily type mapping               JENDA
::FUtils          bdcf Implements missing File Utility functions    JOCASA
::GD              RdcO Win32 port of the GD extension (gif module)  DAVEROTH
::GuiTest         adcf SendKeys, FindWindowLike and more            ERNGUI
::IPC             bdcO Base class for Win32 synchronization objects CJM
::Message         bdcf Network based message passing                DAVEROTH
::Mutex           bdcO Use Win32 mutex objects for IPC              CJM
::NetAdmin        adcf Interface to Win32 NetAdmin functions        WIN32
::NetResource     adcf Interface to Win32 NetResource functions     WIN32
::ODBC            Rd+O ODBC interface for accessing databases       DAVEROTH
::OLE             Rm+h Interface to OLE Automation                  JDB
::Pipe            Rd+O Named Pipes and assorted function            DAVEROTH
::Process         adcf Interface to Win32 Process functions         WIN32
::Registry        adcf Interface to Win32 Registry functions        WIN32
::Semaphore       bdcO Use Win32 semaphore objects for IPC          CJM
::SerialPort      RdpO Win32 Serial functions/constants/interface   BBIRTH
::WinError        adcf Interface to Win32 WinError functions        WIN32
WinNT             cdcf Interface to Windows NT specific functions   WIN32
NT                cdcf Old name for WinNT - being phased out        WIN32
Win95             i    Interface to Windows 95 specific functions   WIN32
Win32API::
::CommPort        RdpO Win32 Serial functions/constants/interface   BBIRTH
::Console         cdcf Win32 Console Window functions/consts        TYEMQ
::File            cdcf Win32 file/dir functions/constants           TYEMQ
::Registry        adcf Win32 Registry functions/constants           TYEMQ
::WinStruct       cdcf Routines for Win32 Windowing data structures TYEMQ
::Window          cdcf Win32 Windowing functions/constants          TYEMQ

23) Miscellaneous Modules

Name              DSLI Description                                  Info
------------      ---- -------------------------------------------- ----
Archie            Rdpf Archie queries via Prospero ARDP protocol    GBOSS
BnP               RdhO Build'n'Play all-purpose batch install. tool STBEY
Bundle            i    Namespace reserved for modules collections   ANDK
CPAN              RdpO Perl Archive browse and download             ANDK
Gedcom            bmpO Interface to genealogy Gedcom files          PJCJ
Neural            ad+O Generic simulation of neural networks        LUKKA
Nexus             cdcO Interface to Nexus (threads/ipc/processes)   RDO
Pcap              i    An interface for LBL's packet capture lib    AMOSS
Roman             Rdpf Convert Roman numbers to and from Arabic     OZAWA
SDDF              cd+O Interface to Pablo Self Defining Data Format FIS
Wais              Rdcf Interface to the freeWAIS-sf libraries       ULPFR
Astro::
::SLA             Rdcf Interface to SLALIB positional astronomy lib TJENNESS
::Time            Rdpf General time conversions for Astronomers     CPHIL
::Coord           Rdpf Transform telescope and source coordinates   CPHIL
::Misc            Rdpf Miscellaneous astronomical routines          CPHIL
Bio::
::*               i    Utilities for molecular biology              SEB
Business::
::CreditCard      Rdpf Credit card number check digit test          JONO
::ISBN            RdpO Work with ISBN as objects                    BDFOY
::ISSN            adpO Object and functions to work with ISSN       SAPAPO
Chemistry::
::Elements        RdpO Working with Chemical Elements               BDFOY
::Isotopes        idpO extends Elements to deal with isotopes       BDFOY
Remedy::
::AR              adcO Interface to Remedy's Action Request API     RIK
ARS               Mmhh Interface to Remedy's Action Request API     JMURPHY
Psion::
::Db              idpO Handle Psion palmtop computer database files IANPX
HP200LX::
::DB              cdpO Handle HP 200LX palmtop computer database    GGONTER
::DBgui           cdpO Tk base GUI for HP 200LX db files            GGONTER
Agent             cdpO Transportable Agent module                   SPURKIS
NetObj            adpO Module loading in real time over TCP/IP      JDUNCAN
Penguin           RdpO Remote Perl in Secure Environment            AMERZKY
Penguin::
::Easy            RdpO Provides quick, easy access to Penguin API   JDUNCAN
BarCode::
::UPC             i    Produce PostScript UPC barcodes              JONO
Audio::
::CD              bdcO Perl interface to libcdaudio (cd + cddb)     DOUGM
::Sox             i    sox sound library as one or more modules     NI-S
MIDI              RdpO Object interface to MIDI files               SBURKE
Logfile           RdpO Generic methods to analyze logfiles          ULPFR
SyslogScan::
::SyslogEntry     bdpO Parse UNIX syslog                            RHNELSON
::SendmailLine    bdpO Summarize sendmail transactions              RHNELSON
FAQ::
::OMatic          RdpO A CGI-based FAQ/help database maintainer     JHOWELL
Geo::
::METAR           Rdpf Process Aviation Weather (METAR) Data        JZAWODNY
::Storm_Tracker   i    Retrieves tropical storm advisories          CARPENTER
::WeatherNOAA     Rdpf Current/forecast weather from NOAA           MSOLOMON
Games::
::Dice            cdpf Simulates rolling dice                       PNE
::WordFind        bdpO Generate word-find type puzzles              AJOHNSON
Cisco::
::Conf            adpO Cisco router administratian via TFTP         JWIED
Silly::
::StringMaths     adpf Do maths with letters and strings            SKINGTON
Watchdog::
::Service         adpO Look for service in process table            PSHARPE
::HTTPService     adpO Test status of HTTP server                   PSHARPE
::MysqlService    adpO Test status of Mysql server                  PSHARPE
Schedule::           See also Schedule:: in chapter 4
::Match           adpf Pattern-based crontab-like schedule          TAIY

24) Interface Modules to Commercial Software

Name              DSLI Description                                  Info
------------      ---- -------------------------------------------- ----
Resolute::
::RAPS            cd+O Interface to Resolute Software's RAPS        CHGOETZE
AltaVista::
::SearchSDK       cdcf Perl Wrapper for AltaVista SDK functionality JTURNER
Real::
::Encode          i    Interface to Progressive Network's RealAudio KMELTZ
MQSeries          RdcO IBM's MQSeries messaging product interface   WPMOORE
PQI               cdcO Perl Queuing Interface, to MQSeries, MSMQ    SIMONJ
R3                bdcO Interface to SAP R/3 using RFCSDK            SCHOEN

Part 3 - Big Projects Registry

This section of the Module List is devoted to listing "Big Projects". I don't want to define Big (or even Project) here. Hopefully the items below speak for themselves. Almost all are just ideas, though some have been dabbled with and some are active projects.

These are ideas for people with very strong skills and lots of time. Please talk, and listen, to Larry and the perl5-porters _before_ starting to do any work on projects which relate to the core implementation of Perl.

Ask not when these will be implemented, ask instead how you can help implement them.

1) Items in the Todo File

The Todo supplied with Perl lists over 50 items in categories ranging from "Would be nice to have" to "Vague possibilities".

Contacts: P5P

2) Multi-threading

This is really two projects. True threads (e.g., POSIX) using multiple independant perl interpreter structures and simple timeslicing of 'tasks' within a single perl interpreter. True threads requires operating system support or an external thread library, simple timeslicing does not (and should be portable to all platforms).

Malcolm Beattie < mbeattie@sable.ox.ac.uk > has done extensive work in this area and is folding this work into Perl now for version 5.005 or 5.006.

Contacts: MICB P5P

3) Object Management Group CORBA & IDL

Work is underway on the COPE mailing list, led by Bart Schuller, to implement a Perl binding for CORBA. See http://www.lunatech.com/cope/

Contacts: COPEML BARTS

4) Expand Tied Array Interface

LEN, PUSH, POP, SHIFT, UNSHIFT and a fallback to SPLICE are needed. Complicated by very widespread use of arrays within perl internals.

Contacts: P5P CHIPS

5) Extend Yacc To Write XS Code

To quote Larry, "The right way to integrate yacc with Perl would be to have it spit out an XS module, presumably." Some version of yacc, like byacc, should be converted to spit out an OO .xs and .pm implementing a parser. Jake Donham's work so far is available in his CPAN directory http://www.cpan.org/authors/id/JAKE .

Contacts: JAKE NI-S P5P

6) Approximate Matching Regular Expressions

Add support into the core for approximate matching m/.../a (like the agrep utility).

Contacts: JHI

Part 4 - Standards Cross-reference

This section aims to provide a cross reference between standards that exist in the computing world and perl modules which have been written to implement or interface to those standards.

It also aims to encourage module authors to consider any standards that might relate to the modules they are developing.

1) IETF - Internet Engineering Task Force (RFCs)

Standard   Description                                   Module Name
--------   -----------                                   -----------
RFC821     Simple Mail Transfer Protocol                 Net::SMTP
RFC822     Internet Mail Header                          Mail::Header
RFC822     Internet Mail addresses                       Mail::Address
RFC867     Daytime Protocol                              Net::Time
RFC868     Time Protocol                                 Net::Time
RFC959     File Transfer Protocol                        Net::FTP
RFC977     A minimal NNTP Server                         NNML::Server
RFC977     Network News Transfer Protocol                Net::NNTP
RFC1035, RFC1183, RFC1706
           Domain names, implementation & specification  Net::DNS
RFC1123    Date conversion routines                      HTTP::Date
RFC1319    MD2 Message-Digest Algorithm                  Digest::MD2
RFC1321    MD5 Message-Digest Algorithm                  Digest::MD5
RFC1350    Trivial File Transfer Protocol                TFTP, Net::TFTP
RFC1413    Identification Protocol                       Net::Ident
RFC1592    Simple Network Management Protocol            SNMP, Net::SNMP
RFC1738    Uniform Resource Locators                     URI::URL
RFC1777    Lightweight Directory Access Protocol         Net::LDAP
RFC1861    Simple Network Pager Protocol                 Net::SNPP
RFC1866    Encode/decode HTML entities in a string       HTML::Entities
RFC1939    Post Office Protocol 3                        Net::POP3
RFC1950-1952
           ZLIB, DEFLATE, GZIP                           Compress::Zlib
RFC1960    String Representation of LDAP Search Filters  Net::LDAP::Filter
RFC2045-2049
           MIME - Multipurpose Internet Mail Extensions  MIME::*
RFC2138    Terminal server authentification and accting  RADIUS
RFC2229    Dictionary Server                             Net::Dict

2) ITU - International Telegraph Union (X.*)

Standard   Description                                   Module Name
--------   -----------                                   -----------
X.209      Basic Encoding Rules for ASN.1                Convert::BER

3) ISO - International Standards Organization (ISO*)

Standard   Description                                   Module Name
--------   -----------                                   -----------
ISO/R 2015-1971
           Date calculations for the Gregorian calendar  Date::DateCalc
ISO639     Two letter codes for language identification  Locale::Language
ISO3166    Two letter codes for country identification   Locale::Country

Part 5 - Who's Who

1) Information / Contact Reference Details (in alphabetical order)

The following list of email addresses is based on the credentials stored on the automated Perl Authors Upload Server (PAUSE). If any of the details is not up to date, you're requested to visit http://www.cpan.org/modules/04pause.html, where you will find a pointer to a CGI script that lets you edit the database entries yourself.

2) Perl Frequently Asked Questions (FAQ)

The FAQ is available on all CPAN sites in the directory doc/FAQs (e.g., ) as well as from the RTFM server where you can find all posted FAQs: RTFM mirror sites: North America: Europe: Asia: