5 open (OUT, ">perlmodlib.tmp") or die $!;
6 my (@pragma, @mod, @MANIFEST);
8 open (MANIFEST, "../MANIFEST") or die $!;
9 @MANIFEST = grep !m</(?:t|demo)/>, <MANIFEST>;
10 push @MANIFEST, 'lib/Config.pod', 'lib/Errno.pm', 'lib/lib.pm',
11 'lib/DynaLoader.pm', 'lib/XSLoader.pm';
15 next unless s|^lib/|| or m|^ext/|;
16 my ($origfilename) = ($filename) = m|^(\S+)|;
17 $filename =~ s|^[^/]+/|| if $filename =~ s|^ext/||;
18 next unless $filename =~ m!\.p(m|od)$!;
19 unless (open (MOD, "../lib/$filename")) {
20 unless (open (MOD, "../$origfilename")) {
21 warn "Couldn't open ../$origfilename: $!";
24 $filename = $origfilename;
33 next unless /^=head1 NAME/;
39 warn "$filename missing =head1 NAME (okay if there is respective .pod)\n";
46 my $perlname = $filename;
47 $perlname =~ s!^.*\b(ext|lib)/!!;
48 $perlname =~ s!\.p(m|od)$!!;
49 $perlname =~ s!\b(\w+)/\1\b!$1!;
50 $perlname =~ s!/!::!g;
52 ($name, $thing) = split / --? /, $title, 2;
54 unless ($name and $thing) {
55 warn "$filename missing name\n" unless $name;
56 warn "$filename missing thing\n" unless $thing;
61 $thing =~ s/^perl pragma to //i;
62 $thing = ucfirst($thing);
63 $title = "=item $perlname\n\n$thing\n\n";
65 if ($filename =~ /[A-Z]/) {
74 Generated by perlmodlib.PL -- DO NOT EDIT!
78 perlmodlib - constructing new Perl modules and finding existing ones
80 =head1 THE PERL MODULE LIBRARY
82 Many modules are included in the Perl distribution. These are described
83 below, and all end in F<.pm>. You may discover compiled library
84 files (usually ending in F<.so>) or small pieces of modules to be
85 autoloaded (ending in F<.al>); these were automatically generated
86 by the installation process. You may also discover files in the
87 library directory that end in either F<.pl> or F<.ph>. These are
88 old libraries supplied so that old programs that use them still
89 run. The F<.pl> files will all eventually be converted into standard
90 modules, and the F<.ph> files made by B<h2ph> will probably end up
91 as extension modules made by B<h2xs>. (Some F<.ph> values may
92 already be available through the POSIX, Errno, or Fcntl modules.)
93 The B<pl2pm> file in the distribution may help in your conversion,
94 but it's just a mechanical process and therefore far from bulletproof.
96 =head2 Pragmatic Modules
98 They work somewhat like compiler directives (pragmata) in that they
99 tend to affect the compilation of your program, and thus will usually
100 work well only when used within a C<use>, or C<no>. Most of these
101 are lexically scoped, so an inner BLOCK may countermand them
108 which lasts until the end of that BLOCK.
110 Some pragmas are lexically scoped--typically those that affect the
111 C<$^H> hints variable. Others affect the current package instead,
112 like C<use vars> and C<use subs>, which allow you to predeclare a
113 variables or subroutines within a particular I<file> rather than
114 just a block. Such declarations are effective for the entire file
115 for which they were declared. You cannot rescind them with C<no
118 The following pragmas are defined (and have their own documentation).
124 print OUT $_ for (sort @pragma);
129 =head2 Standard Modules
131 Standard, bundled modules are all expected to behave in a well-defined
132 manner with respect to namespace pollution because they use the
133 Exporter module. See their own documentation for details.
135 It's possible that not all modules listed below are installed on your
136 system. For example, the GDBM_File module will not be installed if you
137 don't have the gdbm library.
143 print OUT $_ for (sort @mod);
148 To find out I<all> modules installed on your system, including
149 those without documentation or outside the standard release,
150 just use the following command (under the default win32 shell,
151 double quotes should be used instead of single quotes).
153 % perl -MFile::Find=find -MFile::Spec::Functions -Tlwe \
154 'find { wanted => sub { print canonpath $_ if /\.pm\z/ },
155 no_chdir => 1 }, @INC'
157 (The -T is here to prevent '.' from being listed in @INC.)
158 They should all have their own documentation installed and accessible
159 via your system man(1) command. If you do not have a B<find>
160 program, you can use the Perl B<find2perl> program instead, which
161 generates Perl code as output you can run through perl. If you
162 have a B<man> program but it doesn't find your modules, you'll have
163 to fix your manpath. See L<perl> for details. If you have no
164 system B<man> command, you might try the B<perldoc> program.
166 Note also that the command C<perldoc perllocal> gives you a (possibly
167 incomplete) list of the modules that have been further installed on
168 your system. (The perllocal.pod file is updated by the standard MakeMaker
171 =head2 Extension Modules
173 Extension modules are written in C (or a mix of Perl and C). They
174 are usually dynamically loaded into Perl if and when you need them,
175 but may also be linked in statically. Supported extension modules
176 include Socket, Fcntl, and POSIX.
178 Many popular C extension modules do not come bundled (at least, not
179 completely) due to their sizes, volatility, or simply lack of time
180 for adequate testing and configuration across the multitude of
181 platforms on which Perl was beta-tested. You are encouraged to
182 look for them on CPAN (described below), or using web search engines
183 like Alta Vista or Google.
187 CPAN stands for Comprehensive Perl Archive Network; it's a globally
188 replicated trove of Perl materials, including documentation, style
189 guides, tricks and traps, alternate ports to non-Unix systems and
190 occasional binary distributions for these. Search engines for
191 CPAN can be found at http://www.cpan.org/
193 Most importantly, CPAN includes around a thousand unbundled modules,
194 some of which require a C compiler to build. Major categories of
201 Language Extensions and Documentation Tools
209 Operating System Interfaces
213 Networking, Device Control (modems) and InterProcess Communication
217 Data Types and Data Type Utilities
229 Interfaces to / Emulations of Other Programming Languages
233 File Names, File Systems and File Locking (see also File Handles)
237 String Processing, Language Text Processing, Parsing, and Searching
241 Option, Argument, Parameter, and Configuration File Processing
245 Internationalization and Locale
249 Authentication, Security, and Encryption
253 World Wide Web, HTML, HTTP, CGI, MIME
257 Server and Daemon Utilities
261 Archiving and Compression
265 Images, Pixmap and Bitmap Manipulation, Drawing, and Graphing
273 Control Flow Utilities (callbacks and exceptions etc)
277 File Handle and Input/Output Stream Utilities
281 Miscellaneous Modules
285 The list of the registered CPAN sites as of this writing follows.
286 Please note that the sorting order is alphabetical on fields:
298 and thus the North American servers happen to be listed between the
299 European and the South American sites.
301 You should try to choose one close to you.
309 http://ftp.rucus.ru.ac.za/pub/perl/CPAN/
310 ftp://ftp.rucus.ru.ac.za/pub/perl/CPAN/
311 ftp://ftp.is.co.za/programming/perl/CPAN/
312 ftp://ftp.saix.net/pub/CPAN/
313 ftp://ftp.sun.ac.za/CPAN/CPAN/
323 http://cpan.linuxforum.net/
324 http://cpan.shellhung.org/
325 ftp://ftp.shellhung.org/pub/CPAN
326 ftp://mirrors.hknet.com/CPAN
330 http://mirrors.tf.itb.ac.id/cpan/
331 http://cpan.cbn.net.id/
332 ftp://ftp.cbn.net.id/mirror/CPAN
336 ftp://ftp.iglu.org.il/pub/CPAN/
337 http://cpan.lerner.co.il/
338 http://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/
339 ftp://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/
343 ftp://ftp.u-aizu.ac.jp/pub/CPAN
344 ftp://ftp.kddlabs.co.jp/CPAN/
345 ftp://ftp.ayamura.org/pub/CPAN/
346 ftp://ftp.jaist.ac.jp/pub/lang/perl/CPAN/
348 ftp://ftp.cpan.jp/CPAN/
349 ftp://ftp.dti.ad.jp/pub/lang/CPAN/
350 ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/
354 http://cpan.MyBSD.org.my
355 http://mirror.leafbug.org/pub/CPAN
356 http://ossig.mncc.com.my/mirror/pub/CPAN
358 =item Russian Federation
365 ftp://ftp.isu.net.sa/pub/CPAN/
369 http://CPAN.en.com.sg/
370 ftp://cpan.en.com.sg/
371 http://mirror.averse.net/pub/CPAN
372 ftp://mirror.averse.net/pub/CPAN
373 http://cpan.oss.eznetsols.org
374 ftp://ftp.oss.eznetsols.org/cpan
378 http://CPAN.bora.net/
379 ftp://ftp.bora.net/pub/CPAN/
380 http://mirror.kr.FreeBSD.org/CPAN
381 ftp://ftp.kr.FreeBSD.org/pub/CPAN
385 ftp://ftp.nctu.edu.tw/UNIX/perl/CPAN
386 http://cpan.cdpa.nsysu.edu.tw/
387 ftp://cpan.cdpa.nsysu.edu.tw/pub/CPAN
388 http://ftp.isu.edu.tw/pub/CPAN
389 ftp://ftp.isu.edu.tw/pub/CPAN
390 ftp://ftp1.sinica.edu.tw/pub1/perl/CPAN/
391 http://ftp.tku.edu.tw/pub/CPAN/
392 ftp://ftp.tku.edu.tw/pub/CPAN/
396 ftp://ftp.loxinfo.co.th/pub/cpan/
397 ftp://ftp.cs.riubon.ac.th/pub/mirrors/CPAN/
401 =head2 Central America
407 http://ftp.ucr.ac.cr/Unix/CPAN/
408 ftp://ftp.ucr.ac.cr/pub/Unix/CPAN/
418 http://cpan.inode.at/
420 ftp://ftp.tuwien.ac.at/pub/CPAN/
424 http://ftp.easynet.be/pub/CPAN/
425 ftp://ftp.easynet.be/pub/CPAN/
426 http://cpan.skynet.be
427 ftp://ftp.cpan.skynet.be/pub/CPAN
428 ftp://ftp.kulnet.kuleuven.ac.be/pub/mirror/CPAN/
430 =item Bosnia and Herzegovina
432 http://cpan.blic.net/
436 http://cpan.online.bg
437 ftp://cpan.online.bg/cpan
438 http://cpan.zadnik.org
439 ftp://ftp.zadnik.org/mirrors/CPAN/
440 http://cpan.lirex.net/
441 ftp://ftp.lirex.net/pub/mirrors/CPAN
445 http://ftp.linux.hr/pub/CPAN/
446 ftp://ftp.linux.hr/pub/CPAN/
450 ftp://ftp.fi.muni.cz/pub/CPAN/
451 ftp://sunsite.mff.cuni.cz/MIRRORS/ftp.funet.fi/pub/languages/perl/CPAN/
455 http://mirrors.sunsite.dk/cpan/
456 ftp://sunsite.dk/mirrors/cpan/
457 http://cpan.cybercity.dk
458 http://www.cpan.dk/CPAN/
459 ftp://www.cpan.dk/ftp.cpan.org/CPAN/
463 ftp://ftp.ut.ee/pub/languages/perl/CPAN/
467 ftp://ftp.funet.fi/pub/languages/perl/CPAN/
468 http://mirror.eunet.fi/CPAN
472 http://www.enstimac.fr/Perl/CPAN
473 http://ftp.u-paris10.fr/perl/CPAN
474 ftp://ftp.u-paris10.fr/perl/CPAN
475 http://cpan.mirrors.easynet.fr/
476 ftp://cpan.mirrors.easynet.fr/pub/ftp.cpan.org/
477 ftp://ftp.club-internet.fr/pub/perl/CPAN/
479 ftp://ftp.lip6.fr/pub/perl/CPAN/
480 ftp://ftp.oleane.net/pub/mirrors/CPAN/
481 ftp://ftp.pasteur.fr/pub/computing/CPAN/
482 http://mir2.ovh.net/ftp.cpan.org
483 ftp://mir1.ovh.net/ftp.cpan.org
484 http://ftp.crihan.fr/mirrors/ftp.cpan.org/
485 ftp://ftp.crihan.fr/mirrors/ftp.cpan.org/
486 http://ftp.u-strasbg.fr/CPAN
487 ftp://ftp.u-strasbg.fr/CPAN
488 ftp://cpan.cict.fr/pub/CPAN/
489 ftp://ftp.uvsq.fr/pub/perl/CPAN/
493 ftp://ftp.rub.de/pub/CPAN/
494 ftp://ftp.freenet.de/pub/ftp.cpan.org/pub/CPAN/
495 ftp://ftp.uni-erlangen.de/pub/source/CPAN/
496 ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/CPAN
497 http://pandemonium.tiscali.de/pub/CPAN/
498 ftp://pandemonium.tiscali.de/pub/CPAN/
499 http://ftp.gwdg.de/pub/languages/perl/CPAN/
500 ftp://ftp.gwdg.de/pub/languages/perl/CPAN/
501 ftp://ftp.uni-hamburg.de/pub/soft/lang/perl/CPAN/
502 ftp://ftp.leo.org/pub/CPAN/
503 http://cpan.noris.de/
504 ftp://cpan.noris.de/pub/CPAN/
505 ftp://ftp.mpi-sb.mpg.de/pub/perl/CPAN/
506 ftp://ftp.gmd.de/mirrors/CPAN/
510 ftp://ftp.acn.gr/pub/lang/perl
511 ftp://ftp.forthnet.gr/pub/languages/perl/CPAN
512 ftp://ftp.ntua.gr/pub/lang/perl/
516 http://ftp.kfki.hu/packages/perl/CPAN/
517 ftp://ftp.kfki.hu/pub/packages/perl/CPAN/
521 http://ftp.rhnet.is/pub/CPAN/
522 ftp://ftp.rhnet.is/pub/CPAN/
526 http://cpan.indigo.ie/
527 ftp://cpan.indigo.ie/pub/CPAN/
528 http://ftp.heanet.ie/mirrors/ftp.perl.org/pub/CPAN
529 ftp://ftp.heanet.ie/mirrors/ftp.perl.org/pub/CPAN
530 http://sunsite.compapp.dcu.ie/pub/perl/
531 ftp://sunsite.compapp.dcu.ie/pub/perl/
535 http://cpan.nettuno.it/
536 http://gusp.dyndns.org/CPAN/
537 ftp://gusp.dyndns.org/pub/CPAN
538 http://softcity.iol.it/cpan
539 ftp://softcity.iol.it/pub/cpan
540 ftp://ftp.unina.it/pub/Other/CPAN/CPAN/
541 ftp://ftp.unipi.it/pub/mirror/perl/CPAN/
542 ftp://cis.uniRoma2.it/CPAN/
543 ftp://ftp.edisontel.it/pub/CPAN_Mirror/
544 http://cpan.flashnet.it/
545 ftp://ftp.flashnet.it/pub/CPAN/
549 http://kvin.lv/pub/CPAN/
553 ftp://ftp.unix.lt/pub/CPAN/
557 ftp://download.xs4all.nl/pub/mirror/CPAN/
558 ftp://ftp.nl.uu.net/pub/CPAN/
559 ftp://ftp.nluug.nl/pub/languages/perl/CPAN/
560 http://cpan.cybercomm.nl/
561 ftp://mirror.cybercomm.nl/pub/CPAN
562 ftp://mirror.vuurwerk.nl/pub/CPAN/
563 ftp://ftp.cpan.nl/pub/CPAN/
564 http://ftp.easynet.nl/mirror/CPAN
565 ftp://ftp.easynet.nl/mirror/CPAN
566 http://archive.cs.uu.nl/mirror/CPAN/
567 ftp://ftp.cs.uu.nl/mirror/CPAN/
571 ftp://ftp.uninett.no/pub/languages/perl/CPAN
572 ftp://ftp.uit.no/pub/languages/perl/cpan/
576 ftp://ftp.mega.net.pl/CPAN
577 ftp://ftp.man.torun.pl/pub/doc/CPAN/
578 ftp://sunsite.icm.edu.pl/pub/CPAN/
582 ftp://ftp.ua.pt/pub/CPAN/
583 ftp://perl.di.uminho.pt/pub/CPAN/
584 http://cpan.dei.uc.pt/
585 ftp://ftp.dei.uc.pt/pub/CPAN
586 ftp://ftp.nfsi.pt/pub/CPAN
587 http://ftp.linux.pt/pub/mirrors/CPAN
588 ftp://ftp.linux.pt/pub/mirrors/CPAN
590 ftp://cpan.ip.pt/pub/cpan/
591 http://cpan.telepac.pt/
592 ftp://ftp.telepac.pt/pub/cpan/
596 ftp://ftp.bio-net.ro/pub/CPAN
597 ftp://ftp.kappa.ro/pub/mirrors/ftp.perl.org/pub/CPAN/
598 ftp://ftp.lug.ro/CPAN
599 ftp://ftp.roedu.net/pub/CPAN/
600 ftp://ftp.dntis.ro/pub/cpan/
601 ftp://ftp.iasi.roedu.net/pub/mirrors/ftp.cpan.org/
602 http://cpan.ambra.ro/
603 ftp://ftp.ambra.ro/pub/CPAN
604 ftp://ftp.dnttm.ro/pub/CPAN/
605 ftp://ftp.lasting.ro/pub/CPAN
606 ftp://ftp.timisoara.roedu.net/mirrors/CPAN/
610 ftp://ftp.chg.ru/pub/lang/perl/CPAN/
611 http://cpan.rinet.ru/
612 ftp://cpan.rinet.ru/pub/mirror/CPAN/
613 ftp://ftp.aha.ru/pub/CPAN/
614 ftp://ftp.corbina.ru/pub/CPAN/
615 http://cpan.sai.msu.ru/
616 ftp://ftp.sai.msu.su/pub/lang/perl/CPAN/
620 ftp://ftp.cvt.stuba.sk/pub/CPAN/
624 ftp://ftp.arnes.si/software/perl/CPAN/
628 http://cpan.imasd.elmundo.es/
629 ftp://ftp.rediris.es/mirror/CPAN/
630 ftp://ftp.ri.telefonica-data.net/CPAN
631 ftp://ftp.etse.urv.es/pub/perl/
635 http://ftp.du.se/CPAN/
636 ftp://ftp.du.se/pub/CPAN/
637 http://mirror.dataphone.se/CPAN
638 ftp://mirror.dataphone.se/pub/CPAN
639 ftp://ftp.sunet.se/pub/lang/perl/CPAN/
643 http://cpan.mirror.solnet.ch/
644 ftp://ftp.solnet.ch/mirror/CPAN/
645 ftp://ftp.danyk.ch/CPAN/
646 ftp://sunsite.cnlab-switch.ch/mirror/CPAN/
650 http://ftp.ulak.net.tr/perl/CPAN/
651 ftp://ftp.ulak.net.tr/perl/CPAN
652 ftp://sunsite.bilkent.edu.tr/pub/languages/CPAN/
658 ftp://ftp.perl.org.ua/pub/CPAN/
659 http://no-more.kiev.ua/CPAN/
660 ftp://no-more.kiev.ua/pub/CPAN/
664 http://www.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN
665 ftp://ftp.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN/
666 http://cpan.teleglobe.net/
667 ftp://cpan.teleglobe.net/pub/CPAN
668 http://cpan.mirror.anlx.net/
669 ftp://ftp.mirror.anlx.net/CPAN/
670 http://cpan.etla.org/
671 ftp://cpan.etla.org/pub/CPAN
672 ftp://ftp.demon.co.uk/pub/CPAN/
673 http://cpan.m.flirble.org/
674 ftp://ftp.flirble.org/pub/languages/perl/CPAN/
675 ftp://ftp.plig.org/pub/CPAN/
676 http://cpan.hambule.co.uk/
677 http://cpan.mirrors.clockerz.net/
678 ftp://ftp.clockerz.net/pub/CPAN/
679 ftp://usit.shef.ac.uk/pub/packages/CPAN/
693 http://cpan.sunsite.ualberta.ca/
694 ftp://cpan.sunsite.ualberta.ca/pub/CPAN/
698 http://theoryx5.uwinnipeg.ca/pub/CPAN/
699 ftp://theoryx5.uwinnipeg.ca/pub/CPAN/
703 ftp://cpan.chebucto.ns.ca/pub/CPAN/
707 ftp://ftp.nrc.ca/pub/CPAN/
713 http://cpan.azc.uam.mx
714 ftp://cpan.azc.uam.mx/mirrors/CPAN
715 http://www.cpan.unam.mx/
716 ftp://ftp.unam.mx/pub/CPAN
717 http://www.msg.com.mx/CPAN/
718 ftp://ftp.msg.com.mx/pub/CPAN/
726 http://mirror.hiwaay.net/CPAN/
727 ftp://mirror.hiwaay.net/CPAN/
731 http://cpan.develooper.com/
733 ftp://cpan.valueclick.com/pub/CPAN/
734 http://www.mednor.net/ftp/pub/mirrors/CPAN/
735 ftp://ftp.mednor.net/pub/mirrors/CPAN/
736 http://mirrors.gossamer-threads.com/CPAN
737 ftp://cpan.nas.nasa.gov/pub/perl/CPAN/
738 http://mirrors.kernel.org/cpan/
739 ftp://mirrors.kernel.org/pub/CPAN
740 http://cpan-sj.viaverio.com/
741 ftp://cpan-sj.viaverio.com/pub/CPAN/
742 http://cpan.digisle.net/
743 ftp://cpan.digisle.net/pub/CPAN
744 http://www.perl.com/CPAN/
745 http://www.uberlan.net/CPAN
749 ftp://ftp.cs.colorado.edu/pub/perl/CPAN/
750 http://cpan.four10.com
754 http://ftp.lug.udel.edu/pub/CPAN
755 ftp://ftp.lug.udel.edu/pub/CPAN
757 =item District of Columbia
759 ftp://ftp.dc.aleron.net/pub/CPAN/
763 ftp://ftp.cise.ufl.edu/pub/mirrors/CPAN/
764 http://mirror.csit.fsu.edu/pub/CPAN/
765 ftp://mirror.csit.fsu.edu/pub/CPAN/
766 http://cpan.mirrors.nks.net/
770 ftp://ftp.uwsg.iu.edu/pub/perl/CPAN/
771 http://cpan.netnitco.net/
772 ftp://cpan.netnitco.net/pub/mirrors/CPAN/
773 http://archive.progeny.com/CPAN/
774 ftp://archive.progeny.com/CPAN/
775 http://fx.saintjoe.edu/pub/CPAN
776 ftp://ftp.saintjoe.edu/pub/CPAN
777 http://csociety-ftp.ecn.purdue.edu/pub/CPAN
778 ftp://csociety-ftp.ecn.purdue.edu/pub/CPAN
783 ftp://cpan.uky.edu/pub/CPAN/
784 http://slugsite.louisville.edu/cpan
785 ftp://slugsite.louisville.edu/CPAN
789 http://mirrors.towardex.com/CPAN
790 ftp://mirrors.towardex.com/pub/CPAN
791 ftp://ftp.ccs.neu.edu/net/mirrors/ftp.funet.fi/pub/languages/perl/CPAN/
795 ftp://cpan.cse.msu.edu/
796 http://cpan.calvin.edu/pub/CPAN
797 ftp://cpan.calvin.edu/pub/CPAN
801 http://www.oss.redundant.com/pub/CPAN
802 ftp://www.oss.redundant.com/pub/CPAN
806 http://ftp.cpanel.net/pub/CPAN/
807 ftp://ftp.cpanel.net/pub/CPAN/
808 http://cpan.teleglobe.net/
809 ftp://cpan.teleglobe.net/pub/CPAN
813 http://cpan.belfry.net/
814 http://cpan.erlbaum.net/
815 ftp://cpan.erlbaum.net/
816 http://cpan.thepirtgroup.com/
817 ftp://cpan.thepirtgroup.com/
818 ftp://ftp.stealth.net/pub/CPAN/
819 http://www.rge.com/pub/languages/perl/
820 ftp://ftp.rge.com/pub/languages/perl/
824 http://www.ibiblio.org/pub/languages/perl/CPAN
825 ftp://ftp.ibiblio.org/pub/languages/perl/CPAN
826 ftp://ftp.duke.edu/pub/perl/
827 ftp://ftp.ncsu.edu/pub/mirror/CPAN/
831 ftp://ftp.ou.edu/mirrors/CPAN/
835 ftp://ftp.orst.edu/pub/CPAN
839 http://ftp.epix.net/CPAN/
840 ftp://ftp.epix.net/pub/languages/perl/
841 http://mirrors.phenominet.com/pub/CPAN/
842 ftp://mirrors.phenominet.com/pub/CPAN/
843 http://cpan.pair.com/
844 ftp://cpan.pair.com/pub/CPAN/
845 ftp://carroll.cac.psu.edu/pub/CPAN/
849 ftp://ftp.sunsite.utk.edu/pub/CPAN/
853 http://ftp.sedl.org/pub/mirrors/CPAN/
854 http://www.binarycode.org/cpan
855 ftp://mirror.telentente.com/pub/CPAN
856 http://mirrors.theonlinerecordstore.com/CPAN
860 ftp://mirror.xmission.com/CPAN/
864 http://cpan-du.viaverio.com/
865 ftp://cpan-du.viaverio.com/pub/CPAN/
866 http://mirrors.rcn.net/pub/lang/CPAN/
867 ftp://mirrors.rcn.net/pub/lang/CPAN/
868 http://perl.secsup.org/
869 ftp://perl.secsup.org/pub/perl/
870 http://noc.cvaix.com/mirrors/CPAN/
874 http://cpan.llarian.net/
875 ftp://cpan.llarian.net/pub/CPAN/
876 http://cpan.mirrorcentral.com/
877 ftp://ftp.mirrorcentral.com/pub/CPAN/
878 ftp://ftp-mirror.internap.com/pub/CPAN/
882 http://mirror.sit.wisc.edu/pub/CPAN/
883 ftp://mirror.sit.wisc.edu/pub/CPAN/
884 http://mirror.aphix.com/CPAN
885 ftp://mirror.aphix.com/pub/CPAN
897 http://ftp.planetmirror.com/pub/CPAN/
898 ftp://ftp.planetmirror.com/pub/CPAN/
899 ftp://mirror.aarnet.edu.au/pub/perl/CPAN/
900 ftp://cpan.topend.com.au/pub/CPAN/
901 http://cpan.mirrors.ilisys.com.au
905 ftp://ftp.auckland.ac.nz/pub/perl/CPAN/
909 http://aniani.ifa.hawaii.edu/CPAN/
910 ftp://aniani.ifa.hawaii.edu/CPAN/
920 ftp://mirrors.bannerlandia.com.ar/mirrors/CPAN/
921 http://www.linux.org.ar/mirrors/cpan
922 ftp://ftp.linux.org.ar/mirrors/cpan
926 ftp://cpan.pop-mg.com.br/pub/CPAN/
927 ftp://ftp.matrix.com.br/pub/perl/CPAN/
928 http://cpan.hostsul.com.br/
929 ftp://cpan.hostsul.com.br/
933 http://cpan.netglobalis.net/
934 ftp://cpan.netglobalis.net/pub/CPAN/
940 www.linux.org.ar::cpan
941 theoryx5.uwinnipeg.ca::CPAN
942 ftp.shellhung.org::CPAN
943 rsync.nic.funet.fi::CPAN
944 ftp.u-paris10.fr::CPAN
946 rsync://ftp.crihan.fr::CPAN
947 ftp.gwdg.de::FTP/languages/perl/CPAN/
950 rsync://ftp.heanet.ie/mirrors/ftp.perl.org/pub/CPAN
951 ftp.iglu.org.il::CPAN
952 gusp.dyndns.org::cpan
953 ftp.kddlabs.co.jp::cpan
954 ftp.ayamura.org::pub/CPAN/
955 mirror.leafbug.org::CPAN
956 rsync.en.com.sg::CPAN
957 mirror.averse.net::cpan
958 rsync.oss.eznetsols.org
959 ftp.kr.FreeBSD.org::CPAN
961 cpan.cdpa.nsysu.edu.tw::CPAN
962 cpan.teleglobe.net::CPAN
963 rsync://rsync.mirror.anlx.net::CPAN
966 cpan-du.viaverio.com::CPAN
967 aniani.ifa.hawaii.edu::CPAN
968 archive.progeny.com::CPAN
969 rsync://slugsite.louisville.edu::CPAN
970 mirror.aphix.com::CPAN
971 cpan.teleglobe.net::CPAN
972 ftp.lug.udel.edu::cpan
973 mirrors.kernel.org::mirrors/CPAN
974 mirrors.phenominet.com::CPAN
976 cpan-sj.viaverio.com::CPAN
977 mirror.csit.fsu.edu::CPAN
978 csociety-ftp.ecn.purdue.edu::CPAN
980 For an up-to-date listing of CPAN sites,
981 see http://www.cpan.org/SITES or ftp://www.cpan.org/SITES .
983 =head1 Modules: Creation, Use, and Abuse
985 (The following section is borrowed directly from Tim Bunce's modules
986 file, available at your nearest CPAN site.)
988 Perl implements a class using a package, but the presence of a
989 package doesn't imply the presence of a class. A package is just a
990 namespace. A class is a package that provides subroutines that can be
991 used as methods. A method is just a subroutine that expects, as its
992 first argument, either the name of a package (for "static" methods),
993 or a reference to something (for "virtual" methods).
995 A module is a file that (by convention) provides a class of the same
996 name (sans the .pm), plus an import method in that class that can be
997 called to fetch exported symbols. This module may implement some of
998 its methods by loading dynamic C or C++ objects, but that should be
999 totally transparent to the user of the module. Likewise, the module
1000 might set up an AUTOLOAD function to slurp in subroutine definitions on
1001 demand, but this is also transparent. Only the F<.pm> file is required to
1002 exist. See L<perlsub>, L<perltoot>, and L<AutoLoader> for details about
1003 the AUTOLOAD mechanism.
1005 =head2 Guidelines for Module Creation
1011 Do similar modules already exist in some form?
1013 If so, please try to reuse the existing modules either in whole or
1014 by inheriting useful features into a new class. If this is not
1015 practical try to get together with the module authors to work on
1016 extending or enhancing the functionality of the existing modules.
1017 A perfect example is the plethora of packages in perl4 for dealing
1018 with command line options.
1020 If you are writing a module to expand an already existing set of
1021 modules, please coordinate with the author of the package. It
1022 helps if you follow the same naming scheme and module interaction
1023 scheme as the original author.
1027 Try to design the new module to be easy to extend and reuse.
1029 Try to C<use warnings;> (or C<use warnings qw(...);>).
1030 Remember that you can add C<no warnings qw(...);> to individual blocks
1031 of code that need less warnings.
1033 Use blessed references. Use the two argument form of bless to bless
1034 into the class name given as the first parameter of the constructor,
1039 return bless {}, $class;
1042 or even this if you'd like it to be used as either a static
1043 or a virtual method.
1047 my $class = ref($self) || $self;
1048 return bless {}, $class;
1051 Pass arrays as references so more parameters can be added later
1052 (it's also faster). Convert functions into methods where
1053 appropriate. Split large methods into smaller more flexible ones.
1054 Inherit methods from other modules if appropriate.
1056 Avoid class name tests like: C<die "Invalid" unless ref $ref eq 'FOO'>.
1057 Generally you can delete the C<eq 'FOO'> part with no harm at all.
1058 Let the objects look after themselves! Generally, avoid hard-wired
1059 class names as far as possible.
1061 Avoid C<< $r->Class::func() >> where using C<@ISA=qw(... Class ...)> and
1062 C<< $r->func() >> would work (see L<perlbot> for more details).
1064 Use autosplit so little used or newly added functions won't be a
1065 burden to programs that don't use them. Add test functions to
1066 the module after __END__ either using AutoSplit or by saying:
1068 eval join('',<main::DATA>) || die $@ unless caller();
1070 Does your module pass the 'empty subclass' test? If you say
1071 C<@SUBCLASS::ISA = qw(YOURCLASS);> your applications should be able
1072 to use SUBCLASS in exactly the same way as YOURCLASS. For example,
1073 does your application still work if you change: C<$obj = new YOURCLASS;>
1074 into: C<$obj = new SUBCLASS;> ?
1076 Avoid keeping any state information in your packages. It makes it
1077 difficult for multiple other packages to use yours. Keep state
1078 information in objects.
1082 Try to C<use strict;> (or C<use strict qw(...);>).
1083 Remember that you can add C<no strict qw(...);> to individual blocks
1084 of code that need less strictness.
1088 Follow the guidelines in the perlstyle(1) manual.
1094 Some simple style guidelines
1096 The perlstyle manual supplied with Perl has many helpful points.
1098 Coding style is a matter of personal taste. Many people evolve their
1099 style over several years as they learn what helps them write and
1100 maintain good code. Here's one set of assorted suggestions that
1101 seem to be widely used by experienced developers:
1103 Use underscores to separate words. It is generally easier to read
1104 $var_names_like_this than $VarNamesLikeThis, especially for
1105 non-native speakers of English. It's also a simple rule that works
1106 consistently with VAR_NAMES_LIKE_THIS.
1108 Package/Module names are an exception to this rule. Perl informally
1109 reserves lowercase module names for 'pragma' modules like integer
1110 and strict. Other modules normally begin with a capital letter and
1111 use mixed case with no underscores (need to be short and portable).
1113 You may find it helpful to use letter case to indicate the scope
1114 or nature of a variable. For example:
1116 $ALL_CAPS_HERE constants only (beware clashes with Perl vars)
1117 $Some_Caps_Here package-wide global/static
1118 $no_caps_here function scope my() or local() variables
1120 Function and method names seem to work best as all lowercase.
1121 e.g., C<< $obj->as_string() >>.
1123 You can use a leading underscore to indicate that a variable or
1124 function should not be used outside the package that defined it.
1128 Select what to export.
1130 Do NOT export method names!
1132 Do NOT export anything else by default without a good reason!
1134 Exports pollute the namespace of the module user. If you must
1135 export try to use @EXPORT_OK in preference to @EXPORT and avoid
1136 short or common names to reduce the risk of name clashes.
1138 Generally anything not exported is still accessible from outside the
1139 module using the ModuleName::item_name (or C<< $blessed_ref->method >>)
1140 syntax. By convention you can use a leading underscore on names to
1141 indicate informally that they are 'internal' and not for public use.
1143 (It is actually possible to get private functions by saying:
1144 C<my $subref = sub { ... }; &$subref;>. But there's no way to call that
1145 directly as a method, because a method must have a name in the symbol
1148 As a general rule, if the module is trying to be object oriented
1149 then export nothing. If it's just a collection of functions then
1150 @EXPORT_OK anything but use @EXPORT with caution.
1154 Select a name for the module.
1156 This name should be as descriptive, accurate, and complete as
1157 possible. Avoid any risk of ambiguity. Always try to use two or
1158 more whole words. Generally the name should reflect what is special
1159 about what the module does rather than how it does it. Please use
1160 nested module names to group informally or categorize a module.
1161 There should be a very good reason for a module not to have a nested name.
1162 Module names should begin with a capital letter.
1164 Having 57 modules all called Sort will not make life easy for anyone
1165 (though having 23 called Sort::Quick is only marginally better :-).
1166 Imagine someone trying to install your module alongside many others.
1167 If in any doubt ask for suggestions in comp.lang.perl.misc.
1169 If you are developing a suite of related modules/classes it's good
1170 practice to use nested classes with a common prefix as this will
1171 avoid namespace clashes. For example: Xyz::Control, Xyz::View,
1172 Xyz::Model etc. Use the modules in this list as a naming guide.
1174 If adding a new module to a set, follow the original author's
1175 standards for naming modules and the interface to methods in
1178 If developing modules for private internal or project specific use,
1179 that will never be released to the public, then you should ensure
1180 that their names will not clash with any future public module. You
1181 can do this either by using the reserved Local::* category or by
1182 using a category name that includes an underscore like Foo_Corp::*.
1184 To be portable each component of a module name should be limited to
1185 11 characters. If it might be used on MS-DOS then try to ensure each is
1186 unique in the first 8 characters. Nested modules make this easier.
1190 Have you got it right?
1192 How do you know that you've made the right decisions? Have you
1193 picked an interface design that will cause problems later? Have
1194 you picked the most appropriate name? Do you have any questions?
1196 The best way to know for sure, and pick up many helpful suggestions,
1197 is to ask someone who knows. Comp.lang.perl.misc is read by just about
1198 all the people who develop modules and it's the best place to ask.
1200 All you need to do is post a short summary of the module, its
1201 purpose and interfaces. A few lines on each of the main methods is
1202 probably enough. (If you post the whole module it might be ignored
1203 by busy people - generally the very people you want to read it!)
1205 Don't worry about posting if you can't say when the module will be
1206 ready - just say so in the message. It might be worth inviting
1207 others to help you, they may be able to complete it for you!
1211 README and other Additional Files.
1213 It's well known that software developers usually fully document the
1214 software they write. If, however, the world is in urgent need of
1215 your software and there is not enough time to write the full
1216 documentation please at least provide a README file containing:
1222 A description of the module/package/extension etc.
1226 A copyright notice - see below.
1230 Prerequisites - what else you may need to have.
1234 How to build it - possible changes to Makefile.PL etc.
1242 Recent changes in this release, especially incompatibilities
1246 Changes / enhancements you plan to make in the future.
1250 If the README file seems to be getting too large you may wish to
1251 split out some of the sections into separate files: INSTALL,
1258 Adding a Copyright Notice.
1260 How you choose to license your work is a personal decision.
1261 The general mechanism is to assert your Copyright and then make
1262 a declaration of how others may copy/use/modify your work.
1264 Perl, for example, is supplied with two types of licence: The GNU GPL
1265 and The Artistic Licence (see the files README, Copying, and Artistic,
1266 or L<perlgpl> and L<perlartistic>). Larry has good reasons for NOT
1267 just using the GNU GPL.
1269 My personal recommendation, out of respect for Larry, Perl, and the
1270 Perl community at large is to state something simply like:
1272 Copyright (c) 1995 Your Name. All rights reserved.
1273 This program is free software; you can redistribute it and/or
1274 modify it under the same terms as Perl itself.
1276 This statement should at least appear in the README file. You may
1277 also wish to include it in a Copying file and your source files.
1278 Remember to include the other words in addition to the Copyright.
1282 Give the module a version/issue/release number.
1284 To be fully compatible with the Exporter and MakeMaker modules you
1285 should store your module's version number in a non-my package
1286 variable called $VERSION. This should be a floating point
1287 number with at least two digits after the decimal (i.e., hundredths,
1288 e.g, C<$VERSION = "0.01">). Don't use a "1.3.2" style version.
1289 See L<Exporter> for details.
1291 It may be handy to add a function or method to retrieve the number.
1292 Use the number in announcements and archive file names when
1293 releasing the module (ModuleName-1.02.tar.Z).
1294 See perldoc ExtUtils::MakeMaker.pm for details.
1298 How to release and distribute a module.
1300 It's good idea to post an announcement of the availability of your
1301 module (or the module itself if small) to the comp.lang.perl.announce
1302 Usenet newsgroup. This will at least ensure very wide once-off
1305 If possible, register the module with CPAN. You should
1306 include details of its location in your announcement.
1308 Some notes about ftp archives: Please use a long descriptive file
1309 name that includes the version number. Most incoming directories
1310 will not be readable/listable, i.e., you won't be able to see your
1311 file after uploading it. Remember to send your email notification
1312 message as soon as possible after uploading else your file may get
1313 deleted automatically. Allow time for the file to be processed
1314 and/or check the file has been processed before announcing its
1317 FTP Archives for Perl Modules:
1319 Follow the instructions and links on:
1321 http://www.cpan.org/modules/00modlist.long.html
1322 http://www.cpan.org/modules/04pause.html
1324 or upload to one of these sites:
1326 https://pause.kbx.de/pause/
1327 http://pause.perl.org/pause/
1329 and notify <modules@perl.org>.
1331 By using the WWW interface you can ask the Upload Server to mirror
1332 your modules from your ftp or WWW site into your own directory on
1335 Please remember to send me an updated entry for the Module list!
1339 Take care when changing a released module.
1341 Always strive to remain compatible with previous released versions.
1342 Otherwise try to add a mechanism to revert to the
1343 old behavior if people rely on it. Document incompatible changes.
1349 =head2 Guidelines for Converting Perl 4 Library Scripts into Modules
1355 There is no requirement to convert anything.
1357 If it ain't broke, don't fix it! Perl 4 library scripts should
1358 continue to work with no problems. You may need to make some minor
1359 changes (like escaping non-array @'s in double quoted strings) but
1360 there is no need to convert a .pl file into a Module for just that.
1364 Consider the implications.
1366 All Perl applications that make use of the script will need to
1367 be changed (slightly) if the script is converted into a module. Is
1368 it worth it unless you plan to make other changes at the same time?
1372 Make the most of the opportunity.
1374 If you are going to convert the script to a module you can use the
1375 opportunity to redesign the interface. The guidelines for module
1376 creation above include many of the issues you should consider.
1380 The pl2pm utility will get you started.
1382 This utility will read *.pl files (given as parameters) and write
1383 corresponding *.pm files. The pl2pm utilities does the following:
1389 Adds the standard Module prologue lines
1393 Converts package specifiers from ' to ::
1397 Converts die(...) to croak(...)
1401 Several other minor changes
1405 Being a mechanical process pl2pm is not bullet proof. The converted
1406 code will need careful checking, especially any package statements.
1407 Don't delete the original .pl file till the new .pm one works!
1411 =head2 Guidelines for Reusing Application Code
1417 Complete applications rarely belong in the Perl Module Library.
1421 Many applications contain some Perl code that could be reused.
1423 Help save the world! Share your code in a form that makes it easy
1428 Break-out the reusable code into one or more separate module files.
1432 Take the opportunity to reconsider and redesign the interfaces.
1436 In some cases the 'application' can then be reduced to a small
1438 fragment of code built on top of the reusable modules. In these cases
1439 the application could invoked as:
1441 % perl -e 'use Module::Name; method(@ARGV)' ...
1443 % perl -mModule::Name ... (in perl5.002 or higher)
1449 Perl does not enforce private and public parts of its modules as you may
1450 have been used to in other languages like C++, Ada, or Modula-17. Perl
1451 doesn't have an infatuation with enforced privacy. It would prefer
1452 that you stayed out of its living room because you weren't invited, not
1453 because it has a shotgun.
1455 The module and its user have a contract, part of which is common law,
1456 and part of which is "written". Part of the common law contract is
1457 that a module doesn't pollute any namespace it wasn't asked to. The
1458 written contract for the module (A.K.A. documentation) may make other
1459 provisions. But then you know when you C<use RedefineTheWorld> that
1460 you're redefining the world and willing to take the consequences.
1463 close MANIFEST or warn "$0: failed to close MANIFEST (../MANIFEST): $!";
1464 close OUT or warn "$0: failed to close OUT (perlmodlib.tmp): $!";