The Perl 5 Registered Module List

Maintained by Tim Bunce and Andreas König <modules@perl.org>;
$Rev: 515 $ $Date: 2004-10-18 08:52:51 +0200 (Mon, 18 Oct 2004) $ -*- coding:utf-8 -*-


IMPORTANT NOTICE

This Perl 5 Registered Module List document is currently not being maintained and is several years out of date.

You can search current information on all modules at kobesearch.cpan.org and search.cpan.org.

The CPAN ("Comprehensive Perl Archive Network") global file archive that underlies these services can be directly accessed at www.cpan.org. The CPAN FAQ is particularly worth reading to gain an understanding of what CPAN is, and isn't, how it works and how it relates to the services built over it.

For background information about why this document is currently not being maintained see this message and this one.


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 Registered Module List

1) Registered 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
25) Bundles

Part 3 - Standards Cross-reference

3.1) IETF - Internet Engineering Task Force (RFCs)
3.2) ITU - International Telegraph Union (X.*)
3.3) ISO - International Standards Organization (ISO*)

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

4.1) Information / Contact Reference Details
4.2) Perl Frequently Asked Questions (FAQ) Files


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 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 4.

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 . 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 Registered Module List is fed into CPAN on a semi-regular basis. Its relative path within a CPAN mirror is in modules/00modlist.long.html .

Editorial Information and Copyright

This document is Copyright (c) 1997-2000 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@pobox.com and andreas.koenig@anima.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.112 $=~/\d+/g); sprintf "%d."."%03d"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 Registered 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) Registered 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           DSLIP  Description                                  Info
-------------  -----  -------------------------------------------- -----
Fcntl          Sdcfp  Defines fcntl() constants (see File::Lock)   JHI

Where the 'DSLIP' characters have the following meanings:

DISCLAIMER: The status of the Public License field is there for informational purpose only and does not constitute a legal binding of any kind. To obtain proper information about the Licencing terms of a module and its accompanying files, please refer to the distribution of the modules or contact the author as appropriate. Please inform modules@perl.org if you encounter any mismatch between the contents of the Public License field and what the distribution actually says about it.

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               DSLIP Description                                  Info
------------       ----- -------------------------------------------- ----
CORE               Sucf? Internal package for perl native functions   P5P
UNIVERSAL          SucOp Internal universal base-class                P5P
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         SupO? Automatic function loader (using __DATA__)   P5P
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    P5P
Taint              bdpf? Utilities related to tainting                PHOENIX

Perl Pragmatic Modules

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
namespace          Rdpnp Perl pragma to use like C++ namespace alias  AMICHAUER
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

Experimental pragmatic modules live in the ex:: namespace

ex::
::implements       RdpO? Study in Polymorphism                        PDCAWLEY
::interface        RdpO? Another study in polymorphism                PDCAWLEY
::override         Rdpf? perl pragma to override core functions       CTWETEN
::caution          bdpn? Same as use warnings; use strict;            YVES
ex::constant::
::vars             Rdph? Perl pragma to create readonly variables     CTWETEN

Perl Language Extensions

