├── .gitignore ├── src ├── misc │ ├── gif │ │ ├── funet.gif │ │ ├── vcss.gif │ │ └── valid-xhtml10.gif │ ├── jpg │ │ └── cpan.jpg │ ├── images │ │ ├── cpan.png │ │ ├── fastly.png │ │ ├── phyber.png │ │ ├── bg_gradient.jpg │ │ └── menubar_highlight.png │ ├── css │ │ └── cpan.css │ ├── how-to-mirror.html │ └── cpan-faq.html ├── robots.txt ├── _modules │ ├── EDITORS_README │ ├── by-authors │ │ └── id │ │ │ └── index.html │ ├── index.html │ └── INSTALL.html ├── ports │ ├── oses │ │ ├── list.html │ │ ├── linux.tt_data │ │ ├── cygwin.tt_data │ │ ├── win32.tt_data │ │ ├── centos.tt_data │ │ ├── redhat.tt_data │ │ ├── solaris.tt_data │ │ ├── _template.tt_data │ │ ├── hpux.tt_data │ │ ├── openbsd.tt_data │ │ ├── aix.tt_data │ │ ├── debian.tt_data │ │ ├── slackware.tt_data │ │ ├── mac_osx.tt_data │ │ ├── ubuntu.tt_data │ │ ├── fedora.tt_data │ │ └── suse.tt_data │ ├── index.html │ ├── README │ └── binaries.html ├── indices │ └── README ├── src │ ├── misc │ │ └── README │ └── README.html ├── SITES.html ├── disclaimer.html ├── doc │ └── index.html ├── ENDINGS └── index.html ├── .whitesource ├── bin ├── update_data ├── update_master ├── cpanorg_rss_fetch └── cpanorg_perl_releases ├── lib ├── tpl │ ├── data │ │ └── cpan-stats │ ├── wrapper │ ├── straps.html │ └── defaults └── style │ └── cpan.html ├── Dockerfile ├── tt.rc ├── Makefile ├── dependencies.rc └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | /html/ 3 | /data/ 4 | 5 | # for development with docker 6 | /root/ 7 | -------------------------------------------------------------------------------- /src/misc/gif/funet.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tux/cpanorg/HEAD/src/misc/gif/funet.gif -------------------------------------------------------------------------------- /src/misc/gif/vcss.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tux/cpanorg/HEAD/src/misc/gif/vcss.gif -------------------------------------------------------------------------------- /src/misc/jpg/cpan.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tux/cpanorg/HEAD/src/misc/jpg/cpan.jpg -------------------------------------------------------------------------------- /src/misc/images/cpan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tux/cpanorg/HEAD/src/misc/images/cpan.png -------------------------------------------------------------------------------- /src/misc/images/fastly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tux/cpanorg/HEAD/src/misc/images/fastly.png -------------------------------------------------------------------------------- /src/misc/images/phyber.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tux/cpanorg/HEAD/src/misc/images/phyber.png -------------------------------------------------------------------------------- /src/misc/gif/valid-xhtml10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tux/cpanorg/HEAD/src/misc/gif/valid-xhtml10.gif -------------------------------------------------------------------------------- /src/misc/images/bg_gradient.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tux/cpanorg/HEAD/src/misc/images/bg_gradient.jpg -------------------------------------------------------------------------------- /src/misc/images/menubar_highlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tux/cpanorg/HEAD/src/misc/images/menubar_highlight.png -------------------------------------------------------------------------------- /src/robots.txt: -------------------------------------------------------------------------------- 1 | # Hello Robots! 2 | # Welcome to CPAN. 3 | 4 | User-agent: * 5 | Disallow: /badrobot/ 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/_modules/EDITORS_README: -------------------------------------------------------------------------------- 1 | NOTE: 2 | 3 | Files in here need be symlinked into PAUSE, they 4 | will served from /modules/... NOT /_modules/... 5 | -------------------------------------------------------------------------------- /.whitesource: -------------------------------------------------------------------------------- 1 | { 2 | "generalSettings": { 3 | "shouldScanRepo": true 4 | }, 5 | "checkRunSettings": { 6 | "vulnerableCheckRunConclusionLevel": "failure" 7 | } 8 | } -------------------------------------------------------------------------------- /bin/update_data: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env perl 2 | use strict; 3 | use warnings; 4 | use LWP::Simple qw(mirror); 5 | 6 | mirror("http://www.cpan.org/indices/cpan-stats.json", "data/cpan-stats.json"); 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /lib/tpl/data/cpan-stats: -------------------------------------------------------------------------------- 1 | [%- json_data = INSERT "cpan-stats.json" %] 2 | [% 3 | data = JSON.json_decode(json_data); 4 | cpan_stats.import(data); 5 | # USE Dumper; 6 | # Dumper.dump_html(cpan_stats, data); 7 | %] 8 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM quay.io/perl/base-os:v3.0 2 | 3 | ENV LAST_UPDATED 2017-10-04 4 | 5 | USER root 6 | RUN apk add rsync 7 | RUN cpanm File::Rsync File::Rsync::Mirror::Recent XML::RSS Linux::Inotify2; rm -fr ~/.cpanm 8 | RUN cat /tmp/rrr-server-fsck.patch | patch -p3 /usr/local/bin/rrr-server 9 | 10 | -------------------------------------------------------------------------------- /lib/tpl/wrapper: -------------------------------------------------------------------------------- 1 | [%- content = PROCESS $template; 2 | 3 | #USE Dumper; Dumper.dump_html(page template); 4 | 5 | IF !template.name.search('.html') OR page.style == 'none'; 6 | content; 7 | ELSE; 8 | default_style_template = "style/" _ page.style; 9 | PROCESS $default_style_template; 10 | END; 11 | %] 12 | -------------------------------------------------------------------------------- /tt.rc: -------------------------------------------------------------------------------- 1 | ignore = \.svn 2 | ignore = ^# 3 | ignore = ~$ 4 | ignore = .DS_Store 5 | ignore = \.tt$ 6 | ignore = \.swp$ 7 | 8 | depend_file = dependencies.rc 9 | 10 | copy = \.(gif|png|pdf|jpg)$ 11 | 12 | #verbose 13 | 14 | recurse 15 | 16 | pre_process = tpl/defaults 17 | process = tpl/wrapper 18 | 19 | dest = html 20 | lib = lib 21 | lib = data 22 | -------------------------------------------------------------------------------- /bin/update_master: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | #cd ~/cpan/content 4 | 5 | current=`git rev-list -n 1 HEAD` 6 | git pull --rebase 7 | new=`git rev-list -n 1 HEAD` 8 | 9 | if [ "$current" != "$new" ]; then 10 | echo "Tagging" 11 | now=`TZ=UTC date +'%Y%m%d-%H%M'` 12 | git tag -s $now -m "Release to master mirror" 13 | git push origin tag $now 14 | fi 15 | 16 | make update-master 17 | 18 | -------------------------------------------------------------------------------- /src/ports/oses/list.html: -------------------------------------------------------------------------------- 1 | [% 2 | # The list of OS'es - each one must have a ports/oses/.tt_data file 3 | SET os_list = [ 4 | 'aix', 5 | 'centos', 6 | 'cygwin', 7 | 'debian', 8 | 'fedora', 9 | 'hpux', 10 | 'linux', 11 | 'mac_osx', 12 | 'openbsd', 13 | 'redhat', 14 | 'slackware', 15 | 'solaris', 16 | 'suse', 17 | 'ubuntu', 18 | 'win32', 19 | ]; 20 | 21 | %] 22 | 23 | -------------------------------------------------------------------------------- /lib/tpl/straps.html: -------------------------------------------------------------------------------- 1 | [%- 2 | USE Math; 3 | 4 | module_count = cpan_stats.modules.count | comma; 5 | 6 | SET straps = [ 7 | "${module_count} open source Perl modules ready to download and use", 8 | "Stop reinventing wheels, start building space rockets", 9 | "Over 20 years of Perl libraries at your fingertips", 10 | "You can never have too many Perl modules", 11 | "LWPs, POEs, and DBIs -- oh my!", 12 | ]; 13 | SET strapid = Math.int(Math.rand(straps.size())); 14 | straps.${strapid}; 15 | -%] 16 | -------------------------------------------------------------------------------- /src/ports/oses/linux.tt_data: -------------------------------------------------------------------------------- 1 | [% 2 | # Setup information 3 | os_config = { 4 | name => 'Linux', 5 | information_last_verified => '2011-03-26', 6 | } 7 | %] 8 | 9 | [% BLOCK show_os %] 10 | 11 |

12 | Almost all Linux distributions come with Perl, or you are 13 | able to install Perl through their package management system. 14 |

