X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlmodlib.pod;h=beb6a42a1627ed7df591b3b890a45e1b2e33230f;hb=416e7255471199e449f09747b8a3f428fc8e2bb5;hp=15be6f27a2512fe0fda13a88a4a78d22db58c019;hpb=75d2d88bbe5b638c1ce773568621f1878b16f80e;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlmodlib.pod b/pod/perlmodlib.pod index 15be6f2..beb6a42 100644 --- a/pod/perlmodlib.pod +++ b/pod/perlmodlib.pod @@ -1,3 +1,6 @@ +=for maintainers +Generated by perlmodlib.PL -- DO NOT EDIT! + =head1 NAME perlmodlib - constructing new Perl modules and finding existing ones @@ -62,6 +65,18 @@ Postpone load of modules until a function is used Establish IS-A relationship with base class at compile time +=item bigint + +Transparent big integer support for Perl + +=item bignum + +Transparent BigNumber support for Perl + +=item bigrat + +Transparent BigNumber/BigRational support for Perl + =item blib Use MakeMaker's uninstalled version of a package @@ -72,7 +87,7 @@ Force byte semantics rather than character semantics =item charnames -Define character names for C<\N{named}> string literal escape. +Define character names for C<\N{named}> string literal escapes =item constant @@ -82,6 +97,10 @@ Declare constants Perl compiler pragma to force verbose warning diagnostics +=item encoding + +Allows you to write your script in non-ascii or non-utf8 + =item fields Compile-time class fields @@ -90,9 +109,13 @@ Compile-time class fields Control the filetest permission operators +=item if + +C a Perl module if a condition holds + =item integer -Compute arithmetic in integer instead of double +Use integer arithmetic instead of floating point =item less @@ -114,10 +137,6 @@ Restrict unsafe operations when compiling Package for overloading perl operations -=item perlio - -Configure C level IO - =item re Alter regular expression behaviour @@ -126,6 +145,10 @@ Alter regular expression behaviour Enable simple signal handling +=item sort + +Control sort() behaviour + =item strict Restrict unsafe constructs @@ -134,18 +157,22 @@ Restrict unsafe constructs Predeclare sub names -=item unicode::distinct +=item threads -Strictly distinguish UTF8 data and non-UTF data. +Perl extension allowing use of interpreter based threads from perl =item utf8 -Enable/disable UTF-8 in source code +Enable/disable UTF-8 (or UTF-EBCDIC) in source code =item vars Predeclare global variable names (obsolete) +=item vmsish + +Control VMS-specific language features + =item warnings Control optional warnings @@ -168,6 +195,10 @@ Exporter module. See their own documentation for details. Provide framework for multiple DBMs +=item Attribute::Handlers + +Simpler definition of attribute handlers + =item AutoLoader Load subroutines only on demand @@ -284,6 +315,10 @@ Simple Interface to Server Push Backward compatibility module for defunct CGI::Switch +=item CGI::Util + +Internal utilities used by CGI module + =item CPAN Query, download and build perl modules from CPAN sites @@ -304,10 +339,18 @@ Warn of errors (from perspective of caller) No user serviceable parts inside +=item Class::ISA + +Report the search path for a class's ISA tree + =item Class::Struct Declare struct-like datatypes as Perl classes +=item Config + +Access Perl configuration information + =item Cwd Get pathname of current working directory @@ -324,6 +367,10 @@ Perl5 access to Berkeley DB version 1.x Generate stubs for a SelfLoading module +=item Digest + +Modules that calculate message digests + =item DirHandle Supply object methods for directory handles @@ -344,6 +391,10 @@ Use nice English (or awk) names for ugly punctuation variables Perl module that imports environment variables as scalars or arrays +=item Errno + +System errno constants + =item Exporter Implements default import method for modules @@ -356,6 +407,14 @@ Exporter guts Utilities to replace common UNIX commands in Makefiles etc. +=item ExtUtils::Command::MM + +Commands for the MM's to use in Makefiles + +=item ExtUtils::Constant + +Generate XS code to import C header constants + =item ExtUtils::Embed Utilities for embedding Perl in C/C++ applications @@ -372,14 +431,42 @@ Inventory management of installed modules Determine libraries to use and how to use them +=item ExtUtils::MM + +OS adjusted ExtUtils::MakeMaker subclass + +=item ExtUtils::MM_Any + +Platform agnostic MM methods + +=item ExtUtils::MM_BeOS + +Methods to override UN*X behaviour in ExtUtils::MakeMaker + =item ExtUtils::MM_Cygwin Methods to override UN*X behaviour in ExtUtils::MakeMaker +=item ExtUtils::MM_DOS + +DOS specific subclass of ExtUtils::MM_Unix + +=item ExtUtils::MM_MacOS + +Methods to override UN*X behaviour in ExtUtils::MakeMaker + +=item ExtUtils::MM_NW5 + +Methods to override UN*X behaviour in ExtUtils::MakeMaker + =item ExtUtils::MM_OS2 Methods to override UN*X behaviour in ExtUtils::MakeMaker +=item ExtUtils::MM_UWIN + +U/WIN specific subclass of ExtUtils::MM_Unix + =item ExtUtils::MM_Unix Methods used by ExtUtils::MakeMaker @@ -392,6 +479,14 @@ Methods to override UN*X behaviour in ExtUtils::MakeMaker Methods to override UN*X behaviour in ExtUtils::MakeMaker +=item ExtUtils::MM_Win95 + +Method to customize MakeMaker for Win9X + +=item ExtUtils::MY + +ExtUtils::MakeMaker subclass for customization + =item ExtUtils::MakeMaker Create an extension Makefile @@ -446,7 +541,7 @@ DOS like globbing and then some =item File::Find -Traverse a file tree +Traverse a directory tree. =item File::Path @@ -456,6 +551,10 @@ Create or remove directory trees Portably perform operations on file names +=item File::Spec::Cygwin + +Methods for Cygwin file specs + =item File::Spec::Epoc Methods for Epoc file specs @@ -466,7 +565,11 @@ Portably perform operations on file names =item File::Spec::Mac -File::Spec for MacOS +File::Spec for Mac OS (Classic) + +=item File::Spec::NW5 + +Methods for NW5 file specs =item File::Spec::OS2 @@ -474,7 +577,7 @@ Methods for OS/2 file specs =item File::Spec::Unix -Methods used by File::Spec +File::Spec for Unix, base for other File::Spec modules =item File::Spec::VMS @@ -508,10 +611,6 @@ Simplified source filtering Locate directory of original perl script -=item GDBM_File - -Perl5 access to the gdbm library. - =item Getopt::Long Extended processing of command line options @@ -520,10 +619,22 @@ Extended processing of command line options Process single-character switches with switch clustering +=item Hash::Util + +A selection of general-utility hash subroutines + =item I18N::Collate Compare 8-bit scalar data according to the current locale +=item I18N::LangTags + +Functions for dealing with RFC3066-style language tags + +=item I18N::LangTags::List + +Tags and names for human languages + =item IO Load various IO modules @@ -536,14 +647,50 @@ Open a process for both reading and writing Open a process for reading, writing, and error handling +=item Locale::Constants + +Constants for Locale codes + +=item Locale::Country + +ISO codes for country identification (ISO 3166) + +=item Locale::Currency + +ISO three letter codes for currency identification (ISO 4217) + +=item Locale::Language + +ISO two letter codes for language identification (ISO 639) + +=item Locale::Maketext + +Framework for localization + +=item Locale::Maketext::TPJ13 + +Article about software localization + +=item Locale::Script + +ISO codes for script identification (ISO 15924) + =item Math::BigFloat -Arbitrary length float math package +Arbitrary size floating point math package =item Math::BigInt Arbitrary size integer math package +=item Math::BigInt::Calc + +Pure Perl module to support Math::BigInt + +=item Math::BigRat + +Arbitrarily big rationals + =item Math::Complex Complex numbers and associated mathematical functions @@ -552,18 +699,94 @@ Complex numbers and associated mathematical functions Trigonometric functions +=item Memoize + +Make functions faster by trading space for time + +=item Memoize::AnyDBM_File + +Glue to provide EXISTS for AnyDBM_File for Storable use + +=item Memoize::Expire + +Plug-in module for automatic expiration of memoized values + +=item Memoize::ExpireFile + +Test for Memoize expiration semantics + +=item Memoize::ExpireTest + +Test for Memoize expiration semantics + +=item Memoize::NDBM_File + +Glue to provide EXISTS for NDBM_File for Storable use + +=item Memoize::SDBM_File + +Glue to provide EXISTS for SDBM_File for Storable use + +=item Memoize::Storable + +Store Memoized data in Storable database + =item NDBM_File Tied access to ndbm files +=item NEXT + +Provide a pseudo-class NEXT that allows method redispatch + +=item Net::Cmd + +Network Command class (as used by FTP, SMTP etc) + +=item Net::Config + +Local configuration data for libnet + +=item Net::Domain + +Attempt to evaluate the current host's internet name and domain + +=item Net::FTP + +FTP Client class + +=item Net::NNTP + +NNTP Client class + +=item Net::Netrc + +OO interface to users netrc file + +=item Net::POP3 + +Post Office Protocol 3 Client class (RFC1939) + =item Net::Ping Check a remote host for reachability +=item Net::SMTP + +Simple Mail Transfer Protocol Client + +=item Net::Time + +Time and daytime network client interface + =item Net::hostent By-name interface to Perl's built-in gethost*() functions +=item Net::libnetFAQ + +Libnet Frequently Asked Questions + =item Net::netent By-name interface to Perl's built-in getnet*() functions @@ -588,6 +811,14 @@ Tied access to odbm files Disable named opcodes when compiling perl code +=item POSIX + +Perl interface to IEEE Std 1003.1 + +=item PerlIO + +On demand loader for PerlIO layers and root of PerlIO::* name space + =item Pod::Checker Check pod documents for syntax errors @@ -596,6 +827,10 @@ Check pod documents for syntax errors Find POD documents in directory trees +=item Pod::Functions + +Group Perl's functions a la perlfunc.pod + =item Pod::Html Module to convert pod files to HTML @@ -612,6 +847,10 @@ Convert Pod data to formatted Latex Convert POD data to formatted *roff input +=item Pod::ParseLink + +Parse an LEE formatting code in POD text + =item Pod::ParseUtils Helpers for POD parsing and conversion @@ -678,7 +917,11 @@ Load the C socket.h defines and structure manipulators =item Storable -Persistency for perl data structures +Persistence for Perl data structures + +=item Switch + +A switch statement for Perl =item Symbol @@ -704,14 +947,46 @@ Perl interface to various C packages. If Provides a simple framework for writing test scripts +=item Test::Builder + +Backend for building test libraries + =item Test::Harness Run perl standard test scripts with statistics +=item Test::Harness::Assert + +Simple assert + +=item Test::Harness::Iterator + +Internal Test::Harness Iterator + +=item Test::Harness::Straps + +Detailed analysis of test results + +=item Test::More + +Yet another framework for writing test scripts + +=item Test::Simple + +Basic utilities for writing tests. + +=item Test::Tutorial + +A tutorial about writing really basic tests + =item Text::Abbrev Create an abbreviation table from a list +=item Text::Balanced + +Extract delimited text sequences from strings. + =item Text::ParseWords Parse text into an array of tokens or array of arrays @@ -720,14 +995,34 @@ Parse text into an array of tokens or array of arrays Implementation of the Soundex Algorithm as Described by Knuth +=item Text::Tabs + +Expand and unexpand tabs per the unix expand(1) and unexpand(1) + =item Text::Wrap Line wrapping to form simple paragraphs +=item Thread + +Manipulate threads in Perl (for old code only) + +=item Thread::Queue + +Thread-safe queues (for old code only) + +=item Thread::Semaphore + +Thread-safe semaphores (for old code only) + =item Tie::Array Base class for tied arrays +=item Tie::File + +Access the lines of a disk file via a Perl array + =item Tie::Handle Base class definitions for tied handles @@ -736,6 +1031,10 @@ Base class definitions for tied handles Base class definitions for tied hashes +=item Tie::Memoize + +Add data to hash when needed + =item Tie::RefHash Use references as hash keys @@ -768,6 +1067,14 @@ Internal object used by Time::gmtime and Time::localtime Base class for ALL classes (blessed references) +=item Unicode::Collate + +Unicode Collation Algorithm + +=item Unicode::UCD + +Unicode character database + =item User::grent By-name interface to Perl's built-in getgr*() functions @@ -776,6 +1083,10 @@ By-name interface to Perl's built-in getgr*() functions By-name interface to Perl's built-in getpw*() functions +=item Win32 + +Interfaces to some Win32 API Functions + =back To find out I modules installed on your system, including @@ -796,7 +1107,7 @@ system B command, you might try the B program. Extension modules are written in C (or a mix of Perl and C). They are usually dynamically loaded into Perl if and when you need them, -but may also be be linked in statically. Supported extension modules +but may also be linked in statically. Supported extension modules include Socket, Fcntl, and POSIX. Many popular C extension modules do not come bundled (at least, not @@ -812,76 +1123,96 @@ CPAN stands for Comprehensive Perl Archive Network; it's a globally replicated trove of Perl materials, including documentation, style guides, tricks and traps, alternate ports to non-Unix systems and occasional binary distributions for these. Search engines for -CPAN can be found at http://cpan.perl.com/ and at -http://theory.uwinnipeg.ca/mod_perl/cpan-search.pl . +CPAN can be found at http://www.cpan.org/ Most importantly, CPAN includes around a thousand unbundled modules, some of which require a C compiler to build. Major categories of modules are: -=over 4 +=over =item * + Language Extensions and Documentation Tools =item * + Development Support =item * + Operating System Interfaces =item * + Networking, Device Control (modems) and InterProcess Communication =item * + Data Types and Data Type Utilities =item * + Database Interfaces =item * + User Interfaces =item * + Interfaces to / Emulations of Other Programming Languages =item * + File Names, File Systems and File Locking (see also File Handles) =item * + String Processing, Language Text Processing, Parsing, and Searching =item * + Option, Argument, Parameter, and Configuration File Processing =item * + Internationalization and Locale =item * + Authentication, Security, and Encryption =item * + World Wide Web, HTML, HTTP, CGI, MIME =item * + Server and Daemon Utilities =item * + Archiving and Compression =item * + Images, Pixmap and Bitmap Manipulation, Drawing, and Graphing =item * + Mail and Usenet News =item * + Control Flow Utilities (callbacks and exceptions etc) =item * + File Handle and Input/Output Stream Utilities =item * + Miscellaneous Modules =back @@ -889,253 +1220,828 @@ Miscellaneous Modules Registered CPAN sites as of this writing include the following. You should try to choose one close to you: +=head2 Africa + =over 4 -=item Africa - - South Africa ftp://ftp.is.co.za/programming/perl/CPAN/ - ftp://ftp.saix.net/pub/CPAN/ - ftp://ftp.sun.ac.za/CPAN/ - ftp://ftpza.co.za/pub/mirrors/cpan/ - - -=item Asia - - China ftp://freesoft.cei.gov.cn/pub/languages/perl/CPAN/ - Hong Kong ftp://ftp.pacific.net.hk/pub/mirror/CPAN/ - Indonesia ftp://malone.piksi.itb.ac.id/pub/CPAN/ - Israel ftp://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/ - Japan ftp://ftp.dti.ad.jp/pub/lang/CPAN/ - ftp://ftp.jaist.ac.jp/pub/lang/perl/CPAN/ - ftp://ftp.lab.kdd.co.jp/lang/perl/CPAN/ - ftp://ftp.meisei-u.ac.jp/pub/CPAN/ - ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/ - ftp://mirror.nucba.ac.jp/mirror/Perl/ - Saudi-Arabia ftp://ftp.isu.net.sa/pub/CPAN/ - Singapore ftp://ftp.nus.edu.sg/pub/unix/perl/CPAN/ - South Korea ftp://ftp.bora.net/pub/CPAN/ - ftp://ftp.kornet.net/pub/CPAN/ - ftp://ftp.nuri.net/pub/CPAN/ - Taiwan ftp://coda.nctu.edu.tw/computer-languages/perl/CPAN/ - ftp://ftp.ee.ncku.edu.tw/pub3/perl/CPAN/ - ftp://ftp1.sinica.edu.tw/pub1/perl/CPAN/ - Thailand ftp://ftp.nectec.or.th/pub/mirrors/CPAN/ - - -=item Australasia - - Australia ftp://cpan.topend.com.au/pub/CPAN/ - ftp://ftp.labyrinth.net.au/pub/perl-CPAN/ - ftp://ftp.sage-au.org.au/pub/compilers/perl/CPAN/ - ftp://mirror.aarnet.edu.au/pub/perl/CPAN/ - New Zealand ftp://ftp.auckland.ac.nz/pub/perl/CPAN/ - ftp://sunsite.net.nz/pub/languages/perl/CPAN/ - - -=item Central America - - Costa Rica ftp://ftp.ucr.ac.cr/pub/Unix/CPAN/ - - -=item Europe - - Austria ftp://ftp.tuwien.ac.at/pub/languages/perl/CPAN/ - Belgium ftp://ftp.kulnet.kuleuven.ac.be/pub/mirror/CPAN/ - Bulgaria ftp://ftp.ntrl.net/pub/mirrors/CPAN/ - Croatia ftp://ftp.linux.hr/pub/CPAN/ - Czech Republic ftp://ftp.fi.muni.cz/pub/perl/ - ftp://sunsite.mff.cuni.cz/Languages/Perl/CPAN/ - Denmark ftp://sunsite.auc.dk/pub/languages/perl/CPAN/ - Estonia ftp://ftp.ut.ee/pub/languages/perl/CPAN/ - Finland ftp://ftp.funet.fi/pub/languages/perl/CPAN/ - France ftp://ftp.grolier.fr/pub/perl/CPAN/ - ftp://ftp.lip6.fr/pub/perl/CPAN/ - ftp://ftp.oleane.net/pub/mirrors/CPAN/ - ftp://ftp.pasteur.fr/pub/computing/CPAN/ - ftp://ftp.uvsq.fr/pub/perl/CPAN/ - German ftp://ftp.gigabell.net/pub/CPAN/ - Germany ftp://ftp.archive.de.uu.net/pub/CPAN/ - ftp://ftp.freenet.de/pub/ftp.cpan.org/pub/ - ftp://ftp.gmd.de/packages/CPAN/ - ftp://ftp.gwdg.de/pub/languages/perl/CPAN/ - -ftp://ftp.leo.org/pub/comp/general/programming/languages/script/perl/CPAN/ - ftp://ftp.mpi-sb.mpg.de/pub/perl/CPAN/ - ftp://ftp.rz.ruhr-uni-bochum.de/pub/CPAN/ - ftp://ftp.uni-erlangen.de/pub/source/CPAN/ - ftp://ftp.uni-hamburg.de/pub/soft/lang/perl/CPAN/ - Germany ftp://ftp.archive.de.uu.net/pub/CPAN/ - ftp://ftp.freenet.de/pub/ftp.cpan.org/pub/ - ftp://ftp.gmd.de/packages/CPAN/ - ftp://ftp.gwdg.de/pub/languages/perl/CPAN/ - -ftp://ftp.leo.org/pub/comp/general/programming/languages/script/perl/CPAN/ - ftp://ftp.mpi-sb.mpg.de/pub/perl/CPAN/ - ftp://ftp.rz.ruhr-uni-bochum.de/pub/CPAN/ - ftp://ftp.uni-erlangen.de/pub/source/CPAN/ - ftp://ftp.uni-hamburg.de/pub/soft/lang/perl/CPAN/ - Greece ftp://ftp.ntua.gr/pub/lang/perl/ - Hungary ftp://ftp.kfki.hu/pub/packages/perl/CPAN/ - Iceland ftp://ftp.gm.is/pub/CPAN/ - Ireland ftp://cpan.indigo.ie/pub/CPAN/ - ftp://sunsite.compapp.dcu.ie/pub/perl/ - Italy ftp://cis.uniRoma2.it/CPAN/ - ftp://ftp.flashnet.it/pub/CPAN/ - ftp://ftp.unina.it/pub/Other/CPAN/ - ftp://ftp.unipi.it/pub/mirror/perl/CPAN/ - Netherlands ftp://ftp.cs.uu.nl/mirror/CPAN/ - ftp://ftp.nluug.nl/pub/languages/perl/CPAN/ - Norway ftp://ftp.uit.no/pub/languages/perl/cpan/ - ftp://sunsite.uio.no/pub/languages/perl/CPAN/ - Poland ftp://ftp.man.torun.pl/pub/CPAN/ - ftp://ftp.pk.edu.pl/pub/lang/perl/CPAN/ - ftp://sunsite.icm.edu.pl/pub/CPAN/ - Portugal ftp://ftp.ci.uminho.pt/pub/mirrors/cpan/ - ftp://ftp.ist.utl.pt/pub/CPAN/ - ftp://ftp.ua.pt/pub/CPAN/ - Romania ftp://ftp.dnttm.ro/pub/CPAN/ - Russia ftp://ftp.chg.ru/pub/lang/perl/CPAN/ - ftp://ftp.sai.msu.su/pub/lang/perl/CPAN/ - Slovakia ftp://ftp.entry.sk/pub/languages/perl/CPAN/ - Slovenia ftp://ftp.arnes.si/software/perl/CPAN/ - Spain ftp://ftp.etse.urv.es/pub/perl/ - ftp://ftp.rediris.es/mirror/CPAN/ - Sweden ftp://ftp.sunet.se/pub/lang/perl/CPAN/ - Switzerland ftp://sunsite.cnlab-switch.ch/mirror/CPAN/ - Turkey ftp://sunsite.bilkent.edu.tr/pub/languages/CPAN/ - United Kingdom ftp://ftp.demon.co.uk/pub/mirrors/perl/CPAN/ - ftp://ftp.flirble.org/pub/languages/perl/CPAN/ - -ftp://ftp.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN/ - ftp://ftp.plig.org/pub/CPAN/ - ftp://sunsite.doc.ic.ac.uk/packages/CPAN/ - - -=item North America - - Alberta ftp://sunsite.ualberta.ca/pub/Mirror/CPAN/ - California ftp://cpan.nas.nasa.gov/pub/perl/CPAN/ - ftp://cpan.valueclick.com/CPAN/ - ftp://ftp.cdrom.com/pub/perl/CPAN/ - http://download.sourceforge.net/mirrors/CPAN/ - Colorado ftp://ftp.cs.colorado.edu/pub/perl/CPAN/ - Florida ftp://ftp.cise.ufl.edu/pub/perl/CPAN/ - Georgia ftp://ftp.twoguys.org/CPAN/ - Illinois ftp://uiarchive.uiuc.edu/pub/lang/perl/CPAN/ - Indiana ftp://csociety-ftp.ecn.purdue.edu/pub/CPAN/ - ftp://ftp.uwsg.indiana.edu/pub/perl/CPAN/ - Kentucky ftp://ftp.uky.edu/CPAN/ - Manitoba ftp://theoryx5.uwinnipeg.ca/pub/CPAN/ - Massachusetts -ftp://ftp.ccs.neu.edu/net/mirrors/ftp.funet.fi/pub/languages/perl/CPAN/ - ftp://ftp.iguide.com/pub/mirrors/packages/perl/CPAN/ - Mexico ftp://ftp.msg.com.mx/pub/CPAN/ - New York ftp://ftp.deao.net/pub/CPAN/ - ftp://ftp.rge.com/pub/languages/perl/ - North Carolina ftp://ftp.duke.edu/pub/perl/ - Nova Scotia ftp://cpan.chebucto.ns.ca/pub/CPAN/ - Oklahoma ftp://ftp.ou.edu/mirrors/CPAN/ - Ontario ftp://ftp.crc.ca/pub/packages/lang/perl/CPAN/ - Oregon ftp://ftp.orst.edu/pub/packages/CPAN/ - Pennsylvania ftp://ftp.epix.net/pub/languages/perl/ - Tennessee ftp://ftp.sunsite.utk.edu/pub/CPAN/ - Texas ftp://ftp.sedl.org/pub/mirrors/CPAN/ - ftp://jhcloos.com/pub/mirror/CPAN/ - Utah ftp://mirror.xmission.com/CPAN/ - Virginia ftp://ftp.perl.org/pub/perl/CPAN/ - ftp://ruff.cs.jmu.edu/pub/CPAN/ - Washington ftp://ftp-mirror.internap.com/pub/CPAN/ - ftp://ftp.llarian.net/pub/CPAN/ - ftp://ftp.spu.edu/pub/CPAN/ - - -=item South America - - Brazil ftp://cpan.if.usp.br/pub/mirror/CPAN/ - ftp://ftp.matrix.com.br/pub/perl/ - Chile ftp://sunsite.dcc.uchile.cl/pub/Lang/PERL/ +=item * -=back +South Africa -For an up-to-date listing of CPAN sites, -see http://www.perl.com/perl/CPAN/SITES or ftp://www.perl.com/CPAN/SITES . + ftp://ftp.is.co.za/programming/perl/CPAN/ + ftp://ftp.mweb.co.za/pub/mirrors/cpan/ + ftp://ftp.saix.net/pub/CPAN/ + ftp://ftp.sun.ac.za/CPAN/CPAN/ -=head1 Modules: Creation, Use, and Abuse +=back -(The following section is borrowed directly from Tim Bunce's modules -file, available at your nearest CPAN site.) +=head2 Asia -Perl 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). +=over 4 -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 F<.pm> file is required to -exist. See L, L, and L for details about -the AUTOLOAD mechanism. +=item * -=head2 Guidelines for Module Creation +China -=over 4 + ftp://freesoft.cei.gov.cn/pub/languages/perl/CPAN/ + http://www2.linuxforum.net/mirror/CPAN/ + http://cpan.shellhung.org/ + ftp://ftp.shellhung.org/pub/CPAN -=item Do similar modules already exist in some form? +=item * -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. +India -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. + http://cpan.in.freeos.com + ftp://cpan.in.freeos.com/pub/CPAN/ -=item Try to design the new module to be easy to extend and reuse. +=item * -Try to C (or C). -Remember that you can add C to individual blocks -of code that need less warnings. +Indonesia -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.,: + http://cpan.itb.web.id/ + ftp://mirrors.piksi.itb.ac.id/CPAN/ + http://CPAN.mweb.co.id/ + ftp://ftp.mweb.co.id/pub/languages/perl/CPAN/ - sub new { - my $class = shift; - return bless {}, $class; - } +=item * -or even this if you'd like it to be used as either a static -or a virtual method. +Israel - sub new { - my $self = shift; - my $class = ref($self) || $self; - return bless {}, $class; - } + http://www.iglu.org.il:/pub/CPAN/ + ftp://ftp.iglu.org.il/pub/CPAN/ + http://cpan.lerner.co.il/ + http://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/ + ftp://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/ -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. +=item * -Avoid class name tests like: C. -Generally you can delete the C part with no harm at all. -Let the objects look after themselves! Generally, avoid hard-wired -class names as far as possible. +Japan -Avoid C<< $r->Class::func() >> where using C<@ISA=qw(... Class ...)> and -C<< $r->func() >> would work (see L for more details). + ftp://ftp.u-aizu.ac.jp/pub/CPAN + ftp://ftp.kddlabs.co.jp/CPAN/ + http://mirror.nucba.ac.jp/mirror/Perl/ + ftp://mirror.nucba.ac.jp/mirror/Perl/ + ftp://ftp.meisei-u.ac.jp/pub/CPAN/ + ftp://ftp.ayamura.org/pub/CPAN/ + ftp://ftp.jaist.ac.jp/pub/lang/perl/CPAN/ + ftp://ftp.dti.ad.jp/pub/lang/CPAN/ + ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/ + +=item * + +Korea + + http://mirror.Mazic.org/pub/CPAN + ftp://mirror.Mazic.org/pub/CPAN + +=item * + +Philippines + + http://www.adzu.edu.ph/CPAN + +=item * + +Russian Federation + + http://cpan.tomsk.ru + ftp://cpan.tomsk.ru/pub/CPAN + +=item * + +Saudi Arabia + + ftp://ftp.isu.net.sa/pub/CPAN/ + +=item * + +Singapore + + http://cpan.hjc.edu.sg + +=item * + +South Korea + + http://CPAN.bora.net/ + ftp://ftp.bora.net/pub/CPAN/ + http://ftp.kornet.net/pub/CPAN/ + ftp://ftp.kornet.net/pub/CPAN/ + ftp://ftp.nuri.net/pub/CPAN/ + http://ftp.xgate.co.kr/cpan/ + ftp://ftp.xgate.co.kr/pub/mirror/CPAN + +=item * + +Taiwan + + ftp://ftp.ee.ncku.edu.tw/pub/perl/CPAN/ + ftp://ftp1.sinica.edu.tw/pub1/perl/CPAN/ + http://ftp.tku.edu.tw/pub/CPAN/ + ftp://ftp.tku.edu.tw/pub/CPAN/ + +=item * + +Thailand + + ftp://ftp.cs.riubon.ac.th/pub/mirrors/CPAN/ + +=back + +=head2 Central America + +=over 4 + +=item * + +Costa Rica + + ftp://ftp.linux.co.cr/mirrors/CPAN/ + http://ftp.ucr.ac.cr/Unix/CPAN/ + ftp://ftp.ucr.ac.cr/pub/Unix/CPAN/ + +=back + +=head2 Europe + +=over 4 + +=item * + +Austria + + ftp://ftp.tuwien.ac.at/pub/CPAN/ + +=item * + +Belgium + + http://ftp.easynet.be/pub/CPAN/ + ftp://ftp.easynet.be/pub/CPAN/ + http://cpan.skynet.be + ftp://ftp.skynet.be/pub/CPAN + ftp://ftp.kulnet.kuleuven.ac.be/pub/mirror/CPAN/ + +=item * + +Bulgaria + + http://cpan.lirex.net/ + ftp://ftp.lirex.net/pub/mirrors/CPAN + +=item * + +Croatia + + ftp://ftp.linux.hr/pub/CPAN/ + +=item * + +Czech Republic + + http://ftp.fi.muni.cz/pub/CPAN/ + ftp://ftp.fi.muni.cz/pub/CPAN/ + ftp://sunsite.mff.cuni.cz/MIRRORS/ftp.funet.fi/pub/languages/perl/CPAN/ + +=item * + +Denmark + + http://mirrors.sunsite.dk/cpan/ + ftp://sunsite.dk/mirrors/cpan/ + http://www.cpan.dk/CPAN/ + ftp://www.cpan.dk/ftp.cpan.org/CPAN/ + +=item * + +Estonia + + ftp://ftp.ut.ee/pub/languages/perl/CPAN/ + +=item * + +Finland + + ftp://ftp.funet.fi/pub/languages/perl/CPAN/ + http://cpan.kpnqwest.fi/ + +=item * + +France + + http://cpan.mirrors.easynet.fr/ + ftp://cpan.mirrors.easynet.fr/pub/ftp.cpan.org/ + ftp://ftp.club-internet.fr/pub/perl/CPAN/ + http://fr.cpan.org/ + ftp://ftp.lip6.fr/pub/perl/CPAN/ + ftp://ftp.oleane.net/pub/mirrors/CPAN/ + ftp://ftp.pasteur.fr/pub/computing/CPAN/ + http://cpan.cict.fr/ + ftp://cpan.cict.fr/pub/CPAN/ + ftp://ftp.uvsq.fr/pub/perl/CPAN/ + +=item * + +Germany + + ftp://ftp.rz.ruhr-uni-bochum.de/pub/CPAN/ + ftp://ftp.freenet.de/pub/ftp.cpan.org/pub/CPAN/ + ftp://ftp.uni-erlangen.de/pub/source/CPAN/ + ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/CPAN + ftp://ftp.gigabell.net/pub/CPAN/ + http://pandemonium.tiscali.de/pub/CPAN/ + ftp://pandemonium.tiscali.de/pub/CPAN/ + http://ftp.gwdg.de/pub/languages/perl/CPAN/ + ftp://ftp.gwdg.de/pub/languages/perl/CPAN/ + ftp://ftp.uni-hamburg.de/pub/soft/lang/perl/CPAN/ + ftp://ftp.leo.org/pub/CPAN/ + http://cpan.noris.de/ + ftp://cpan.noris.de/pub/CPAN/ + ftp://ftp.mpi-sb.mpg.de/pub/perl/CPAN/ + ftp://ftp.gmd.de/mirrors/CPAN/ + +=item * + +Greece + + ftp://ftp.acn.gr/pub/lang/perl/CPAN + ftp://ftp.forthnet.gr/pub/languages/perl/CPAN + ftp://ftp.ntua.gr/pub/lang/perl/ + +=item * + +Hungary + + http://cpan.artifact.hu/ + ftp://cpan.artifact.hu/CPAN/ + http://ftp.kfki.hu/packages/perl/CPAN/ + ftp://ftp.kfki.hu/pub/packages/perl/CPAN/ + +=item * + +Iceland + + http://ftp.rhnet.is/pub/CPAN/ + ftp://ftp.rhnet.is/pub/CPAN/ + +=item * + +Ireland + + http://cpan.indigo.ie/ + ftp://cpan.indigo.ie/pub/CPAN/ + http://sunsite.compapp.dcu.ie/pub/perl/ + ftp://sunsite.compapp.dcu.ie/pub/perl/ + +=item * + +Italy + + http://cpan.nettuno.it/ + http://gusp.dyndns.org/CPAN/ + ftp://gusp.dyndns.org/pub/CPAN + http://softcity.iol.it/cpan + ftp://softcity.iol.it/pub/cpan + ftp://ftp.unina.it/pub/Other/CPAN/CPAN/ + ftp://ftp.unipi.it/pub/mirror/perl/CPAN/ + ftp://cis.uniRoma2.it/CPAN/ + ftp://ftp.edisontel.it/pub/CPAN_Mirror/ + ftp://ftp.flashnet.it/pub/CPAN/ + +=item * + +Latvia + + http://kvin.lv/pub/CPAN/ + +=item * + +Lithuania + + ftp://ftp.unix.lt/pub/CPAN/ + +=item * + +Netherlands + + ftp://download.xs4all.nl/pub/mirror/CPAN/ + ftp://ftp.nl.uu.net/pub/CPAN/ + ftp://ftp.nluug.nl/pub/languages/perl/CPAN/ + ftp://ftp.cpan.nl/pub/CPAN/ + http://www.cs.uu.nl/mirror/CPAN/ + ftp://ftp.cs.uu.nl/mirror/CPAN/ + +=item * + +Norway + + ftp://ftp.uninett.no/pub/languages/perl/CPAN + ftp://ftp.uit.no/pub/languages/perl/cpan/ + +=item * + +Poland + + ftp://ftp.pk.edu.pl/pub/lang/perl/CPAN/ + ftp://ftp.mega.net.pl/pub/mirrors/ftp.perl.com/ + ftp://ftp.man.torun.pl/pub/doc/CPAN/ + ftp://sunsite.icm.edu.pl/pub/CPAN/ + +=item * + +Portugal + + ftp://ftp.ua.pt/pub/CPAN/ + ftp://perl.di.uminho.pt/pub/CPAN/ + http://cpan.dei.uc.pt/ + ftp://ftp.dei.uc.pt/pub/CPAN + ftp://ftp.ist.utl.pt/pub/CPAN/ + http://cpan.ip.pt/ + ftp://cpan.ip.pt/pub/cpan/ + ftp://ftp.netc.pt/pub/CPAN/ + ftp://ftp.up.pt/pub/CPAN + +=item * + +Romania + + ftp://ftp.kappa.ro/pub/mirrors/ftp.perl.org/pub/CPAN/ + ftp://ftp.dntis.ro/pub/cpan/ + ftp://ftp.dnttm.ro/pub/CPAN/ + ftp://ftp.lasting.ro/pub/CPAN + ftp://ftp.timisoara.roedu.net/mirrors/CPAN/ + +=item * + +Russia + + ftp://ftp.chg.ru/pub/lang/perl/CPAN/ + http://cpan.rinet.ru/ + ftp://cpan.rinet.ru/pub/mirror/CPAN/ + ftp://ftp.aha.ru/pub/CPAN/ + http://cpan.sai.msu.ru/ + ftp://ftp.sai.msu.su/pub/lang/perl/CPAN/ + +=item * + +Slovakia + + http://ftp.cvt.stuba.sk/pub/CPAN/ + ftp://ftp.cvt.stuba.sk/pub/CPAN/ + +=item * + +Slovenia + + ftp://ftp.arnes.si/software/perl/CPAN/ + +=item * + +Spain + + http://cpan.imasd.elmundo.es/ + ftp://ftp.rediris.es/mirror/CPAN/ + ftp://ftp.etse.urv.es/pub/perl/ + +=item * + +Sweden + + http://ftp.du.se/CPAN/ + ftp://ftp.du.se/pub/CPAN/ + ftp://mirror.dataphone.se/pub/CPAN + ftp://ftp.sunet.se/pub/lang/perl/CPAN/ + +=item * + +Switzerland + + ftp://ftp.danyk.ch/CPAN/ + ftp://sunsite.cnlab-switch.ch/mirror/CPAN/ + +=item * + +Turkey + + ftp://sunsite.bilkent.edu.tr/pub/languages/CPAN/ + +=item * + +Ukraine + + http://cpan.org.ua/ + ftp://cpan.org.ua/ + ftp://ftp.perl.org.ua/pub/CPAN/ + +=item * + +United Kingdom + + http://www.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN + ftp://ftp.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN/ + http://cpan.teleglobe.net/ + ftp://cpan.teleglobe.net/pub/CPAN + http://cpan.crazygreek.co.uk + ftp://ftp.demon.co.uk/pub/CPAN/ + ftp://ftp.flirble.org/pub/languages/perl/CPAN/ + ftp://ftp.plig.org/pub/CPAN/ + http://mirror.uklinux.net/CPAN/ + ftp://mirror.uklinux.net/pub/CPAN/ + http://cpan.mirrors.clockerz.net/ + ftp://ftp.clockerz.net/pub/CPAN/ + ftp://usit.shef.ac.uk/pub/packages/CPAN/ + +=back + +=head2 North America + +=over 4 + +=item * + +Canada + +=over 8 + +=item * + +Alberta + + http://sunsite.ualberta.ca/pub/Mirror/CPAN/ + ftp://sunsite.ualberta.ca/pub/Mirror/CPAN/ + +=item * + +Manitoba + + http://theoryx5.uwinnipeg.ca/pub/CPAN/ + ftp://theoryx5.uwinnipeg.ca/pub/CPAN/ + +=item * + +Nova Scotia + + ftp://cpan.chebucto.ns.ca/pub/CPAN/ + +=item * + +Ontario + + ftp://ftp.crc.ca/pub/CPAN/ + +=item * + +Quebec + + http://cpan.mirror.smartworker.org/ + +=back + +=item * + +Mexico + + http://cpan.azc.uam.mx + ftp://cpan.azc.uam.mx/mirrors/CPAN + http://cpan.unam.mx/ + ftp://cpan.unam.mx/pub/CPAN + http://www.msg.com.mx/CPAN/ + ftp://ftp.msg.com.mx/pub/CPAN/ + +=item * + +United States + +=over 8 + +=item * + +Alabama + + http://mirror.hiwaay.net/CPAN/ + ftp://mirror.hiwaay.net/CPAN/ + +=item * + +California + + http://www.cpan.org/ + ftp://cpan.valueclick.com/pub/CPAN/ + http://mirrors.gossamer-threads.com/CPAN + ftp://cpan.nas.nasa.gov/pub/perl/CPAN/ + http://mirrors.kernel.org/cpan/ + ftp://mirrors.kernel.org/pub/CPAN + http://cpan.digisle.net/ + ftp://cpan.digisle.net/pub/CPAN + http://www.perl.com/CPAN/ + http://download.sourceforge.net/mirrors/CPAN/ + +=item * + +Colorado + + ftp://ftp.cs.colorado.edu/pub/perl/CPAN/ + +=item * + +Delaware + + http://ftp.lug.udel.edu/pub/CPAN + ftp://ftp.lug.udel.edu/pub/CPAN + +=item * + +District of Columbia + + ftp://ftp.dc.aleron.net/pub/CPAN/ + +=item * + +Florida + + ftp://ftp.cise.ufl.edu/pub/mirrors/CPAN/ + http://mirror.csit.fsu.edu/pub/CPAN/ + ftp://mirror.csit.fsu.edu/pub/CPAN/ + +=item * + +Illinois + + http://uiarchive.uiuc.edu/mirrors/ftp/cpan.cse.msu.edu/ + ftp://uiarchive.uiuc.edu/mirrors/ftp/cpan.cse.msu.edu/ + +=item * + +Indiana + + ftp://ftp.uwsg.iu.edu/pub/perl/CPAN/ + http://cpan.netnitco.net/ + ftp://cpan.netnitco.net/pub/mirrors/CPAN/ + http://archive.progeny.com/CPAN/ + ftp://archive.progeny.com/CPAN/ + ftp://cpan.in-span.net/ + http://csociety-ftp.ecn.purdue.edu/pub/CPAN + ftp://csociety-ftp.ecn.purdue.edu/pub/CPAN + +=item * + +Kentucky + + http://cpan.uky.edu/ + ftp://cpan.uky.edu/pub/CPAN/ + +=item * + +Massachusetts + + ftp://ftp.ccs.neu.edu/net/mirrors/ftp.funet.fi/pub/languages/perl/CPAN/ + http://cpan.mirrors.netnumina.com/ + ftp://mirrors.netnumina.com/cpan/ + +=item * + +Michigan + + ftp://cpan.cse.msu.edu/ + +=item * + +New Jersey + + ftp://ftp.cpanel.net/pub/CPAN/ + http://cpan.teleglobe.net/ + ftp://cpan.teleglobe.net/pub/CPAN + +=item * + +New York + + ftp://ftp.exobit.org/pub/perl/CPAN + http://cpan.belfry.net/ + http://cpan.thepirtgroup.com/ + ftp://cpan.thepirtgroup.com/ + ftp://ftp.stealth.net/pub/CPAN/ + http://www.rge.com/pub/languages/perl/ + ftp://ftp.rge.com/pub/languages/perl/ + ftp://mirrors.cloud9.net/pub/mirrors/CPAN/ + +=item * + +North Carolina + + ftp://ftp.duke.edu/pub/perl/ + +=item * + +Ohio + + ftp://ftp.loaded.net/pub/CPAN/ + +=item * + +Oklahoma + + ftp://ftp.ou.edu/mirrors/CPAN/ + +=item * + +Oregon + + ftp://ftp.orst.edu/pub/CPAN + +=item * + +Pennsylvania + + http://ftp.epix.net/CPAN/ + ftp://ftp.epix.net/pub/languages/perl/ + http://mirrors.phenominet.com/pub/CPAN/ + ftp://mirrors.phenominet.com/pub/CPAN/ + http://cpan.pair.com/ + ftp://cpan.pair.com/pub/CPAN/ + ftp://carroll.cac.psu.edu/pub/CPAN/ + +=item * + +Tennessee + + ftp://ftp.sunsite.utk.edu/pub/CPAN/ + +=item * + +Texas + + http://ftp.sedl.org/pub/mirrors/CPAN/ + ftp://mirror.telentente.com/pub/CPAN + +=item * + +Utah + + ftp://mirror.xmission.com/CPAN/ + +=item * + +Virginia + + http://mirrors.rcn.net/pub/lang/CPAN/ + ftp://mirrors.rcn.net/pub/lang/CPAN/ + http://perl.secsup.org/ + ftp://perl.secsup.org/pub/perl/ + http://mirrors.phihost.com/CPAN/ + ftp://mirrors.phihost.com/CPAN/ + ftp://ruff.cs.jmu.edu/pub/CPAN/ + http://perl.Liquidation.com/CPAN/ + +=item * + +Washington + + http://cpan.llarian.net/ + ftp://cpan.llarian.net/pub/CPAN/ + http://cpan.mirrorcentral.com/ + ftp://ftp.mirrorcentral.com/pub/CPAN/ + ftp://ftp-mirror.internap.com/pub/CPAN/ + +=item * + +Wisconsin + + http://mirror.sit.wisc.edu/pub/CPAN/ + ftp://mirror.sit.wisc.edu/pub/CPAN/ + +=back + +=head2 Oceania + +=over 4 + +=item * + +Australia + + http://ftp.planetmirror.com/pub/CPAN/ + ftp://ftp.planetmirror.com/pub/CPAN/ + ftp://mirror.aarnet.edu.au/pub/perl/CPAN/ + ftp://cpan.topend.com.au/pub/CPAN/ + +=item * + +New Zealand + + ftp://ftp.auckland.ac.nz/pub/perl/CPAN/ + +=back + +=head2 South America + +=over 4 + +=item * + +Argentina + + ftp://mirrors.bannerlandia.com.ar/mirrors/CPAN/ + +=item * + +Brazil + + ftp://cpan.pop-mg.com.br/pub/CPAN/ + ftp://ftp.matrix.com.br/pub/perl/CPAN/ + +=item * + +Chile + + ftp://ftp.psinet.cl/pub/programming/perl/CPAN/ + +=back + +For an up-to-date listing of CPAN sites, +see http://www.cpan.org/SITES or ftp://www.cpan.org/SITES . + +=head1 Modules: Creation, Use, and Abuse + +(The following section is borrowed directly from Tim Bunce's modules +file, available at your nearest CPAN site.) + +Perl 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 F<.pm> file is required to +exist. See L, L, and L for details about +the AUTOLOAD mechanism. + +=head2 Guidelines for Module Creation + +=over 4 + +=item * + +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. + +=item * + +Try to design the new module to be easy to extend and reuse. + +Try to C (or C). +Remember that you can add C to individual blocks +of code that need less warnings. + +Use blessed references. Use the two argument form of bless to bless +into the class name given as the first parameter of the constructor, +e.g.,: + + sub new { + my $class = shift; + return bless {}, $class; + } + +or even this if you'd like it to be used as either a static +or a virtual method. + + sub new { + my $self = shift; + my $class = ref($self) || $self; + return bless {}, $class; + } + +Pass arrays as references so more parameters can be added later +(it's also faster). Convert functions into methods where +appropriate. Split large methods into smaller more flexible ones. +Inherit methods from other modules if appropriate. + +Avoid class name tests like: C. +Generally you can delete the C part with no harm at all. +Let the objects look after themselves! Generally, avoid hard-wired +class names as far as possible. + +Avoid C<< $r->Class::func() >> where using C<@ISA=qw(... Class ...)> and +C<< $r->func() >> would work (see L for more details). Use autosplit so little used or newly added functions won't be a burden to programs that don't use them. Add test functions to @@ -1165,7 +2071,9 @@ Follow the guidelines in the perlstyle(1) manual. Always use B<-w>. -=item Some simple style guidelines +=item * + +Some simple style guidelines The perlstyle manual supplied with Perl has many helpful points. @@ -1197,7 +2105,9 @@ e.g., C<< $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. -=item Select what to export. +=item * + +Select what to export. Do NOT export method names! @@ -1221,7 +2131,9 @@ 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. -=item Select a name for the module. +=item * + +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 @@ -1255,7 +2167,9 @@ To be portable each component of a module name should be limited to 11 characters. If it might be used on MS-DOS then try to ensure each is unique in the first 8 characters. Nested modules make this easier. -=item Have you got it right? +=item * + +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 @@ -1274,7 +2188,9 @@ 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! -=item README and other Additional Files. +=item * + +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 @@ -1284,24 +2200,31 @@ documentation please at least provide a README file containing: =over 10 =item * + A description of the module/package/extension etc. =item * + A copyright notice - see below. =item * + Prerequisites - what else you may need to have. =item * + How to build it - possible changes to Makefile.PL etc. =item * + How to install it. =item * + Recent changes in this release, especially incompatibilities =item * + Changes / enhancements you plan to make in the future. =back @@ -1312,7 +2235,9 @@ Copying, ToDo etc. =over 4 -=item Adding a Copyright Notice. +=item * + +Adding a Copyright Notice. How you choose to license your work is a personal decision. The general mechanism is to assert your Copyright and then make @@ -1333,7 +2258,9 @@ 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. -=item Give the module a version/issue/release number. +=item * + +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 @@ -1347,7 +2274,9 @@ 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. -=item How to release and distribute a module. +=item * + +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 @@ -1370,8 +2299,8 @@ FTP Archives for Perl Modules: Follow the instructions and links on: - http://www.perl.com/CPAN/modules/00modlist.long.html - http://www.perl.com/CPAN/modules/04pause.html + http://www.cpan.org/modules/00modlist.long.html + http://www.cpan.org/modules/04pause.html or upload to one of these sites: @@ -1386,7 +2315,9 @@ CPAN! Please remember to send me an updated entry for the Module list! -=item Take care when changing a released module. +=item * + +Take care when changing a released module. Always strive to remain compatible with previous released versions. Otherwise try to add a mechanism to revert to the @@ -1400,26 +2331,34 @@ old behavior if people rely on it. Document incompatible changes. =over 4 -=item There is no requirement to convert anything. +=item * + +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. -=item Consider the implications. +=item * + +Consider the implications. All Perl applications that 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? -=item Make the most of the opportunity. +=item * + +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. -=item The pl2pm utility will get you started. +=item * + +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: @@ -1427,15 +2366,19 @@ corresponding *.pm files. The pl2pm utilities does the following: =over 10 =item * + Adds the standard Module prologue lines =item * + Converts package specifiers from ' to :: =item * + Converts die(...) to croak(...) =item * + Several other minor changes =back @@ -1450,18 +2393,28 @@ Don't delete the original .pl file till the new .pm one works! =over 4 -=item Complete applications rarely belong in the Perl Module Library. +=item * + +Complete applications rarely belong in the Perl Module Library. + +=item * -=item Many applications contain some Perl code that could be reused. +Many applications contain some Perl code that could be reused. Help save the world! Share your code in a form that makes it easy to reuse. -=item Break-out the reusable code into one or more separate module files. +=item * + +Break-out the reusable code into one or more separate module files. + +=item * + +Take the opportunity to reconsider and redesign the interfaces. -=item Take the opportunity to reconsider and redesign the interfaces. +=item * -=item In some cases the 'application' can then be reduced to a small +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: