![]() |
|||
![]()
|
![]() |
![]() Click Here! |
![]() |
appendix BPerl Module Archives 737
CONTENTS
Perl is a widely used language for system maintenance, CGI programming, prototyping, and many other functions. Because it is so widely used, many programming examples are available. These range from entire programs to code libraries (modules) that can be used in your programs. The module extends the Perl 4 concept of packages in Perl 5 to implement a new, standardized form of reusable software. These modules are kept in various archives on the Internet. In addition, there are several home pages devoted to Perl programming that contain links to module archives. This appendix details the resources available at the time of its writing. Please note: This is not an attempt to detail every module archive. These archive sites represent a major portion of the available sites. Modules, code samples, and complete Perl programs are being produced at a steady pace. Newer archives and some older ones are certain to be missed by this appendix. If I have missed your site, I apologize. The best way to find these sites is to start with the sources listed here and explore. CPAN SitesThe Comprehensive Perl Archive Network (CPAN) was established to provide a place where these modules could be organized and retrieved. The basic principle of CPAN is being distributed. It would be impossible to coordinate the numerous resources so that all the people contributing Perl material could enter their contributions into some central site. Therefore, most of the contents of the CPAN are mirrored from other sites; CPAN just pulls all the various resources together and layers them into a coherent whole. Here are the sites available at the time of this writing; this information is likely to change the the time this book is published. The master CPAN site is at ftp://ftp.funet.fi/ (Finland, Europe). Select the site nearest to you from the following list to get the best response time and bandwidth. As an alternative, use http://www.perl.com/CPAN, which tries to guess the nearest site for you based on your host's Internet domain name.
All the files under each of the directories in this list should be identical at all these sites because they are all automatically maintained mirrors of the master CPAN site. If you can't find what you want, or want to check that what you've found is the latest version, you can contact the person associated with the module. These are also listed at the site and with the particular module in which you are interested. The CPAN archives are mirrored and, except for brief periods, are identical. Here is the organization:
The basic archives are organized in three ways:
You can send feedback by e-mail to the CPAN administrators: cpan-adm@ftp.funet.fi. In order to examine these archives more fully, let's look at some examples by category. Module ExamplesI won't attempt to list all the available archives. By the time you read this, the contents will, hopefully, be greatly expanded. The modules are organized into several categories. These are detailed in a following section titled "Perl 5 Module List." This list is an excellent resource and is updated and issued periodically. One important note: many of these modules are works in progress. When you choose to implement a module, be sure to read the accompanying documentation. Many are alpha and beta releases of modules or implement interfaces to standards that are, themselves, changing. Be careful, know what you are dealing with, and approach these modules with an open, informed attitude. If you have questions, contact the person responsible for the module. The subsections that follow describe these broad categories. Some examples of the modules are presented in each category. Perl Core Modules, Perl Language Extensions, and Documentation ToolsThese modules deal with modifying/handling the Perl core, adding extensions to the Perl language, and documenting the language. An example is the Opcode module, which provides functions for the manipulation of sets of Perl opcodes, including the capability to mask (disable) sets of opcodes. Development SupportThese modules deal with using Perl for development; for example, Devel::embed, which provides utility functions for embedding a Perl interpreter and extensions in your C/C++ applications. Operating System InterfacesThese are Perl modules that deal with specific operating systems or classes of operating systems. An example is BSD-resource, which is a Perl extension that implements the BSD process resource limit functions
and the BSD process priority functions
Networking, Device Control (Modems), and InterProcess CommunicationThese are modules that allow/extend Perl to perform networking, modem control, and interprocess communication. SNMP is a Perl 5 extension module that provides an interface to the CMU-SNMPv2 library. There are also modules for implementing FTP and TCP interfaces. Data Types and Data Type UtilitiesThese are extensions related to data types and their manipulation. For related modules, see the next section, "Database Interfaces." Here's a list of the extensions:
Database InterfacesThese are extensions to interface with databases. Many utilize the database interface (DBI), which provides a common interface to database drivers for various database engines. Drivers planned or being developed include
In addition, extensions are available for Sybase, msql, and Xbase. User InterfacesThese modules include both graphic and text interfaces. The modules include
Other Programming LanguagesThese modules are interfaces to or emulations of other programming languages. At this writing, there are two categories: prolog and TCL. Filenames, File Systems, and File LockingAll things having to do with files (with the exception of file handles, which are categorized with directories in a following section). File::Tools is a package that implements several file operations under a single umbrella. Libwww-perl is a collection of Perl modules that provides a simple and consistent programming interface (API) to the World Wide Web. There are also several file-locking modules. String and Text ProcessingString- and text-processing extensions seem a little silly in a language that is optimized for text processing. But the modules in this category do serve a purpose. This category includes parsing and searching modules. There are font-handling utilities included in this category. SGMLS.pm is a Perl 5 class library for parsing the output from James Clark's SGMLS and NSGMLS parsers. Modules include approximate string-matching capabilities and emulation of the C scanf function. The text-processing modules include
Options, Arguments, Parameters, and Configuration FilesThese are modules to process options, arguments, and configuration files. ConfigReader is a set of classes for reading configuration files. The programmer can easily specify the directives to be read, as well as their default values and a parsing function or method to use. There are also a set of modules for processing both long and short (GNU-style) options. Authentication, Security, and EncryptionOne of a set of security modules. See the network section for additional modules. There are modules for DES, MD5, and PGP handling/interfaces. World Wide WebThese include HTML, HTTP, CGI, MIME processing and more. Because much of Web page processing is basic text processing, many of the text-processing modules are also helpful. Some of the more useful modules deal with the inconsistencies in HTTP daemons, provide CGI interfaces, and process various MIME types. Server and Daemon UtilitiesUNIX, in general, and the Internet, specifically, depend on servers and daemons to perform much of their processing. These modules interface with or implement servers and daemons. Image ProcessingThese modules perform image processing and bitmap manipulation. GD is an interface to the GD library that can create GIF images on-the-fly. OpenGL is a module that allows a Perl program to use OpenGL by letting it make function calls. pgperl is a version of the Perl language that has the PGPLOT FORTRAN library available, a very popular package for plotting astronomical data. Mail and Usenet NewsSMTP mail and Usenet news are essentially a set of text streams. Because Perl is optimized to handle text, it is an obvious choice for manipulating mail and news. Mailtools implements a set of tools for mail processing. POP3Client is, as its name applies, a post office protocol (POP) version 3 client. There are also a couple of NNTP clients and news-handling modules. Control Flow UtilitiesThese modules implement callbacks and handle exceptions. For example, Religion provides simplified access to $SIG{__DIE__} and $SIG{__WARN__}, which allow control over what happens when a die() or warn() occurs and (as a side effect) enhance the standard error messages, which is especially useful if you are dealing with eval()s. File and Directory HandlesThese deal with directories and file handles as well as input/output stream utilities. Miscellaneous ModulesHere is everything else. Because of its ease of use and versatility, Perl is being used in many different ways. At the time of this writing, there are utilities to implement an Archie server/client. There is a routine to interface to freeWAIS and implement a chat client. There is also a module that provides two interfaces to the Remedy Action Request System. The first is a basic interface to the C API provided with the AR system (Remedy::Ar). The second is an object-oriented version of the same (Remedy::Ar::Server and Remedy::Ar::Schema). There is also a Gann Neural Network C++ library and Perl extension. Perl 5 Module ListIf you program for Perl 5, you might want to get a copy of the Perl 5 Module list maintained by Tim Bunce <Tim.Bunce@ig.co.uk>.
To give you an idea what can be found on the list, here is the
table of contents from revision 2.21 dated March 21, 1996. The
list is posted periodically to the comp.lang.perl.announce
and comp.answers newsgroups.
Contents NewsgroupsAgain, because Perl is a popular language designed to get things done, there is a lot of help out there. It is likely that someone has done what you are attempting or has done something similar and can point you to a code example or module similar to the one you are designing. Newsgroups are a good place to interact with these resources and a good place to find out about new modules available at the various sites. You might want to start with these newsgroups when you are looking for a particular module or need help with your Perl programming. One note: there appears to be a great deal of cross-posting in these newsgroups. If you look to these groups to find something (and you probably will have to examine them all), you'll have to wade through a lot of cross-postings to find the "good stuff."
Web PagesHere are Web pages devoted to Perl. They can be good sources of information and modules. If I have missed your site (or your favorite site), I apologize. Any attempt to compile a "complete" list of any type on the Internet is futile. (The Open Text Search Index returned 13,035 references for Perl.) These are examples of the large amount of information available on the Web about Perl. Many contain links and are valuable starting points for resources. They are presented in alphabetical order with my comments:
Frequently Asked Questions (FAQ) ListsLike many things on the Internet, there are FAQs maintained about Perl. They can be useful in determining what is available and what can be done. These FAQs are posted periodically in the Perl newsgroups. Here are two with sources at the time of this writing. Perl Meta-FAQThe meta-FAQ is a list detailing other resources and FAQs. This is a good source if you are looking for a version of Perl for a specific platform or with a particular capability: http://www.khoros.unm.edu/staff/neilb/perl/metaFAQ Perl FAQThe main FAQ for the Perl language. It contains questions about programming, sources of modules, and more on the Perl language: http://mox.perl.com/perl/faq Mailing ListsAt the time of this writing, there are a number of mailing lists related to Perl. perl5-porters@nicoh.comThis list is for discussion of Perl 5 design and porting issues. Subscribe by e-mailing majordomo@nicoh.com with subscribe perl5-porters {your mail address}. perl-win32@mail.hip.com
|
Site | Address/Comment |
Sunsite Perl Archives | ftp://sunsite.unc.edu/pub/languages/perl Check the INDEX for the table of contents. Mirrors the defunct Coombs archive. |
Ohio State University | ftp://archive.cis.ohio-state.edu/pub/perl/ |
Software Research | ftp://sra.co.jp/pub/lang/perl/ |
Associates | Besides scripts, this site also archives various versions of Perl, including those for MS-DOS (4.036), PerlMac, and Windows NT |
InfoWire | ftp://ftp.infowire.com/pub/ntperl/
This site includes modules for Win32 Perl, including an ODBC interface module. |
The number of Perl resources is growing on the Internet, primarily due to the popularity and utility of this language. Use this appendix as a starting point for your Perl search. In addition, check my personal Perl page at
http://www.channel1.com/users/rbreed01/tab10.htm
I will try not to duplicate the other resources on the Net, but will attempt to keep up with additional and informative Perl resources (as well as post a couple of my own Perl scripts).
![]() |
|
Use of this site is subject certain Terms & Conditions. Copyright (c) 1996-1999 EarthWeb, Inc.. All rights reserved. Reproduction in whole or in part in any form or medium without express written permission of EarthWeb is prohibited. Please read our privacy policy for details. |