Alias              bdcf? Convenient access to data/code via aliases   GSAR
End                RdpO? Generalized END {}.                          ABIGAIL
Error              adpOp Error/exception handling in an OO-ish way    UARUN
NEXT               RdpO? Perl5 implementation of NEXT (RFC190)        DCONWAY
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
Attribute::
::Handlers         RdpO? Simpler definition of attribute handlers     ABERGMAN
::Types            RdpO? Attributes that confer type on variables     DCONWAY
::Memoize          RdpOp Attribute interface to Memoize.pm            MARCEL
::TieClasses       RdpOp attribute wrappers for CPAN Tie classes      MARCEL
::Abstract         RdpOp implement abstract methods with attributes   MARCEL
::Overload         RdpOp Attribute that makes overloading easier      MARCEL
::Deprecated       RdpOp Mark deprecated methods                      KASEI
::Signature        bdphp Signatures on methods and subroutines        JDUNCAN
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
Inline             bdp?p Write Perl subroutines in other languages    INGY
Inline::
::CPR              adpn? C Perl Run - Embed Perl in C, ala Inline     INGY
::C                bdpnp Write Perl subroutines in C                  INGY
::CPP              bdpO? Easy implementation of C++ extensions        NEILW
::Python           adcO? Easy implementation of Python extensions     NEILW
::Tcl              adcf? Write Perl subroutines in Tcl                RRS
::Java             amhpp Easy implementation of Java extensions       PATL
::ASM              adpO? Write Perl subroutines in Assembler          NEILW
::Struct           adpO? Bind C structures directly to Perl.          NEILW
::Files            RdpO? Multiple virtual files after __END__         DCONWAY
::Guile            amhhp Inline module for Guile Scheme interpreter   SAMTREGAR
Regexp::
::Common           RdpO? Provide commonly requested regular expr.     ABIGAIL
::Shellish         RdpO? Shell-like regular expressions               RBS
::Func             adpf? Replace =~, !~, m//, s/// with functions     NWIGER
Safe::
::Hole             bdcO? Exec subs in the original package from Safe  SEYN
Symbol::
::Table            RdpO? OO interface to package symbols              GARROW
Symbol::Approx::
::Sub              Rmphp Call subroutines using approximate names     DAVECROSS

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
::Simple           RdpO? Simplified source filtering                  DCONWAY
::constant         idpnp constant mod working like real Pre Processor MZSANFORD
::Trigraph         bdpnp Understand ANSI C trigraphs in Perl source.  KASEI
PerlIO             Rucnp On demand loader for PerlIO layers           P5P
PerlIO::
::gzip             RdcO? provide a PerlIO layer to gzip/gunzip        NWCLARK

Thread support (note that these are experimental, i.e. pre-alpha)

Thread             cuhO? Manipulate threads in Perl (EXPERIMENTAL)    P5P
Thread::
::Group            bdph? Wait()-like and grouping functions           DSUGAL
::Pool             bdpOp Worker pools to run Perl code asynchronously ELIZABETH
::Queue            cuph? Thread-safe queues                           P5P
::Semaphore        cuph? Thread-safe semaphores                       P5P
::Signal           cuhh? A thread which runs signal handlers reliably P5P
::Specific         cuhh? Thread-specific keys                         P5P
::RWLock           RdpOp rwlock implementation for perl threads       AFERBER
::IO               i   ? IO routines                                  DSUGAL
::Object           i   ? OO routines                                  DSUGAL

Module Support

Module::
::Reload           Rdpf? Reloads files in %INC based on timestamps    JPRIT
::InstalledVersion bdpOp Find version number of installed module      SKUD
::Use              bdpnp Tracks modules loaded by a script            JSMITH
::Signature        cdpfp Module signature file manipulation           AUTRIJUS

Documentation Tools:

Pod::
::Diff             cdpf? compare two POD files and report diff        IANC
::DocBook          adpO? convert POD to and from DocBook              MBERENDS
::HTML             cdpr? converter to HTML                            KJALB
::HTML2Pod         RdpOp Translate HTML into POD                      SBURKE
::Hlp              RdpO? Convert POD to formatted VMS Help text       PVHP
::Index            cdpr? index generator                              KJALB
::LaTeX            bdpOp Converts pod to latex with Pod::Parser       TJENNESS
::Latex            cdpr? converter to LaTeX                           KJALB
::Lyx              adpO? A pod to LyX format conversion class         RICHARDJ
::MIF              adpO? converter to FrameMaker MIF                  JNH
::Man              cdpr? converter to man page                        KJALB
::PP               adpOa A Pod pre-processor                          RAM
::Parser           bdpO? Base class for parsing pod syntax            BRADAPP
::Pdf              bdpf? Converter to PDF                             AJFRY
::Pod              cdpr? converter to canonical pod                   KJALB
::RTF              cdpr? converter to RTF                             KJALB
::Rtf              RdpO? Converter from POD to Rich Text Format       PVHP
::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
::XML              RdpO? Generate XML from POD                        MSERGEANT
::Tree             RdpOp Create a static syntax tree for a POD        SWMCD
::Checker          RdpO? Check pod documents for syntax errors        BRADAPP
::POM              RdpOp Pod Object Model                             ABW
Perl6::
::Variables        RdpO? Perl 6 variable syntax for Perl 5            DCONWAY
::Interpolators    bdpnp Use Perl 6 function-interpolation syntax     BRENTDAX
::Parameters       bdpnp Use Perl 6-style named parameters            BRENTDAX
Concurrent         adpOp Concurrent and Remotable Objects in Perl     VIPUL
Acme::
::Buffy            Rdphp An encoding scheme for Buffy fans            LBROCARD
Acme::Morse::
::Audible          Rdpnp Audio(Morse) Programming with Perl           ITRIVIZKI

