| ★ wanayoo — archive 1999 http://www.lns.cornell.edu/~pvhp/perl/00modlist.long.html | Nouvelle recherche | Portail wanayoo |
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.
See CPAN.html on your CPAN site.
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.
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.
For navigating through CPAN you may find the file modules/01modules.index.html a useful starting place. Or you may prefer a webified version of this modulelist in the file modules/00modlist.long.html on the CPAN servers. There's more than one way to do 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 us so we can keep this list up-to-date. We 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 modules@perl.com (or modules@franz.ww.tu-berlin.de in case the above doesn't work). No tabs please. Don't forget to upload your module to the PAUSE site for forwarding on to CPAN. See section 2.9.
You should be able to get a copy from one of these places:
An HTML version that is usually in sync with the posted version can be obtained at http://www.perl.com/CPAN/modules/00modlist.long.html
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://franz.ww.tu-berlin.de/modulelist 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.
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.
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.
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! 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.
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() variablesFunction 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 callOn 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.
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.
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.
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.
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.
The best way to know for sure, and pick up many helpful suggestions, is to ask someone who knows. The comp.lang.perl.misc and comp.lang.perl.modules Usenet newsgroups are read by just about all the people who develop modules and they are 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!
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.
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) 1996 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.
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.
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:
and notify upload@franz.ww.tu-berlin.de .
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!
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:
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.misc. Please do *not* ask us directly, we simply don't have the time. Sorry.
Name DSLI Description Info ------------- ---- -------------------------------------------- ----- Fcntl Sdcf Defines fcntl() constants (see File::Lock) JHI
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.
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!
Name DSLI Description Info ----------- ---- -------------------------------------------- ----- CORE Sucf Internal package for perl native functions P5P UNIVERSAL SucO Internal universal base-class JACKS SUPER SucO Internal class to access superclass methods P5P DynaLoader SucO Dynamic loader for shared libraries P5P AutoLoader SupO Automatic function loader (using AutoSplit) P5P SelfLoader SdpO Automatic function loader (using __DATA__) JACKS Exporter SupO Implements default import method for modules P5P Carp Supf Throw exceptions outside current package P5P Config Supf Stores details of perl build configuration P5P English Supf Defines English names for special variables P5P Symbol SupO Create 'anonymous' symbol (typeglobs) refs CHIPS Opcode adpf Disable named opcodes when compiling code TIMB
strict Supf Controls averments (similar to pragmas) P5P integer Supf Controls float vs. integer arithmetic P5P less Supf Controls optimisations: 'use less memory;' P5P subs Supf use subs qw(x y); is short for sub x; sub y; P5P vars Supf predeclare variable names P5P lib Supf Simple way to add/delete directories in @INC P5P sigtrap Supf For trapping an abort and giving a traceback P5P diagnostics Sdpf For reporting perl diagnostics in full form TOMC overload SdpO Overload perl operators for new data types ILYAZ
Safe SdcO Restrict eval'd code to safe subset of ops MICB Alias bdcf Convenient access to data/code via aliases GSAR Plthread i Multithreading at Perl level (not O/S level) MICB
B aucO The Perl Compiler MICB O aucO Perl Compiler frontends MICB
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
Pod:: ::HTML cdpr converter to HTML KJALB + ::Index cdpr index generator KJALB + ::Latex cdpr converter to LaTeX KJALB + ::Man cdpr converter to man page KJALB + ::Parse cdpr Common pod parsing code KJALB + ::Pod cdpr converter to canonical pod KJALB + ::RTF cdpr converter to RTF KJALB + ::Texinfo cdpr converter to texinfo KJALB + ::Text Supf convert POD data to formatted ASCII text TOMC
Name DSLI Description Info ----------- ---- -------------------------------------------- ----- AutoSplit Supf Splits modules into files for AutoLoader P5P Benchmark Supf Easy way to time fragments of perl code P5P FindBin adpf Locate current script bin directory GBARR DoWhatIWant i Does what you want without even asking
ExtUtils:: ::DynaGlue i Utilities/glue code for C<->Perl interfaces DOUGM ! ::MakeMaker SupO Writes Makefiles for extensions MMML ::Manifest Supf Utilities for managing MANIFEST files MMML ::Typemap i xsubpp typemap handling WPS ::embed bdpf Utilities for embedding Perl in C/C++ apps DOUGM
Test:: ::Harness Supf Executes perl-style tests ANDK
Devel:: ::CallerItem RupO 'caller()' Object wrapper + useful methods JACKS ::CoreStack adpf generate a stack dump from a core file ADESC ::DProf Rdcf Execution profiler DMR ::DumpStack Rupf Dumping of the current function stack JACKS ::Peek adcf Peek at internal representation of Perl data ILYAZ ::RegExp adcO Access perl internal regex functions ILYAZ ::Symdump RdpO Perl symbol table access and dumping ANDK ::TraceFuncs adpO Trace funcs by using object destructions JOEHIL
Usage bupr Type and range checking on subroutine args JACKS
VCS:: ::RCS idpf Interface layer over RCS functionality RJRAY ::RCE idcf Perl layer over RCE C API RJRAY
Include adpO Parse C header files for use in XS GBARR Make adpO Makefile parsing, and 'make' replacement NI-S DataFlow RdpO Acquire data based on recipes ILYAZ
Name DSLI Description Info ----------- ---- -------------------------------------------- ----- POSIX SupO An interface to most (all?) of POSIX.1 P5P Fcntl Sdcf Defines fcntl() constants (see File::Lock) JHI Ioctl cdcf Defines ioctl() constants KJALB Errno i Constants from <errno.h> EACCES, ENOENT etc JHI Env Supf Alias environment variables as perl vars P5P Shell Supf Run shell commands transparently within perl P5P
BSD:: ::HostIdent i s/gethostname(), s/gethostid() JHI ::Resource Rdcf getrusage(), s/getrlimit(), s/getpriority() JHI
Sys:: ::Hostname Supf Implements a portable hostname function P5P ::Syslog Supf Provides same functionality as BSD syslog P5P ::AlarmCall Rupf Timeout on any sub. Allows nested alarms JACKS
Quota adcf Disk quota system functions, local & remote TOMZO
Proc:: ::times adpf By-name interface to process times function TOMC ::Forkfunc Rdpf Simple lwall-style fork wrapper MUIR ::Simple adpO Fork wrapper with objects MSCHILLI
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:: Macintosh specific modules ::AppleEvents bmcO AppleEvent manager and AEGizmos MCPL ::Components bmcO (QuickTime) Component manager MCPL + ::Files bmcO File manager MCPL ::Gestalt bmcO Gestalt manager: Environment enquiries MCPL + ::Memory bmcO Memory manager MCPL ::MoreFiles bmcO Further file management routines MCPL + ::OSA bmcO Open Scripting Architecture MCPL + ::Processes bmcO Process manager MCPL ::Resources bmcO Resource manager MCPL ::Types bmcO (Un-)Packing of Macintosh specific types MCPL +
OS2:: ::ExtAttr RdcO (Tied) access to extended attributes ILYAZ ::PrfDB RdcO (Tied) access to .INI-style databases ILYAZ ::REXX RdcO Access to REXX DLLs and REXX runtime ILYAZ ::FTP bncf Access to ftplib interface ILYAZ ::UPM bncf User Profile Management ILYAZ
Name DSLI Description Info ----------- ---- -------------------------------------------- ----- Socket Sucf Defines all socket-related constants JACKS Ptty adcf Pseudo terminal interface functions NI-S
Net:: ::Cmd cdpO For command based protocols (FTP, SMTP etc) GBARR ::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 adcO Generic support for socket usage SPIDB ::IRC i Internet Relay Chat interface MRG ::Inet adcO Internet (IP) socket usage SPIDB ::NIS adcO Interface to Sun's NIS RIK ::NISPlus adcO Interface to Sun's NIS+ RIK ::NNTP adpO Client interface to NNTP protocol GBARR ::Netrc adpO Support for .netrc files GBARR ::POP3 adpO Client interface to POP3 protocol GBARR ::Ping Supf Implements TCP/IP ping (currently only echo) PMQS ::SMTP adpf Interface to Simple Mail Transfer Protocol GBARR ::SNPP cdpO Client interface to SNPP protocol GBARR ::SOCKS i TCP/IP access through firewalls using SOCKS WSCOT ::SSLeay adcf Secure Socket Layer (Eric Young's version) ADESC ::TCP adcO TCP-specific socket usage SPIDB ::Telnet cdpO Inheritable Telnet socket object protocol GBARR ::Time adpf Obtain time from remote machines GBARR ::UDP cdcO UDP-specific socket usage SPIDB ::hostent adpf A by-name interface for hosts functions TOMC ::netent adpf A by-name interface for networks functions TOMC ::protoent adpf A by-name interface for protocols functions TOMC ::servent adpf A by-name interface for services functions TOMC
IPC:: ::Open2 Supf Open a process for both reading and writing P5P ::Open3 Supf Like IPC::Open2 but with error handling P5P ::Chat2 ? Out-of-service during refit! GBARR ::SysV adcr shared memory, semaphores, messages etc JACKS ::Mmap i Interface to Unix's mmap() shared memory MICB ::Globalspace cdpO Multi-process shared hash and shared events JACKS
RPC:: Remote Procedure Calls (see also DCE::RPC) ::ONC i Open Network Computing (Sun) RPC interface PKUTS
DCE:: Distributed Computing Environment (OSF) ::Registry cdcf DCE registry functions DOUGM ::rgybase bdcO Constants from rgybase.h,rgynbase.h DOUGM + ::Login bdcO Interface to login functions DOUGM + ::login_base bdcO Constants from sec_login.h,sec_login_base.h DOUGM + ::Status bdpr Tie to *sts.h files DOUGM + ::UUID bdcf Misc uuid functions DOUGM + ::ACL cdcO Interface to Access Control List protocol DOUGM + ::aclbase cdcO Constants from aclbase.h DOUGM + ::RPC c Remote Procedure Calls DOUGM +
Proxy i Transport-independent remote processing MICB Proxy:: ::Tk ? 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
Parallel:: ::Pvm bdcf Interface to the PVM messaging service EWALKER
Name DSLI Description Info ----------- ---- -------------------------------------------- ----- Math:: ::Amoeba Rdpr Multidimensional Function Minimisation JARW ::Approx adpO Approximate x,y-values by a function ULPFR ::BigFloat SupO Arbitrary size floating point math package MARKB ::BigInt SupO Arbitrary size integer math package MARKB ::BigInteger adc Arbitrary size integer as XS extension GARY ::BigRat ? Arbitrary size rational numbers (fractions) MARKB ::Brent Rdpr One-dimensional Function Minimisation JARW ::Complex SdpO Complex number data type DNAD ::Derivative Rdpr 1st and 2nd order differentiation of data JARW ::Fortran Rdpf Implements Fortran log10 & sign functions JARW ::IEEE i Interface to ANSI/IEEE Std 754-1985 funcs ::LinearProg idp Linear programming utilities JONO ::Matrix adpO Matrix data type (transpose, multiply etc) ULPFR ::Pari adcf Interface to the powerful PARI library ILYAZ ::Prime i Prime number testing GARY ::RandomPrime i Generates random primes of x bits GARY ::Spline RdpO Cubic Spline Interpolation of data JARW ::Trig bdpf tan asin acos sinh cosh tanh sech cosech JARW ::TrulyRandom i based on interrupt timing discrepancies GARY ::VecStat Rdpr Some basic numeric stats on vectors JARW ::ematica adcO Interface to the powerful Mathematica system ULPFR
Statistics:: ::LTU RdpO Implements Linear Threshold Units TOMFA ::Descriptive RdpO Descriptive statistical methods JKAST ::ChiSquare Rdpf Chi Square test - how random is your data? JONO
Array:: ::Vec idp Implement array using vec() LWALL ::Substr idp Implement array using substr() LWALL ::Virtual idp Implement array using a file LWALL ::PrintCols adpf Print elements in vertically sorted columns AKSTE
Set:: ::Scalar adpO Set of scalars (inc references) JHI ::IntegerFast adcO Set of positive integers (in C) STBEY ::IntSpan adpO Set of integers newsrc style '1,5-9,11' etc SWMCD
Date:: ::CTime adpf Updated ctime.pl with mods for timezones GBARR ::DateCalc Rdcf Various standards based date calculations STBEY ::Format Rdpf Date formatter ala strftime GBARR ::GetDate adcf Yacc based free-format date parser in C TOMC ::Interval idpO Lightweight normalised interval data type TIMB ::Language adpO Multi-language date support GBARR ::Manip Rdpf Manipulate/parse international dates/times SBECK ::Parse Rdpf ASCII Date parser using regexp's GBARR ::Time idpO Lightweight normalised datetime 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() P5P ::HiRes 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 ::Zone Rdpf Timezone info and translation routines GBARR
Tie:: ::Hash Supr Base class for implementing tied hashes P5P ::Scalar Supr Base class for implementing tied scalars P5P ::Array c Base class for implementing tied arrays CHIPS ::Cache adpO In memory size limited LRU cache MIKEH ::Dir adpr Tie hash for reading directories GBARR ::File adpr Tie hash to files in a directory AMW ::IxHash RdpO Indexed hash (ordered array/hash composite) GSAR ::Mem adcO Bind perl variables to memory addresses PMQS ::Quick i Simple way to create ties TIMB ::ShiftSplice i Defines shift et al in terms of splice LWALL ::SubstrHash SdpO Very compact hash stored in a string LWALL ::Watch bdpO Uses Tie::Quick to watch a variable LUSOL
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
Sort:: ::Versions Rdpf sorting of revision (and similar) numbers KJALB +
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 RdpO Convert data structure into perl code GSAR
Name DSLI Description Info ----------- ---- -------------------------------------------- ----- DBI amcO Generic Database Interface (see DBD modules) DBIML DBD:: ::Oracle amcO Oracle Driver for DBI TIMB ::Ingres i 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 cdpO Sybase Driver for DBI (uses Sybase::CTlib) MEWP ::QBase amcO QBase Driver for DBI BENLI
Oraperl ampf Oraperl emulation interface for DBD::Oracle TIMB Ingperl i Ingperl emulation interface for DBD::Ingres TIMB
Sybase:: ::DBlib RdcO Sybase DBlibrary interface MEWP ::Sybperl Rdpf sybperl 1.0xx compatibility module MEWP ::CTlib bdcO Sybase CTlibrary interface MEWP
Msql RmcO Mini-SQL, a light weight SQL database ANDK Pg Rdcf Postgres95 SQL database interface MERGL Datascope Rdcf Interface to Datascope RDBMS DANMQ Xbase bdpf Read Xbase files with simple IDX indexes PRATP
NDBM_File Suc Tie to NDBM files P5P DB_File Suc Tie to DB files PMQS GDBM_File Suc Tie to GDBM files P5P SDBM_File Suc Tie to SDBM files P5P ODBM_File Suc Tie to ODBM files P5P AnyDBM_File Sup Uses first available *_File module above P5P DBZ_File adc Tie to dbz files (mainly for news history) IANPX MLDBM bdpO Transparently store multi-level data in DBM GSAR
AsciiDB i Generic text database parsing MICB MARC i Interface to MARC format (bibliography) PEM NetCDF bmcr Interface to netCDF API for scientific data SEMM Stanza i Text format database used by OSF and IBM JHI
DTREE cdcf Interface to Faircom DTREE multikey ISAM db JWAT Fame adcO Interface to FAME database and language TRIAS
Name DSLI Description Info ----------- ---- -------------------------------------------- ----- Term:: ::Complete Supf Tab word completion using stty raw WTOMPSON ::ReadKey Rdcf Read keystrokes and change terminal modes KJALB ::Cap Supf Basic termcap: Tgetent, Tputs, Tgoto TSANDERS ::Screen RdpO Basic screen + input class (uses Term::Cap) MRKAE ::Info adpf Terminfo interface (currently just Tput) KJALB ::ReadLine Sdcf GNU Readline, history and completion ILYAZ ::Control idpf Basic curses-type screen controls (gotxy) KJALB ::Gnuplot adcf Draw vector graphics on terminals etc ILYAZ ::Query Rdpf Intelligent user prompt/response driver AKSTE
Curses adcO Character screen handling and windowing WPS NCurses cdcO Curses using the ncurses package WPS Perlmenu Mdpf Curses-based menu and template system SKUNZ Cdk RdcO Collection of Curses widgets GLOVER PV bmpO PerlVision curses windowing (OO widgets etc) AGUL
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
Sx Rdcf 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
Name DSLI Description Info ----------- ---- -------------------------------------------- ----- C:: ::Scan RdpO Heuristic parse of C files ILYAZ
Tcl RdcO Complete access to Tcl MICB ::Tk RdcO Complete access to Tk *via Tcl* MICB
Language:: ::Prolog adpO An implementation of Prolog JACKS
SICStus adcO Interface to SICStus Prolog Runtime CBAIL
Fortran:: ::NameList adpf Interface to FORTRAN NameList data SGEL
Name DSLI Description Info ----------- ---- -------------------------------------------- ----- Cwd Supf Current working directory functions P5P
File:: ::Attrib idpO Get/set file attributes (stat) TYEMQ ::Basename Supf Return basename of a filename P5P ::CheckTree Supf Check file/dir tree against a specification P5P ::Copy adpf Copying files or filehandles ASHER ::CounterFile RdpO Persistent counter class GAAS ::Find Supf Call func for every item in a directory tree P5P ::Flock adpf flock() wrapper. Auto-create locks MUIR ::Glob adpf Filename globing (ksh style) TYEMQ ::Listing bdpf Parse directory listings GAAS ::Lock adcf File locking using flock() and lockf() JHI ::Path Supf File path and name utilities P5P ::Slurp bdpf Read/write/append files quickly MUIR ::stat adpf A by-name interface for the stat function TOMC
Filesys:: ::dfent adpf By-name interface TOMC ::mntent adpf By-name interface TOMC ::statfs adpf By-name interface TOMC
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
Text:: ::Abbrev Supf Builds hash of all possible abbreviations P5P ::ParseWords Supf Parse strings containing shell-style quoting HALPOM ::Soundex Supf Convert a string to a soundex value MIKESTOK ::TeX cdpO TeX typesetting language input parser ILYAZ ::Bib RdpO Parse refer(1)-style bibliography files ERYQ ::Tabs Sdpf Expand and contract tabs ala expand(1) MUIR ::Wrap Sdpf Wraps lines to make simple paragraphs MUIR ::Template bdpO Expand template text with embedded perl MJD
Text:: ::English adpf English language stemming IANPX ::German adpf German language stemming ULPFR ::Stem bdpf Porter algorithm for stemming English words IANPX
Search:: ::Dict Supf Search a dictionary ordered text file P5P
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
Name DSLI Description Info ----------- ---- -------------------------------------------- ----- Getopt:: ::Std Supf Implements basic getopt and getopts P5P ::Long Supf Advanced option handling JV ::Gnu adcf GNU form of long option handling WSCOT ::Regex ad Option handling using regular expressions JARW ::Mixed Rdpf Supports both long and short options CJM ::Help bdpf Yet another getopt, has help and defaults IANPX
ConfigReader cdpO Read directives from configuration file AMW Resources bdpf Application defaults management in Perl FRANCOC
Name DSLI Description Info ----------- ---- -------------------------------------------- ----- I18N:: ::Collate Sdpr Locale based comparisons JHI ::WideMulti i Wide and multibyte character string JHI
Locale:: ::gettext Rdcf Multilanguage messages PVANDRY +
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
PGP adpO Simple interface to PGP subprocess via pipes GEHIC DES adcf DES encryption (libdes) EAYNG Des adcf DES encryption (libdes) MICB MD5 RdcO MD5 message digest algorithm NWINT SHA adcO NIST SHA message digest algorithm UWEH Kerberos i Kerberos IV authentication MICB GSS i Generic Security Services API (RFC 1508/9) MSHLD
Crypt:: ::DES a DES encryption (libdes) GARY ::IDEA a ??? GARY ::PRSG a 160 bit LFSR for pseudo random sequences GARY
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 CGIP ::ErrorWrap bdpf Trap warnings and die and convert into HTML TOMC ::Imagemap adpO Imagemap handling for specialized apps MIKEH ::MiniSvr RmpO Fork CGI app as a per-session mini server CGIP ::Out adpf Buffer CGI output and report errors MUIR ::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
CGI_Lite ampO Light-weight interface for fast apps SHGUN
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 ::Element ampO Representation of a HTML parsing tree LWWWP ::Entities bmpf Encode/decode HTML entities LWWWP ::Formatter ampO Convert HTML to plain text or Postscript LWWWP ::Parse ampO Parse HTML documents LWWWP
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 ::Negotiate bmpf HTTP content negotiation LWWWP
HTTPD:: ::UserAdmin bdpO Management of server user databases DOUGM ::GroupAdmin bdpO Management of server group databases DOUGM ::Authen bdpO Preform HTTP Basic and Digest Authentication DOUGM ::Config cdpO Management of server configuration files DOUGM ::Access cdpO Management of server access control files DOUGM
WWW:: ::RobotRules ampO Parse /robots.txt file LWWWP
LWP:: Libwww-perl-5 ::MediaTypes bmpf Media types and mailcap processing LWWWP ::Simple bmpf Simple procedural interface to libwww-perl LWWWP ::UserAgent bmpO A WWW UserAgent class LWWWP ::RobotUA bmpO 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 ::Decoder adpO OO interface to existing MIME decoders ERYQ ::Entity adpO An extracted and decoded MIME entity ERYQ ::Head adpO A parsed MIME header ERYQ ::Parser adpO Parses streams to create MIME entities ERYQ
Apache bdcO Interface to the Apache server API DOUGM CCI i Common Client Interface for WWW browsers DOUGM
Name DSLI Description Info ----------- ---- -------------------------------------------- ----- EventServer RupO Triggers objects on i/o, timers & interrupts JACKS ::Functions Rupf Utility functions for initializing servers JACKS ::*Wrapper Rupf Bunch of wrappers for different server types JACKS ::Gettimeofday Rupr gettimeofday syscall wrapper JACKS ::Signal Rupr signalhandler for the eventserver JACKS
Server::Server:: ::EventDriven RupO See 'EventServer' (compatibility maintained) JACKS
Server::Echo:: ::MailPipe cup A process which accepts piped mail JACKS ::TcpDForking cup TCP daemon which forks clients JACKS ::TcpDMplx cup TCP daemon which multiplexes clients JACKS ::TcpISWFork cup TCP inetd wait process, forks clients JACKS ::TcpISWMplx cup TCP inetd wait process, multiplexes clients JACKS ::TcpISNowait cup TCP inetd nowait process JACKS ::UdpD cup UDP daemon JACKS ::UdpIS cup UDP inetd process JACKS
Server::Inet:: ::Functions cdpf Utility functions for Inet socket handling JACKS ::Object cupO Basic Inet object JACKS ::TcpClientObj cupO A TCP client (connected) object JACKS ::TcpMasterObj cupO A TCP master (listening) object JACKS ::UdpObj cupO A UDP object JACKS
Server::FileQueue:: ::Functions cupf Functions for handling files and mailboxes JACKS ::Object cupO Basic object JACKS ::DirQueue cupO Files queued in a directory JACKS ::MboxQueue cupO Mail queued in a mail box JACKS
Server::Mail:: ::Functions cupf Functions for handling files and mailboxes JACKS ::Object cupO Basic mail object JACKS
Name DSLI Description Info ----------- ---- -------------------------------------------- ----- Compress:: ::Zlib adcO Interface to the Info-Zip zlib library PMQS
Convert:: ::UU bdpf UUencode and UUdecode ANDK
Name DSLI Description Info ----------- ---- -------------------------------------------- ----- GD adcO GIF editing/painting/manipulation LDS OpenGL adcf Interface to OpenGL drawing/imaging library STANM PDL cdcf Perl Data Language - numeric analysis env KGB PGPLOT Rdof PGPLOT plotting library - scientific graphs KGB PixDraw adcO Drawing and manipulating true color images KSB
Graphics:: ::Simple idcO Simple drawing primitives NEERI ::Turtle idp Turtle graphics package NEERI
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 ::MH adcr MH mail interface MRG ::POP3Client bdpO Support for clients of POP3 servers SDOWD ::Folder adpO Base-class for mail folder handling KJOHNSON
News:: ::NNTPClient bdpO Support for clients of NNTP servers RVA ::Newsrc adpO Manage .newsrc files SWMCD
NNTP:: ::Server i Support for an NNTP server JOEHIL
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
Name DSLI Description Info ----------- ---- -------------------------------------------- ----- IO:: ::Handle cdpO Base class for input/output handles GBARR ::Pipe cdpO Methods for pipe handles GBARR ::Socket cdpO Methods for socket input/output handles GBARR ::Seekable cdpO Methods for seekable input/output handles GBARR ::Select adpO Object interface to system select call GBARR ::File cdpO Methods for disk file based i/o handles GBARR ::Pty cdpO Methods for pseudo-terminal allocation etc PEASE ::STREAMS i cO Methods for System V style STREAMS control
FileHandle SupO File handle objects and methods P5P FileCache Supf Keep more files open than the system permits P5P DirHandle SupO Directory handle objects and methods CHIPS SelectSaver SupO Save and restore selected file handle CHIPS Selectable cdpO Event-driven I/O streams MUIR
Log:: ::Topics Rdpf Control flow of topic based logging messages JARW
Name DSLI Description Info ----------- ---- -------------------------------------------- ----- Win32:: ::OLE adcf Interface to OLE API functions WIN32 ::EventLog adcf Interface to Win32 EventLog functions WIN32 ::NetAdmin adcf Interface to Win32 NetAdmin functions WIN32 ::NetResource adcf Interface to Win32 NetResource functions WIN32 ::WinError adcf Interface to Win32 WinError functions WIN32 ::Registry adcf Interface to Win32 Registry functions WIN32 ::Process adcf Interface to Win32 Process functions WIN32 ::FUtils bdcf Implements missing File Utility functions JOCASA
WinNT cdcf Interface to Windows NT specific functions WIN32 NT cdcf Old name for WinNT - being phased out WIN32
Win95 i Interface to Windows 95 specific functions WIN32
Name DSLI Description Info ----------- ---- -------------------------------------------- ----- Archie Rdpf Archie queries via Prospero ARDP protocol GBOSS Neural ad+O Generic simulation of neural networks LUKKA Nexus cdcO Interface to Nexus (threads/ipc/processes) RDO Pcap i An interface for LBL's packet capture lib AMOSS Roman Rdpf Convert Roman numbers to and from Arabic OZAWA SDDF cd+O Interface to Pablo Self Defining Data Format FIS Wais Rdcf Interface to the freeWAIS-sf libraries ULPFR
Bio:: ::* i Utilities for molecular biology SEB
Remedy:: ::AR adcO Interface to Remedy's Action Request API RIK
ARS Rd?? Interface to Remedy's Action Request API JMURPHY
Psion:: ::Db idpO Handle Psion palmtop computer database files IANPX
Logfile RdpO Generic methods to analyze logfiles ULPFR
Agent bdpO Supplies Agentspace methods for perl JDUNCAN
Business:: ::CreditCard Rdpf Credit card number check digit test JONO +
Print:: ::Label i Format address labels JONO +
BarCode:: ::UPC i Produce PostScript UPC barcodes JONO +
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, ask instead how you can help implement them.
Malcolm Beattie < mbeattie@sable.ox.ac.uk > has done extensive work in this area.
Also:
Contacts: DMR
Also:
Contacts: PMQS TIMB P5P LWALL NI-S GBARR
Perl Meta-FAQ
Perl FAQ