$ENV{LC_ALL} = 'C';
-open (OUT, ">perlmodlib.tmp") or die $!;
+open (OUT, ">perlmodlib.pod") or die $!;
my (@pragma, @mod, @MANIFEST);
open (MANIFEST, "../MANIFEST") or die $!;
=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.mweb.co.za/pub/mirrors/cpan/
ftp://ftp.saix.net/pub/CPAN/
ftp://ftp.sun.ac.za/CPAN/CPAN/
=item China
- ftp://freesoft.cei.gov.cn/pub/languages/perl/CPAN/
- http://www2.linuxforum.net/mirror/CPAN/
+ http://cpan.linuxforum.net/
http://cpan.shellhung.org/
ftp://ftp.shellhung.org/pub/CPAN
-
-=item India
-
- http://cpan.in.freeos.com
- ftp://cpan.in.freeos.com/pub/CPAN/
+ ftp://mirrors.hknet.com/CPAN
=item Indonesia
- http://cpan.itb.web.id/
- ftp://mirrors.piksi.itb.ac.id/CPAN/
+ http://mirrors.tf.itb.ac.id/cpan/
http://cpan.cbn.net.id/
ftp://ftp.cbn.net.id/mirror/CPAN
- http://CPAN.mweb.co.id/
- ftp://ftp.mweb.co.id/pub/languages/perl/CPAN/
=item Israel
- 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://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/
+ 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 Korea
-
- http://mirror.Mazic.org/pub/CPAN
- ftp://mirror.Mazic.org/pub/CPAN
+=item Malaysia
-=item Philippines
-
- http://www.adzu.edu.ph/CPAN
+ 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/pub/CPAN
+ ftp://cpan.tomsk.ru/
=item Saudi Arabia
=item Singapore
- http://cpan.hjc.edu.sg
+ 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://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
+ http://mirror.kr.FreeBSD.org/CPAN
+ ftp://ftp.kr.FreeBSD.org/pub/CPAN
=item Taiwan
ftp://ftp.nctu.edu.tw/UNIX/perl/CPAN
- ftp://ftp.ee.ncku.edu.tw/pub/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 Costa Rica
- ftp://ftp.linux.co.cr/mirrors/CPAN/
http://ftp.ucr.ac.cr/Unix/CPAN/
ftp://ftp.ucr.ac.cr/pub/Unix/CPAN/
=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.skynet.be/pub/CPAN
+ 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 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 Finland
ftp://ftp.funet.fi/pub/languages/perl/CPAN/
- http://cpan.kpnqwest.fi/
+ 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://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
- 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.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
=item Greece
- ftp://ftp.acn.gr/pub/lang/perl/CPAN
+ 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://cpan.artifact.hu/
- ftp://cpan.artifact.hu/CPAN/
http://ftp.kfki.hu/packages/perl/CPAN/
ftp://ftp.kfki.hu/pub/packages/perl/CPAN/
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/
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
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
=item Poland
- ftp://ftp.pk.edu.pl/pub/lang/perl/CPAN/
- ftp://ftp.mega.net.pl/pub/mirrors/ftp.perl.com/
+ ftp://ftp.mega.net.pl/CPAN
ftp://ftp.man.torun.pl/pub/doc/CPAN/
ftp://sunsite.icm.edu.pl/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/
+ 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/
- ftp://ftp.netc.pt/pub/CPAN/
- ftp://ftp.up.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/
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
- http://ftp.cvt.stuba.sk/pub/CPAN/
ftp://ftp.cvt.stuba.sk/pub/CPAN/
=item Slovenia
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/
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
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
+ 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://mirror.uklinux.net/CPAN/
- ftp://mirror.uklinux.net/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/
=over 4
+=item Canada
+
+=over 8
+
=item Alberta
- http://sunsite.ualberta.ca/pub/Mirror/CPAN/
- ftp://sunsite.ualberta.ca/pub/Mirror/CPAN/
+ http://cpan.sunsite.ualberta.ca/
+ ftp://cpan.sunsite.ualberta.ca/pub/CPAN/
=item Manitoba
=item Ontario
- ftp://ftp.crc.ca/pub/CPAN/
-
-=item Quebec
+ ftp://ftp.nrc.ca/pub/CPAN/
- 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.cpan.unam.mx/
+ ftp://ftp.unam.mx/pub/CPAN
http://www.msg.com.mx/CPAN/
ftp://ftp.msg.com.mx/pub/CPAN/
-=back
+=item United States
-=head2 United States
-
-=over 4
+=over 8
=item Alabama
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://download.sourceforge.net/mirrors/CPAN/
+ http://www.uberlan.net/CPAN
=item Colorado
ftp://ftp.cs.colorado.edu/pub/perl/CPAN/
+ http://cpan.four10.com
=item Delaware
ftp://mirror.csit.fsu.edu/pub/CPAN/
http://cpan.mirrors.nks.net/
-=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/
ftp://cpan.netnitco.net/pub/mirrors/CPAN/
http://archive.progeny.com/CPAN/
ftp://archive.progeny.com/CPAN/
- ftp://cpan.in-span.net/
+ 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
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/
- http://cpan.mirrors.netnumina.com/
- ftp://mirrors.netnumina.com/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
- ftp://ftp.exobit.org/pub/perl/CPAN
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/
- ftp://mirrors.cloud9.net/pub/mirrors/CPAN/
=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/
-
-=item Ohio
-
- ftp://ftp.loaded.net/pub/CPAN/
+ ftp://ftp.ncsu.edu/pub/mirror/CPAN/
=item Oklahoma
=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
=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://mirrors.phihost.com/CPAN/
- ftp://mirrors.phihost.com/CPAN/
- ftp://ruff.cs.jmu.edu/pub/CPAN/
- http://perl.Liquidation.com/CPAN/
+ http://noc.cvaix.com/mirrors/CPAN/
-=item ashington
+=item Washington
http://cpan.llarian.net/
ftp://cpan.llarian.net/pub/CPAN/
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
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/
- http://cpan.soa.co.nz/CPAN/
+
+=item United States
+
+ http://aniani.ifa.hawaii.edu/CPAN/
+ ftp://aniani.ifa.hawaii.edu/CPAN/
=back
=item Argentina
ftp://mirrors.bannerlandia.com.ar/mirrors/CPAN/
- http://ftp.fcaglp.unlp.edu.ar/pub/CPAN/
- ftp://ftp.fcaglp.unlp.edu.ar/pub/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
=head2 RSYNC Mirrors
- ftp.fcaglp.unlp.edu.ar::CPAN
- cpan.mirror.smartworker.org::CPAN
+ www.linux.org.ar::cpan
theoryx5.uwinnipeg.ca::CPAN
ftp.shellhung.org::CPAN
- ftp.funet.fi::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
- CPAN.piksi.itb.ac.id::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
Does your module pass the 'empty subclass' test? If you say
C<@SUBCLASS::ISA = qw(YOURCLASS);> your applications should be able
to use SUBCLASS in exactly the same way as YOURCLASS. For example,
-does your application still work if you change: C<$obj = new YOURCLASS;>
-into: C<$obj = new SUBCLASS;> ?
+does your application still work if you change: C<< $obj = YOURCLASS->new(); >>
+into: C<< $obj = SUBCLASS->new(); >> ?
Avoid keeping any state information in your packages. It makes it
difficult for multiple other packages to use yours. Keep state
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<perlgpl> and L<perlartistic>). 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:
EOF
close MANIFEST or warn "$0: failed to close MANIFEST (../MANIFEST): $!";
-close OUT or warn "$0: failed to close OUT (perlmodlib.tmp): $!";
+close OUT or warn "$0: failed to close OUT (perlmodlib.pod): $!";