X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlmodlib.PL;h=d87785f5067e7a22ef0780fea6808710a1e01aa0;hb=62703e7218aceb3f5d30f70a2307dd02e5eb8c63;hp=e1ba87b52a28d5ec49a976081b8f2507add37ae4;hpb=309a139e25ad5904ea3df36d8c769e05300b3585;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlmodlib.PL b/pod/perlmodlib.PL index e1ba87b..d87785f 100644 --- a/pod/perlmodlib.PL +++ b/pod/perlmodlib.PL @@ -1,41 +1,68 @@ #!../miniperl +$ENV{LC_ALL} = 'C'; + open (OUT, ">perlmodlib.tmp") or die $!; -my (@pragma, @mod); +my (@pragma, @mod, @MANIFEST); + open (MANIFEST, "../MANIFEST") or die $!; +@MANIFEST = grep !m, ; +push @MANIFEST, 'lib/Config.pod', 'lib/Errno.pm', 'lib/lib.pm', + 'lib/DynaLoader.pm', 'lib/XSLoader.pm'; -while () { +for (@MANIFEST) { my $filename; next unless s|^lib/|| or m|^ext/|; - ($filename) = /(\S+)/; + my ($origfilename) = ($filename) = m|^(\S+)|; $filename =~ s|^[^/]+/|| if $filename =~ s|^ext/||; - next unless $filename =~ /\.pm$/; - next unless open (MOD, "../lib/$filename"); + next unless $filename =~ m!\.p(m|od)$!; + unless (open (MOD, "../lib/$filename")) { + unless (open (MOD, "../$origfilename")) { + warn "Couldn't open ../$origfilename: $!"; + next; + } + $filename = $origfilename; + } + + my ($name, $thing); my $foundit=0; - {local $/=""; - while () { - next unless /^=head1 NAME/; - $foundit++; - last; + { + local $/=""; + while () { + next unless /^=head1 NAME/; + $foundit++; + last; + } } + unless ($foundit) { + warn "$filename missing =head1 NAME (okay if there is respective .pod)\n"; + next; } - next unless $foundit; my $title = ; chomp($title); close MOD; my $perlname = $filename; - $perlname =~ s|\.pm$||; - $perlname =~ s|/|::|g; + $perlname =~ s!^.*\b(ext|lib)/!!; + $perlname =~ s!\.p(m|od)$!!; + $perlname =~ s!\b(\w+)/\1\b!$1!; + $perlname =~ s!/!::!g; + + ($name, $thing) = split / --? /, $title, 2; + + unless ($name and $thing) { + warn "$filename missing name\n" unless $name; + warn "$filename missing thing\n" unless $thing; + next; + } - ($name, $thing) = split / - /, $title,2; - next unless $name and $thing; - $thing=~s/^perl pragma to //i; - $thing=ucfirst($thing); + + $thing =~ s/^perl pragma to //i; + $thing = ucfirst($thing); $title = "=item $perlname\n\n$thing\n\n"; - if ($filename=~/[A-Z]/) { + if ($filename =~ /[A-Z]/) { push @mod, $title; } else { push @pragma, $title; @@ -43,17 +70,18 @@ while () { } print OUT <<'EOF'; +=for maintainers +Generated by perlmodlib.PL -- DO NOT EDIT! + =head1 NAME perlmodlib - constructing new Perl modules and finding existing ones -=head1 DESCRIPTION - =head1 THE PERL MODULE LIBRARY -Many modules are included the Perl distribution. These are described +Many modules are included in the Perl distribution. These are described below, and all end in F<.pm>. You may discover compiled library -file (usually ending in F<.so>) or small pieces of modules to be +files (usually ending in F<.so>) or small pieces of modules to be autoloaded (ending in F<.al>); these were automatically generated by the installation process. You may also discover files in the library directory that end in either F<.pl> or F<.ph>. These are @@ -104,6 +132,10 @@ Standard, bundled modules are all expected to behave in a well-defined manner with respect to namespace pollution because they use the Exporter module. See their own documentation for details. +It's possible that not all modules listed below are installed on your +system. For example, the GDBM_File module will not be installed if you +don't have the gdbm library. + =over 12 EOF @@ -115,10 +147,14 @@ print OUT <<'EOF'; To find out I modules installed on your system, including those without documentation or outside the standard release, -just do this: +just use the following command (under the default win32 shell, +double quotes should be used instead of single quotes). - % find `perl -e 'print "@INC"'` -name '*.pm' -print + % perl -MFile::Find=find -MFile::Spec::Functions -Tlwe \ + 'find { wanted => sub { print canonpath $_ if /\.pm\z/ }, + no_chdir => 1 }, @INC' +(The -T is here to prevent '.' from being listed in @INC.) They should all have their own documentation installed and accessible via your system man(1) command. If you do not have a B program, you can use the Perl B program instead, which @@ -127,11 +163,16 @@ have a B program but it doesn't find your modules, you'll have to fix your manpath. See L for details. If you have no system B command, you might try the B program. +Note also that the command C gives you a (possibly +incomplete) list of the modules that have been further installed on +your system. (The perllocal.pod file is updated by the standard MakeMaker +install process.) + =head2 Extension Modules 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 @@ -139,7 +180,7 @@ completely) due to their sizes, volatility, or simply lack of time for adequate testing and configuration across the multitude of platforms on which Perl was beta-tested. You are encouraged to look for them on CPAN (described below), or using web search engines -like Alta Vista or Deja News. +like Alta Vista or Google. =head1 CPAN @@ -147,8 +188,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 @@ -157,243 +197,788 @@ modules are: =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 -Registered CPAN sites as of this writing include the following. -You should try to choose one close to you: +The list of the registered CPAN sites as of this writing follows. +Please note that the sorting order is alphabetical on fields: -=over +Continent + | + |-->Country + | + |-->[state/province] + | + |-->ftp + | + |-->[http] + +and thus the North American servers happen to be listed between the +European and the South American sites. + +You should try to choose one close to you. -=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/ +=head2 Africa + +=over 4 + +=item South Africa + + http://ftp.rucus.ru.ac.za/pub/perl/CPAN/ + ftp://ftp.rucus.ru.ac.za/pub/perl/CPAN/ + ftp://ftp.is.co.za/programming/perl/CPAN/ + ftp://ftp.saix.net/pub/CPAN/ + ftp://ftp.sun.ac.za/CPAN/CPAN/ =back +=head2 Asia + +=over 4 + +=item China + + http://cpan.linuxforum.net/ + http://cpan.shellhung.org/ + ftp://ftp.shellhung.org/pub/CPAN + ftp://mirrors.hknet.com/CPAN + +=item Indonesia + + http://mirrors.tf.itb.ac.id/cpan/ + http://cpan.cbn.net.id/ + ftp://ftp.cbn.net.id/mirror/CPAN + +=item Israel + + 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/ + +=item Japan + + ftp://ftp.u-aizu.ac.jp/pub/CPAN + ftp://ftp.kddlabs.co.jp/CPAN/ + ftp://ftp.ayamura.org/pub/CPAN/ + ftp://ftp.jaist.ac.jp/pub/lang/perl/CPAN/ + http://ftp.cpan.jp/ + ftp://ftp.cpan.jp/CPAN/ + ftp://ftp.dti.ad.jp/pub/lang/CPAN/ + ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/ + +=item Malaysia + + http://cpan.MyBSD.org.my + http://mirror.leafbug.org/pub/CPAN + http://ossig.mncc.com.my/mirror/pub/CPAN + +=item Russian Federation + + http://cpan.tomsk.ru + ftp://cpan.tomsk.ru/ + +=item Saudi Arabia + + ftp://ftp.isu.net.sa/pub/CPAN/ + +=item Singapore + + http://CPAN.en.com.sg/ + ftp://cpan.en.com.sg/ + http://mirror.averse.net/pub/CPAN + ftp://mirror.averse.net/pub/CPAN + http://cpan.oss.eznetsols.org + ftp://ftp.oss.eznetsols.org/cpan + +=item South Korea + + http://CPAN.bora.net/ + ftp://ftp.bora.net/pub/CPAN/ + http://mirror.kr.FreeBSD.org/CPAN + ftp://ftp.kr.FreeBSD.org/pub/CPAN + +=item Taiwan + + ftp://ftp.nctu.edu.tw/UNIX/perl/CPAN + http://cpan.cdpa.nsysu.edu.tw/ + ftp://cpan.cdpa.nsysu.edu.tw/pub/CPAN + http://ftp.isu.edu.tw/pub/CPAN + ftp://ftp.isu.edu.tw/pub/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.loxinfo.co.th/pub/cpan/ + ftp://ftp.cs.riubon.ac.th/pub/mirrors/CPAN/ + +=back + +=head2 Central America + +=over 4 + +=item Costa Rica + + http://ftp.ucr.ac.cr/Unix/CPAN/ + ftp://ftp.ucr.ac.cr/pub/Unix/CPAN/ + +=back + +=head2 Europe + +=over 4 + +=item Austria + + http://cpan.inode.at/ + ftp://cpan.inode.at + 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.cpan.skynet.be/pub/CPAN + ftp://ftp.kulnet.kuleuven.ac.be/pub/mirror/CPAN/ + +=item Bosnia and Herzegovina + + http://cpan.blic.net/ + +=item Bulgaria + + http://cpan.online.bg + ftp://cpan.online.bg/cpan + http://cpan.zadnik.org + ftp://ftp.zadnik.org/mirrors/CPAN/ + http://cpan.lirex.net/ + ftp://ftp.lirex.net/pub/mirrors/CPAN + +=item Croatia + + http://ftp.linux.hr/pub/CPAN/ + ftp://ftp.linux.hr/pub/CPAN/ + +=item Czech Republic + + 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://cpan.cybercity.dk + 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://mirror.eunet.fi/CPAN + +=item France + + http://www.enstimac.fr/Perl/CPAN + http://ftp.u-paris10.fr/perl/CPAN + ftp://ftp.u-paris10.fr/perl/CPAN + 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://mir2.ovh.net/ftp.cpan.org + ftp://mir1.ovh.net/ftp.cpan.org + http://ftp.crihan.fr/mirrors/ftp.cpan.org/ + ftp://ftp.crihan.fr/mirrors/ftp.cpan.org/ + http://ftp.u-strasbg.fr/CPAN + ftp://ftp.u-strasbg.fr/CPAN + ftp://cpan.cict.fr/pub/CPAN/ + ftp://ftp.uvsq.fr/pub/perl/CPAN/ + +=item Germany + + ftp://ftp.rub.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 + 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 + ftp://ftp.forthnet.gr/pub/languages/perl/CPAN + ftp://ftp.ntua.gr/pub/lang/perl/ + +=item Hungary + + 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://ftp.heanet.ie/mirrors/ftp.perl.org/pub/CPAN + ftp://ftp.heanet.ie/mirrors/ftp.perl.org/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/ + http://cpan.flashnet.it/ + 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/ + http://cpan.cybercomm.nl/ + ftp://mirror.cybercomm.nl/pub/CPAN + ftp://mirror.vuurwerk.nl/pub/CPAN/ + ftp://ftp.cpan.nl/pub/CPAN/ + http://ftp.easynet.nl/mirror/CPAN + ftp://ftp.easynet.nl/mirror/CPAN + http://archive.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.mega.net.pl/CPAN + 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.nfsi.pt/pub/CPAN + http://ftp.linux.pt/pub/mirrors/CPAN + ftp://ftp.linux.pt/pub/mirrors/CPAN + http://cpan.ip.pt/ + ftp://cpan.ip.pt/pub/cpan/ + http://cpan.telepac.pt/ + ftp://ftp.telepac.pt/pub/cpan/ + +=item Romania + + ftp://ftp.bio-net.ro/pub/CPAN + ftp://ftp.kappa.ro/pub/mirrors/ftp.perl.org/pub/CPAN/ + ftp://ftp.lug.ro/CPAN + ftp://ftp.roedu.net/pub/CPAN/ + ftp://ftp.dntis.ro/pub/cpan/ + ftp://ftp.iasi.roedu.net/pub/mirrors/ftp.cpan.org/ + http://cpan.ambra.ro/ + ftp://ftp.ambra.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/ + ftp://ftp.corbina.ru/pub/CPAN/ + http://cpan.sai.msu.ru/ + ftp://ftp.sai.msu.su/pub/lang/perl/CPAN/ + +=item Slovakia + + 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.ri.telefonica-data.net/CPAN + ftp://ftp.etse.urv.es/pub/perl/ + +=item Sweden + + http://ftp.du.se/CPAN/ + ftp://ftp.du.se/pub/CPAN/ + http://mirror.dataphone.se/CPAN + ftp://mirror.dataphone.se/pub/CPAN + ftp://ftp.sunet.se/pub/lang/perl/CPAN/ + +=item Switzerland + + http://cpan.mirror.solnet.ch/ + ftp://ftp.solnet.ch/mirror/CPAN/ + ftp://ftp.danyk.ch/CPAN/ + ftp://sunsite.cnlab-switch.ch/mirror/CPAN/ + +=item Turkey + + http://ftp.ulak.net.tr/perl/CPAN/ + ftp://ftp.ulak.net.tr/perl/CPAN + 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/ + http://no-more.kiev.ua/CPAN/ + ftp://no-more.kiev.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.mirror.anlx.net/ + ftp://ftp.mirror.anlx.net/CPAN/ + http://cpan.etla.org/ + ftp://cpan.etla.org/pub/CPAN + ftp://ftp.demon.co.uk/pub/CPAN/ + http://cpan.m.flirble.org/ + ftp://ftp.flirble.org/pub/languages/perl/CPAN/ + ftp://ftp.plig.org/pub/CPAN/ + http://cpan.hambule.co.uk/ + 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://cpan.sunsite.ualberta.ca/ + ftp://cpan.sunsite.ualberta.ca/pub/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.nrc.ca/pub/CPAN/ + +=back + +=item Mexico + + http://cpan.azc.uam.mx + ftp://cpan.azc.uam.mx/mirrors/CPAN + http://www.cpan.unam.mx/ + ftp://ftp.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://cpan.develooper.com/ + http://www.cpan.org/ + ftp://cpan.valueclick.com/pub/CPAN/ + http://www.mednor.net/ftp/pub/mirrors/CPAN/ + ftp://ftp.mednor.net/pub/mirrors/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-sj.viaverio.com/ + ftp://cpan-sj.viaverio.com/pub/CPAN/ + http://cpan.digisle.net/ + ftp://cpan.digisle.net/pub/CPAN + http://www.perl.com/CPAN/ + http://www.uberlan.net/CPAN + +=item Colorado + + ftp://ftp.cs.colorado.edu/pub/perl/CPAN/ + http://cpan.four10.com + +=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/ + http://cpan.mirrors.nks.net/ + +=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/ + http://fx.saintjoe.edu/pub/CPAN + ftp://ftp.saintjoe.edu/pub/CPAN + 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/ + http://slugsite.louisville.edu/cpan + ftp://slugsite.louisville.edu/CPAN + +=item Massachusetts + + http://mirrors.towardex.com/CPAN + ftp://mirrors.towardex.com/pub/CPAN + ftp://ftp.ccs.neu.edu/net/mirrors/ftp.funet.fi/pub/languages/perl/CPAN/ + +=item Michigan + + ftp://cpan.cse.msu.edu/ + http://cpan.calvin.edu/pub/CPAN + ftp://cpan.calvin.edu/pub/CPAN + +=item Nevada + + http://www.oss.redundant.com/pub/CPAN + ftp://www.oss.redundant.com/pub/CPAN + +=item New Jersey + + http://ftp.cpanel.net/pub/CPAN/ + ftp://ftp.cpanel.net/pub/CPAN/ + http://cpan.teleglobe.net/ + ftp://cpan.teleglobe.net/pub/CPAN + +=item New York + + http://cpan.belfry.net/ + http://cpan.erlbaum.net/ + ftp://cpan.erlbaum.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/ + +=item North Carolina + + http://www.ibiblio.org/pub/languages/perl/CPAN + ftp://ftp.ibiblio.org/pub/languages/perl/CPAN + ftp://ftp.duke.edu/pub/perl/ + ftp://ftp.ncsu.edu/pub/mirror/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/ + http://www.binarycode.org/cpan + ftp://mirror.telentente.com/pub/CPAN + http://mirrors.theonlinerecordstore.com/CPAN + +=item Utah + + ftp://mirror.xmission.com/CPAN/ + +=item Virginia + + http://cpan-du.viaverio.com/ + ftp://cpan-du.viaverio.com/pub/CPAN/ + 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://noc.cvaix.com/mirrors/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/ + http://mirror.aphix.com/CPAN + ftp://mirror.aphix.com/pub/CPAN + +=back + +=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/ + http://cpan.mirrors.ilisys.com.au + +=item New Zealand + + ftp://ftp.auckland.ac.nz/pub/perl/CPAN/ + +=item United States + + http://aniani.ifa.hawaii.edu/CPAN/ + ftp://aniani.ifa.hawaii.edu/CPAN/ + +=back + +=head2 South America + +=over 4 + +=item Argentina + + ftp://mirrors.bannerlandia.com.ar/mirrors/CPAN/ + http://www.linux.org.ar/mirrors/cpan + ftp://ftp.linux.org.ar/mirrors/cpan + +=item Brazil + + ftp://cpan.pop-mg.com.br/pub/CPAN/ + ftp://ftp.matrix.com.br/pub/perl/CPAN/ + http://cpan.hostsul.com.br/ + ftp://cpan.hostsul.com.br/ + +=item Chile + + http://cpan.netglobalis.net/ + ftp://cpan.netglobalis.net/pub/CPAN/ + +=back + +=head2 RSYNC Mirrors + + www.linux.org.ar::cpan + theoryx5.uwinnipeg.ca::CPAN + ftp.shellhung.org::CPAN + rsync.nic.funet.fi::CPAN + ftp.u-paris10.fr::CPAN + mir1.ovh.net::CPAN + rsync://ftp.crihan.fr::CPAN + ftp.gwdg.de::FTP/languages/perl/CPAN/ + ftp.leo.org::CPAN + ftp.cbn.net.id::CPAN + rsync://ftp.heanet.ie/mirrors/ftp.perl.org/pub/CPAN + ftp.iglu.org.il::CPAN + gusp.dyndns.org::cpan + ftp.kddlabs.co.jp::cpan + ftp.ayamura.org::pub/CPAN/ + mirror.leafbug.org::CPAN + rsync.en.com.sg::CPAN + mirror.averse.net::cpan + rsync.oss.eznetsols.org + ftp.kr.FreeBSD.org::CPAN + ftp.solnet.ch::CPAN + cpan.cdpa.nsysu.edu.tw::CPAN + cpan.teleglobe.net::CPAN + rsync://rsync.mirror.anlx.net::CPAN + ftp.sedl.org::cpan + ibiblio.org::CPAN + cpan-du.viaverio.com::CPAN + aniani.ifa.hawaii.edu::CPAN + archive.progeny.com::CPAN + rsync://slugsite.louisville.edu::CPAN + mirror.aphix.com::CPAN + cpan.teleglobe.net::CPAN + ftp.lug.udel.edu::cpan + mirrors.kernel.org::mirrors/CPAN + mirrors.phenominet.com::CPAN + cpan.pair.com::CPAN + cpan-sj.viaverio.com::CPAN + mirror.csit.fsu.edu::CPAN + csociety-ftp.ecn.purdue.edu::CPAN + For an up-to-date listing of CPAN sites, -see http://www.perl.com/perl/CPAN/SITES or ftp://www.perl.com/CPAN/SITES . +see http://www.cpan.org/SITES or ftp://www.cpan.org/SITES . =head1 Modules: Creation, Use, and Abuse @@ -421,7 +1006,9 @@ the AUTOLOAD mechanism. =over 4 -=item Do similar modules already exist in some form? +=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 @@ -435,7 +1022,9 @@ 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. +=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 @@ -500,7 +1089,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. @@ -532,7 +1123,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! @@ -556,7 +1149,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 @@ -580,11 +1175,19 @@ If adding a new module to a set, follow the original author's standards for naming modules and the interface to methods in those modules. +If developing modules for private internal or project specific use, +that will never be released to the public, then you should ensure +that their names will not clash with any future public module. You +can do this either by using the reserved Local::* category or by +using a category name that includes an underscore like Foo_Corp::*. + 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 @@ -603,7 +1206,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 @@ -613,24 +1218,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 @@ -641,15 +1253,18 @@ 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 a declaration of how others may copy/use/modify your work. -Perl, for example, is supplied with two types of licence: The GNU -GPL and The Artistic Licence (see the files README, Copying, and -Artistic). Larry has good reasons for NOT just using the GNU GPL. +Perl, for example, is supplied with two types of licence: The GNU GPL +and The Artistic Licence (see the files README, Copying, and Artistic, +or L and L). Larry has good reasons for NOT +just using the GNU GPL. My personal recommendation, out of respect for Larry, Perl, and the Perl community at large is to state something simply like: @@ -662,7 +1277,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 @@ -676,7 +1293,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 @@ -699,8 +1318,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: @@ -715,7 +1334,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 @@ -729,26 +1350,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: @@ -756,15 +1385,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 @@ -779,18 +1412,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: