Path: usenet.cis.ufl.edu!purdue!haven.umd.edu!news.umbc.edu!eff!news.duke.edu!news.mathworks.com!newsfeed.internetmci.com!btnet!demon!mail2news.demon.co.uk!ig.co.uk
From: Tim Bunce <[email protected]>
Newsgroups: comp.lang.perl.announce,comp.lang.perl.misc,comp.answers,news.answers
Subject: comp.lang.perl The Perl 5 Module List (Reusable Software)
Supersedes: <perl-faq/[email protected]>
Followup-To: comp.lang.perl.announce
Date: Mon, 25 Dec 1995 05:00:14 GMT
Organization: Paul Ingram Group, Software Systems, +44 1 483 424424
Lines: 1610
Sender: C-News <[email protected]>
Approved: [email protected]
Expires: Mon, 29 Jan 1996 04:00:05 GMT
Message-ID: <perl-faq/[email protected]>
Reply-To: Tim Bunce <[email protected]>
Keywords: FAQ Perl Module Software Reuse Development Free
X-NNTP-Posting-Host: ig.co.uk
Posting-Frequency: bi-weekly
X-Mail2News-Path: relay-4.mail.demon.net!post.demon.co.uk!ignite.demon.co.uk!ig.co.uk
Xref: usenet.cis.ufl.edu comp.lang.perl.announce:213 comp.lang.perl.misc:15549 comp.answers:15894 news.answers:61049

Archive-name: perl-faq/module-list
Revision: 2.17 1995/12/08 16:33:42


The Perl 5 Module List       Maintained by Tim Bunce <[email protected]>
======================       $Revision: 2.17 $$Date: 1995/12/08 16:33:42 $


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

Part 2 - The Perl 5 Module List

1)   Module Listing Format
2)   Perl Core Modules, Perl Language Extensions and Documentation Tools
3) ! Development Support
4) ! Operating System Interfaces
5) ! Networking, Device Control (modems) and InterProcess Communication
6) ! Data Types and Data Type Utilities
7) ! Database Interfaces
8)   User Interfaces
9)   Interfaces to / 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 and Compression
18)  Images, Pixmap and Bitmap Manipulation, Drawing and Graphing
19)  Mail and Usenet News
20)  Control Flow Utilities (callbacks and exceptions etc)
21)  File Handle and Input/Output Stream Utilities
22)  Miscellaneous Modules

Part 3 - Big Projects Registry

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

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

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


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


=======================================================================

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:

1. FOR DEVELOPERS: To change duplication of effort into cooperation.

2. FOR USERS: To quickly locate existing software which can be reused.

This list includes the Perl 5 standard modules, other completed modules,
work-in-progress modules and would-be-nice-to-have ideas for modules.
It also includes guidelines for those wishing to create new modules
including how to name them.


Where Are The Modules Kept?

A Comprehensive Perl Archive Network (CPAN) of mirrored FTP sites is
being developed. Within the CPAN scheme the modules described in this
list can be found in a modules/ directory below the CPAN root directory.

Try one of these places first:

   CPAN master site
       ftp://ftp.funet.fi/pub/languages/perl/CPAN/
   Africa
       ftp://ftp.is.co.za/programming/perl/CPAN/
   Asia
       ftp://dongpo.math.ncu.edu.tw/perl/CPAN/
       ftp://ftp.lab.kdd.co.jp/lang/perl/CPAN/
   Australasia
       ftp://coombs.anu.edu.au/pub/perl/
       ftp://ftp.mame.mu.oz.au/pub/perl/CPAN/
       ftp://ftp.tekotago.ac.nz/pub/perl/CPAN/
   Europe
       ftp://ftp.arnes.si/software/perl/CPAN/
       ftp://ftp.ci.uminho.pt/pub/lang/perl/
       ftp://ftp.cs.ruu.nl/pub/PERL/CPAN/
       ftp://ftp.demon.co.uk/pub/mirrors/perl/CPAN/
       ftp://ftp.funet.fi/pub/languages/perl/CPAN/
       ftp://ftp.ibp.fr/pub/perl/CPAN/
       ftp://ftp.leo.org/pub/comp/programming/languages/perl/CPAN/
       ftp://ftp.pasteur.fr/pub/computing/unix/perl/CPAN/
       ftp://ftp.rz.ruhr-uni-bochum.de/pub/programming/languages/perl/CPAN/
       ftp://ftp.sunet.se/pub/lang/perl/CPAN/
       ftp://ftp.switch.ch/mirror/CPAN/
       ftp://unix.hensa.ac.uk/mirrors/perl-CPAN/
   North America
       ftp://ftp.cis.ufl.edu/pub/perl/CPAN/
       ftp://ftp.delphi.com/pub/mirrors/packages/perl/CPAN/
       ftp://ftp.sedl.org/pub/mirrors/CPAN/
       ftp://ftp.sterling.com/programming/languages/perl/
       ftp://ftp.uoknor.edu/mirrors/CPAN/
       ftp://uiarchive.cso.uiuc.edu/pub/lang/perl/CPAN/

All the files under each of the directories listed above should be
identical at all these sites since they are all automatically
maintained mirrors of the master CPAN site. Please use which ever
site is 'nearest' you.

If you can't find what you want, or wish to check that what you've
found is the latest version, you can contact the person associated with
the module.  Contact details are given at the start of Part 4.

I don't record per-module archive addresses because it would take more
time and effort than I can spare (this list would also be much bigger).
Hopefully all Perl modules will find their way into the CPAN in time.

You should find a webified version of this modulelist a few days after
it is posted in the file modules/00modlist.long.html on the CPAN servers.


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 you part and contribute to the Perl
community where you can. [ end of sermon :-]

Help save the world! Please submit new entries and updates to me so I
can keep this list up-to-date. I would prefer changes to be submitted
as context diff's (or just plain diff if your diff does not have a
context diff option) by email to [email protected]. No tabs please.
Don't forget to upload your module to an archive site. See section 2.9.


How To Get a More Recent Copy of the List

This Module List is posted to comp.lang.perl.announce, 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:
 ftp://rtfm.mit.edu/pub/usenet/news.answers/perl-faq/module-list
 ftp://ftp.demon.co.uk/pub/perl/db/mod/module-list.txt
 ftp://ftp.wpi.edu/perl5/Modules/module_list.txt
(The rtfm.mit.edu site is automatically updated, try that first.)


Editorial Information and Copyright

This document is Copyright (c) 1995 by Tim Bunce. 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 [email protected].

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.



=======================================================================


       Part 1 - Modules: Creation, Use and Abuse
       =========================================


1) Perl 5 Module Terminology (a larry-terminology-mini-tutorial)
  -------------------------

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) = @_; 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! 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 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.


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.  Please use
  nested module names to informally group or categorise a module.
  A module should have a very good reason not to have a nested name.
  Module names should begin with a capital letter.

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

  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.

  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. Comp.lang.perl.misc is read by just about
  all the people who develop modules and it's the best place to ask.

  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:

  - A description of the module/package/extension etc.
  - A copyright notice - see below.
  - Prerequisites - what else you may need to have.
  - How to build it - possible changes to Makefile.PL etc.
  - How to install it.
  - Recent changes in this release, especially incompatibilities
  - Changes / enhancements you plan to make in the future.

  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) 1995 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").  Don't use a "1.3.2" style version.
  See Exporter.pm in Perl5.001m or later for details.

  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.Z).
  See perldoc ExtUtils::MakeMaker.pm for details.


2.10 How to release and distribute a module.

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

  If possible 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://franz.ww.tu-berlin.de/modulelist
  or upload to one of these sites:
      ftp://franz.ww.tu-berlin.de/incoming
      ftp://ftp.cis.ufl.edu/incoming
  and notify [email protected].

  By using the 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 me an updated entry for the Module list!


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


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:
  - Adds the standard Module prologue lines
  - Converts package specifiers from ' to ::
  - Converts die(...) to croak(...)
  - Several other minor changes
  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:
        perl -e 'use Module::Name; method(@ARGV)' ...
   or   perl -mModule::Name ...    (in perl5.002?)



=======================================================================


             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 I have received.
I don't record the version number or release dates of the listed
Modules. Nor do I record the locations of these Modules. Consult the
contact, try the usual perl archive sites or ask in comp.lang.perl.misc.
Please do *not* ask me directly, I 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:

 D - Development Stage  (Note: *NO IMPLIED TIMESCALES*!):
   i   - Idea, listed to gain consensus or as a placeholder
   c   - under construction but pre-alpha (not yet released)
   a/b - Alpha/Beta testing
   R   - Released
   M   - Mature (no rigorous definition)
   S   - Standard, supplied with Perl 5

 S - Support Level:
   m   - Mailing-list
   d   - Developer
   u   - Usenet newsgroup comp.lang.perl.misc
   n   - None known, try comp.lang.perl.misc

 L - Language Used:
   p   - Perl-only, no compiler needed, should be platform independent
   c   - C and perl, a C compiler will be needed
   +   - C++ and perl, a C++ compiler will be needed
   o   - perl and another language other than C or C++

 I - Interface Style
   f   - plain Functions, no references used
   r   - some use of unblessed References or ties
   O   - Object oriented using blessed references and/or inheritance

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

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 I 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 finised. 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           Suc   Internal package for perl native functions
UNIVERSAL      SucO  Internal universal base-class                JACKS
SUPER          SucO  Internal class to access superclass methods
DynaLoader     SucO  Dynamic loader for shared libraries
AutoLoader     SupO  Automatic function loader (using AutoSplit)
SelfLoader     adpO  Automatic function loader (using __DATA__)   JACKS
Exporter       SupO  Implements default import method for modules
Carp           Supf  Throw exceptions outside current package
Config         Supf  Stores details of perl build configuration
English        Supf  Defines English names for special variables
strict         Supf  Controls averments (similar to pragmas)
integer        Supf  Controls float vs. integer arithmetic
less           Supf  Controls optimisations: 'use less memory;'
subs           Supf  use subs qw(x y); is short for sub x; sub y;
lib            Rupf  Simple way to add/delete directories in @INC
sigtrap        Supf  For trapping an abort and giving a traceback
diagnostics    Rdpf  For reporting perl diagnostics in full form  TOMC

Perl Language Extensions

Safe           adcO  Restrict eval'd code to safe subset of ops   MICB
Plthread       i     Multithreading at Perl level (not O/S level) MICB

Source Code Filters (requires Perl5.001m or later):

Filter::
::cpp          adcf  Filters script through C preprocessor        PMQS
::exec         adcf  Filters script through an external command   PMQS
::tee          adcf  Copies to file perl source being compiled    PMQS
::call         adcf  Filters script through perl function         PMQS
::decrypt      adcf  Template for a perl source decryption filter PMQS

Documentation Tools:

Pod::
::Parse        adp   Common pod parsing code                      KJALB

_______________________________________________________________________

3) Development Support

Name           DSLI  Description                                  Info
-----------    ----  -------------------------------------------- -----
AutoSplit      Supf  Splits modules into files for AutoLoader
Benchmark      Supf  Easy way to time fragments of perl code
FindBin        adpf  Locate current script bin directory          GBARR +
DoWhatIWant    i     Does what you want without even asking

ExtUtils::
::MakeMaker    SupO  Writes Makefiles for extensions              MMML
::Manifest     Supf  Utilities for managing MANIFEST files        MMML
::DynaGlue     i     Utilities/glue code for C<->Perl interfaces
::Peek         adcf  Interface to internal sv_dump and sv_peek    ILYAZ

Test::
::Harness      Sup   Executes perl-style tests

Devel::
::DProf        Rdcf  Execution profiler                           DMR
::DumpStack    Rupf  Dumping of the current function stack        JACKS
::CallerItem   RupO  'caller()' Object wrapper + useful methods   JACKS
::Usage        bupr  Type and range checking on subroutine args   JACKS
::Symdump      bdpf  Perl symbol table access and dumping         ANDK
::TraceFuncs   adpO  Trace funcs by using object destructions     MUIR

VCS::
::RCS          idpf  Interface layer over RCS functionality       RJRAY
::RCE          idcf  Perl layer over RCE C API                    RJRAY


_______________________________________________________________________

4) Operating System Interfaces

Name           DSLI  Description                                  Info
-----------    ----  -------------------------------------------- -----
POSIX          SupO  An interface to most (all?) of POSIX.1
Fcntl          Sdcf  Defines fcntl() constants (see File::Lock)   JHI
Ioctl          adcf  Defines ioctl() constants                    KJALB
Errno          i     Constants from <errno.h> EACCES, ENOENT etc  JHI

BSD::
::HostIdent    i     s/gethostname(), s/gethostid()               JHI
::Resource     Rdcf  getrusage(), s/getrlimit(), s/getpriority()  JHI   +

Sys::
::Hostname     Supf  Implements a portable hostname function
::Syslog       Supf  Provides same functionality as BSD syslog
::AlarmCall    Rupf  Timeout on any sub. Allows nested alarms     JACKS
::Fork         Rdpf  Simple lwall-style fork wrapper              MUIR
::Quota        adcf  Disk quota system functions, local & remote  TOMZO

Proc::
::times        adpf  By-name interface to process times function  TOMC

Platform Specific Modules

MSDOS::
::SysCalls     adcf  MSDOS interface (interrupts, port I/O)       DMO

SGI::
::SysCalls     cdcf  SGI-specific system calls                    AMOSS
::GL           adcr  SGI's Iris GL library                        AMOSS
::FM           adcr  SGI's Font Management library                AMOSS

VMS::
::SysCalls     i     VMS-specific system calls                    CBAIL
::Filespec     Sdcf  VMS and Unix file name syntax                CBAIL

NeXTStep::
::NetInfo      idcO  NeXTStep's NetInfo (like ONC NIS)            PGUEN

Mac::
::*            i     Macintosh specific library modules           MCPL


_______________________________________________________________________

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

Name           DSLI  Description                                  Info
-----------    ----  -------------------------------------------- -----
Socket         Sucf  Defines all socket-related constants         JACKS
Ptty           adcf  Pseudo terminal interface functions          NI-S