15 | 16 | [% PROCESS binary_view binary_source => [ 17 | { 18 | name => 'ActiveState', 19 | url => activestate_url, 20 | notes => '', 21 | }, 22 | 23 | ] 24 | %] 25 |
26 | 27 | [% END %] -------------------------------------------------------------------------------- /src/ports/oses/cygwin.tt_data: -------------------------------------------------------------------------------- 1 | [% 2 | # Setup information 3 | os_config = { 4 | name => 'Cygwin', 5 | url => 'http://www.cygwin.com/', 6 | vendor => '', 7 | information_last_verified => '2011-04-13', 8 | } 9 | %] 10 | 11 | [% BLOCK show_os %] 12 | 13 | [% PROCESS version_view os_versions => { 14 | versions => [ 15 | { 16 | os_name => '', 17 | os_version => '1.7', 18 | os_release => '2010-01-21', 19 | perl_version => '5.10.1', 20 | }, 21 | 22 | { 23 | os_name => '', 24 | os_version => '1.5', 25 | os_release => '', 26 | perl_version => '5.10.1', 27 | }, 28 | 29 | ], 30 | } %] 31 | 32 | [% END %] -------------------------------------------------------------------------------- /src/indices/README: -------------------------------------------------------------------------------- 1 | CPAN/indices/README 2 | 3 | This document describes the indices subdirectories of the CPAN. 4 | 5 | The directories contains various index views of CPAN. 6 | --- 7 | 8 | mirrors.json CPAN mirrors list in JSON format 9 | RECENT-ls the recent (7 days) arrivals to CPAN as seen by find -ls 10 | RECENT-print ditto with find -print (the same file as CPAN/RECENT) 11 | du-k.gz disk usage by directory (du -k) 12 | find-ls.gz find -ls output (*) 13 | ls-R.gz ls -R output 14 | ls-ltR ls -ltR output 15 | 16 | --- 17 | 18 | (*) find-ls format: 19 | 20 | inode kB mode nlinks user group bytes mtime:ctime filename 21 | 22 | for files and directories, and 23 | 24 | inode 0 "l" 1 user group bytes mtime:ctime slinkname targetname 25 | 26 | for symbolic links. 27 | 28 | # eof 29 | -------------------------------------------------------------------------------- /src/ports/oses/win32.tt_data: -------------------------------------------------------------------------------- 1 | [% 2 | # Setup information 3 | os_config = { 4 | name => 'Windows', 5 | url => 'http://www.microsoft.com/windows/', 6 | vendor => 'Microsoft', 7 | not_included_in_os_packages => 1, 8 | information_last_verified => '2011-03-26', 9 | 10 | } 11 | %] 12 | 13 | [% BLOCK show_os %] 14 |

15 | Windows does not come with Perl by default. 16 |

17 | 18 | [% PROCESS binary_view binary_source => [ 19 | { 20 | name => 'Strawberry Perl', 21 | url => 'http://strawberryperl.com/', 22 | notes => '' 23 | }, 24 | { 25 | name => 'ActiveState', 26 | url => activestate_url, 27 | notes => '' 28 | }, 29 | 30 | ] 31 | %] 32 |
33 | 34 | 35 | [% END %] -------------------------------------------------------------------------------- /src/src/misc/README: -------------------------------------------------------------------------------- 1 | CPAN/src/misc/README 2 | 3 | This document describes the src/misc subdirectory of the CPAN. 4 | 5 | The directory contains sources possibly relevant to Perl. 6 | 7 | --- 8 | 9 | anlpasswd* a passwd(1) replacement using Perl 10 | (checks passwords proactively using dictionaries and patterns) 11 | 12 | db* Berkeley DB sources for use with 13 | the Perl 5 database extensions 14 | 15 | gdbm* GNU dbm sources for use with 16 | the Perl 5 database extensions 17 | 18 | nvi* new vi with embedded Perl (among other things) 19 | 20 | perl-byacc* Berkeley Yacc that can output grammars in Perl 4 21 | 22 | perl5-byacc* Berkeley Yacc that can output grammars in Perl 5 23 | 24 | sfio* stdio replacement from AT&T. 25 | Stackable stream disciplines and other cool stuff. 26 | 27 | # eof 28 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | 2 | EXT_BAT= 3 | EXT_EXE= 4 | CPANM=cpanm$(EXT_BAT) 5 | PERL=perl$(EXT_EXE) 6 | TTREE=ttree$(EXT_BAT) 7 | RSYNC=rsync$(EXT_EXE) 8 | 9 | SRC=src 10 | 11 | all: build 12 | 13 | clean: buildclean 14 | 15 | update: update-data build 16 | 17 | update-master: update 18 | @$(RSYNC) --temp-dir=/cpan/tmp -a html/ ../CPAN/ 19 | 20 | buildclean: rmclean build 21 | 22 | rmclean: 23 | $(PERL) -MExtUtils::Command -e "rm_rf" -- html 24 | 25 | build: data/cpan-stats.json 26 | @$(TTREE) "--src=$(SRC)" -f tt.rc 27 | 28 | data/cpan-stats.json: update-data 29 | 30 | update-data: 31 | @$(PERL) ./bin/cpanorg_rss_fetch 32 | @$(PERL) ./bin/update_data 33 | 34 | update-daily: 35 | @$(PERL) ./bin/cpanorg_perl_releases 36 | 37 | install: 38 | $(CPANM) Template JSON Template::Plugin::Comma Template::Plugin::JSON XML::RSS local::lib File::Slurp 39 | 40 | -------------------------------------------------------------------------------- /src/_modules/by-authors/id/index.html: -------------------------------------------------------------------------------- 1 | [% 2 | page.import({ 3 | title => "Perl Modules by author ID", 4 | section => 'modules', 5 | stub => '../../../', 6 | canonical => 'modules/by-authors/id/', 7 | }); 8 | %] 9 | 10 |

Perl Modules by author ID

11 | 12 |

13 | Author ID (the ID is chosen by module authors) breaks down as follows. 14 | Given an author ID, such as LLAP, the directory will be 15 | L/LL/LLAP. 16 |

17 | 18 | 19 | 20 | [% USE table(['A'..'Z'], cols=3, pad=0); 21 | FOREACH group = table.cols %] 22 | 29 | [% END %] 30 | 31 |
23 |
    24 | [% FOREACH letter = group %] 25 |
  • [% letter %]
  • 26 | [% END %] 27 |
28 |
32 | -------------------------------------------------------------------------------- /dependencies.rc: -------------------------------------------------------------------------------- 1 | 2 | *: tpl/wrapper tpl/defaults style/cpan.html tpl/straps.html 3 | SITES.html : SITES-list.html 4 | index.html : recent.json cpan-stats.json 5 | misc/cpan-faq.html : cpan-stats.json 6 | src/README.html : perl_version_latest_stable.json perl_versions_latest.json perl_versions_earliest.json 7 | 8 | misc/how-to-mirror.html : cpan-stats.json 9 | 10 | # the dependency stuff doesn't know about wildcards in the values 11 | ports/binaries.html : ports/oses/_template.tt_data \ 12 | ports/oses/aix.tt_data ports/oses/centos.tt_data \ 13 | ports/oses/cygwin.tt_data ports/oses/debian.tt_data \ 14 | ports/oses/fedora.tt_data ports/oses/hpux.tt_data \ 15 | ports/oses/linux.tt_data ports/oses/mac_osx.tt_data \ 16 | ports/oses/openbsd.tt_data \ 17 | ports/oses/redhat.tt_data ports/oses/slackware.tt_data \ 18 | ports/oses/solaris.tt_data ports/oses/suse.tt_data \ 19 | ports/oses/ubuntu.tt_data ports/oses/win32.tt_data 20 | -------------------------------------------------------------------------------- /lib/tpl/defaults: -------------------------------------------------------------------------------- 1 | [%- 2 | USE Comma; 3 | USE JSON; 4 | 5 | page = { 6 | title = template.title, 7 | style = template.style or 'cpan.html' 8 | stub = '', 9 | }; 10 | 11 | # Configuration for this site 12 | SET site = { 13 | name => 'www.cpan.org', 14 | crum => 'Home', 15 | }; 16 | 17 | # Defaults ( should be overwritten through tpl/data/cpan-stats ) 18 | SET cpan_stats = {}; 19 | 20 | PROCESS "tpl/data/cpan-stats"; 21 | 22 | -%] 23 | [%- BLOCK rss_feed %] 24 | [% TRY %] 25 | [% json_data = INSERT $conf.json_file %] 26 | [% items = JSON.json_decode(json_data) %] 27 | 34 | [% CATCH %] 35 | [% END %] 36 | [% END -%] 37 | -------------------------------------------------------------------------------- /bin/cpanorg_rss_fetch: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env perl 2 | 3 | # Fetch the most recent module releases and save out as JSON 4 | 5 | use strict; 6 | use warnings; 7 | use local::lib; 8 | use File::Temp; 9 | use XML::RSS; 10 | use JSON; 11 | use LWP::Simple qw(mirror RC_OK); 12 | use File::Path qw(mkpath); 13 | 14 | mkpath 'data', 0755 unless -e 'data'; 15 | 16 | process_rss( 17 | { out => 'data/recent.json', 18 | url => "https://metacpan.org/feed/recent", 19 | } 20 | ); 21 | 22 | sub process_rss { 23 | my $conf = shift; 24 | 25 | my $local = $conf->{out} . ".rss"; 26 | 27 | return unless mirror($conf->{url}, $local) == RC_OK; 28 | 29 | my $rss = XML::RSS->new; 30 | $rss->parsefile( $local ); 31 | my $items = $rss->{'items'}; 32 | 33 | my $j = JSON->new(); 34 | 35 | my $json_file = $conf->{out}; 36 | 37 | open my $fh, ">:utf8", $json_file 38 | or die "Could not open $json_file: $!"; 39 | print $fh $j->encode($items); 40 | close $fh; 41 | } 42 | -------------------------------------------------------------------------------- /src/ports/oses/centos.tt_data: -------------------------------------------------------------------------------- 1 | [% 2 | # Setup information 3 | os_config = { 4 | # Name of the OS 5 | name => 'CentOS', 6 | 7 | # URL of the OS (e.g. www.m) 8 | url => 'http://www.centos.org/', 9 | 10 | # Is it a specific vendor who runs the OS? 11 | vendor => '', 12 | 13 | # Specifying linux will add a 'see also' 14 | kernel => 'linux', 15 | 16 | # When was this file last reviewed (yyyy-mm-dd)? 17 | information_last_verified => '2014-12-23', 18 | } 19 | %] 20 | 21 | [% BLOCK show_os %] 22 | 23 | [% PROCESS version_view os_versions => { 24 | versions => [ 25 | { 26 | os_name => '', 27 | os_version => '7', 28 | os_release => '2014-7-7', 29 | perl_version => '5.16.1', 30 | }, 31 | 32 | { 33 | os_name => '', 34 | os_version => '6', 35 | os_release => '2011-7-10', 36 | perl_version => '5.10.1', 37 | }, 38 | 39 | { 40 | os_name => '', 41 | os_version => '5', 42 | os_release => '2007-4-01', 43 | perl_version => '5.8.8', 44 | }, 45 | 46 | { 47 | os_name => '', 48 | os_version => '4', 49 | os_release => '', 50 | perl_version => '5.8.5', 51 | }, 52 | 53 | ], 54 | } %] 55 | 56 | [% END %] 57 | -------------------------------------------------------------------------------- /src/ports/oses/redhat.tt_data: -------------------------------------------------------------------------------- 1 | [% 2 | # Setup information 3 | os_config = { 4 | name => 'Redhat', 5 | url => 'http://www.redhat.com/', 6 | vendor => 'Red Hat, Inc.', 7 | kernel => 'linux', 8 | information_last_verified => '2014-12-23', 9 | } 10 | %] 11 | 12 | [% BLOCK show_os %] 13 | 14 | 15 | [% PROCESS binary_view binary_source => [ 16 | { 17 | name => 'ActiveState', 18 | url => activestate_url, 19 | notes => '' 20 | }, 21 | 22 | ] 23 | %] 24 | 25 | [% PROCESS version_view os_versions => { 26 | versions => [ 27 | { 28 | os_name => '', 29 | os_version => '7', 30 | os_release => '2014-07-10', 31 | perl_version => '5.16.3', 32 | }, 33 | { 34 | os_name => '', 35 | os_version => '6', 36 | os_release => '2010-11-01', 37 | perl_version => '5.10.1', 38 | }, 39 | { 40 | os_name => '', 41 | os_version => '5', 42 | os_release => '2007-03-01', 43 | perl_version => '5.8.8', 44 | }, 45 | { 46 | os_name => '', 47 | os_version => '4', 48 | os_release => '2005-02-01', 49 | perl_version => '5.8.5', 50 | }, 51 | { 52 | os_name => '', 53 | os_version => '3', 54 | perl_version => '5.8.1 / 5.8.3', 55 | }, 56 | { 57 | os_name => '', 58 | os_version => '2.1', 59 | perl_version => '5.8.0 prerelease', 60 | }, 61 | 62 | ], 63 | } %] 64 | 65 | 66 | 67 | 68 | [% END %] 69 | -------------------------------------------------------------------------------- /src/ports/index.html: -------------------------------------------------------------------------------- 1 | [% 2 | page.import({ 3 | title => "Perl Ports - Perl on different platforms", 4 | section => 'ports', 5 | stub => '../', 6 | }); 7 | 8 | PROCESS ports/oses/list.html; 9 | 10 | %] 11 | 12 |

Perl Ports (Binary Distributions)

13 | 14 | 36 | 37 |

What OS do you run?

38 | 39 | 46 |
47 | 48 | 49 | -------------------------------------------------------------------------------- /src/ports/oses/solaris.tt_data: -------------------------------------------------------------------------------- 1 | [% 2 | # Setup information 3 | os_config = { 4 | # Name of the OS 5 | name => 'Solaris', 6 | 7 | # URL of the OS (e.g. http://www.microsoft.com/windows/) 8 | url => '', 9 | 10 | # Is it a specific vendor who runs the OS? 11 | vendor => '', 12 | 13 | # Specifying linux will add a 'see also' 14 | kernel => '', 15 | 16 | # When was this file last reviewed (yyyy-mm-dd)? 17 | information_last_verified => '2011-03-26', 18 | } 19 | %] 20 | 21 | [% BLOCK show_os %] 22 | 23 | [% PROCESS binary_view binary_source => [ 24 | { 25 | name => 'ActiveState (commercial)', 26 | url => activestate_url, 27 | notes => '' 28 | }, 29 | { 30 | name => 'Sunfreeware', 31 | url => 'http://www.sunfreeware.com/', 32 | notes => '' 33 | } 34 | ] 35 | %] 36 | 37 | [% PROCESS version_view os_versions => { 38 | versions => [ 39 | { 40 | os_name => '', 41 | os_version => '11 Express', 42 | os_release => '2010-11-01', 43 | perl_version => '5.10.0, 5.8.4', 44 | }, 45 | 46 | { 47 | os_name => '', 48 | os_version => '10', 49 | os_release => '2010-09-01', 50 | perl_version => '5.8.4, 5.6.1', 51 | }, 52 | 53 | { 54 | os_name => '', 55 | os_version => '9', 56 | os_release => '', 57 | perl_version => '5.6.1', 58 | }, 59 | 60 | { 61 | os_name => '', 62 | os_version => '8', 63 | os_release => '', 64 | perl_version => '5.005_03', 65 | }, 66 | ], 67 | } %] 68 | 69 | 70 | [% END %] -------------------------------------------------------------------------------- /src/ports/oses/_template.tt_data: -------------------------------------------------------------------------------- 1 | [% 2 | # Setup information 3 | os_config = { 4 | # Name of the OS 5 | name => '', 6 | 7 | # URL of the OS (e.g. http://www.microsoft.com/windows/) 8 | url => '', 9 | 10 | # Is it a specific vendor who runs the OS? 11 | vendor => '', 12 | 13 | # Specifying linux will add a 'see also' 14 | kernel => 'linux', 15 | 16 | # Only needed for Windows so far 17 | # not_included_in_os_packages => 1, 18 | 19 | # When was this file last reviewed (yyyy-mm-dd)? 20 | information_last_verified => '2011-03-26', 21 | } 22 | %] 23 | 24 | [% BLOCK show_os %] 25 | 26 |

Some basic copy, can go here

27 | 28 | [% PROCESS binary_view binary_source => [ 29 | { 30 | name => 'ActiveState', 31 | url => activestate_url, 32 | notes => '' 33 | }, 34 | { 35 | name => '', 36 | url => '', 37 | notes => '' 38 | }, 39 | ] 40 | %] 41 | 42 | [% PROCESS version_view os_versions => { 43 | versions => [ 44 | { 45 | # name and/or version 46 | os_name => '', 47 | os_version => '', 48 | os_release => '', # optional release date of the os (yyyy-mm-dd) 49 | # include '+patches' if applicable please (e.g. Debian) 50 | # (so people know they would not get the same by just building themselves) 51 | perl_version => '', 52 | 53 | }, 54 | { 55 | os_name => '', 56 | os_version => '', 57 | perl_version => '', 58 | }, 59 | 60 | ], 61 | } %] 62 | 63 |

Add specific instructions for building from source here 64 | 65 | 66 | 67 | [% END %] -------------------------------------------------------------------------------- /src/ports/oses/hpux.tt_data: -------------------------------------------------------------------------------- 1 | [% 2 | # Setup information 3 | os_config = { 4 | # Name of the OS 5 | name => 'HP-UX', 6 | 7 | # URL of the OS (e.g. http://www.microsoft.com/windows/) 8 | url => '', 9 | 10 | # Is it a specific vendor who runs the OS? 11 | vendor => '', 12 | 13 | # Specifying linux will add a 'see also' 14 | kernel => '', 15 | 16 | # When was this file last reviewed (yyyy-mm-dd)? 17 | information_last_verified => '2011-03-26', 18 | } 19 | %] 20 | 21 | [% BLOCK show_os %] 22 | 23 | [% PROCESS binary_view binary_source => [ 24 | { 25 | name => "Merijn's HP-UX software", 26 | url => 'http://mirrors.develooper.com/hpux/', 27 | notes => '' 28 | }, 29 | { 30 | name => 'ActiveState (commercial)', 31 | url => activestate_url, 32 | notes => '' 33 | }, 34 | ] 35 | %] 36 | 37 | [% PROCESS version_view os_versions => { 38 | versions => [ 39 | { 40 | os_name => '', 41 | os_version => '11.31/IPF', 42 | os_release => '', 43 | perl_version => '5.8.8', 44 | }, 45 | 46 | { 47 | os_name => '', 48 | os_version => '11.23/IPF', 49 | os_release => '', 50 | perl_version => '5.8.8', 51 | }, 52 | 53 | { 54 | os_name => '', 55 | os_version => '11.11/PA', 56 | os_release => '', 57 | perl_version => '5.005_02', 58 | }, 59 | 60 | { 61 | os_name => '', 62 | os_version => '11.00/PA', 63 | os_release => '', 64 | perl_version => '4.0 PL36', 65 | }, 66 | 67 | { 68 | os_name => '', 69 | os_version => '10.20/PA', 70 | os_release => '', 71 | perl_version => '4.0 PL36', 72 | }, 73 | 74 | ], 75 | } %] 76 | 77 | 78 | [% END %] -------------------------------------------------------------------------------- /src/ports/oses/openbsd.tt_data: -------------------------------------------------------------------------------- 1 | [% 2 | # Setup information 3 | os_config = { 4 | # Name of the OS 5 | name => 'OpenBSD', 6 | 7 | # URL of the OS (e.g. http://www.microsoft.com/windows/) 8 | url => 'http://www.openbsd.org/', 9 | 10 | # Is it a specific vendor who runs the OS? 11 | vendor => '', 12 | 13 | # Specifying linux will add a 'see also' 14 | kernel => '', 15 | 16 | # When was this file last reviewed (yyyy-mm-dd)? 17 | information_last_verified => '2011-03-26', 18 | } 19 | %] 20 | 21 | [% BLOCK show_os %] 22 | 23 | [% PROCESS binary_view binary_source => [ 24 | { 25 | name => 'ActiveState', 26 | url => activestate_url, 27 | notes => '' 28 | }, 29 | ] 30 | %] 31 | 32 | [% PROCESS version_view os_versions => { 33 | versions => [ 34 | { 35 | os_name => '', 36 | os_version => '4.9', 37 | os_release => '', 38 | perl_version => '5.12.2', 39 | }, 40 | { 41 | os_name => '', 42 | os_version => '4.8', 43 | os_release => '2010-11-01', 44 | perl_version => '5.10.1', 45 | }, 46 | 47 | { 48 | os_name => '', 49 | os_version => '4.7', 50 | os_release => '2010-05-01', 51 | perl_version => '5.10.1', 52 | }, 53 | 54 | { 55 | os_name => '', 56 | os_version => '4.6', 57 | os_release => '2009-10-01', 58 | perl_version => '5.10.0', 59 | }, 60 | 61 | { 62 | os_name => '', 63 | os_version => '4.5', 64 | os_release => '2009-05-01', 65 | perl_version => '5.10.0', 66 | }, 67 | { 68 | os_name => '4', 69 | os_version => '4', 70 | os_release => '2006-11-01', 71 | perl_version => '5.8.8', 72 | }, 73 | 74 | 75 | ], 76 | } %] 77 | 78 | 79 | [% END %] -------------------------------------------------------------------------------- /src/ports/oses/aix.tt_data: -------------------------------------------------------------------------------- 1 | [% 2 | # Setup information 3 | os_config = { 4 | # Name of the OS 5 | name => 'AIX', 6 | 7 | # URL of the OS (e.g. www.m) 8 | url => 'http://www.ibm.com/developerworks/aix/', 9 | 10 | # Is it a specific vendor who runs the OS? 11 | vendor => 'IBM', 12 | 13 | # Specifying linux will add a 'see also' 14 | kernel => '', 15 | 16 | # When was this file last reviewed? 17 | information_last_verified => '2011-03-26', 18 | } 19 | %] 20 | 21 | [% BLOCK show_os %] 22 | 23 | [% PROCESS binary_view binary_source => [ 24 | { 25 | name => 'ActiveState (commercial)', 26 | url => activestate_url, 27 | notes => '' 28 | }, 29 | ] 30 | %] 31 | 32 | [% PROCESS version_view os_versions => { 33 | versions => [ 34 | 35 | { 36 | os_name => '', 37 | os_version => '7.1', 38 | os_release => '2010-09-10', 39 | perl_version => '5.10.1', 40 | }, 41 | 42 | { 43 | os_name => '', 44 | os_version => '6.1', 45 | os_release => '2007-11-01', 46 | perl_version => '5.8.2', 47 | }, 48 | 49 | { 50 | os_name => '', 51 | os_version => '5.3', 52 | os_release => '2004-08-01', 53 | perl_version => '5.8.2', 54 | }, 55 | 56 | { 57 | os_name => '', 58 | os_version => '5.2', 59 | os_release => '2002-10-01', 60 | perl_version => '5.8.0', 61 | }, 62 | 63 | { 64 | os_name => '', 65 | os_version => '5.1', 66 | os_release => '2001-05-01', 67 | perl_version => '5.6.0', 68 | }, 69 | 70 | { 71 | os_name => '', 72 | os_version => '4.3', 73 | os_release => '2007-10-01', 74 | perl_version => '5.005_03', 75 | }, 76 | 77 | ], 78 | } %] 79 | 80 | 81 | [% END %] 82 | -------------------------------------------------------------------------------- /src/SITES.html: -------------------------------------------------------------------------------- 1 | [% 2 | page.import({ 3 | title => "CPAN Sites", 4 | section => 'home', 5 | }); 6 | %] 7 | [% page.head = BLOCK %] 8 | 10 | 12 | [% END %] 13 | 14 |

15 | CPAN Mirror Network 16 |

17 |

18 | [% cpan_stats.mirrors.count | comma %] registered sites around the world 19 | make up the N part of CPAN (the Network), find the full list 20 | below. 21 |

22 |

23 | The master CPAN site is hosted by Phyber in Los Angeles, California. 25 |

26 |

27 | If you wish to mirror (either privately or publicly) please see how to mirror CPAN. 29 |

30 | 31 |

Mirror status

32 | 33 |

34 | http://mirrors.cpan.org/ keeps 35 | track of the status of the mirrors below. 36 |

37 | 38 |

Registered public CPAN sites

39 | 40 | 41 | [% TRY %] 42 | [% INCLUDE "SITES-list.html" %] 43 | [% CATCH %] 44 |

45 | The SITES-list.html should be included here 46 |

47 | [% END %] 48 | 49 |

Feedback

50 |

51 | You can send email to the CPAN 52 | administrators, cpan@perl.org. 53 |

54 | 55 |

56 | Thank You 57 |

58 |

59 | We would like to thank all of the mirrors who, throughout the years and 60 | every day, make the CPAN possible and such a valuable resource to the Perl 61 | community. 62 |

63 | 64 | 65 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CPAN.org content repository 2 | 3 | This repository is for maintaining the non-source-code, non-archive 4 | content on cpan.org. Discussion related to this should be on the 5 | [cpan-workers mailing list][cpan-workers]. 6 | 7 | [cpan-workers]: http://lists.perl.org/list/cpan-workers.html 8 | 9 | ## Rules for editing content: 10 | 11 | * Don't add new output files. Only files already on cpan.org should be 12 | added (and then to their current location). Generally email 13 | ask@perl.org to get new files included here. Making new 14 | templates/scripts/etc to produce the output files is fine. 15 | 16 | * Be conservative in your edits. While lots of updates are needed, 17 | this has been around for 20 years and will be for many more. There's 18 | no rush. 19 | 20 | * No style edits for now. Cleanups yes; but a new design/layout will 21 | wait. 22 | 23 | ## How to submit changes 24 | 25 | A 'pull request' on github is the best way. Sending a patch to the 26 | cpan-workers list at the same time will be a good way to get peer 27 | review. A change with a few "+1" votes from the list are more likely 28 | to be expediently pulled in. 29 | 30 | ## How it works 31 | 32 | Install Template Toolkit and the other requirements with `cpanm` by running `make install`. 33 | 34 | To fetch the data needed for the site, run `make update-data update-daily`. 35 | 36 | Then run `make`. This will in turn run `ttree` and generate output 37 | files in the html/ directory. 38 | 39 | Image files are copied plainly to the html/ directory. 40 | 41 | Everything else is processed through template toolkit. Only .html 42 | files get the "master template" applied automatically. 43 | 44 | ## Run under docker 45 | 46 | Experimental, you can build the content from theses templates with: 47 | 48 | mkdir -p root/tmp root/CPAN 49 | docker run --rm -ti \ 50 | -v `pwd`:/cpan/content -v `pwd`/root:/cpan \ 51 | -w /cpan/content \ 52 | quay.io/perl/cpanorg:master \ 53 | make build update-data update-master 54 | -------------------------------------------------------------------------------- /src/disclaimer.html: -------------------------------------------------------------------------------- 1 | [% 2 | page.import({ 3 | title => "Disclaimer", 4 | section => 'home', 5 | }); 6 | %] 7 | [% page.head = BLOCK %] 8 | 9 | 11 | [% END %] 12 |

13 | CPAN: Disclaimer 14 |

15 |

16 | CPAN makes no warranties, implied or otherwise, about the suitability of 17 | the software contained within CPAN. CPAN shall not in any case be liable 18 | for special, incidental, consequential, indirect or other similar damages 19 | arising from the transfer, storage, or use of the material stored herein. 20 |

21 |

22 | CPAN is maintained CPAN completely for free as a service to the Perl 23 | community. Files uploaded to CPAN are NOT manually inspected. Of course we 24 | will be very interested to hear if some file contains nasties like Trojan 25 | horses and/or virii, but CPAN takes no responsibility for the contents of 26 | CPAN or what they might do. 27 |

28 |

29 | If you plan to do something commercial out of CPAN such as put it on a 30 | CD-ROM disk, stop right there and think for a moment. We cannot give you 31 | the permission. Larry Wall cannot give you the permission. There is no 32 | single entity on this planet that can give you the permission. Legally 33 | there is no other way than to ask separately from each and every author of 34 | all the separate pieces of software and documentation in CPAN. No, we do 35 | not maintain a list of these authors nor do we intend to. Nobody does and 36 | nobody can. We are not stopping you from making a CD-ROM, just reminding 37 | you. 38 |

39 |

40 | No doubt these short documents raise more questions than they answer. 41 | Please do not hesitate to contact us and point out where we could do 42 | better. 43 |

44 |

45 | cpan@perl.org
46 |

47 | 48 | -------------------------------------------------------------------------------- /src/ports/oses/debian.tt_data: -------------------------------------------------------------------------------- 1 | [% 2 | # Setup information 3 | os_config = { 4 | name => 'Debian', 5 | url => 'http://www.debian.org/', 6 | kernel => 'linux', 7 | information_last_verified => '2017-10-04', 8 | } 9 | %] 10 | 11 | [% BLOCK show_os %] 12 | 13 | [% PROCESS binary_view binary_source => [ 14 | { 15 | name => 'Backports', 16 | url => 'http://backports.debian.org/', 17 | notes => '', 18 | }, 19 | { 20 | name => 'ActiveState', 21 | url => activestate_url, 22 | notes => '', 23 | }, 24 | 25 | ] 26 | %] 27 | 28 | 29 | [% PROCESS version_view os_versions => { 30 | versions => [ 31 | { 32 | os_name => 'Stretch', 33 | os_version => '9', 34 | os_release => '2017-07-17', 35 | perl_version => '5.24.1+patches', 36 | }, 37 | { 38 | os_name => 'Jessie', 39 | os_version => '8', 40 | os_release => '2015-04-26', 41 | perl_version => '5.20.2+patches', 42 | }, 43 | { 44 | os_name => 'Wheezy', 45 | os_version => '7.0', 46 | os_release => '2013-05-04', 47 | perl_version => '5.14.2+patches', 48 | }, 49 | { 50 | os_name => 'Squeeze', 51 | os_version => '6.0', 52 | os_release => '2011-02-06', 53 | perl_version => '5.10.1+patches', 54 | }, 55 | { 56 | os_name => 'Lenny', 57 | os_version => '5.0', 58 | os_release => '2009-02-01', 59 | perl_version => '5.10.0+patches', 60 | }, 61 | { 62 | os_name => 'Etch', 63 | os_version => '4.0', 64 | os_release => '2007-04-01', 65 | perl_version => '5.8.8+patches', 66 | }, 67 | { 68 | os_name => 'Woody', 69 | os_version => '3.0', 70 | perl_version => '5.6.1+patches', 71 | }, 72 | ], 73 | } %] 74 | 75 |

76 | Mostly minor patches are applied. 78 |

79 | 80 | 81 | [% END %] 82 | 83 | 84 | -------------------------------------------------------------------------------- /src/doc/index.html: -------------------------------------------------------------------------------- 1 | [% 2 | page.import({ 3 | title => "Perl Documentation", 4 | section => 'docs', 5 | stub => '../', 6 | }); 7 | %] 8 | 9 |

Perl Documentation

10 | 11 | 12 | 13 | 48 | 76 | 77 |
14 |

15 | Perl Core and Module Documentation 16 |

17 | 31 |

32 | Command line 33 |

34 |
    35 |
  • 36 | perldoc perldoc - find out more about 37 | perldoc 38 |
  • 39 |
  • 40 | perldoc perlintro - introduction to Perl 41 |
  • 42 |
  • 43 | perldoc Module::Name - documentation for an 44 | installed module 45 |
  • 46 |
47 |
49 |

50 | FAQs 51 |

52 | 60 |

61 | Other useful sites 62 |

63 | 75 |
78 | -------------------------------------------------------------------------------- /src/ports/README: -------------------------------------------------------------------------------- 1 | CPAN/ports/README 2 | 3 | You are probably looking for a binary distribution of Perl. 4 | If so, go directly to 5 | 6 | http://www.perl.com/CPAN/ports/index.html 7 | 8 | The rest of this file tells is more detail about the 9 | contents of this directory (http://www.perl.com/CPAN/ports/) 10 | but in principle, the above URL should be all you need. 11 | 12 | CONTENTS 13 | 14 | This directory contains ports (or pointers to such) of Perl 15 | 16 | (1) to platforms that the Perl standard source code distribution (S) 17 | does not (yet) support, such as Tandem Guardian. 18 | 19 | (2) to platforms where a C compiler is an exception, not the rule, 20 | like for example the Windows platforms and OS/2. 21 | 22 | (3) some of the directories here are empty and just contain pointers 23 | back to (S). These are Perl source code archaeology in action: 24 | once upon a time these platforms were not supported in the (S), 25 | but they are now. Examples include Amiga, BeOS, and MPE/iX. 26 | 27 | (S) Either 28 | 29 | http://www.perl.com/CPAN/src/stable.tar.gz 30 | 31 | or 32 | 33 | http://www.perl.com/CPAN/src/stable.zip 34 | 35 | Grab that, unpack it, start off by reading the README. 36 | 37 | BUILDING PERL FROM SOURCE 38 | 39 | To build from the (S) you will need a full C compiler and 40 | some sort of compilation environment ('make' or some similar 41 | build tool). If you have a UNIX-like shell environment 42 | (Bourne shell and the usual UNIX utilities like 'tr', 'sed', 43 | and so on), so much the better. 44 | 45 | Because Perl's roots are in the UNIX world in general any 46 | UNIX platform should be supported in the (S). If this isn't 47 | the case, please send email to perlbug@perl.com and tell in 48 | excruciating detail what is your UNIX platform. For example 49 | the output of "uname -a" or similar would be handy. 50 | 51 | Beware: some platforms which the vendors call UNIX do not 52 | have a full C compiler -- or if they have a 'bundled' one, 53 | it's severely crippled, supplied mainly for compiling the 54 | kernel/device drivers. 55 | 56 | Perl requires more than that. 57 | 58 | Such crippled platforms include HP-UX and Solaris. Either 59 | you will have to pay for the full C compiler or find 60 | yourself the GNU C compiler (gcc) as a binary distribution. 61 | If you don't know where to start, locate the FAQ for your 62 | platform. If you don't know what that is or where to get 63 | that, use the search engines. If you don't know what those 64 | are, consult your local information systems support. If 65 | they don't know what all the above means, fire them. 66 | 67 | -- 68 | cpan@perl.org 69 | -------------------------------------------------------------------------------- /src/ports/oses/slackware.tt_data: -------------------------------------------------------------------------------- 1 | [% 2 | # Setup information 3 | os_config = { 4 | # Name of the OS 5 | name => 'Slackware', 6 | 7 | # URL of the OS (e.g. http://www.microsoft.com/windows/) 8 | url => 'http://www.slackware.com/', 9 | 10 | # Is it a specific vendor who runs the OS? 11 | vendor => '', 12 | 13 | # Specifying linux will add a 'see also' 14 | kernel => 'linux', 15 | 16 | # When was this file last reviewed (yyyy-mm-dd)? 17 | information_last_verified => '2011-03-26', 18 | } 19 | %] 20 | 21 | [% BLOCK show_os %] 22 | 23 | [% PROCESS binary_view binary_source => [ 24 | { 25 | name => 'ActiveState', 26 | url => activestate_url, 27 | notes => '' 28 | }, 29 | ] 30 | %] 31 | 32 | [% PROCESS version_view os_versions => { 33 | versions => [ 34 | { 35 | os_name => '', 36 | os_version => '13.1', 37 | os_release => '2010-05-01', 38 | perl_version => '5.10.1', 39 | }, 40 | 41 | { 42 | os_name => '', 43 | os_version => '13.0', 44 | os_release => '2009-08-01', 45 | perl_version => '5.10.0', 46 | }, 47 | 48 | { 49 | os_name => '', 50 | os_version => '12.2', 51 | os_release => '2008-12-01', 52 | perl_version => '5.10.0', 53 | }, 54 | 55 | { 56 | os_name => '', 57 | os_version => '12.1', 58 | os_release => '2008-05-01', 59 | perl_version => '5.8.8', 60 | }, 61 | 62 | { 63 | os_name => '', 64 | os_version => '12.0', 65 | os_release => '2007-07-01', 66 | perl_version => '5.8.8', 67 | }, 68 | 69 | { 70 | os_name => '', 71 | os_version => '11.0', 72 | os_release => '2006-10-01', 73 | perl_version => '5.8.8', 74 | }, 75 | 76 | { 77 | os_name => '', 78 | os_version => '10.2', 79 | os_release => '2005-09-01', 80 | perl_version => '5.8.7', 81 | }, 82 | 83 | { 84 | os_name => '', 85 | os_version => '9.1', 86 | os_release => '2003-09-01', 87 | perl_version => '5.8.0', 88 | }, 89 | 90 | { 91 | os_name => '', 92 | os_version => '9.0', 93 | os_release => '2003-03-01', 94 | perl_version => '5.8.0', 95 | }, 96 | 97 | { 98 | os_name => '', 99 | os_version => '8.1', 100 | os_release => '2002-06-01', 101 | perl_version => '5.6.1', 102 | }, 103 | 104 | { 105 | os_name => '', 106 | os_version => '3.3', 107 | os_release => '1997-06-01', 108 | perl_version => '5.004', 109 | }, 110 | 111 | 112 | { 113 | os_name => '', 114 | os_version => '1.1.2', 115 | os_release => '1994-02-01', 116 | perl_version => '4.0', 117 | }, 118 | 119 | 120 | ], 121 | } %] 122 | 123 | 124 | [% END %] -------------------------------------------------------------------------------- /src/ports/oses/mac_osx.tt_data: -------------------------------------------------------------------------------- 1 | [% 2 | # Setup information 3 | os_config = { 4 | name => 'OS X', 5 | url => 'http://www.apple.com/osx/', 6 | vendor => 'Apple', 7 | information_last_verified => '2014-01-04', 8 | } 9 | %] 10 | 11 | [% BLOCK show_os %] 12 |

13 | Mac OS X ships with Perl as a standard component. 14 |

15 | [% PROCESS binary_view binary_source => [ 16 | { 17 | name => 'ActiveState', 18 | url => activestate_url, 19 | notes => 'In universal disk image format' 20 | }, 21 | { 22 | name => 'MacPorts', 23 | url => 'http://www.macports.org/', 24 | notes => 'Formerly known as DarwinPorts', 25 | }, 26 | { 27 | name => 'Fink', 28 | url => 'http://www.finkproject.org/', 29 | }, 30 | ] 31 | %] 32 | 33 | [% PROCESS version_view os_versions => { 34 | versions => [ 35 | { 36 | os_name => 'El Capitan', 37 | os_version => '10.11', 38 | perl_version => '5.18.2', 39 | }, 40 | { 41 | os_name => 'Yosemite', 42 | os_version => '10.10', 43 | perl_version => '5.18.2', 44 | }, 45 | { 46 | os_name => 'Mavericks', 47 | os_version => '10.9', 48 | perl_version => '5.16.2', 49 | }, 50 | { 51 | os_name => 'Mountain Lion', 52 | os_version => '10.8', 53 | perl_version => '5.12.4', 54 | }, 55 | { 56 | os_name => 'Lion', 57 | os_version => '10.7', 58 | perl_version => '5.12.3', 59 | }, 60 | { 61 | os_name => 'Snow Leopard', 62 | os_version => '10.6', 63 | perl_version => '5.10.0', 64 | }, 65 | { 66 | os_name => 'Leopard', 67 | os_version => '10.5', 68 | perl_version => '5.8.8', 69 | }, 70 | { 71 | os_name => 'Tiger', 72 | os_version => '10.4', 73 | perl_version => '5.8.6+patches', 74 | }, 75 | { 76 | os_name => 'Panther', 77 | os_version => '10.3', 78 | perl_version => '5.8.1-RC3+patches', 79 | }, 80 | { 81 | os_name => 'Jaguar', 82 | os_version => '10.2', 83 | perl_version => '5.6.0', 84 | }, 85 | ], 86 | } %] 87 | 88 |

89 | To build from source (or build XS modules) you need to install 90 | GCC which is available as part of "Command Line Tools for XCode", 91 | this can be installed on it's own, or from within Xcode, both of which are 92 | available from 93 | Apple Developer downloads (free registration required). 94 | Xcode can also be installed through the 95 | Mac App 96 | Store. (Note: in 10.3 you should also install the optional BSD 97 | SDK, otherwise installing new Perl modules won't work.) 98 |

99 | 100 | 101 | 102 | [% END %] 103 | -------------------------------------------------------------------------------- /src/ports/oses/ubuntu.tt_data: -------------------------------------------------------------------------------- 1 | [% 2 | # Setup information 3 | os_config = { 4 | # Name of the OS 5 | name => 'Ubuntu', 6 | 7 | # URL of the OS (e.g. www.m) 8 | url => 'http://www.ubuntu.com/', 9 | 10 | # Is it a specific vendor who runs the OS? 11 | vendor => 'Canonical Ltd.', 12 | 13 | # Specifying linux will add a 'see also' 14 | kernel => 'linux', 15 | 16 | # When was this file last reviewed? 17 | information_last_verified => '2017-10-04', 18 | } 19 | %] 20 | 21 | [% BLOCK show_os %] 22 | 23 | [% PROCESS binary_view binary_source => [ 24 | { 25 | name => 'ActiveState', 26 | url => activestate_url, 27 | notes => '' 28 | }, 29 | ] 30 | %] 31 | 32 | [% PROCESS version_view os_versions => { 33 | versions => [ 34 | { 35 | os_name => 'Artful Aardvark', 36 | os_version => '17.10', 37 | perl_version => '5.26.0' 38 | os_release => '2017-10-19', 39 | }, 40 | { 41 | os_name => 'Zesty Zapus', 42 | os_version => '17.04', 43 | perl_version => '5.24.1' 44 | os_release => '2017-04-13', 45 | }, 46 | { 47 | os_name => 'Yakkety Yak', 48 | os_version => '16.10', 49 | perl_version => '5.22.2' 50 | os_release => '2016-10-13', 51 | }, 52 | { 53 | os_name => 'Xenial Xerus', 54 | os_version => '16.04', 55 | perl_version => '5.22.1', 56 | os_release => '2016-04-21', 57 | }, 58 | { 59 | os_name => 'Wily Werewolf', 60 | os_version => '15.10', 61 | perl_version => '5.20.2', 62 | os_release => '2015-10-22', 63 | }, 64 | { 65 | os_name => 'Vivid Vervet', 66 | os_version => '15.04', 67 | perl_version => '5.20.2', 68 | os_release => '2015-04-23', 69 | }, 70 | { 71 | os_name => 'Utopic Unicorn', 72 | os_version => '14.10', 73 | perl_version => '5.20.1', 74 | os_release => '2014-10-23', 75 | }, 76 | { 77 | os_name => 'Trusty Tahr', 78 | os_version => '14.04LTS', 79 | perl_version => '5.18.2', 80 | os_release => '2014-04-17', 81 | }, 82 | { 83 | os_name => 'Precise Pangolin', 84 | os_version => '12.04LTS', 85 | perl_version => '5.14.2', 86 | os_release => '2012-04-26', 87 | }, 88 | { 89 | os_name => 'Lucid Lynx', 90 | os_version => '10.04LTS', 91 | perl_version => '5.10.1', 92 | }, 93 | { 94 | os_name => 'Karmic Koala', 95 | os_version => '9.10', 96 | perl_version => '5.10.0', 97 | }, 98 | { 99 | os_name => 'Hardy', 100 | os_version => '8.04LTS', 101 | perl_version => '5.8.8', 102 | }, 103 | { 104 | os_name => 'Dapper', 105 | os_version => '6.06LTS', 106 | perl_version => '5.8.7', 107 | }, 108 | 109 | ], 110 | } %] 111 | 112 | [% END %] 113 | -------------------------------------------------------------------------------- /src/ports/binaries.html: -------------------------------------------------------------------------------- 1 | [% 2 | page.import({ 3 | title => "Perl binaries", 4 | section => 'ports', 5 | stub => '../', 6 | }); 7 | 8 | # Active State's main download URL 9 | SET activestate_url = 'http://www.activestate.com/activeperl/downloads'; 10 | 11 | PROCESS ports/oses/list.html; 12 | 13 | %] 14 | 15 | [% BLOCK version_view %] 16 | 17 | 18 | [% FOREACH version = os_versions.versions %] 19 | 20 | 32 | 33 | 34 | [% END %] 35 |
OS Name / versionDefault Perl version
[% IF version.os_name && version.os_version %] 21 | [% version.os_name %] ([% version.os_version %]) 22 | [% ELSIF version.os_name %] 23 | [% version.os_name %] 24 | [% ELSE %] 25 | [% version.os_version %] 26 | [% END %] 27 | 28 | [% IF loop.first && version.os_release%] 29 |
Released [% version.os_release %]
[% END %] 30 | 31 |
[% version.perl_version %]
36 | [% END %] 37 | 38 | [% BLOCK binary_view %] 39 |
40 |

[% "Other " UNLESS os_config.not_included_in_os_packages %]Binaries:

41 | 47 |
48 | [% END %] 49 | 50 | 51 | 52 |

Perl Binaries

53 | 54 | 67 | 68 |

69 |

75 |

76 |
77 | 78 | 79 | [% FOREACH os = os_list.sort %] 80 |
81 | [% PROCESS "ports/oses/${os}.tt_data" %] 82 |

[% os_config.name %]

83 | [% PROCESS show_os %] 84 | [% IF os_config.kernel %] 85 |

See also [% os_config.kernel | ucfirst %]

86 | [% END %] 87 |

Last updated: [% os_config.information_last_verified || 'unknown' %]

88 |
89 | [% END %] 90 | 91 |



92 |

93 | Do you have additions, updates, or corrections? If so, please submit a pull request to 94 | our 95 | github repository.. 96 |

97 | -------------------------------------------------------------------------------- /lib/style/cpan.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | [% page.title %] - [% site.name %] 5 | 6 | [%- IF page.description %][% END -%] 7 | [%- IF page.keywords %][% END -%] 8 | 9 | 10 | 11 | [% page.head %] 12 | 13 | 14 | 15 | 16 | 17 | 28 | 29 | 30 | 49 | 50 | 51 | 57 | 58 | 59 | 82 | 83 |
52 |
53 | 54 | [% content %] 55 |
56 |
84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /src/_modules/index.html: -------------------------------------------------------------------------------- 1 | [% 2 | page.import({ 3 | title => "Perl Modules", 4 | section => 'modules', 5 | stub => '../', 6 | canonical => 'modules/index.html', 7 | }); 8 | %] 9 | 10 |

Perl Modules

11 | 12 |

13 | Most Perl modules are written in Perl, some use XS (they are written in C) so require a 16 | C compiler. Modules may have 17 | dependencies on other modules (almost always on CPAN) and cannot be installed without them (or 19 | without a specific version of them). Many modules on CPAN now require a 20 | recent version of Perl (version 5.8 or above). 21 |

22 | 23 |

24 | How to install modules 25 |

26 |

27 | There are several methods you can use, see the Installing Perl Modules page. 29 |

30 | 31 | 32 | 70 | 96 | 97 |
33 |

34 | How to find modules 35 |

36 | 69 |
71 |

72 | How to contribute 73 |

74 | 81 |

82 | Other useful sites 83 |

84 | 95 |
98 | 99 | 100 |

101 | Questions about the modules? Please contact the module author 102 | directly. Corrections? Additions? Suggestions? Please contact cpan@perl.org. Other questions? See the CPAN FAQ. 105 |

106 | -------------------------------------------------------------------------------- /src/ports/oses/fedora.tt_data: -------------------------------------------------------------------------------- 1 | [% 2 | # Setup information 3 | os_config = { 4 | name => 'Fedora', 5 | url => 'http://fedoraproject.org/', 6 | vendor => '', 7 | kernel => 'linux', 8 | information_last_verified => '2017-10-30', 9 | } 10 | %] 11 | 12 | [% BLOCK show_os %] 13 | 14 | 15 | [% PROCESS binary_view binary_source => [ 16 | { 17 | name => 'ActiveState', 18 | url => activestate_url, 19 | notes => '' 20 | }, 21 | 22 | ] 23 | %] 24 | 25 | [% PROCESS version_view os_versions => { 26 | versions => [ 27 | { 28 | os_name => '', 29 | os_version => '27', 30 | os_release => '2017-11-07', 31 | perl_version => '5.26.1', 32 | }, 33 | 34 | { 35 | os_name => '', 36 | os_version => '26', 37 | os_release => '2017-07-11', 38 | perl_version => '5.24.3', 39 | }, 40 | 41 | { 42 | os_name => '', 43 | os_version => '25', 44 | os_release => '2016-11-22', 45 | perl_version => '5.24.0', 46 | }, 47 | 48 | { 49 | os_name => '', 50 | os_version => '24', 51 | os_release => '2016-06-21', 52 | perl_version => '5.22.2', 53 | }, 54 | 55 | { 56 | os_name => '', 57 | os_version => '23', 58 | os_release => '2015-11-03', 59 | perl_version => '5.22.1', 60 | }, 61 | 62 | { 63 | os_name => '', 64 | os_version => '22', 65 | os_release => '2015-05-26', 66 | perl_version => '5.20.3', 67 | }, 68 | 69 | { 70 | os_name => '', 71 | os_version => '21', 72 | os_release => '2014-12-09', 73 | perl_version => '5.18.4', 74 | }, 75 | 76 | { 77 | os_name => 'Heisenbug', 78 | os_version => '20', 79 | os_release => '2013-12-17', 80 | perl_version => '5.18.4', 81 | }, 82 | 83 | { 84 | os_name => "Schrödinger's Cat", 85 | os_version => '19', 86 | os_release => '2013-07-02', 87 | perl_version => '5.16.3', 88 | }, 89 | 90 | { 91 | os_name => 'Laughlin', 92 | os_version => '14', 93 | os_release => '2010-11-02', 94 | perl_version => '5.12.2', 95 | }, 96 | 97 | { 98 | os_name => 'Goddard', 99 | os_version => '13', 100 | os_release => '2010-05-25', 101 | perl_version => '5.10.1', 102 | }, 103 | 104 | { 105 | os_name => 'Constantine', 106 | os_version => '12', 107 | os_release => '2009-11-17', 108 | perl_version => '5.10.0', 109 | }, 110 | 111 | { 112 | os_name => 'Leonidas', 113 | os_version => '11', 114 | os_release => '2009-06-09', 115 | perl_version => '5.10.0', 116 | }, 117 | 118 | { 119 | os_name => 'Cambridge', 120 | os_version => '10', 121 | os_release => '2008-11-25', 122 | perl_version => '5.10.0', 123 | }, 124 | 125 | { 126 | os_name => 'Sulphur', 127 | os_version => '9', 128 | os_release => '2008-05-13', 129 | perl_version => '5.10.0', 130 | }, 131 | 132 | { 133 | os_name => 'Werewolf', 134 | os_version => '8', 135 | os_release => '2007-11-08', 136 | perl_version => '5.8.8', 137 | }, 138 | 139 | { 140 | os_name => 'Moonshine', 141 | os_version => '7', 142 | os_release => '2007-05-31', 143 | perl_version => '5.8.8', 144 | }, 145 | 146 | { 147 | os_name => 'Zod', 148 | os_version => '6', 149 | os_release => '2006-10-24', 150 | perl_version => '5.8.8', 151 | }, 152 | 153 | { 154 | os_name => 'Bordeaux', 155 | os_version => '5', 156 | os_release => '2006-03-20', 157 | perl_version => '5.8.8', 158 | }, 159 | 160 | { 161 | os_name => 'Stentz', 162 | os_version => '4', 163 | os_release => '2005-06-13', 164 | perl_version => '5.8.6', 165 | }, 166 | 167 | { 168 | os_name => 'Heidelberg', 169 | os_version => '3', 170 | os_release => '2004-11-08', 171 | perl_version => '5.8.5', 172 | }, 173 | 174 | { 175 | os_name => 'Tettnang', 176 | os_version => '2', 177 | os_release => '2004-05-18', 178 | perl_version => '5.8.3', 179 | }, 180 | 181 | { 182 | os_name => 'Yarrow', 183 | os_version => '1', 184 | os_release => '2003-11-05', 185 | perl_version => '5.8.1', 186 | }, 187 | 188 | ], 189 | } %] 190 | 191 | 192 | 193 | 194 | [% END %] 195 | -------------------------------------------------------------------------------- /src/ENDINGS: -------------------------------------------------------------------------------- 1 | CPAN/ENDINGS 2 | 3 | --- 4 | 5 | FUNNY FILE ENDINGS AND WHAT TO DO ABOUT THEM 6 | 7 | The files in the CPAN have all kinds of curious endings (the parts 8 | after dots) and one must know what to do about them. The tools you 9 | need to run are marked like "this", inside double quotes, in the 10 | below list. Because CPAN is not just one place we cannot point 11 | you explicitly to the tools for your particular system, you have to 12 | locate them for your system, sorry. Try out whether your system 13 | already has them installed. If not, ask your local user support 14 | and/or search for them via the WWW search engines or the archie. 15 | 16 | In Win32 (95/98/NT/W2K) "WinZip" should be able to unpack the most 17 | usual archival and compression formats. 18 | 19 | In MacIntosh StuffIt should work. 20 | 21 | Archives and/or Compressed/Packed 22 | 23 | .tar Tape ARchive (never mind the 'tape' part, historical reasons, 24 | disk will do just fine). Program called "tar" will help, 25 | "tar tvf foo.tar" will list the contents, "tar xvf foo.tar" 26 | will extract the contents. 27 | .gz compressed with "gzip", "gunzip" (or "gzip -d") to uncompress 28 | .bz2 compressed with "bzip2", "bunzip2" (or "bzip2 -d") to uncompress 29 | .tgz .tar.gz in disguise for DOS, see below for "MULTIPLE ENDINGS" 30 | .tbz .tar.bz2 ditto, ditto 31 | .tbz2 .tar.bz2 ditto, ditto 32 | .taz .tar.gz ditto, ditto 33 | .tgZ .tar.Z ditto, ditto 34 | .Z compressed with "compress", "uncompress" to uncompress 35 | .uu UUencoded with "uuencode", "uudecode" to decode 36 | (note: the first line of the .uu file tells the name 37 | of the un-uuencoded file that will appear when you uudecode) 38 | .shar SHell ARchive: can be extracted in UNIX either with "unshar -c" 39 | or "unshar" or "sh". 40 | .zip PCish archive, "unzip -l foo.zip" to list the contents, 41 | "unzip -x foo.zip" to extract, "unzip -h" for help. 42 | .bin MacIntoshish archive, StuffIt should work. In UNIX 43 | a program called "mcvert" should work. 44 | .sit MacIntoshish archive, StuffIt should work. In UNIX 45 | a program called "unsit" should work. 46 | .hqx MacIntoshish archive, StuffIt should work. 47 | .zoo Amigaish/Atarish archive, zoo should work. 48 | 49 | Code and/or Documentation 50 | 51 | .pl PerL: perl script, any Perl version 52 | .pm Perl Module: Perl 5 onwards code 53 | .pod Plain Old Documentation: perl documentation, 54 | quite readable as-is but if needed converters like pod2man, 55 | pod2html, exist in the Perl 5 distribution (CPAN/src/5.0/) 56 | .xs Perl eXtenSion code, please see the perlxs documentation 57 | coming with the Perl 5 distribution 58 | .man UNIX man(1) manual page format (nroff) 59 | .1 ditto 60 | .html HyperText Markup Language: the Web-speak 61 | .tex TeX or LaTeX formatted text 62 | .txt Text 63 | 64 | Graphics 65 | 66 | .xbm X11 BitMap, view with e.g. "xv" 67 | .gif Graphics Interchange Format, view with e.g. "xv" 68 | .ps PostScript: you probably have a laser printer that groks this 69 | and possibly have a previewer like ghostscript ("gs", "gv") that will 70 | display this on screen 71 | .dvi DeVice Independent: TeX portable graphics display format: 72 | converters like "dvips" (DVI -> PostScript) and previewers 73 | like "xdvi" (X Window DVI) exist. 74 | 75 | "BUT I HAVE MULTIPLE ENDINGS..." 76 | 77 | The endings are recursive, work your way down from the right. 78 | 79 | .tar.gz First "gunzip", then "tar". 80 | .tar.bz2 First "bunzip2", then "tar". 81 | .tar.Z First "uncompress", then "tar". Often mangled for 82 | DOSish systems as .tgZ, .tgz, or .taz. 83 | .uu.gz First "gunzip", then "uudecode". 84 | .shar.gz First "gunzip", then "unshar". 85 | 86 | Note 1: 87 | 88 | The GNU zip, "gunzip", "gzip -d", can uncompress both .gz and .Z 89 | 90 | gunzip bar.gz 91 | gunzip foo.Z 92 | 93 | It cannot uncompress .bz2, though. 94 | 95 | Note 2: 96 | 97 | The GNU tar, often installed as "gnutar" or "gtar", can use "gunzip" if 98 | it can find it, one does not need to first uncompress and then "tar" but 99 | can instead do both in one sweep: 100 | 101 | gtar ztvf foo.tar.gz 102 | 103 | will list the contents of the gzipped foo.tar without having foo.tar 104 | in the disk. 105 | 106 | -- 107 | cpan@perl.org 108 | 109 | -------------------------------------------------------------------------------- /src/misc/css/cpan.css: -------------------------------------------------------------------------------- 1 | body { 2 | width: 99%; 3 | margin: auto; 4 | padding: 0; 5 | margin-bottom: 3em; 6 | font-size: 1em; 7 | font-family: Arial, Verdana, sans-serif; 8 | background: white url(../images/bg_gradient.jpg) repeat-x left top; 9 | max-width: 70em; 10 | } 11 | td#header { 12 | padding:.8em 0; 13 | } 14 | 15 | #header_left { 16 | float: left; 17 | } 18 | #header_right { 19 | padding-top:.8em; 20 | float: right; 21 | } 22 | #header_right h1{ 23 | color: #000; 24 | text-align: right; 25 | font-size:210%; 26 | font-weight:normal; 27 | font-family:Times, Georgia, serif; 28 | margin:0 0 .1em 0; 29 | } 30 | #header_right #strapline { 31 | color:#007CB9; 32 | text-align: right; 33 | text-transform: uppercase; 34 | font-size: 90%; 35 | font-weight: 700; 36 | margin:0; 37 | } 38 | img{ 39 | border:0; 40 | } 41 | a{ 42 | color: #0083C1; 43 | text-decoration: none; 44 | } 45 | a:link { 46 | color: #0083C1; 47 | } 48 | a:hover { 49 | color: #000000; 50 | } 51 | a img{ 52 | border:0; 53 | } 54 | h1 { 55 | color:#006699; 56 | margin-bottom: .6em; 57 | margin-top: .6em; 58 | font-size: 200%; 59 | } 60 | h2 { 61 | color:#006699; 62 | font-size: 150%; 63 | font-family:Calibri, Arial, sans-serif; 64 | font-weight:normal; 65 | margin-top: 0; 66 | margin-bottom: .5em; 67 | } 68 | h3 { 69 | font-size: 100%; 70 | font-weight: normal; 71 | } 72 | h4 { 73 | font-size: 100%; 74 | font-weight: normal; 75 | } 76 | li { 77 | list-style-type: circle; 78 | padding-top: .25em; 79 | } 80 | ul { 81 | margin: .8em 0; 82 | padding-left: 1em; 83 | } 84 | #content{ 85 | padding-top: .5em; 86 | padding-bottom: 1em; 87 | padding-left: .5em; 88 | } 89 | #content li{ 90 | font-size:90%; 91 | } 92 | .section_home #content ul { 93 | padding-left: 1.5em; 94 | } 95 | .search{ 96 | vertical-align: center; 97 | } 98 | #searchtitle { 99 | margin-top: .1em; 100 | margin-bottom: 0; 101 | float: right; 102 | display: inline; 103 | } 104 | #searchfield{ 105 | width:18em; 106 | } 107 | .big { 108 | font-size: 200%; 109 | font-family: Times; 110 | } 111 | p { 112 | font-size: 90%; 113 | } 114 | p img{ 115 | vertical-align:middle; 116 | } 117 | table#wrapper { margin: auto; } 118 | img.border { border: none } 119 | td { 120 | padding: .3em 0; 121 | vertical-align: top; 122 | } 123 | .third{ 124 | width: 30%; 125 | padding-right: 3%; 126 | } 127 | /* nav */ 128 | #menubar_holder { 129 | /*background: #006699 url(../images/menubar_highlight.png) repeat-x left top;*/ 130 | background: #006699; 131 | color: #FFF; 132 | font-family:Arial, Helvetica, sans-serif; 133 | font-weight:bold; 134 | } 135 | .menubar{ 136 | margin:0; 137 | padding:0; 138 | } 139 | .menubar li{ 140 | list-style:none; 141 | float:left; 142 | } 143 | .menubar li a { 144 | display:block; 145 | padding: .35em .9em; 146 | } 147 | .menubar a:link, .menubar a:visited { 148 | color: white; 149 | text-decoration: none; 150 | } 151 | .menubar a:hover { 152 | color: #DBE7EC; 153 | text-decoration: underline; 154 | } 155 | form{ 156 | margin:0; 157 | padding:0; 158 | } 159 | #searchbar{ 160 | float:right; 161 | font-weight:bold; 162 | padding: .3em; 163 | } 164 | 165 | hr { 166 | border: 0; 167 | height: 0.1em; 168 | color: #006699; 169 | background-color: #006699; 170 | margin-top: 1em; 171 | } 172 | img.extlink{ 173 | float: none; 174 | padding-left: 0.25em; 175 | } 176 | #footer{ 177 | background: white url(../images/bg_gradient.jpg) repeat-x left top; 178 | padding:.8em; 179 | } 180 | #footer_copyright{ 181 | font-size: 80%; 182 | float: left; 183 | vertical-align: top; 184 | } 185 | #footer_mirror{ 186 | font-size: 90%; 187 | float: right; 188 | vertical-align: top; 189 | } 190 | 191 | /* Ports page version tables */ 192 | div.os_holder { 193 | border-bottom:0.1em solid black; 194 | margin: 0.5em 0; 195 | padding: 0 0.5em; 196 | } 197 | 198 | table.os_version{ 199 | border: 0.1em solid #999; 200 | width: 45%; 201 | } 202 | table.os_version th{ 203 | background-color: #E3E3E3; 204 | padding-left: 0.2em; 205 | text-align: left; 206 | } 207 | table.os_version tr { 208 | font-size: 80%; 209 | } 210 | table.os_version td { 211 | font-size: 90%; 212 | padding: 0; 213 | } 214 | table.os_version tr.table_header { 215 | font-size: 100%; 216 | } 217 | table.os_version tr.latest{ 218 | font-size: 140%; 219 | } 220 | table.os_version tr span{ 221 | font-size: 70%; 222 | color: #BABABA; 223 | } 224 | table.os_version tr.even{ 225 | background-color: #E3E3E3; 226 | } 227 | 228 | .os_binary{ 229 | float: right; 230 | border: 0.1em solid #999; 231 | padding: 0; 232 | width: 45%; 233 | margin-bottom: 0.5em; 234 | } 235 | .os_binary h4{ 236 | background-color: #E3E3E3; 237 | margin: 0; 238 | font-weight: bold; 239 | padding: 0.1em; 240 | margin: 0.1em; 241 | } 242 | .os_binary ul{ 243 | margin: 1em 1em; 244 | } 245 | .clear { 246 | clear: both; 247 | } 248 | 249 | 250 | 251 | -------------------------------------------------------------------------------- /bin/cpanorg_perl_releases: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env perl 2 | use strict; 3 | use warnings; 4 | 5 | # Work out the earliest and latest of each version of Perl 6 | # save as seperate json files 7 | 8 | use JSON (); 9 | use LWP::Simple qw(get); 10 | use File::Slurp qw(read_file); 11 | 12 | my $json = JSON->new->pretty; 13 | 14 | # Fetch all perl versions on cpan, perl_testing seperated out 15 | # will exit if the data has not changed 16 | my ( $perl_versions, $perl_testing ) = fetch_perl_version_data(); 17 | 18 | $perl_versions = sort_versions($perl_versions); 19 | 20 | # Earliest 21 | { 22 | 23 | # Reverse to get earliest first 24 | my $earliest_per_version 25 | = extract_first_per_version_in_list( [ reverse @{$perl_versions} ] ); 26 | 27 | my $earliest = sort_versions( [ values %{$earliest_per_version} ] ); 28 | print_file( "perl_versions_earliest.json", $json->encode($earliest) ); 29 | } 30 | 31 | # Latest 32 | { 33 | 34 | # List ordered with latest first 35 | my $latest_per_version 36 | = extract_first_per_version_in_list($perl_versions); 37 | 38 | my $latest = sort_versions( [ values %{$latest_per_version} ] ); 39 | $latest->[0]->{latest} = 'true'; 40 | 41 | print_file( "perl_version_latest_stable.json", 42 | $json->encode( $latest->[0] ) ); 43 | 44 | # Add the latest test so people know what's coming 45 | # only if: 46 | # - not of the same version as the latest release 47 | # - larger number than the previous release (fix for security releases) 48 | unshift @$latest, $perl_testing->[0] 49 | if ( $perl_testing->[0]->{version_number} ne 50 | $latest->[0]->{version_number} ) 51 | && ( 52 | $perl_testing->[0]->{version_minor} > $latest->[0]->{version_minor} ); 53 | 54 | print_file( "perl_versions_latest.json", $json->encode($latest) ); 55 | } 56 | 57 | sub print_file { 58 | my ( $file, $data ) = @_; 59 | 60 | open my $fh, ">:utf8", "data/$file" 61 | or die "Could not open data/$file: $!"; 62 | print $fh $data; 63 | close $fh; 64 | 65 | } 66 | 67 | sub sort_versions { 68 | my $list = shift; 69 | 70 | my @sorted = sort { 71 | $b->{version_major} <=> $a->{version_major} 72 | || int( $b->{version_minor} ) <=> int( $a->{version_minor} ) 73 | || $b->{version_iota} <=> $a->{version_iota} 74 | } @{$list}; 75 | 76 | return \@sorted; 77 | 78 | } 79 | 80 | sub extract_first_per_version_in_list { 81 | my $versions = shift; 82 | 83 | my $lookup = {}; 84 | foreach my $version ( @{$versions} ) { 85 | my $minor_version = $version->{version_major} . '.' 86 | . int( $version->{version_minor} ); 87 | 88 | $lookup->{$minor_version} = $version 89 | unless $lookup->{$minor_version}; 90 | } 91 | return $lookup; 92 | } 93 | 94 | sub fetch_perl_version_data { 95 | my $perl_dist_url = "http://search.cpan.org/api/dist/perl"; 96 | 97 | my $filename = 'perl_version_all.json'; 98 | 99 | # See what we have on disk 100 | my $disk_json = ''; 101 | $disk_json = read_file("data/$filename") 102 | if -r "data/$filename"; 103 | 104 | my $cpan_json = get($perl_dist_url); 105 | die "Unable to fetch $perl_dist_url" unless $cpan_json; 106 | 107 | if ( $cpan_json eq $disk_json ) { 108 | 109 | # Data has not changed so don't need to do anything 110 | exit; 111 | } else { 112 | 113 | # Save for next fetch 114 | print_file( $filename, $cpan_json ); 115 | } 116 | 117 | my $data = eval { $json->decode($cpan_json) }; 118 | if ( my $err = $@ ) { 119 | die "$err: [$cpan_json]"; 120 | } 121 | 122 | my @perls; 123 | my @testing; 124 | foreach my $module ( @{ $data->{releases} } ) { 125 | next unless $module->{authorized} eq 'true'; 126 | 127 | my $version = $module->{version}; 128 | 129 | $version =~ s/-(?:RC|TRIAL)\d+$//; 130 | $module->{version_number} = $version; 131 | 132 | my ( $major, $minor, $iota ) = split( '[\._]', $version ); 133 | $module->{version_major} = $major; 134 | $module->{version_minor} = int($minor); 135 | $module->{version_iota} = int( $iota || '0' ); 136 | 137 | # Do not trust the API as it gets it wrong 138 | delete $module->{latest}; 139 | 140 | $module->{type} 141 | = $module->{status} eq 'testing' 142 | ? 'Devel' 143 | : 'Maint'; 144 | 145 | # TODO: Ask - please add some validation logic here 146 | # so that on live it checks this exists 147 | my $zip_file = $module->{distvname} . '.tar.gz'; 148 | 149 | $module->{zip_file} = $zip_file; 150 | $module->{url} = "http://www.cpan.org/src/5.0/" . $module->{zip_file}; 151 | 152 | ( $module->{released_date}, $module->{released_time} ) 153 | = split( 'T', $module->{released} ); 154 | 155 | next if $major < 5; 156 | 157 | if ( $module->{status} eq 'stable' ) { 158 | push @perls, $module; 159 | } else { 160 | push @testing, $module; 161 | } 162 | } 163 | return \@perls, \@testing; 164 | } 165 | -------------------------------------------------------------------------------- /src/ports/oses/suse.tt_data: -------------------------------------------------------------------------------- 1 | [% 2 | # Setup information 3 | os_config = { 4 | # Name of the OS 5 | name => 'OpenSUSE', 6 | 7 | # URL of the OS (e.g. http://www.microsoft.com/windows/) 8 | url => 'http://www.opensuse.org/', 9 | 10 | # Is it a specific vendor who runs the OS? 11 | vendor => '', 12 | 13 | # Specifying linux will add a 'see also' 14 | kernel => 'linux', 15 | 16 | # When was this file last reviewed (yyyy-mm-dd)? 17 | information_last_verified => '2011-03-26', 18 | } 19 | %] 20 | 21 | [% BLOCK show_os %] 22 | 23 | [% PROCESS binary_view binary_source => [ 24 | { 25 | name => 'ActiveState', 26 | url => activestate_url, 27 | notes => '' 28 | }, 29 | ] 30 | %] 31 | 32 | [% PROCESS version_view os_versions => { 33 | versions => [ 34 | 35 | # 2017-12-07 36 | { os_name => '', 37 | os_version => 'TumbleWeed', 38 | os_release => 'rolling', 39 | perl_version => '5.26.1', 40 | }, 41 | { os_name => '', 42 | os_version => 'Leap 15.0', 43 | os_release => '', 44 | perl_version => '5.26.1', 45 | }, 46 | { os_name => '', 47 | os_version => 'Leap 42.3', 48 | os_release => '2017-07-26', 49 | perl_version => '5.18.2', 50 | }, 51 | { os_name => '', 52 | os_version => 'Leap 42.2', 53 | os_release => '2016-11-16', 54 | perl_version => '5.18.2', 55 | }, 56 | { os_name => 'Malachite', 57 | os_version => 'Leap 42.1', 58 | os_release => '2015-11-04', 59 | perl_version => '5.18.2', 60 | }, 61 | { os_name => 'Harlequin', 62 | os_version => '13.2', 63 | os_release => '2014-11-04', 64 | perl_version => '5.20.1', 65 | }, 66 | { os_name => 'Bottle', 67 | os_version => '13.1', 68 | os_release => '2013-11-19', 69 | perl_version => '5.18.1', 70 | }, 71 | { os_name => 'Dartmouth', 72 | os_version => '12.3', 73 | os_release => '2013-03-13', 74 | perl_version => '5.16.2', 75 | }, 76 | { os_name => 'Mantis', 77 | os_version => '12.2', 78 | os_release => '2012-09-05', 79 | perl_version => '5.16.0', 80 | }, 81 | { os_name => 'Asparagus', 82 | os_version => '12.1', 83 | os_release => '2011-11-16', 84 | perl_version => '5.14.2', 85 | }, 86 | { os_name => 'Celadon', 87 | os_version => '11.4', 88 | os_release => '2011-03-01', 89 | perl_version => '5.12.3', 90 | }, 91 | { os_name => 'Teal', 92 | os_version => '11.3', 93 | os_release => '2010-07-15', 94 | perl_version => '5.12.1', 95 | }, 96 | { os_name => 'Emerald', 97 | os_version => '11.2', 98 | os_release => '2009-11-12', 99 | perl_version => '5.10.0', 100 | }, 101 | { os_name => '', 102 | os_version => '11.1', 103 | os_release => '2008-12-18', 104 | perl_version => '5.10.0', 105 | }, 106 | { os_name => '', 107 | os_version => '10.3', 108 | os_release => '2007-10-04', 109 | perl_version => '5.8.8', 110 | }, 111 | { os_name => 'Basilisk Lizard', 112 | os_version => '10.2', 113 | os_release => '2006-12-07', 114 | perl_version => '5.8.8', 115 | }, 116 | { os_name => 'Agama Lizard', 117 | os_version => '10.1', 118 | os_release => '2006-05-11', 119 | perl_version => '5.8.8', 120 | }, 121 | { os_name => 'Prague', 122 | os_version => '10.0', 123 | os_release => '2005-10-06', 124 | perl_version => '5.8.7', 125 | }, 126 | { os_name => '', 127 | os_version => '9.3', 128 | os_release => '2005-04-15', 129 | perl_version => '5.8.6', 130 | }, 131 | { os_name => '', 132 | os_version => '9.1', 133 | os_release => '2004-04-23', 134 | perl_version => '5.8.3', 135 | }, 136 | { os_name => '', 137 | os_version => '8.2', 138 | os_release => '2003-03-17', 139 | perl_version => '5.8.0', 140 | }, 141 | { os_name => '', 142 | os_version => '6.1', 143 | os_release => '1999-04-20', 144 | perl_version => '5.005_02', 145 | }, 146 | { os_name => '', 147 | os_version => '5.3', 148 | os_release => '1998-08-21', 149 | perl_version => '5.004_04', 150 | }, 151 | { os_name => '', 152 | os_version => '5.2', 153 | os_release => '1998-03-12', 154 | perl_version => '5.004_04', 155 | }, 156 | { os_name => '', 157 | os_version => '5.1', 158 | os_release => '1997-12-12', 159 | perl_version => '5.004_04', 160 | }, 161 | { os_name => '', 162 | os_version => 'SLE-12 SP3', 163 | os_release => '', 164 | perl_version => '5.18.2', 165 | }, 166 | { os_name => '', 167 | os_version => 'SLE-11 SP4', 168 | os_release => '', 169 | perl_version => '5.10.0', 170 | }, 171 | { os_name => '', 172 | os_version => 'SLE-11 SP3', 173 | os_release => '', 174 | perl_version => '5.10.0', 175 | }, 176 | { os_name => '', 177 | os_version => 'SLE-11 SP2', 178 | os_release => '', 179 | perl_version => '5.10.0', 180 | }, 181 | { os_name => '', 182 | os_version => 'SLE-11 SP1', 183 | os_release => '', 184 | perl_version => '5.10.0', 185 | }, 186 | { os_name => '', 187 | os_version => 'SLE-11', 188 | os_release => '', 189 | perl_version => '5.10.0', 190 | }, 191 | ], 192 | } %] 193 | 194 | 195 | [% END %] 196 | -------------------------------------------------------------------------------- /src/index.html: -------------------------------------------------------------------------------- 1 | [% 2 | page.import({ 3 | title => "The Comprehensive Perl Archive Network", 4 | section => 'home', 5 | skip_master_mirror => 0, 6 | }); 7 | 8 | %][% page.head = BLOCK %] 9 | 59 | 65 | 66 | [% END %] 67 | 68 | 69 | 70 | 89 | 90 | 100 | 101 | 128 | 129 |
71 |

Welcome to CPAN

72 |

73 | The Comprehensive Perl Archive Network (CPAN) currently 74 | has [% cpan_stats.modules.count | comma %] 75 | Perl modules in [% cpan_stats.distributions.count | comma %] distributions, 76 | written by [% cpan_stats.authors.count | comma %] authors, 77 | mirrored on [% cpan_stats.mirrors.count | comma %] servers. 78 |

79 |

The archive has been online since October 1995 and is constantly growing.

80 | 81 |

Search CPAN via

82 | 83 | 87 | 88 |
91 |
92 |

Recent Uploads

93 | [% PROCESS rss_feed, conf => { 94 | json_file => "recent.json", 95 | max => 10, 96 | }, rss_footer = '
  • more...
  • ' 97 | %] 98 |
    99 |
    102 |

    Getting Started

    103 | 107 | 108 |

    109 | How to contribute 110 |

    111 | 118 | 119 |

    Perl Resources

    120 | 127 |
    130 | -------------------------------------------------------------------------------- /src/misc/how-to-mirror.html: -------------------------------------------------------------------------------- 1 | [% 2 | page.import({ 3 | title => "How to mirror CPAN", 4 | section => 'home', 5 | stub => '../', 6 | }); 7 | 8 | PROCESS "tpl/data/cpan-stats"; 9 | 10 | %] 11 | 12 | [% page.head = BLOCK %] 13 | 19 | [% END %] 20 |

    21 | How to mirror CPAN 22 |

    23 |

    24 | There are several ways to mirror CPAN depending upon what you want to 25 | achieve. 26 |

    27 | 28 |

    29 | How do I create a private or offline mirror? 30 |

    31 |

    32 | minicpan 33 | from CPAN::Mini is the 34 | best tool for this. Also look at CPAN::Mini::Inject 36 | which allows you to add your own modules into your private mirror. 37 |

    38 | 39 | 40 |

    41 | Requirements for a full / public mirror 42 |

    43 | 55 | 56 |

    It's highly recommended that you also subscribe to the announcements-only 57 | cpan-mirrors 58 | mailing list by emailing cpan-mirrors-subscribe at perl.org. 59 |

    60 | 61 |

    62 | Tools 63 |

    64 |

    65 | CPAN::Mini provides 66 | you with a minimal mirror of CPAN (the 67 | latest version of all modules). This makes working offline easy, it is the 68 | best tool if you are running a private mirror. 69 |

    70 |

    71 | New: rrr-client allows 72 | instant mirroring, and should be used on official public mirrors where 73 | possible. See instant mirroring instructions. 75 |

    76 |

    77 | rsync is the best tool if you need to 78 | mirror the whole of CPAN or if you are providing a public mirror. Rsync 79 | Instructions. 80 |

    81 |

    82 | Only use FTP if these other methods are absolutely impossible. Never mirror 83 | with HTTP - you will end up with a million duplicate files in tens of 84 | gigabytes. 85 |

    86 | 87 |

    88 | Which CPAN Mirror should I use? 89 |

    90 | 91 |

    92 | You can find your nearest rsync enabled site on http://www.cpan.org/SITES.html, or use 94 | mirrors.json 95 | especially if you are building a tool which lets the user select a mirror. 96 |

    97 | 98 |

    99 | You can also sync from rsync://cpan-rsync.perl.org/CPAN/ (the 100 | "tier 1 mirrors"), though you currently might get better 101 | performance from a "local" mirror. 102 |

    103 | 104 |

    105 | Using rsync 106 |

    107 |

    108 | Please limit to once or twice a day. For more frequent updates please see 109 | Instant mirroring. 110 |

    111 |

    112 | On Unix systems 113 |

    114 |
    115 | /usr/bin/rsync -av --delete cpan-rsync.perl.org::CPAN /project/CPAN/
    116 | 
    117 |

    118 | Using 'crontab' you can make rsync run once a day, for example
    119 | 40 4 * * * sleep $(expr $RANDOM \% 7200); /usr/bin/rsync -a --delete 120 | cpan-rsync.perl.org::CPAN /project/CPAN/
    121 | The "sleep $(...);" statement makes the command delay up to 2 hours before 122 | running rsync; the advantage of this is that you (and everybody else) won't 123 | access the mirror at the same time. 124 |

    125 |

    126 | Unless you are mirroring to an SSD you might get timeouts using --delete-after 127 | when many symlinks are being purged. Using --delete will work properly. 128 |

    129 |

    130 | If you have a problem with permissions (files are created with mode 131 | -rw-------), set umask in your cronjob :
    132 | 40 4 * * * umask 022 ; sleep ... ; /usr/bin/rsync ...
    133 | The umask 022 allows rsync to set proper permissions for 134 | files and directories. 135 |

    136 |

    137 | On Windows systems 138 |

    139 |
    140 | C:\Program Files\Rsync\rsync -av --delete cpan-rsync.perl.org::CPAN /project/CPAN/
    141 | 
    142 |

    143 | Using the 'AT' tool, you can schedule rsync to run daily, for example:
    144 | AT 20:00 /every:M,T,W,Th,F,S,Su "C:\Program Files\Rsync\rsync -a 145 | --delete cpan-rsync.perl.org::CPAN /project/CPAN/"
    146 |

    147 | 148 | 149 |

    150 | How do I create a public mirror? 151 |

    152 | 168 | 169 |

    170 | Instant mirroring 171 |

    172 |

    173 | "Instant mirroring" keeps your CPAN mirror up-to-date by continuously 174 | tracking the CPAN master; picking up the changes from the master, a short 175 | time (minutes) after they occur. 176 |

    177 |

    178 | Instant mirroring is used for all Tier 1 mirrors (so 179 | cpan-rsync.perl.org stays in sync across mirrors). 180 |

    181 |

    182 | To use "instant mirroring", you need a special client: "rrr-client" or 183 | "iim". 184 |

    185 |

    186 | "rrr-client" is part of the File::Rsync::Mirror::Recent 188 | (also known as rrr) package ; it is the official client, used 189 | on the CPAN master to get updates from PAUSE : the true heart and soul of "all things 191 | perl", see the setup 193 | guide for more details. 194 |

    195 |

    196 | "iim" is an 197 | alternative for "rrr-client" ; basically it does the same thing, but it is 198 | more efficient (on start-up) and has some features that may be helpful to 199 | CPAN mirror operators. 200 |

    201 | -------------------------------------------------------------------------------- /src/_modules/INSTALL.html: -------------------------------------------------------------------------------- 1 | [% 2 | page.import({ 3 | title => "Installing Perl Modules", 4 | section => 'modules', 5 | stub => '../', 6 | canonical => 'modules/INSTALL.html', 7 | }); 8 | %] 9 | 10 |

    How to install CPAN modules

    11 | 12 |

    13 | Here are some recommended approaches to installing modules from CPAN, as 14 | with much of Perl there are several alternatives. 15 |

    16 | 17 |

    18 | Some basics 19 |

    20 |

    21 | Most Perl modules are written in Perl, some use XS (they are written in C) so require a 24 | C compiler (it's easy 25 | to get this setup - don't panic), see your OS of choice below to find out how 26 | to get the right compiler. Modules may have dependencies on other modules 27 | (almost always on CPAN) and cannot be 28 | installed without them (or without a specific version of them). It is worth 29 | throughly reading the documentation for the options below. Many modules on 30 | CPAN require a somewhat recent version of Perl (version 5.8 or above). 31 |

    32 | 33 |

    34 | Quick start 35 |

    36 |

    37 | Install cpanm to make installing other modules easier (you'll 38 | thank us later). You need to type these commands into a Terminal emulator 40 | (Mac OS X, 41 | Win32, Linux) 43 |

    44 |
     45 | cpan App::cpanminus
     46 | 
    47 |

    48 | Now install any module you can find. 49 |

    50 |
     51 | cpanm Module::Name
     52 | 
    53 | 54 |

    55 | Tools 56 |

    57 |

    58 | To help you install and manage your modules: 59 |

    60 |

    61 | local::lib enables 63 | you to install modules into a specified directory, without requiring root 64 | or administrator access. See the 66 | bootstrapping technique for how to get started. You can create a 67 | directory per user/project/company and deploy to other servers, by copying the directory 68 | (as long as you are on the same operating system and perl version). 69 |

    70 |

    71 | cpanm from 73 | App::cpanminus is 74 | a script to get, unpack, build and install modules from CPAN. It's 75 | dependency free (can bootstrap itself) and requires zero configuration 76 | (install 78 | instructions). It automates the entire build process for the majority 79 | of modules on CPAN and works well with local::lib and 80 | perlbrew. Many experienced Perl developers use this as their tool 81 | of choice. Related tools: cpan-outdated, 83 | pm-uninstall, 85 | cpan-listchanges. 87 |

    88 |

    89 | perlbrew 91 | from App::perlbrew 92 | is useful if your system perl is too old to support modern CPAN modules, or 93 | if it's troublesome in other capacities (RedHat/CentOS are included in this 94 | list). perlbrew makes the process of installing a Perl in any directory 95 | much easier, so that you can work completely independently of any system 96 | Perl without needing root or administrator privileges. You can use multiple 97 | versions of Perl (maybe as you upgrade) across different projects. The 98 | separation from your system Perl makes server maintenance much easier and 99 | you more confident about how your project is setup. Currently 100 | Windows is not supported. 101 |

    102 |

    103 | cpan 104 | from CPAN has been 105 | distributed with Perl since 1997 (5.004). It has many more options than 106 | cpanm, it is also much more verbose. 107 |

    108 |

    109 | cpanp 110 | from CPANPLUS had been 111 | distributed with Perl since 5.10 (2007) until 5.20 (2014). This offers even more options 112 | than cpanm or cpan and can be installed just like cpanminus. 113 |

    114 | 115 | 116 | 117 |

    118 | Perl on Windows (Win32 and Win64) 119 |

    120 |

    121 | Strawberry Perl is an open source 122 | binary distribution of Perl for the Windows operating system. It includes a 123 | compiler and pre-installed modules that offer the ability to install XS 124 | CPAN modules directly from CPAN. It also comes with lots of modules 125 | pre-installed, including cpanm. 126 |

    127 |

    128 | ActiveState 129 | provide a binary distribution of Perl (for many platforms), as well as their 130 | own perl 131 | package manager (ppm). Some modules are not available as ppm's 132 | or have reported errors on the ppm build system, this does not mean 133 | they do not work. You can use the cpan script to build modules 134 | from CPAN against ActiveState Perl. 135 |

    136 | 137 |

    Perl on Mac OSX

    138 | 139 |

    140 | OSX comes with Perl pre-installed. in order to build and install your 141 | own modules you will need to install the "Command Line Tools for XCode" 142 | or "XCode" package - details on our 143 | ports page. 144 | Once you have done this you can use all of the tools mentioned above. 145 |

    146 | 147 |

    Perl on other Unix like OSs

    148 |

    149 | Install 'make' through your package manager. You can then 150 | use all of the tools mentioned above. 151 |

    152 | 153 |

    154 | Other tools 155 |

    156 |

    157 | CPAN::Mini can provide 158 | you with a minimal mirror of CPAN (just 159 | the latest version of all modules). This makes working offline easy. 160 |

    161 |

    162 | CPAN::Mini::Inject 164 | allows you to add your own modules to your local CPAN::Mini mirror of CPAN. 165 | So you can install and deploy your own modules through the same tools you 166 | use for CPAN modules. 167 |

    168 | 169 |

    170 | Which modules should I use? 171 |

    172 |

    173 | Task::Kensho lists 174 | suggested best practice modules for a wide range of tasks. https://metacpan.org/ will let you search 176 | CPAN. You could also get involved with the community, ask on a mailing list or find your nearest Perl Mongers group. 180 |

    181 | -------------------------------------------------------------------------------- /src/src/README.html: -------------------------------------------------------------------------------- 1 | [% 2 | page.import({ 3 | title => "Perl Source", 4 | section => 'source', 5 | stub => '../', 6 | canonical => 'src/index.html', 7 | }); 8 | %] 9 | 10 |

    Perl Source

    11 | 12 |

    13 | Perl compiles on over 100 platforms, if you 15 | want to install from a binary instead see the ports page (especially for Windows). 17 |

    18 | 19 | [% TRY %] 20 |

    21 | How to install from source 22 |

    23 | [% latest_data = INSERT perl_version_latest_stable.json %] 24 | [% latest = JSON.json_decode(latest_data) %] 25 |
     26 |      wget [% latest.url %]
     27 |      tar -xzf [% latest.zip_file %]
     28 |      cd [% latest.distvname %]
     29 |      ./Configure -des -Dprefix=$HOME/localperl
     30 |      make
     31 |      make test
     32 |      make install
     33 | 
    34 |

    35 | Read both INSTALL and README.yoursystem in 36 | the [% latest.distvname %] directory for more detailed information. 37 |

    38 | 39 | [% CATCH %] 40 | [% END %] 41 | 42 | 43 | [% TRY %] 44 |

    Latest releases in each branch of Perl

    45 | [% json_data = INSERT perl_versions_latest.json %] 46 | [% versions = JSON.json_decode(json_data) %] 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | [% FOREACH release = versions %] 56 | 57 | 58 | 68 | 69 | 70 | 71 | [% just_seen_latest = 1 IF release.latest %] 72 | [% END %] 73 |
    MajorVersionTypeReleasedDownload
    [% release.version_major %].[% release.version_minor %][% release.version_major %].[% release.version_minor %].[% release.version_iota %] 59 | [% IF release.type != 'Maint'; 60 | release.type; 61 | ELSIF just_seen_latest; 62 | 'Maint'; 63 | just_seen_latest = 0; 64 | ELSE; 65 | release.latest ? 'Maint' : 'End of life'; 66 | END; 67 | %][% release.released_date %][% release.zip_file %]
    74 | [% CATCH %] 75 | [% END %] 76 | 77 | 78 | 79 |

    80 | Perl History 81 |

    82 |

    83 | If you want to help out developing new releases of Perl visit the development site and join the 85 | perl5-porters mailing list. 86 |

    87 | 88 |

    89 | Version scheme 90 |

    91 |

    92 | Perl has used the following policy since the 5.6 release 94 | of Perl: 95 |

    96 | 109 |

    110 | Please note that branches earlier than 5.20 are no longer supported, though 111 | fixes for urgent issues, for example severe security problems, may 112 | still be issued. 113 |

    114 |

    115 | Note: please avoid referring to the "symbolic" source releases like 116 | "stable" and "latest", or "maint" and "devel". They are still used here but 117 | only for backward compatibility. The symbolic names were found to cause 118 | more confusion than they are worth because they don't really work with 119 | multiple branches, especially not with multiple maintenance branches, and 120 | especially the "latest" makes absolutely no sense. The "latest" and 121 | "stable" are now just aliases for "maint", and "maint" in turn is the 122 | maintenance branch with the largest release number. 123 |

    124 | 125 | [% TRY %] 126 |

    First release in each branch of Perl

    127 | [% json_data = INSERT perl_versions_earliest.json %] 128 | [% versions = JSON.json_decode(json_data) %] 129 | 130 | 131 | 132 | 133 | 134 | 135 | [% FOREACH release = versions %] 136 | 137 | 138 | 139 | 141 | 142 | [% END %] 143 |
    MajorVersionReleased
    [% release.version_major %].[% release.version_minor %][% release.version_major %].[% release.version_minor %].[% release.version_iota %] 140 | [% release.released_date %]
    144 | [% CATCH %] 145 | [% END %] 146 | 147 |

    148 | 149 |

    150 | Other files and directories (mostly for posterity) 151 |

    152 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | -------------------------------------------------------------------------------- /src/misc/cpan-faq.html: -------------------------------------------------------------------------------- 1 | [% 2 | page.import({ 3 | title => "The CPAN Frequently Asked Questions", 4 | section => 'home', 5 | stub => '../', 6 | }); 7 | 8 | PROCESS "tpl/data/cpan-stats"; 9 | 10 | %] 11 | 12 | [% page.head = BLOCK %] 13 | 20 | [% END %] 21 | 22 |

    23 | CPAN Frequently Asked Questions 24 |

    25 |

    26 | Here are some answers to the most common questions received by 27 | cpan@perl.org. 28 |

    29 |

    30 | For general information about Perl you should see the Perl Home Page (www.perl.org). 32 |

    33 |

    34 | See the Perl FAQ (especially for any Perl programming questions, but also 35 | for other resources), available at http://perldoc.perl.org/index-faq.html. 37 |

    38 |
    39 |

    40 | I. - General Questions. 41 |

    42 | 59 |
    60 |

    61 | II. - The Quest for Perl source, modules and scripts. 62 |

    63 | 114 |
    115 |

    116 | III. - RIF [ Reading is Fun-duh-mental ] 117 |

    118 | 151 |
    152 |

    153 | IV. - Danger Will Robinson! Danger! Danger! 154 |

    155 | 169 |
    170 |

    171 | V. - Searching CPAN. 172 |

    173 | 182 |
    183 |

    184 | VI. - Contributing modules, patches, and bug reports. 185 |

    186 | 228 |
    229 |

    230 | VII. - How to mirror CPAN. 231 |

    232 | 237 |
    238 |

    239 | What is Perl? 240 |

    241 |

    242 | From the Perl documentation: 243 |

    244 |

    245 | Perl is a high-level programming language with an eclectic heritage 246 | written by Larry Wall and a cast of thousands. It derives from the 247 | ubiquitous C programming language and to a lesser extent from sed, awk, the 248 | Unix shell, and at least a dozen other tools and languages. Perl's process, 249 | file, and text manipulation facilities make it particularly well-suited for 250 | tasks involving quick prototyping, system utilities, software tools, system 251 | management tasks, database access, graphical programming, networking, and 252 | web programming. These strengths make it especially popular with 253 | system administrators and web developers, but mathematicians, 254 | geneticists, journalists, and even managers also use Perl. Maybe you 255 | should, too. 256 |

    257 | 258 |

    259 | A good starting point for Perl information is http://www.perl.org/ 261 |

    262 |
    263 |

    264 | What is Perl6? 265 |

    266 |

    267 | Perl 5 and Perl 6 are two languages in the Perl family, but of different 268 | lineages. Perl 6 is not intended primarily as a replacement for Perl 5, 269 | but as its own thing - and libraries exist to allow you to call Perl 5 code 270 | from Perl 6 programs and vice versa. 271 |

    272 |

    273 | For more about Perl 6 see http://www.perl6.org/. 275 |

    276 |

    277 | "We're really serious about reinventing everything that needs reinventing." 278 | --Larry Wall 279 |

    280 |
    281 |

    282 | What is CPAN? 283 |

    284 |

    285 | CPAN is the Comprehensive Perl Archive Network, 286 | a large collection of Perl software and documentation. You can begin 287 | exploring from either http://www.cpan.org/ or any of the mirrors 289 | listed at http://www.cpan.org/SITES.html. 291 |

    292 |

    293 | CPAN is also the name of a Perl module, CPAN.pm, which is used to 294 | download and install Perl software from the CPAN archive. This FAQ covers 295 | only a little about the CPAN module and you may find the documentation for 296 | it by using perldoc CPAN via the command line or on the web at 297 | https://metacpan.org/pod/CPAN. 299 |

    300 |
    301 |

    302 | What is PAUSE? 303 |

    304 |

    305 | PAUSE is the Perl 306 | Authors Upload SErver, a registry for Perl module, 307 | script and documentation authors to upload their work to the CPAN. CPAN and 308 | PAUSE are often used interchangeably but they are distinct from each other. 309 | The CPAN.pm documentation explains it rather simply; 310 |

    311 |

    312 | In this discussion CPAN and PAUSE have become equal -- but they are 313 | not. PAUSE is authors/, modules/ and scripts/. CPAN is PAUSE plus the 314 | clpa/, doc/, misc/, ports/ and src/. 315 |

    316 |

    317 | See the question 'How do I contribute 318 | modules?' below if you want to become a registered PAUSE user. 319 |

    320 |
    321 | 322 |

    323 | How does the 324 | CPAN work? 325 |

    326 |

    327 | CPAN works with the generosity and cooperation of thousands of developers, 328 | over [% cpan_stats.mirrors.count %] participating mirrors, many companies, 329 | institutions and individuals donating the network bandwidth, storage space 330 | and computing power, volunteers who help keep everything together and users 331 | whose interest in Perl keep the archive alive and growing. 332 |

    333 |

    334 | After an author uploads their module to PAUSE, it will be mirrored to CPAN once an 336 | hour and from there, to the rest of the mirrors around the world. There are 337 | people who advise authors on their choice of name and namespace for their 338 | modules and a few others who answer questions and investigate issues sent 339 | to cpan@perl.org. 340 |

    341 | 342 |
    343 |

    344 | Where can I 345 | find the current release of the Perl source code? 346 |

    347 | 353 |
    354 |

    355 | Where can I find 356 | older/obsolete versions of Perl or Perl Modules? 357 |

    358 |

    359 | Unless you have A Very Good Reason you shouldn't be installing obsolete 360 | versions because they might contain bugs, possibly even security bugs. 361 |

    362 |

    363 | Good Reasons may include having to support Perl 4 programs, trying to 364 | replicate a bug that requires an old Perl release, or pure joy of software 365 | archaeology. (Are you Perl 1 compliant?) 366 |

    367 |

    368 | CPAN does not carry all ancient releases and patchlevels of Perl (because 369 | of the bugs we mentioned above and because they would take quite a lot of 370 | storage space). 371 |

    372 | 381 |
    382 |

    383 | How do I interpret the 384 | Perl version numbers? 385 |

    386 |

    387 | Perl changed the version numbering system with v5.6.0 as was indicated in 388 | the release announcement: 389 |

    390 |

    391 | Perl v5.6.0 is a major release that incorporates all maintenance and 392 | development changes since the last major release, 5.005. As you may have 393 | noticed, the version numbering has changed. Releases will henceforth be 394 | numbered as revision.version.subversion triples. Maintenance releases will 395 | have an even version component, while the version component for development 396 | releases will be odd. For example, the next maintenance update of Perl 397 | 5.6.0 will be v5.6.1, and the development series will begin life at 398 | v5.7.0. 399 |

    400 |

    401 | You may also peruse the perlhist manpage for a complete list of 402 | versions and their release dates. 403 |

    404 |
    405 |

    406 | How do I 407 | install Perl using the source code? 408 |

    409 |

    410 | To build Perl you need a C compilation environment. After downloading the 411 | source code and opening it up, you should first read the INSTALL document 412 | which will detail how to build Perl on most systems. There are a number of 413 | README.[platform] for platforms where special care is needed in building 414 | Perl. As always, reading the documentation is a Good Thing[tm]. 415 |

    416 |

    417 | Perl can be installed using the standard source code distribution on almost 418 | all platforms Perl runs on. This includes all the UNIXes (and good 419 | lookalikes, meaning POSIX environments like OS/2, Plan 9, QNX, Amiga, 420 | MPE/iX, VMS, OS390, Stratus VOS), and Microsoft platforms. The most notable 421 | exceptions are (as of 1999-Mar-24); 422 |

    423 | 431 |

    432 | For these platforms a binary release may be the easiest path. 433 |

    434 |
      435 |
    1. The source code to compile MacPerl is available at http://www.cpan.org/ports/mac/. 437 |
    2. 438 |
    3. The source code for AS/400 and Netware Perls have not been merged to 439 | the main Perl source code distribution. If you want to try compiling them 440 | yourself, get the sources from 441 | http://www.cpan.org/ports/As400/ or http://www.cpan.org/ports/netware/ 443 | and then continue at http://www.cpan.org/src/README 445 |
    4. 446 |
    447 |
    448 |

    449 | Where can I 450 | find Perl modules? 451 |

    452 | 464 |

    465 | Due to the ever increasing number of modules on CPAN, the CPAN search 466 | engine is possibly a better starting point in your quest for code, 467 | especially if you already know exactly what you are looking for. 468 |

    469 |
    470 |

    471 | How do I 472 | install Perl modules? 473 |

    474 |

    475 | Installing a new module can be as simple as typing perl -MCPAN -e 476 | 'install Chocolate::Belgian'. The CPAN.pm documentation has more 478 | complete instructions on how to use this convenient tool. If you are 479 | uncomfortable with having something take that much control over your 480 | software installation, or it otherwise doesn't work for you, the perlmodinstall 482 | documentation covers module installation for UNIX, Windows and Macintosh in 483 | more familiar terms. 484 |

    485 |

    486 | Finally, if you're using ActivePerl on Windows, the PPM (Perl 488 | Package Manager) has much of the same functionality as CPAN.pm. 489 |

    490 |
    491 |

    492 | How do I find 493 | out what modules are already installed on my system? 494 |

    495 | 609 |
    610 |

    611 | Where can I find 612 | the most recently uploaded Perl modules? 613 |

    614 |

    615 | There are so many new and updated modules that it is hard to keep up with 616 | the deluge, but there are ways to stay abreast of the tide. 617 |

    618 | 629 |

    630 | Any of these should be good for your daily feed of new modules. 631 |

    632 |
    633 |

    634 | Where 635 | can I find Perl modules for Windows? 636 |

    637 |

    638 | www.activestate.com 640 | has a FAQ for their Package Manager. Also see http://strawberryperl.com/ which also 641 | enables you to build your own modules from CPAN. 642 |

    643 |
    644 |

    645 | Where can I find 646 | Perl binaries/packages or Perl module binaries? 647 |

    648 |

    649 | http://www.cpan.org/ports/index.html 651 | is a current list of Perl binaries that we are aware of at this time. If 652 | you have a package for a platform, send us a URL. We do not endorse nor 653 | guarantee these packages nor do we store them locally on CPAN due to the 654 | potential size of the archive if we did. 655 |

    656 |

    657 | Perl module binaries for use with ActivePerl's PPM can be found at http://www.activestate.com/PPMPackages/. 659 |

    660 |
    661 |

    662 | How are Perl and 663 | the CPAN modules licensed? 664 |

    665 |

    666 | Most, though not all, modules on CPAN are licensed under the GNU Public 667 | License (GPL) or the Artistic license and should be stated in the 668 | documentation that accompanies the module itself. If the license is not 669 | specifically stated in the module, you can always write the author to 670 | clarify the issue for you. Also, the text of the Artistic license and the 671 | GNU Public License are included in the root directory of the source 672 | distribution. From the 'README' file that comes with Perl: 673 |

    674 |
     675 |                        Perl Kit, Version 5.0
     676 | 
     677 |                    Copyright 1989-1999, Larry Wall
     678 |                         All rights reserved.
     679 | 
     680 | This program is free software; you can redistribute it and/or modify
     681 | it under the terms of either:
     682 | 
     683 |     a) the GNU General Public License as published by the Free
     684 |     Software Foundation; either version 1, or (at your option) any
     685 |     later version, or
     686 |     b) the "Artistic License" which comes with this Kit.
     687 | 
     688 | This program is distributed in the hope that it will be useful,
     689 | but WITHOUT ANY WARRANTY; without even the implied warranty of
     690 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See either
     691 | the GNU General Public License or the Artistic License for more details.
     692 | 
     693 | You should have received a copy of the Artistic License with this
     694 | Kit, in the file named "Artistic".  If not, I'll be glad to provide one.
     695 | 
     696 | You should also have received a copy of the GNU General Public License
     697 | along with this program in the file named "Copying". If not, write to the
     698 | Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
     699 | 02111-1307, USA or visit their web page on the internet at
     700 | http://www.gnu.org/copyleft/gpl.html.
     701 | 
     702 | For those of you that choose to use the GNU General Public License,
     703 | my interpretation of the GNU General Public License is that no Perl
     704 | script falls under the terms of the GPL unless you explicitly put
     705 | said script under the terms of the GPL yourself.  Furthermore, any
     706 | object code linked with perl does not automatically fall under the
     707 | terms of the GPL, provided such object code only adds definitions
     708 | of subroutines and variables, and does not otherwise impair the
     709 | resulting interpreter from executing any standard Perl script.  I
     710 | consider linking in C subroutines in this manner to be the moral
     711 | equivalent of defining subroutines in the Perl language itself.  You
     712 | may sell such an object file as proprietary provided that you provide
     713 | or offer to provide the Perl source, as specified by the GNU General
     714 | Public License.  (This is merely an alternate way of specifying input
     715 | to the program.)  You may also sell a binary produced by the dumping of
     716 | a running Perl script that belongs to you, provided that you provide or
     717 | offer to provide the Perl source as specified by the GPL.  (The
     718 | fact that a Perl interpreter and your code are in the same binary file
     719 | is, in this case, a form of mere aggregation.)  This is my interpretation
     720 | of the GPL.  If you still have concerns or difficulties understanding
     721 | my intent, feel free to contact me.  Of course, the Artistic License
     722 | spells all this out for your protection, so you may prefer to use that.
     723 | 
    724 |
    725 |

    726 | Does the 727 | Perl source include any modules? 728 |

    729 |

    730 | Yes, Perl comes with a number of useful modules and are listed in the 731 | perlmodlib pod: 732 |

    733 | 742 |
    743 |

    744 | Where can I 745 | find Perl scripts? 746 |

    747 | 761 |
    762 |

    763 | Where can I find 764 | the Perl FAQs? 765 |

    766 |

    767 | The Perl FAQ is included with the Perl source code distribution. 768 |

    769 | 777 |
    778 |

    779 | Where can I find Perl documentation? 781 |

    782 | 797 |
    798 |

    799 | Where can I find Perl module 801 | documentation? 802 |

    803 | 811 |
    812 |

    813 | Where do I find Perl DBI/DBD/database 815 | documentation? 816 |

    817 | 831 |
    832 |

    833 | Where can I find Perl mailing lists? 835 |

    836 |

    837 | There are quite a few mailing lists with a broad range of topics. 838 |

    839 | 852 |
    853 |

    854 | Where can 855 | I find Perl courses/training/on-line tutorials? 856 |

    857 |

    858 | Training 859 |

    860 | 869 |
    870 |

    871 | How do I 872 | find/join/organise a Perl User Group? 873 |

    874 |

    875 | The Perl User Groups are known as "Perl Mongers" and have active groups all 876 | over the world. You can find an established group at http://www.pm.org/groups/ or 878 | start a new group if one isn't near you via http://www.pm.org/start/ 880 |

    881 |
    882 |

    883 | Where can I find a 884 | history of Perl releases or a general history of the Perl community? 885 |

    886 |

    887 | A history of Perl releases can be found in your Perl distribution via 888 | perldoc perlhist or via the web at http://perldoc.perl.org/perlhist.html. 890 | A more general history of the Perl community, CPAST, can be found at 891 | http://history.perl.org/. 892 |

    893 |
    894 |

    895 | I downloaded 896 | a module/script/file but it was corrupt, what should I do? 897 |

    898 |

    899 | Many CPAN filenames end in .tar.gz. Unfortunately some programs mutilate 900 | such names (e.g., rename them with _tar.tar) so that unpacking programs 901 | don't recognise them and refuse to unpack them. Try saving the file using 902 | the .tgz suffix or try changing your web client. Also, you could try a 903 | plain FTP client as almost all the CPAN sites are ftp-reachable. You can 904 | find the full list of mirrors http://www.cpan.org/SITES.html 906 |

    907 |

    908 | If you use FTP remember to download in binary format, not text format. 909 |

    910 |

    911 | Please read http://www.cpan.org/ENDINGS if you aren't 913 | sure what the files should be unpacked with and want to know if you are 914 | using the right program. 915 |

    916 |

    917 | If you still think you have a corrupt file, try downloading the file from 918 | another site. If you still have no satisfaction, then please let us know 919 | the exact file name and URL/FTP site and path. 920 |

    921 |
    922 |

    923 | How do I use module 924 | Foo::Bar, can you help? (a.k.a. Are you a helpdesk?) 925 |

    926 |

    927 | We at CPAN are not a helpdesk. We may point you towards a plethora of 928 | documentation to help you in your quest for knowledge but we cannot debug 929 | your code or read for you. We exist specifically to answer questions and 930 | solve problems relating directly to the functioning of the CPAN itself. 931 |

    932 |

    933 | In addition to the on-line documentation you might try the newsgroup 934 | comp.lang.perl.modules for help with a particular module. Also, looking at 935 | other code using the same module might prove enlightening. 936 |

    937 |
    938 |

    939 | I'm having trouble with 940 | search.cpan.org, whom do I need to contact? 941 |

    942 |

    943 | If you are experiencing difficulty using search.cpan.org due to network or 944 | server errors, you need to contact webmaster@search.cpan.org. 946 |

    947 |
    948 |

    949 | How do I search for anything 950 | in CPAN? 951 |

    952 |

    953 | By using a CPAN search engine.
    954 |

    955 | 972 |
    973 |

    974 | How do I search for module/script 976 | documentation? (also known as "How do I use ..."?) 977 |

    978 |

    979 | In general modules and scripts come with their own documentation which 980 | should have been installed along with your module/script. (Thanks to Perl's 981 | pod-style documentation, "it is very hard to misplace your 982 | documentation".) 983 |

    984 | 998 |
    999 |

    1000 | How do I 1001 | contribute modules to CPAN? 1002 |

    1003 |

    1004 | If you would like to learn more about PAUSE and how to go about 1005 | contributing your module to CPAN please read the PAUSE FAQ at http://www.cpan.org/modules/04pause.html 1007 | which will tell you how to go about getting a PAUSE ID and the steps needed 1008 | to upload your code. Also,perldoc perlmodlib 1010 | and perldoc 1011 | perlmod are a good introduction to Perl modules. 1012 |

    1013 |
    1014 |

    1015 | Does 1016 | CPAN allow contributions of shareware or code that requests a fee of any 1017 | kind? 1018 |

    1019 |

    1020 | No. Everything on CPAN is free of charge. The reason for this is that CPAN 1021 | is the product of hundreds of people donating their time and resources for 1022 | the common good of the Perl community. There are places on the net where 1023 | one can offer shareware without treading on the generosity of others and 1024 | this is not that place. 1025 |

    1026 |
    1027 |

    1028 | How do I 1029 | contribute scripts to CPAN? 1030 |

    1031 |

    1032 | CPAN has a scripts repository at http://www.cpan.org/scripts/ and 1034 | http://www.cpan.org/scripts/submitting.html 1035 | will instruct you on how to go about contributing your scripts. 1036 |

    1037 |
    1038 |

    1039 | How do I contribute documentation to 1041 | CPAN? 1042 |

    1043 |

    1044 | If the documentation is for a particular module that isn't a core 1045 | distribution module, then please send it to the module author. If the 1046 | module is a core module the most appropriate place to send doc patches and 1047 | enhancements is the Perl5Porters mailing list. 1048 |

    1049 |
    1050 |

    1051 | How do I report/fix 1052 | a bug in Perl and/or its documentation? 1053 |

    1054 |

    1055 | Always remember to make your bug reports as detailed as possible. "Perl 1056 | doesn't work." is not a bug report.
    1057 | Please note that problems concerning modules that are installed separately 1058 | from the Perl distribution (such as Tk) are reported differently. 1059 |

    1060 |

    1061 | Here is a checklist from perlbug, a bug reporting tool 1063 | included in your Perl distribution. It is a bit on the long side, but 1064 | please read it carefully as the better your bug report is, the more likely 1065 | the issue will be addressed. 1066 |

    1067 | 1212 |
    1213 |

    1214 | How do I 1215 | report/fix a bug in a module/script? 1216 |

    1217 |

    1218 | Please contact the author of the module/script, ideally by 1219 | creating a ticket using the bug tracker for the module (linked as 'Bugs' from 1220 | metacpan.org or 'View/Report Bugs' 1221 | from search.cpan.org). 1222 | The author should be automatically notified by email. 1223 |

    1224 |

    1225 | If the author doesn't respond, the documentation of the module/script might 1226 | contain a contact address or you can try CPANID@perl.org where 1227 | CPANID is the authors CPANID. 1228 |

    1229 |

    1230 | Most of the checklist in reporting bugs in 1231 | Perl above applies for modules as well. Make your bug report as good as 1232 | possible if you really want the bug fixed. If the module is included with 1233 | the Perl distribution you should also follow the Perl bug reporting tips. 1234 |

    1235 |
    1236 |

    1237 | How do I go about 1238 | maintaining a module when the author is unresponsive? 1239 |

    1240 |

    1241 | Sometimes a module goes unmaintained for a while due to the author pursuing 1242 | other interests, being busy, etc. and another person needs changes applied 1243 | to that module and may become frustrated when their bug reports and emails 1244 | goes unanswered. 1245 | CPAN does not mediate or dictate a policy in this situation and rely on the 1246 | respective authors to work out the details. If you treat other authors as 1247 | you would like to be treated in the same situation the manner in which you 1248 | go about dealing with such problems should be obvious. 1249 |

    1250 | 1272 |

    1273 | Simply keep in mind that you are dealing with a person who invested time 1274 | and care into something. A little respect and courtesy go a long way. 1275 |

    1276 |
    1277 |

    1278 | How do I adopt or take 1279 | over a module already on CPAN? 1280 |

    1281 |

    1282 | The easiest way to take over a module is to have the current module 1283 | maintainer either make you a co-maintainer or transfer the module to you. 1284 |

    1285 |

    1286 | If you can't reach the author for some reason (e.g. email bounces), the 1287 | PAUSE admins at modules@perl.org can help. The PAUSE admins treat each case 1288 | individually. 1289 |

    1290 |

    1291 | Please make sure you have tried all of the above ways of getting in contact 1292 | with the author before going this way! 1293 |

    1294 | 1313 |
    1314 |

    1315 | Is there a site for module 1316 | bug reports/tests? 1317 |

    1318 |

    1319 | Yes, through the diligence of Paul Schinder and a few others, we have 1320 | CPAN Testers which is a collection 1321 | of test results for modules on a number of different platforms. This 1322 | information is also available when viewing module information on 1323 | Metacpan or 1324 | search.cpan.org. 1325 |

    1326 |

    1327 | There is also http://bugs.perl.org/ 1328 | where you might search for a module bug already reported to P5P. 1329 |

    1330 |
    1331 |

    1332 | Does CPAN provide 1333 | download statistics for authors? 1334 |

    1335 |

    1336 | No we don't. http://xxx.lanl.gov/help/faq/statfaq 1338 | sums up our thoughts on the matter quite well. 1339 |

    1340 | 1341 |
    1342 | 1343 | 1344 | 1345 | 1346 | 1347 |

    Questions about mirroring CPAN

    1348 | See How to mirror CPAN. 1349 |
    1350 | 1351 |

    1352 | The CPAN FAQ is copyright Jarkko Hietaniemi and Elaine 1353 | Ashton 1998-2007 and Ask Bjørn Hansen, Leo Lapworth 2011 All 1354 | Rights Reserved. Send questions and comments 1355 | to cpan@perl.org. 1356 | 1357 |

    1358 | --------------------------------------------------------------------------------