3) Development Support

Name               DSLIP Description                                  Info
------------       ----- -------------------------------------------- ----
AutoSplit          Supf? Splits modules into files for AutoLoader     P5P
Bleach             RdpO? For really clean programs                    DCONWAY
Continuus          adpO? Interface to Continuus Code Management tool  HENKE
Coy                Rdpn? Like Carp - only prettier                    DCONWAY
FindBin            adpf? Locate current script bin directory          P5P
Include            adpO? Parse C header files for use in XS           GBARR
Make               adpO? Makefile parsing, and 'make' replacement     NI-S
Perlbug            RdpOp Database driven bug tracking system (mysql)  RFOLEY
Rcs                adcf? Alternate RCS interface (see VCS::RCS)       CFRETER
Smirch             Rdpfa For really dirty programs                    JNAGRA
Usage              bnpr? Type and range checking on subroutine args   JACKS
VCS                ampOp Generic interface to Version Control Systems LBROCARD
Benchmark          Supf? Easy way to time fragments of perl code      P5P
Benchmark::
::Timer            RdpO? Perl code benchmarking tool                  ANDREWHO
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
::Embed            Sdpf? Utilities for embedding Perl in C/C++ apps   DOUGM
::F77              RdpO? Facilitate use of FORTRAN from Perl/XS code  KGB
::configPL         adpOp configures .PL files                         PEASE
Carp::
::Assert           adpf? Stating the obvious to let the computer know MSCHWERN
::CheckArgs        Rdpf? Check subroutine argument types              GARROW
::Datum            adpfa Debugging And Tracing Ultimate Module        SQUIRREL
ClearCase          idcf? Environment for ClearCase revision control   BRADAPP
ClearCase::
Conjury::
::C                Rdph? Generic software construction toolset        JWOODYATT
::Core             Rdph? Generic software construction toolset        JWOODYATT
::Stage            Rdph? Generic software construction toolset        JWOODYATT
Devel::
::CallerItem       RnpO? 'caller()' Object wrapper + useful methods   JACKS
::CoreStack        adpf? generate a stack dump from a core file       ADESC
::Cover            adchp Code coverage metrics for Perl               PJCJ
::Coverage         adpf? Coverage analysis for Perl code              RJRAY
::DProf            Rdcf? Execution profiler                           DMR
::DebugAPI         bdpf? Interface to the Perl debug environment      JHA
::DebugInit        bdpf? Create a .gdbinit or similar file            JASONS
::DumpStack        Rnpf? Dumping of the current function stack        JACKS
::Leak             Rdcf? Find perl objects that are not reclaimed     NI-S
::Modlist          Rdpf? Collect module use information               RJRAY
::PPPort           bdcn? Portability aid for your XS code             PMQS
::Peek             adcf? Peek at internal representation of Perl data ILYAZ
::RegExp           adcO? Access perl internal regex functions         ILYAZ
::SearchINC        Rdpnp loading Perl modules from development dirs   MARCEL
::SmallProf        Rdpf? Line-by-line profiler                        ASHTED
::StackTrace       RdpOp Stacktrace object w/ info form caller()      DROLSKY
::Symdump          RdpO? Perl symbol table access and dumping         ANDK
::TraceFuncs       adpO? Trace funcs by using object destructions     JOEHIL
::TraceLoad        Rdpfp Traces the loading of perl source code       PVERD
::TraceMethods     bdpOp Perl module for tracing module calls         CHROMATIC
::Constants        bdpfp Resolve Constants back to their names        CHROMATIC
::Messenger        bdpfp Let Your Code Talk to You                    KOLIBRIE
Perf::            Performance measurement other than benchmarks
::ARM              adcf? Application Response Measurement             BBACKER
Sub::
::Curry            Rdpfp Cute module to curry functions               DAVIDH
::Quotelike        bdppp Allow to define quotelike functions          RGARCIA
Test               Sdpf? Utilities for writing test scripts           SBURKE
Test::
::Cmd              RdpO? Portable test infrastructure for commands    KNIGHT
::Harness          Suphp Executes perl-style tests                    MSCHWERN
::Unit             bmpOp framework for XP style unit testing          ASPIERS
::Suite            cdpO? Represents a collection of Test::Cases       HENKE
::Case             cdpO? Represent a single test case                 HENKE
::Mail             bdpOp Test framework for email applications        SKUD
::Simple           bmpfp Basic utilities for writing tests            MSCHWERN
::Exception        Rdpfp Functions for testing exception-based code   ADIE
::More             RdpOp More functions for writing tests             MSCHWERN
::Litmus           bdpOo Submit test results to the litmus webtool    ZLIPTON
::Reporter         bdpOp sends test results to cpan-testers@perl.org  AFOXSON
::Pod              adpOp test POD files for errors and warnings       BDFOY
::Manifest         bdpfp configure which test files to run            BDFOY
VCS::
::RCS              idpf? Interface layer over RCS (See also Rcs)      RJRAY
::RCE              idcf? Perl layer over RCE C API                    RJRAY
::StarTeam         bdpfp Provides an interface to StarBase's StarTeam JOEPHAYES
::PVCS             i   ? PVCS Version Manager (intersolv.com)         BMIDD
Oak                bmpOp Oak Perl Compoment Tree                      DRUOSO
Debug::
::FaultAutoBT      adhOa Automatic Backtrace Extractor on SIG Faults  STAS