Net::
::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
::Domain       adpf  Try to determine TCP domain name of system   GBARR !
::Ping         Supf  Implements TCP/IP ping (currently only echo) PMQS
::IRC          i     Internet Relay Chat interface                MRG
::Telnet       i                                                  GBARR
::SOCKS        i     TCP/IP access through firewalls using SOCKS  WSCOT
::NIS          adcO  Interface to Sun's NIS                       RIK
::NISPlus      adcO  Interface to Sun's NIS+                      RIK
::SSLeay       adcf  Secure Socket Layer (Eric Young's version)   ADESC

Net::
::Gen          adcO  Generic support for socket usage             SPIDB
::Inet         adcO  Internet (IP) socket usage                   SPIDB
::TCP          adcO  TCP-specific socket usage                    SPIDB
::UDP          cdcO  UDP-specific socket usage                    SPIDB
::FTP          adpf  Interface to File Transfer Protocol          GBARR
::SMTP         adpf  Interface to Simple Mail Transfer Protocol   GBARR
::Dnet         cdcO  DECnet-specific socket usage                 SPIDB

IPC::
::Open2        Supf
::Open3        Supf
::Chat2        ?     Out-of-service during refit!                 GBARR
::SysV         adcr  shared memory, semaphores, messages etc      JACKS
::Mmap         adcf  Interface to Unix's mmap() shared memory     MICB

RPC::
::ONC          i     Open Network Computing (Sun) RPC interface   PKUTS
::DCE          i     Distributed Computing Environment (OSF) RPCs

DCE::
::Registry     cdcf  DCE registry functions                       TLP

Proxy          adpO  Transport-independent remote processing      MICB
Proxy::
::Tk           aucO  Tk transport class for Proxy (part of Tk)    MICB

ToolTalk       adcr  Interface to the ToolTalk messaging service  MARCP
SNMP           RdcO  Interface to CMU's SNMPv2 libsnmp.a          GSM


_______________________________________________________________________

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

Name           DSLI  Description                                  Info
-----------    ----  -------------------------------------------- -----
Math::
::BigInt       SupO  Arbitrary size integer math package          MARKB
::BigFloat     ?
::BigRat       ?
::Complex      adpO  Complex number data type                     DNAD
::IEEE         i     Interface to ANSI/IEEE Std 754-1985 funcs
::Pari         adcf  Interface to the powerful PARI library       ILYAZ
::Mathematica  adcO  Interface to the powerful Mathematica system ULPFR +
::Matrix       adpO  Matrix data type (transpose, multiply etc)   ULPFR
::Approx       adpO  Approximate x,y-values by a function         ULPFR
::LinearProg   idp   Linear programming utilities                 JONO

Array::
::Vec          idp   Implement array using vec()                  LWALL
::Substr       idp   Implement array using substr()               LWALL
::Virtual      idp   Implement array using a file                 LWALL

Set::
::Scalar       adpO  Implement Set of scalars (inc references)    JHI
::IntegerFast  adcO  Implement Set of positive integers (fast)    STBEY +

Date::
::GetDate      adcf  Yacc based free-format date parser in C      TOMC
::GetDate      adpf  Byacc based free-format date parser in Perl  GBARR
::CTime        adpf  Updated ctime.pl with mods for timezones     GBARR
::DateCalc     cdcf  Various standards based date calculations    STBEY +
::Time         idpO  Lightweight normalised datetime data type    TIMB
::Interval     idpO  Lightweight normalised interval data type    TIMB

Time::
::gmtime       adpf  A by-name interface for gmtime               TOMC
::localtime    adpf  A by-name interface for localtime            TOMC
::Local        Supf  Implements timelocal() and timegm()
::Time         i     High resolution timers and time-of-day       JHI
::CTime        Rdpf  Format Times ala ctime(3) with many formats  MUIR
::parseDate    Rdpf  Parses many forms of dates and times         MUIR
::JulianDay    Rdpf  Converts y/m/d into seconds                  MUIR
::Timezone     Rdpf  Figures out timezone offsets                 MUIR
::DaysInMonth  Rdpf  Returns the number of days in a month        MUIR

Tie::
::SubstrHash   RdpO  Very compact hash stored in a string         LWALL
::ShiftSplice  i     Defines shift et al in terms of splice       LWALL
::Mem          adcO  Bind perl variables to memory addresses      PMQS
::File         adpr  Tie hash to files in a directory             AMW
::IxHash       adpO  Indexed hash (ordered array/hash composite)  GSAR
::Quick        i     Simple way to create ties                    TIMB
::Watch        i     Uses Tie::Quick to watch a variable          TIMB
TieHash        Sup   Base class for implementing tied hashes

Class::
::Eroot        RdpO  Eternal Root - Object persistence            DMR
::Template     Rdpr  Struct/member template builder               DMR

Object::
::Info         Rupf  General info about objects (is-a, ...)       JACKS

Ref            RdpO  Print, compare, and copy perl structures     MUIR

Statistics::
::Descriptive  RdpO  Descriptive statistical methods              JKAST
::ChiSquare    Rdpf  Chi Square test - how random is your data?   JONO

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

FreezeThaw     bdpf  Convert arbitrary objects to/from strings    ILYAZ
Persistent     adpO  Creates persistent hashrefs or arrayrefs     JPC
Storable       adcr  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

Data::
::Dumper       adpO  Convert data structure into perl code        GSAR


_______________________________________________________________________

7) Database Interfaces (see also Data Types)

Name           DSLI  Description                                  Info
-----------    ----  -------------------------------------------- -----
DBI            amcO  Generic Database Interface (see DBD modules) DBIML
DBD::
::Oracle       amcO  Oracle Driver for DBI                        TIMB
::Ingres       cmcO  Ingres Driver for DBI                        TIMB
::Informix     adcO  Informix Driver for DBI                      ADESC
::mSQL         amcO  Msql Driver for DBI                          ADESC
::DB2          adcO  DB2 Driver for DBI                           MHM
::Sybase       idcO  Sybase Driver for DBI                        MEWP
::QBase        amcO  QBase Driver for DBI                         BENLI

Oraperl        ampf  Oraperl emulation interface for DBD::Oracle  TIMB
Ingperl        cmpf  Ingperl emulation interface for DBD::Ingres  TIMB

Sybase::
::DBlib        bdcO  Sybase DBlibrary interface                   MEWP
::Sybperl      bdcf  sybperl 1.0xx compatibility module           MEWP
::CTlib        cdcO  Sybase CTlibrary intgerface                  MEWP

Msql           RmcO  Mini-SQL, a light weight SQL database        ANDK
Pg             Rdcf  Postgres95 SQL database interface            MERGL !

Tied Hash File Interfaces:

NDBM_File      Suc   Tie to NDBM files
DB_File        Suc   Tie to DB files                              PMQS
GDBM_File      Suc   Tie to GDBM files
SDBM_File      Suc   Tie to SDBM files
ODBM_File      Suc   Tie to ODBM files
AnyDBM_File    Sup   Uses first available *_File module above
DBZ_File       adc   Tie to dbz files (mainly for news history)   IANPX

AsciiDB        adp   Generic text database parsing                MICB
Stanza         i     Text format database used by OSF and IBM     JHI
NetCDF         bmcr  Interface to netCDF API for scientific data  SEMM

DTREE          cdcf  Interface to Faircom DTREE multikey ISAM db  JWAT
Fame           adcO  Interface to FAME database and language      TRIAS +


_______________________________________________________________________

8) User Interfaces (Character and Graphical)

Name           DSLI  Description                                  Info
-----------    ----  -------------------------------------------- -----
Term::
::Cap          Supf  Basic termcap: Tgetent, Tputs, Tgoto
::Info         adpf  Terminfo interface (currently just Tput)     KJALB
::Complete     Supf  Tab word completion using stty raw
::ReadLine     adcf  GNU Readline, history and completion         ILYAZ
::Control      idpf  Basic curses-type screen controls (gotxy)    KJALB
::Read         cdcf  Terminal reading functions (getkey)          KJALB
::Gnuplot      adcf  Draw vector graphics on terminals etc        ILYAZ
::Query        Rdpf  Intelligent user prompt/response driver      AKSTE

Major Character User Interface Modules:

