X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlmodlib.pod;h=3a687070a39f0fd3b8106e34454443842ed938ab;hb=6e5a998b1cc5eddc2fb262c2e2e7f989bfb76f23;hp=d0bd1c9b762a734d643a7bd027fac20128a46192;hpb=0e06870bf080a38cda51c06c6612359afc2334e1;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlmodlib.pod b/pod/perlmodlib.pod index d0bd1c9..3a68707 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 @@ -50,10 +53,6 @@ The following pragmas are defined (and have their own documentation). Get/set subroutine or variable attributes -=item attrs - -Set/get attributes of a subroutine (deprecated) - =item autouse Postpone load of modules until a function is used @@ -62,6 +61,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 +83,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 +93,10 @@ Declare constants Perl compiler pragma to force verbose warning diagnostics +=item encoding + +Pragma to control the conversion of legacy data into Unicode + =item fields Compile-time class fields @@ -90,9 +105,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 @@ -106,18 +125,10 @@ Use and avoid POSIX locales for built-in operations Set default disciplines for input and output -=item ops - -Restrict unsafe operations when compiling - =item overload Package for overloading perl operations -=item perlio - -Configure C level IO - =item re Alter regular expression behaviour @@ -126,6 +137,10 @@ Alter regular expression behaviour Enable simple signal handling +=item sort + +Control sort() behaviour + =item strict Restrict unsafe constructs @@ -136,12 +151,16 @@ Predeclare sub names =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 @@ -164,6 +183,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 @@ -172,78 +195,10 @@ Load subroutines only on demand Split a package for autoloading -=item B - -The Perl Compiler - -=item B::Asmdata - -Autogenerated data about Perl ops, used to generate bytecode - -=item B::Assembler - -Assemble Perl bytecode - -=item B::Bblock - -Walk basic blocks - -=item B::Bytecode - -Perl compiler's bytecode backend - -=item B::C - -Perl compiler's C backend - -=item B::CC - -Perl compiler's optimized C translation backend - -=item B::Debug - -Walk Perl syntax tree, printing debug info about ops - -=item B::Deparse - -Perl compiler backend to produce perl code - -=item B::Disassembler - -Disassemble Perl bytecode - -=item B::Lint - -Perl lint - -=item B::Showlex - -Show lexical variables used in functions or files - -=item B::Stackobj - -Helper module for CC backend - -=item B::Stash - -Show what stashes are loaded - -=item B::Terse - -Walk Perl syntax tree, printing terse info about ops - -=item B::Xref - -Generates cross reference reports for Perl programs - =item Benchmark Benchmark running times of Perl code -=item ByteLoader - -Load byte compiled perl code - =item CGI Simple Common Gateway Interface Class @@ -276,6 +231,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 @@ -292,6 +251,14 @@ Wrapper around CPAN.pm without using any XS module Warn of errors (from perspective of caller) +=item Carp::Heavy + +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 @@ -304,14 +271,14 @@ Get pathname of current working directory Programmatic interface to the Perl debugging API (draft, subject to -=item DB_File - -Perl5 access to Berkeley DB version 1.x - =item Devel::SelfStubber Generate stubs for a SelfLoading module +=item Digest + +Modules that calculate message digests + =item DirHandle Supply object methods for directory handles @@ -320,10 +287,6 @@ Supply object methods for directory handles Provides screen dump of Perl data. -=item Encode - -Character encodings - =item English Use nice English (or awk) names for ugly punctuation variables @@ -344,6 +307,10 @@ Exporter guts Utilities to replace common UNIX commands in Makefiles etc. +=item ExtUtils::Constant + +Generate XS code to import C header constants + =item ExtUtils::Embed Utilities for embedding Perl in C/C++ applications @@ -360,10 +327,18 @@ Inventory management of installed modules Determine libraries to use and how to use them +=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_NW5 + +Methods to override UN*X behaviour in ExtUtils::MakeMaker + =item ExtUtils::MM_OS2 Methods to override UN*X behaviour in ExtUtils::MakeMaker @@ -408,10 +383,6 @@ Add blib/* directories to @INC Replace functions with equivalents which succeed or die -=item Fcntl - -Load the C Fcntl.h defines - =item File::Basename Split a pathname into pieces @@ -434,7 +405,7 @@ DOS like globbing and then some =item File::Find -Traverse a file tree +Traverse a directory tree. =item File::Path @@ -444,6 +415,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 @@ -454,7 +429,7 @@ Portably perform operations on file names =item File::Spec::Mac -File::Spec for MacOS +File::Spec for Mac OS (Classic) =item File::Spec::OS2 @@ -462,7 +437,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 @@ -504,13 +479,21 @@ 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 IO +=item I18N::LangTags + +Functions for dealing with RFC3066-style language tags -Load various IO modules +=item I18N::LangTags::List + +Tags and names for human languages =item IPC::Open2 @@ -520,14 +503,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 @@ -536,18 +555,90 @@ Complex numbers and associated mathematical functions Trigonometric functions -=item NDBM_File +=item Memoize + +Make your 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 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 -Tied access to ndbm files +=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 @@ -560,17 +651,9 @@ By-name interface to Perl's built-in getproto*() functions By-name interface to Perl's built-in getserv*() functions -=item O - -Generic interface to Perl Compiler backends +=item PerlIO -=item ODBM_File - -Tied access to odbm files - -=item Opcode - -Disable named opcodes when compiling perl code +On demand loader for PerlIO layers and root of PerlIO::* name space =item Pod::Checker @@ -580,6 +663,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 @@ -596,6 +683,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 @@ -620,6 +711,10 @@ Convert POD data to formatted ASCII text Convert POD data to formatted color ASCII text +=item Pod::Text::Overstrike + +Convert POD data to formatted overstrike text + =item Pod::Text::Termcap Convert POD data to ASCII text with format escapes @@ -628,13 +723,9 @@ Convert POD data to ASCII text with format escapes Print a usage message from embedded pod documentation -=item SDBM_File - -Tied access to sdbm files +=item Pod::t::basic -=item Safe - -Compile and execute code in restricted compartments +Test of various basic POD features in translators. =item Search::Dict @@ -652,13 +743,9 @@ Load functions only on demand Run shell commands transparently within perl -=item Socket - -Load the C socket.h defines and structure manipulators +=item Switch -=item Storable - -Persistency for perl data structures +A switch statement for Perl =item Symbol @@ -684,14 +771,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 @@ -700,14 +819,26 @@ 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 + =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 @@ -716,6 +847,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 @@ -748,6 +883,14 @@ Internal object used by Time::gmtime and Time::localtime Base class for ALL classes (blessed references) +=item Unicode::Collate + +Use UCA (Unicode Collation Algorithm) + +=item Unicode::UCD + +Unicode character database + =item User::grent By-name interface to Perl's built-in getgr*() functions @@ -756,6 +899,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 @@ -776,7 +923,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 @@ -792,8 +939,7 @@ 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 @@ -890,259 +1036,834 @@ Miscellaneous Modules Registered CPAN sites as of this writing include the following. You should try to choose one close to you: -=over - -=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/ - -=back +=head2 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 . +=over 4 -=head1 Modules: Creation, Use, and Abuse +=item * -(The following section is borrowed directly from Tim Bunce's modules -file, available at your nearest CPAN site.) +South Africa -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). + 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/ -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. +=back -=head2 Guidelines for Module Creation +=head2 Asia =over 4 -=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. +China -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. + 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 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. +India -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.in.freeos.com + ftp://cpan.in.freeos.com/pub/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. +Indonesia - sub new { - my $self = shift; - my $class = ref($self) || $self; - return bless {}, $class; - } + 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/ -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. +Israel -Avoid C<< $r->Class::func() >> where using C<@ISA=qw(... Class ...)> and -C<< $r->func() >> would work (see L for more details). + 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/ -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 -the module after __END__ either using AutoSplit or by saying: +=item * - eval join('',) || die $@ unless caller(); +Japan + + 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 +the module after __END__ either using AutoSplit or by saying: + + eval join('',) || die $@ unless caller(); Does your module pass the 'empty subclass' test? If you say C<@SUBCLASS::ISA = qw(YOURCLASS);> your applications should be able @@ -1166,7 +1887,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. @@ -1198,7 +1921,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! @@ -1222,7 +1947,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 @@ -1256,7 +1983,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 @@ -1275,7 +2004,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 @@ -1285,24 +2016,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 @@ -1313,7 +2051,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 @@ -1334,7 +2074,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 @@ -1348,7 +2090,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 @@ -1371,8 +2115,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: @@ -1387,7 +2131,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 @@ -1401,26 +2147,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: @@ -1428,15 +2182,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 @@ -1451,26 +2209,26 @@ Don't delete the original .pl file till the new .pm one works! =over 4 -=item * +=item * Complete applications rarely belong in the Perl Module Library. -=item * +=item * 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 * +=item * Break-out the reusable code into one or more separate module files. -=item * +=item * Take the opportunity to reconsider and redesign the interfaces. -=item * +=item * In some cases the 'application' can then be reduced to a small