4) Operating System Interfaces, Hardware Drivers

Name               DSLIP Description                                  Info
------------       ----- -------------------------------------------- ----
Env                Supf? Alias environment variables as perl vars     P5P
Errno              cdpf? Constants from errno.h EACCES, ENOENT etc    P5P
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
Async::
::Group            adpO? Deal with simultaneous asynchronous calls    DDUMONT
::Process          i   ? class to run sub-processes                   DDUMONT
BSD::
::Ipfwgen          bdpf? Generate ipfw(8) filters                     MUIR
::Resource         Rdcf? getrusage(), s/getrlimit(), s/getpriority()  JHI
::HostIdent        i   ? s/gethostname(), s/gethostid()               JHI
Env::
::Path             adpO? Advanced operations on path variables        DSB
::Modulecmd        Rdphg Interface to modulecmd from Perl             ISAACSON
Proc::
::Background       RdpO? OS independent background process objects    BZAJAC
::ExitStatus       Rdpf? Interpret and act on wait() status values    ROSCH
::Forkfunc         Rdpf? Simple lwall-style fork wrapper              MUIR
::ProcessTable     bdcO? Unix process table information               DURIST
::SafePipe         bdpf? popen() and `` without calling the shell     ROSCH
::Short            adpO? System calls with timeout option             JHKIM
::Simple           adpO? Fork wrapper with objects                    MSCHILLI
::Spawn            Rdpfp Run external programs                        GARROW
::SyncExec         Rdpf? Spawn processes but report exec() errors     ROSCH
::times            adpf? By-name interface to process times function  TOMC
::Queue            Rdpfp limits number of concurrent forked processes SALVA
GTop               bdcO? Perl interface to libgtop                    DOUGM
Schedule::        See also Schedule:: in chapter 23
::At               Rdpf? OS independent interface to the at command   JOSERODR
::ByClock          RdpOp Return to caller at given seconds/minutes    SCHAFFTER
::Cron             bdpOp cron-like scheduler for perl subroutines     ROLAND
::Load             RdpOp Remote system load, processes, scheduling    WSNYDER
Quota              Rdcfp Disk quota system functions, local & remote  TOMZO
Shell::
::Source           bdpOp Run programs and inherit environment changes PJCJ
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
::CPU              RdpO? Access CPU info. number, etc on Win and UNIX MZSANFORD
::Lastlog          RdcO? Provide a moderately Object Oreiented Interf JSTOWE
::Utmp             RdcO? Object(ish) Interface to UTMP files.         JSTOWE
Sys::Hostname::
::Long             adpOa Return the hosts fully qualified name        SCOTT
    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
HPUX::
::Ioscan           bdpf? Perl function to handle HPUX ioscan command  DDUMONT
Linux::
::AIO              adcfp asynchronous I/O using linux/clone           MLEHMANN
::Cpuinfo          RdpO? Object Oriented Interface to /proc/cpuinfo   JSTOWE
::Fuser            RdpO? Determine which processes have a file open   JSTOWE
::Svgalib          RdcO? Object Oriented Perl interface to svgalib    JSTOWE
::Pid              Rdpfp Interface to Linux getpp?id functions        RGARCIA
Mac::
::AppleEvents      bmcO? AppleEvent manager and AEGizmos              MCPL
::AssistantFrames  RdpOp Easy creation of assistant dialogs           GBAUER
::Components       bmcO? (QuickTime) Component manager                MCPL
::DtfSQL           Rdcf? Perl interface to the dtF/SQL DB engine      TWEGNER
::Files            bmcO? File manager                                 MCPL
::Gestalt          bmcO? Gestalt manager: Environment enquiries       MCPL
::Glue             RmpOp Control apps with AppleScript terminology    CNANDOR
::Macbinary        bdpO? Decodes MacBinary files.                     MIYAGAWA
::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
::Serial           bdpO? Interface to Macintosh serial ports          DIVERDI
::Types            bmcO? (Un-)Packing of Macintosh specific types     MCPL
Mac::AppleEvents::
::Simple           Rmphp 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::FileSpec::
::Unixish          Mdpfp Unixish-compatability in filespecs           SBURKE
Mac::OSA::
::Simple           Rmphp 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
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
::FAM              RdcO? Interface to SGI/Irix File Access Monitor    JGLICK
Solaris::
::ACL              Rdchp Provides access to ACLs in Solaris           IROBERTS
::Kmem             idcf? Read values from the running kernel          ABURLISON
::Kstat            adcO? Access kernel performance statistics         ABURLISON
::MIB              idcO? Access STREAMS network statistics            ABURLISON
::MapDev           bdpf? Maps sdNN disk names to cNtNdN disk names    ABURLISON
::NDD              idcO? Access network device statistics             ABURLISON
::Procfs           adhh? Access to the Solaris /proc filesystem       JNOLAN
::InstallDB        bdp?? Searches for Solaris package/system info     CHRISJ
::Package          bdpO? Access a Solaris package pkginfo file        CHRISJ
::Contents         bdp?? Access a Solaris contents file               CHRISJ
Unix::
::ConfigFile       adpO? Abstract interfaces to Unix config files     SSNODGRA
::Processors       RdcOp Interface to per-processor information       WSNYDER
::Syslog           Rdcfa Interface to syslog functions in a C-library MHARNISCH
::UserAdmin        Rdpf? Interface to Unix Account Information        JZAWODNY
::Login            bdph? Customizable Unix login prompt / validation  NWIGER
VMS::
::Device           Rdcr? Access info about any device on a VMS system DSUGAL
::Filespec         Sdcf? VMS and Unix file name syntax                CBAIL
::ICC              bdcr? Interface to the ICC facilities in VMS 7.2+  DSUGAL
::Lock             RncO? Object interface to $ENQ (VMS lock mgr)      BHUGHES
::Misc             Rdcr? Miscellaneous VMS utility routines           DSUGAL
::Monitor          Rdcr? Access VMS system performance info           DSUGAL
::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
::System           Rdcf? VMS-specific system calls                    DSUGAL
::User             bdcr? Read access to system UAF data               DSUGAL
::Mail             cdcO? Perl module for accessing callable VMS mail  DNORTH
::SysCalls         i   ? VMS-specific system calls                    CBAIL
VMS::Fileutils::
::Root             RdpO? Evade VMS's 8 level directory restrictions   CLANE
::SafeName         Rdpf? Transform filenames to "VMS safe" form       CLANE

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             COOK
::SVGA             c   ? SVGA Graphic card driver                     SCOTTVR
::ParallelPort     adpOa Low Level access to Parallel Port            SCOTT
Device::ISDN::
::OCLM             bd??? Perl interface to the 3com OCLM ISDN TA      MERLIN
AudioCD            bdpO? Extension for controlling Audio CDs          SDERLE
AudioCD::
::Mac              bdcO? Extension for controlling Audio CDs on MacOS AJFRY

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