Curses         adcO  Character screen handling and windowing      WPS
Perlmenu       Mdpf  Curses-based menu and template system        SKUNZ
PV             bmpO  PerlVision curses windowing (OO widgets etc) AGUL

Tk X Windows User Interface Modules:

Tk             bmcO  Object oriented version of Tk v4             TKML
Tkperldb       bmpf  Graphical perl debugger interface            TKML

Tk::
::FileSelector bmpO  A Fileselectorbox for choosing files         TKML

Other Major X Windows User Interface Modules:

Sx             adc   Simple Athena widget interface               FMC
Motif          cdcf  Simple Motif and Xt interface                ERICA
Wcl            i     Interface to the Widget Creation Library     TOMH
Fresco         cd+O  Interface to Fresco (post X11R6 version)     BPETH


_______________________________________________________________________

9) Interfaces to / Emulations of Other Programming Languages

Name           DSLI  Description                                  Info
-----------    ----  -------------------------------------------- -----
Tcl            RdcO  Complete access to Tcl                       MICB
::Tk           RdcO  Complete access to Tk *via Tcl*              MICB

Language::
::Prolog       adpO  An implementation of Prolog                  JACKS

SICStus        adcO  Interface to SICStus Prolog Runtime          CBAIL

Fortran::
::NameList     adpf  Interface to FORTRAN NameList data           SGEL


_______________________________________________________________________

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

Name           DSLI  Description                                  Info
-----------    ----  -------------------------------------------- -----
Cwd            Supf  Current working directory functions

File::
::stat         adpf  A by-name interface for the stat function    TOMC
::Path         Supf  File path and name utilities
::Basename     Supf  Return basename of a filename
::CheckTree    Supf  Check file/dir tree against a specification
::Find         Supf  Call func for every item in a directory tree
::Lock         adcf  File locking using flock() and lockf()       JHI
::Glob         adpf  Filename globing (ksh style)                 TYEMQ
::Attrib       idpO  Get/set file attributes (stat)               TYEMQ
::CounterFile  RdpO  Persistent counter class                     GAAS
::Copy         adpf  Copying files or filehandles                 ASHER

Filesys::
::dfent        adpf  By-name interface                            TOMC
::mntent       adpf  By-name interface                            TOMC
::statfs       adpf  By-name interface                            TOMC


_______________________________________________________________________

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

Name           DSLI  Description                                  Info
-----------    ----  -------------------------------------------- -----
String::
::Edit         adpf  Assorted handy string editing functions      TOMC
::Approx       Rdpf  Approximate string matching and substitution JHI
::Scanf        Rdpf  Implementation of C sscanf function          JHI
::Parity       adpf  Parity (odd/even/mark/space) handling        WINKO
::BitCount     adpf  Count number of "1" bits in strings          WINKO
::MatchMany    adpf  Build fast code to match many patterns       TOMC

Language text related modules

Text::
::Abbrev       Supf  Builds hash of all possible abbreviations
::ParseWords   Supf  Parse strings containing shell-style quoting
::Soundex      Supf  Convert a string to a soundex value
::TeX          cdpO  TeX typesetting language input parser        ILYAZ
::Stem         adpf  Porter algorithm for stemming English words  IANPX
::Tabs         Sdpf  Expand and contract tabs ala expand(1)       MUIR
::Wrap         Rdpf  Wraps lines to make simple paragraphs        MUIR

Search::
::Dict         Supf  Search a dictionary ordered text file

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

Text::
::Trie         adpf  Find common heads and tails from strings     ILYAZ
::Parser       adpO  String parser using patterns and states      PATM

SGML::
::Element      cdpO  Build a SGML element structure tree          LSTAF
::SP           cd+O  Interface to James Clark's Sp SGML parser    BARTS
SGMLS          RdpO  A Post-Processor for SGMLS and NSGMLS        DMEGG

Font::
::AFM          RdpO  Parse Adobe Font Metric files                GAAS

Marpa          cd+O  Context Free Parser                          JKEGL
Anagram        adcf  Anangram generator                           ASHER


_______________________________________________________________________

12) Option, Argument, Parameter and Configuration File Processing

Name           DSLI  Description                                  Info
-----------    ----  -------------------------------------------- -----
Getopt::
::Std          Supf  Implements basic getopt and getopts
::Long         Supf  Advanced option handling                     JV
::Gnu          adcf  GNU form of long option handling             WSCOT

ConfigReader   cdpO  Read directives from configuration file      AMW


_______________________________________________________________________

13) Internationalization and Locale

Name           DSLI  Description                                  Info
-----------    ----  -------------------------------------------- -----
I18N::
::Collate      Sdpr  Locale based comparisons                     JHI
::WideMulti    i     Wide and multibyte character string          JHI


_______________________________________________________________________

14) Authentication, Security and Encryption

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

DES            adcf  DES encryption (libdes)                      EAYNG
Des            adcf  DES encryption (libdes)                      MICB
MD5            adcf  MD5 message digest algorithm                 NWINT
SHA            adcO  NIST SHA message digest algorithm            UWEH
Kerberos       adcf  Kerberos IV authentication                   MICB
GSS            i     Generic Security Services API (RFC 1508/9)   MSHLD


_______________________________________________________________________

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

Name           DSLI  Description                                  Info
-----------    ----  -------------------------------------------- -----
URI::
::Escape       ampf  General URI escaping/unescaping functions    LWWWP
::URL          RmpO  Uniform Resource Locator objects             LWWWP

CGI::
::Base         RmpO  Complete HTTPD CGI Interface class           CGIP  !
::BasePlus     RmpO  Extra CGI::Base methods (incl file-upload)   CGIP  !
::Carp         cmpf  Drop-in Carp replacement for CGI scripts     MGH   +
::ErrorWrap    bdpf  Trap warnings and die and convert into HTML  TOMC
::ErrorLog     cmpO  Send errors to error log file                LDS   +
::Imagemap     cmpO  Imagemap handling for specialized apps       MGH   !
::Lite         ampO  Light-weight interface for fast apps         SHGUN +
::MiniSvr      RmpO  Fork CGI app as a per-session mini server    CGIP  !
::Request      RmpO  Parse CGI request and handle form fields     CGIP  !
::Response     ampO  Response construction for CGI applications   CGIP  !
::Session      cmpO  Maintain session/state information           MGH   +
::UnixSocket   cmcf  Runs cgi in background through unix socket   AMW

HTML::
::QuickCheck   cdpf  Fast simple validation of HMTL text          YLU
::Base         adpO  Object-oriented way to build pages of HTML   GAND
::Simple       bdpf  Simple functions for generating HTML         TOMC

HTTP::
::Date         bmpf  Date conversion for HTTP date formats        LWWWP
::Headers      bmpO  Class encapsulating HTTP Message headers     LWWWP
::Message      bmpO  Base class for Request/Response              LWWWP
::Request      bmpO  Class encapsulating HTTP Requests            LWWWP
::Response     bmpO  Class encapsulating HTTP Responses           LWWWP
::Status       bmpf  HTTP Status code processing                  LWWWP

WWW::
::RobotRules   ampO  Parse /robots.txt file                       LWWWP
::Log          i     Parse Common Log File Format

LWP::                Libwww-perl5
::MediaTypes   anpf  Media types and mailcap processing           LWWWP
::Simple       bnpf  Simple procedural interface to libwww-perl   LWWWP
::UserAgent    bnpO  A WWW UserAgent class                        LWWWP
::RobotUA      i     A UserAgent for robot applications           LWWWP
::Protocol::*        LWP support for URL schemes (http, file etc) LWWWP

MIME::
::Base64       Rdpf  Encode/decode Base 64 (RFC 1521)             GAAS
::QuotedPrint  Rdpf  Encode/decode Quoted-Printable               GAAS
::Handler      i     Base class for MIME content handlers
::Object       i     Base class for MIME decoded objects

CCI            i     Common Client Interface for WWW browsers     DOUGM


_______________________________________________________________________

16) Server and Daemon Utilities

Name           DSLI  Description                                  Info
-----------    ----  -------------------------------------------- -----
Server               Hierarchy of generic server classes

Server::Configs::
::BasicConfig  RupO  Configuration template class for servers     JACKS

Server::Initialize::
::Functions    Rupf  Utility functions for initializing servers   JACKS
::Daemon       Rupr  Intializing a daemon server                  JACKS
::Pipe         Rupr  Intializing a server being piped to          JACKS
::InetdService Rupr  Intializing a server started from inetd      JACKS

Server::Server::
::EventDriven  RupO  Triggers objects on i/o, timers & interrupts 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


_______________________________________________________________________

17) Archiving and Compression

Name           DSLI  Description                                  Info
-----------    ----  -------------------------------------------- -----
Compress::
::Zlib         adcO  Interface to the Info-Zip zlib library       PMQS


_______________________________________________________________________

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

Name           DSLI  Description                                  Info
-----------    ----  -------------------------------------------- -----
PixDraw        adcO  Drawing and manipulating true color images   KSB
GD             adcO  GIF editing/painting/manipulation            LDS
PGPLOT         Rdof  PGPLOT plotting library - scientific graphs  KGB
OpenGL         adcf  Interface to OpenGL drawing/imaging library  STANM


_______________________________________________________________________

19) Mail and Usenet News

Name           DSLI  Description                                  Info
-----------    ----  -------------------------------------------- -----
Mail::
::Address      adpf  Manipulation of electronic mail addresses    GBARR
::Internet     adpO  Functions for RFC822 address manipulations   GBARR
::MIME         adpO  Extends Mail::Internet to understand MIME    GBARR
::Cap          adpO  Parse mailcap files as specified in RFC 1524 GBARR
::Send         adpO  Simple interface for sending mail            GBARR
::Mailer       adpO  Simple mail agent interface (see Mail::Send) GBARR
::Alias        adpO  Reading/Writing/expanding of mail aliases    GBARR
::Util         adpf  Mail utilities (for by some Mail::* modules) GBARR
::SMTP         i     Protocol support including expn
::MH           adcr  MH mail interface                            MRG

News::
::NNTPClient   bdpO  Support for clients of NNTP servers          RVA


_______________________________________________________________________

20) Control Flow Utilities (callbacks and exceptions etc)

Name           DSLI  Description                                  Info
-----------    ----  -------------------------------------------- -----
Religion       adpr  Control where you go when you die()/warn()   KJALB
Callback       RdpO  Define easy to use function callback objects MUIR


_______________________________________________________________________

21) File Handle and Input/Output Stream Utilities

Name           DSLI  Description                                  Info
-----------    ----  -------------------------------------------- -----
FileHandle     SupO  File handle objects and methods
Selectable     cdpO  Event-driven I/O streams                     MUIR


_______________________________________________________________________

22) Miscellaneous Modules

Name           DSLI  Description                                  Info
-----------    ----  -------------------------------------------- -----
WAIS           Rdcf  Interface to the freeWAIS-sf libraries       ULPFR
Archie         Rdpf  Archie queries via Prospero ARDP protocol    GBOSS
Pcap           i     An interface for LBL's packet capture lib    AMOSS
Nexus          cdcO  Interface to Nexus (threads/ipc/processes)   RDO
SDDF           cd+O  Interface to Pablo Self Defining Data Format FIS
IXO            i     IXO alphanumeric pager protocol
Roman          Rdpf  Convert Roman numbers to and from Arabic     OZAWA