Name               DSLIP Description                                  Info
------------       ----- -------------------------------------------- ----
Socket             Smcf? Defines socket-related constants             GNAT
Socket6            adcf? getaddrinfo/getnameinfo support module       UMEMOTO
Ptty               adcf? Pseudo terminal interface functions          NI-S
Socket::
::PassAccessRights adcf? Pass file descriptor via Unix domain socket  SAMPO
Net::
::ACAP             adpO? Interface to ACAP Protocol (Internet-Draft)  KJOHNSON
::AIM              adpO? AOL Instant Messenger TOC protocol           ARYEH
::AOLIM            RdpO? AOL Instant Messenger OO Interface (TOC)     RWAHBY
::Bind             adpOp Interface to bind daemon related files       BBB
::CDDB             cdpr? Interface to the CDDB (CD Database)          DSTALDER
::Cmd              cdpO? For command based protocols (FTP, SMTP etc)  GBARR
::DHCPClient       bdpOp Interface to DHCP as a client                JWALGENB
::DLookup          adpO? Lookup domains on Internic and 2-letter TLDs DJASMINE
::DNS              RmpOp Interface to the DNS resolver                CREIN
::DNSServer        cnpOa Secure and Extensible Name Server            BBB
::Daemon           adpO? Abstract base class for portable servers     JWIED
::Dnet             cdcO? DECnet-specific socket usage                 SPIDB
::Domain           adpf? Try to determine TCP domain name of system   GBARR
::FTP              adpf? Interface to File Transfer Protocol          GBARR
::Gen              RdcOp Generic support for socket usage             SPIDB
::Gnutella         bdpO? Gnutella network (v0.4) interface            IWADE
::Goofey           RdpO? Communicate with a Goofey server             GOSSAMER
::HTTPTunnel       adpO? Tunnel through HTTP proxies with CONNECT     RWAHBY
::Hesiod           bdchp Interface to Hesiod library API              PAYERLE
::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              bmpO? Client interface to ICQ messaging            JMUHLICH
::ICal             ampOp RFC2445 (iCalendar) protocol tools           SRL
::IMAP             adpO? Interface to IMAP Protocol (RFC2060)         KJOHNSON
::IMIP             impO? RFC2447 tools for event scheduling           SRL
::IRC              cdpO? Internet Relay Chat interface                JEEK
::ITIP             cmpO? RFC2446 tools for scheduling events          SRL
::Ident            RdpO? Performs ident (rfc1413) lookups             JPC
::Inet             RdcOp Internet (IP) socket usage                   SPIDB
::Interface        adcO? ifconfig(1) implementation                   SRZ
::Jabber           RdpOl Access to the Jabber protocol                REATMON
::LDAP             ampOp Interface to LDAP Protocol (RFC1777)         PLDAP
::LDAPapi          Rdcf? Interface to UMICH and Netscape LDAP C API   CDONLEY
::LMTP             RdpOp LMTP Protocol - RFC2033                      LHOWARD
::MsgLink          cdpO? Abstraction of "user" part for message link  RAM
::NIS              adcO? Interface to Sun's NIS                       ESM
::NISPlus          adcO? Interface to Sun's NIS+                      RIK
::NNTP             adpO? Client interface to NNTP protocol            GBARR
::Netmask          RdpO? 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
::Pager            RdpO? Send Numeric/AlphaNumeric Pages to any pager ROOTLEVEL
::ParseWhois       RmpO? Get+Parse "whois" domain data                ABEROHAM
::Patricia         RdcO? Patricia Trie perl module for fast IP addres PLONKA
::Pcap             adcr? An interface for LBL's packet capture lib    PLISTER
::Peep             RdpO? Clients for Peep: The Network Auralizer      STARKY
::Ping             SupOp TCP, UDP, or ICMP ping                       BBB
::Printer          RdpO? Direct to lpd printing                       CFUHRMAN
::SCP              Rdphp Perl extension for secure copy protocol      IVAN
::SFTP             bdpOp Secure File Transfer Protocol client         BTROTT
::SMPP             cdpO? Protocol for sending SMS (to GSM or CDMA).   SAMPO
::SMS              RdpOp Send SMS wireless text-messages.             ROOTLEVEL
::SMTP             adpf? Interface to Simple Mail Transfer Protocol   GBARR
::SNMP             MdpOp Object oriented interface to SNMP            DTOWN
::SNPP             cdpO? Client interface to SNPP protocol            DREDD
::SOCKS            cdcf? TCP/IP access through firewalls using SOCKS  SCOOPER
::SSH              Rdphp Perl extension for secure shell              IVAN
::SSL              RdcO? Glue that enables LWP to access https URIs   CHAMAS
::SSLeay           bmhf? Secure Socket Layer (based on OpenSSL)       SAMPO
::Server           bdpOp Extensible (class) oriented internet server  RHANDOM
::Syslog           RdpOp Forwarded syslog protocol                    LHOWARD
::TCP              RdcOp TCP-specific socket usage                    SPIDB
::TFTP             cdpf? Interface to Trivial File Transfer Protocol  GSM
::Telnet           RdpO? Interact with TELNET port or other TCP ports JROGERS
::Time             adpf? Obtain time from remote machines             GBARR
::Traceroute       bdpOo Trace routes in IPv4, v6                     HAG
::UDP              RdcOp UDP-specific socket usage                    SPIDB
::VNC              i???? Interface VNC remote frame buffer protocol   BRONG
::Whois            RdpO? Get+parse "whois" domain data from InterNIC  DHUDES
::XWhois           RdpO? Whois Client Interface for Perl5.            VIPUL
::Z3950            RmcO? OO interface (ZOOM) to Yaz Z39.50 toolkit    MIRK
::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
::OSCAR            bmpOp AOL Instant Messenger OSCAR protocol         MATTHEWG
::CIDR             Rdpfp Manipulate netblock lists in CIDR notation   MRSAM
::CDDBScan         bdpOp String search interface to CDDB datbase      DSHULTZ
::FTPServer        RdcO? Secure, extensible, configurable FTP server  RWMJ
::Traceroute6      adphb Interface to IPv6 traceroute                 MOHACSI
::QMQP             adpOp Interface to Quick Mail Queueing Protocol    KOBAYASI
::ICQV5            Rnpfg Module to send and receive ICQ messages.     SNEMAROV
::ICQV5CD          Rnpfg Crypt/decrypt ICQ protocol V5 packets        SNEMAROV
::ICQ2000          inpfg allows send and receive ICQ messages.        SNEMAROV
::FreeDB           bdhOp OOP interface to the FreeDB database         DSHULTZ
::Google           bdpOp Simple OOP-ish interface to the Google API   ASCOPE
Net::Daemon::
::SSL              RdpO? SSL extension for Net::Daemon                MKUL
Net::DHCP::
::Watch            bdpOp A class for monitoring a remote DHCPD server EJDRS
Net::DNS::
::SEC              RdpOd DNSSEC extension to Net::DNS                 OLAF
Net::IMAP::
::Simple           bdpO? Only implements the basic IMAP features      JPAF
Net::Ping::
::External         adpf? Cross-platform interface to "ping" utilities COLINM
Net::SMS::
::Genie            RdpOp Send SMS messages using the Genie gateway    AWRIGLEY
::Web              adpOp generic module for sending SMS via web       AWRIGLEY
Net::SNMP::
::Interfaces       RdpOp Obtain IfTable entries via SNMP              JSTOWE
Net::SSH::
::Perl             bdpOp Perl client Interface to SSH                 BTROTT
Net::Telnet::
::Cisco            RmpOp Automate telnet sessions w/ routers&switches JOSHUA
Net::Whois::
::RIPE             MmpOg class implementing a RIPE whois client       PAULG
NetAddr::
::IP               RdpOp Manipulation and operations on IP addresses  LUISMUNOZ
NetAddr::IP::
::Find             adpfp Find IP addresses in plain text              MIYAGAWA
DNS::
::ZoneParse        RdpOp Parse and manipulate DNS Zone files          SIMONFLK
IPC::
::Cache            adpO? Shared-memory object cache                   DCLINTON
::ChildSafe        RdcO? Control child process w/o risk of deadlock   DSB
::Globalspace      cnpO? Multi-process shared hash and shared events  JACKS
::LDT              RdpOa Implements a length based IPC protocol       JSTENZEL
::Locker           RdpOp 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
::Run              bdph? Child procs w/ piping, redir and psuedo-ttys RBS
::Session          bnpO? remote shell session mgr; wraps open3()      STEVEGT
::Shareable        bdpr? Tie a variable to shared memory              BSUGARS
::SharedCache      Rmpr? Manage a cache in SysV IPC shared memory     SAMTREGAR
::Signal           Rdpf? Translate signal names to/from numbers       ROSCH
::SysV             Sucr? shared memory, semaphores, messages etc      P5P
::XPA              adch? Interface to SAO XPA messaging system        DJERIUS
Replication::Recall::
::Client           adhfo Recall replication library client interface  AGUL
::Server           adhfo Recall replication library server interface  AGUL
::DBServer         adpOp Database replication server using Recall     AGUL
RPC::             Remote Procedure Calls (see also DCE::RPC)
::PlServer         RdpO? Interface for building Perl Servers          JWIED
::PlClient         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 Pr