Bio::
::*            i     Utilities for molecular biology              SEB

Remedy::
::AR           cdcO  Interface to Remedy's Action Request API     RIK

OLE::
::Word_Basic   adc   OLE extension for NT Perl                    WYTAN


=======================================================================


          Part 3 - Big Projects Registry
          ==============================


1) Introduction

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

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

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


2) Items in the Todo File

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

Contacts: LWALL P5P


3) Perl Compiler

Part of the design of Perl 5 was to make it possible to write a
compiler for it. It's a possible master's thesis topic.

Related to this is the ability to save and load a 'flat' byte-code
representation of the compiled perl code. It would be translated back
into Perl's own internal form for speed.

Note that three different prototype Tcl compilers have been announced
in the comp.lang.tcl group! Anyone interested in this should also take
a good look at the Java language from Sun http://java.sun.com/.

Contacts: LWALL P5P


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

Contacts: LWALL MICB P5P


5) ! Object Management Group CORBA & IDL

OMG's (Object Management Group) CORBA (Common Object Request Broker
Architecture) specification provides the standard interface definition
between OMG-compliant objects.  IDL (Interface Definition Language) is
the base mechanism for object interaction. Perhaps an extended IDL
compiler which can write XS code would be a good way forward.

Contacts: ASHER, JACKS, DMR
Also:
   ftp://omg.org/pub/OMG_IDL/
   http://www.cs.cornell.edu/Info/People/maffeis/electra.html
   http://www.faslab.com/fresco/HomePage.html (re DISH Tcl+CORBA DII)
   ftp://ftp.isi.edu (ORBeline)
   ftp://labrea.stanford.edu
   ftp://parcftp.parc.xerox.com/pub/ilu/ilu.html
   [email protected]

Inter-Language Unification system (ILU).  Similar to a CORBA ORB, with some
omissions and extensions.  Supports OMG CORBA IDL.

Contacts: DMR
Also:
   ftp://parcftp.parc.xerox.com/pub/ilu/ilu.html


6) 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 LWALL


7) Tied File Handles

It is a long term goal to allow perl file handles to be tied. This will
probably be based on the sfio (Safe Fast IO) library.

Contacts: PMQS TIMB P5P LWALL NI-S


8) + Extend Yacc To Write XS Code

Some version of yacc, like byacc or bison, should be converted to spit
out an OO .xs and .pm implementing a parser.

Contacts: NI-S P5P LWALL


9) + Updatable Module List via WWW Forms

The Module List should be built from some form of database. The
database should be updatable using WWW forms by the owners of the
Modules. The database should store extra information such as links to
the latest version.  Andreas Koenig (ANDK) is working on this.

Contacts: ANDK TIMB



=======================================================================


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


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

 Ref    Contact Details
 -----  --------------------------------------------------------------
 ADESC  Alligator Descartes <[email protected]>
 AGUL   Ashish Gulhati <[email protected]>
 AKSTE  Alan K. Stebbens <[email protected]>
+ ALSCH  Alan Scheinine <[email protected]>
 AMOSS  Amos Shapira <[email protected]>
 AMW    Andrew Wilcox <[email protected]>
 ANDK   Andreas Koenig <[email protected]>
 ANDYD  Andy Dougherty <[email protected]>
 ASHER  Aaron Sherman <[email protected]>
 BARTS  Bart Schuller <[email protected]>
 BBUM   Bill Bumgarner <[email protected]>
 BENLI  Ben Lindstrom <[email protected]>
+ BJEPS  Brian Jepson <[email protected]>
 BMIDD  William J. Middleton <[email protected]>
 BPETH  Bill Petheram <[email protected]>
 CBAIL  Charles Bailey <[email protected]>
 CGIP   The CGI-Perl Developers mailing list
        Mail to [email protected] with body "subscribe"
 CHIPS  Chip Salzenberg <[email protected]>
 DBIML  The DBI mailing lists: subscribe via http://www.fugue.com/dbi
        or mail to [email protected] and ask (the human, Ted Lemon) to
        subscribe you to one or more of dbi-announce, dbi-users, dbi-dev.
 DMEGG  David Megginson <[email protected]>
 DMO    Darryl Okahata <[email protected]>
 DMR    Dean Roehrich <[email protected]>
 DNAD   Dave Nadler <[email protected]>
 DOUGM  Doug MacEachern <[email protected]>
 EAYNG  Eric Young <[email protected]>
 ERICA  Eric Arnold <[email protected]>
+ ERYQ   Eryq <[email protected]>
 FIS    Frank Ian Smith <[email protected]>
 FMC    Frederic Chauveau <[email protected]>
+ FSG    Felix Sebastian Gallo <[email protected]>
 GAAS   Gisle Aas <[email protected]>
 GAND   Greg Anderson <[email protected]>
 GBARR  Graham Barr <[email protected]>
 GBOSS  Greg Bossert <[email protected]>
 GREGG  Gregg Helt <[email protected]>
 GSAR   Gurusamy Sarathy <[email protected]>
 GSM    Joe Marzot <[email protected]>
 GSPAF  Gene Spafford <[email protected]>
 GUYDX  Guy Decoux <[email protected]>
 IANPX  Ian Phillipps <[email protected]>
 ILYAZ  Ilya Zakharevich <[email protected]>
 JACKS  Jack Shirazi <[email protected]>
+ JAMCC  Jamie McCarthy <[email protected]>
 JHI    Jarkko Hietaniemi <[email protected]>
 JKAST  Jason Kastner <[email protected]>
 JKEGL  Jeffrey Kegler <[email protected]>
 JONO   Jon Orwant <[email protected]>
+ JONG   Jong Park <[email protected]>
 JPC    Jan-Pieter Cornet <[email protected]>
 JV     Johan Vromans <[email protected]>
 JWAT   John Watson <[email protected]>
 KGB    Karl Glazebrook <[email protected]>
 KJALB  Kenneth Albanowski <[email protected]>
 KSB    Simon Berg <[email protected]>
 LDS    Lincoln D. Stein <[email protected]>
 LSTAF  Lennart Staflin <[email protected]>
 LWALL  Larry Wall. Author of Perl. Busy man. <[email protected]>
 LWWWP  The libwww-perl mailing list
        Mail to [email protected] with body "subscribe"
 MARCP  Marc Paquette <[email protected]>
 MARKB  Mark Biggar <[email protected]>
 MCPL   The MacPerl mailing list
        Mail to [email protected] with body "subscribe"
 MERGL  Edmund Mergl <[email protected]>
 MEWP   Michael Peppler <[email protected]>
 MGH    Marc Hedlund <[email protected]>
 MHM    Mike Moran <[email protected]>
 MICB   Malcolm Beattie <[email protected]>
 MMML   The MakeMaker mailing list
        Mail to [email protected] with body "subscribe"
 MRG    Matthew Green <[email protected]>
 MSHLD  Michael Shields <[email protected]>
 MUIR   David Muir Sharnoff <[email protected]>
 NI-S   Nick Ing-Simmons <[email protected]>
 NWINT  Neil Winton <[email protected]>
 OZAWA  OZAWA Sakuro <[email protected]>
 P5P    The Perl5 Porters Mailing List
        Mail to [email protected] with body "subscribe"
 PATM   Pat Martin <[email protected]>
+ PEASE  Mark Pease <[email protected]>
 PGUEN  Philip Guenther <[email protected]>
 PKUTS  Peter Kutschera <[email protected]>
 PMQS   Paul Marquess <[email protected]>
 PRATP  Pratap Pereira <[email protected]>
 RAM    Raphael Manfredi <[email protected]>
 RDO    Robert Olson <[email protected]>
 RIK    Rik Harris <[email protected]>
 RJRAY  Randy J Ray <[email protected]>
 RVA    Rodger Anderson <[email protected]>
 SBECK  Sullivan Beck <[email protected]>
+ STBEY  Steffen Beyer <[email protected]>
 SEB    Steven Brenner <[email protected]>
 SEMM   Steve Emmerson <[email protected]>
 SGEL   Sergio Gelato <[email protected]>
 SHGUN  Shishir Gundavaram <[email protected]>
 SKUNZ  Steven L. Kunz <[email protected]>
 SPIDB  Spider Boardman <[email protected]>
 STANM  Stan Melax <[email protected]>
+ STBEY  Steffen Beyer <[email protected]>
 TIMB   Tim Bunce <[email protected]>
 TKML   The Tk Perl Mailing list
        Mail to [email protected] with body "subscribe ptk <your-address>"
 TLP    Travis L Priest <[email protected]>
 TOMC   Tom Christiansen <[email protected]>
 TOMH   Tom Horsley <[email protected]>
 TOMZO  Tom Zoerner <[email protected]>
+ TRIAS  Fernando Trias <[email protected]>
 TYEMQ  Tye McQueen <[email protected]>
 ULPFR  Ulrich Pfeifer <[email protected]>
 UWEH   Uwe Hollerbach <[email protected]>
 WINKO  Winfried Koenig <[email protected]>
 WPS    William Setzer <[email protected]>
 WSCOT  Wayne Scott <[email protected]>
 WYTAN  Wei-Yuen Tan <[email protected]>
 YLU    Luke Y. Lu <[email protected]>
 YVESP  Yves Paindaveine <[email protected]>


2) Perl Frequently Asked Questions (FAQ) and Other Resources

 Perl Meta-FAQ
   http://www.khoros.unm.edu/staff/neilb/perl/metaFAQ
   http://www.cse.unsw.edu.au/perl/metaFAQ.html
   http://web.nexor.co.uk/perl/Meta-FAQ.txt

 Perl FAQ
   http://mox.perl.com/perl/faq
   ftp://rtfm.mit.edu/pub/usenet/news.answers/perl-faq/
   ftp://ftp.uu.net/usenet/news.answers/perl-faq/
   ftp://ftp.cis.ufl.edu/pub/perl/doc/FAQ
   ftp://ftp.khoros.unm.edu/pub/perl/faq.gz
   ftp://ftp.cs.ruu.nl/pub/NEWS.ANSWERS/perl-faq/
   ftp://ftp.funet.fi/pub/languages/perl/doc/faq
   ftp://src.doc.ic.ac.uk/packages/perl/FAQ


3) Other Perl Archive Sites

   ftp://ftp.delphi.com/pub/mirrors/packages/ftp.perl.com/
   ftp://ftp.delphi.com/pub/mirrors/packages/perl/
   ftp://ftp.cdrom.com/pub/perl
   ftp://coombs.anu.edu.au/pub/perl
   ftp://ftp.cbi.tamucc.edu/pub/duff/Perl
   ftp://ftp.demon.co.uk/pub/perl
   ftp://ftp.khoros.unm.edu/pub/perl
   ftp://ftp.metronet.com/pub/perl
   ftp://ftp.uu.net/languages/perl
   ftp://ftp.wpi.edu/perl5
   ftp://ftp.zrz.tu-berlin.de/pub/unix/perl
   ftp://perl.com/pub/perl
   ftp://src.doc.ic.ac.uk/packages/perl
   ftp://src.doc.ic.ac.uk/packages/perl5
   ftp://sungear.mame.mu.oz.au/pub/perl


End.