148:. Similarly, though GitHub is a popular location to store the source for distributions, it may be stored anywhere the author prefers, or may not be publicly accessible at all. Maintainers may grant permissions to others to maintain or take over their modules, and permissions may be granted by admins for those wishing to take over abandoned modules. Previous versions of updated distributions are retained on CPAN until deleted by the uploader, and a secondary mirror network called BackPAN retains distributions even if they are deleted from CPAN. Also, the complete history of the CPAN and all its modules is available as the GitPAN project, allowing to easily see the complete history for all the modules and for easy maintenance of forks. CPAN is also used to distribute new versions of Perl, as well as related projects, such as
957:
979:
201:, indicating the distribution's name, version, dependencies, and other useful information; however, not all distributions contain metadata. When metadata is not present in a distribution, the PAUSE's software will try to analyze the code in the distribution to look for the same information; this is not necessarily very reliable. In 2010, version 2 of this specification was created to be used via a new file called
316:
A smaller, leaner modern alternative to these CPAN installers was developed called cpanminus. cpanminus was designed to have a much smaller memory footprint as often required in limited memory environments, and to be usable as a standalone script such that it can even install itself, requiring only
321:
script. It does not maintain or rely on a persistent configuration, but is configured only by the environment and command-line options. cpanminus does not have an interactive shell component. It recognizes the cpanfile format for specifying prerequisites, useful in ad-hoc Perl projects that may
234:
used in the module's name has been replaced with a dash, and the version number has been appended to the name), but this is only a convention; many prominent distributions break the convention, especially those that contain multiple modules. Security restrictions prevent a distribution from ever
272:
CPAN Testers are a group of volunteers, who will download and test distributions as they are uploaded to CPAN. This enables the authors to have their modules tested on many platforms and environments that they would otherwise not have access to, thus helping to promote portability, as well as a
312:
An effort to replace CPAN.pm with something cleaner and more modern resulted in the CPANPLUS (or CPAN++) set of modules. CPANPLUS separates the back-end work of downloading, compiling, and installing modules from the interactive shell used to issue commands. It also supports several advanced
268:
includes textual search, a browsable index of modules, and extracted copies of all distributions currently on the CPAN. On 16 May 2018, the Perl
Foundation announced that search.cpan.org would be shut down on 29 June 2018 (after 19 years of operation), due to its aging codebase and maintenance
254:
Most mirrors update themselves hourly, daily or bidaily from the CPAN master site. Some sites are major FTP servers which mirror lots of other software, but others are simply servers owned by companies that use Perl heavily. There are at least two mirrors on every continent except
Antarctica.
308:
is also provided in the Perl core, and is the usual way of running CPAN.pm. After a short configuration process and mirror selection, it uses tools available on the user's computer to automatically download, unpack, compile, test, and install modules. It is also capable of updating itself.
143:
CPAN's main purpose is to help programmers locate modules and programs not included in the Perl standard distribution. Its structure is decentralized. Authors maintain and improve their own modules. Forking, and creating competing modules for the same task or purpose, is common. There is a
20:
303:
There is also a Perl core module named CPAN; it is usually differentiated from the repository itself by using the name CPAN.pm. CPAN.pm is mainly an interactive shell which can be used to search for, download, and install distributions. An interactive shell called
313:
features, such as cryptographic signature checking and test result reporting. Finally, CPANPLUS can uninstall a distribution. CPANPLUS was added to the Perl core in version 5.10.0, and removed from it in version 5.20.0.
471:, the JavaScript Archive Network. The JSAN is a near-direct port of the CPAN infrastructure for use with the JavaScript language, which for most of its lifespan did not have a cohesive "community".
187:) and test scripts which can be run to verify the contents of the distribution are functioning properly. New distributions are uploaded to the Perl Authors Upload Server, or PAUSE (see the section
295:
permission to the uploader), or if the uploader has permission for that name, and if the module is a higher version than any existing entry. This can be specified through PAUSE's web interface.
273:
degree of quality. Smoke testers send reports, which are then collated and used for a variety of presentation websites, including the main reports site, statistics and dependencies.
291:
interface to upload files to their directory and delete them. Modules in the upload will only be indexed as canonical if the module name has not been used before (granting
329:
and recursively install any prerequisites, either automatically or with individual user approval. Each support FTP and HTTP and can work through firewalls and proxies.
215:
With thousands of distributions, CPAN needs to be structured to be useful. Authors often place their modules in the natural hierarchy of Perl module names (such as
247:
The distribution infrastructure of CPAN consists of its worldwide network of more than 250 mirrors in more than 60 countries. Each full mirror hosts around 36
144:
third-party bug tracking system that is automatically set up for any uploaded distribution, but authors may opt to use a different bug tracking system such as
54:
can denote either the archive network or the Perl program that acts as an interface to the network and as an automated software installer (somewhat like a
1002:
570:
I propose that we cooperate to create a unified structure, much like the CTAN project which has managed to create a collection of canonical sites for TeX
413:
317:
the expected set of core Perl modules to be available. It is also available from CPAN as the module App::cpanminus, which installs the
168:. A distribution may consist of one or more modules, documentation files, or programs packaged in a common archiving format, such as a
468:
1001:- a document that aims to explain how and why CPAN succeeded and how to duplicate it in similar efforts. (9 January 2003 by
962:
482:
created the CCAN, the
Comprehensive C Archive Network. The CCAN is a direct port of the CPAN architecture for use with the
1443:
536:
Most, though not all, modules on CPAN are licensed under the GNU General Public
License (GPL) or the Artistic license...
405:. CPAN's use of arbitrated name spaces, a testing regime and a well defined documentation style makes it unique.
1030:
402:
337:
Experienced Perl programmers often comment that half of Perl's power is in the CPAN. It has been called Perl's
366:
354:
59:
1284:
1179:
1090:
394:
362:
326:
153:
140:
for building and installing other extension modules; others, like List::Util, are merely commonly used.
386:
258:
Several search engines have been written to help Perl programmers sort through the CPAN. The official
1438:
475:
766:
816:
490:
483:
431:
370:
322:
not be designed for CPAN installation. cpanminus also has the ability to uninstall distributions.
136:. Some of these perform bootstrapping tasks, such as ExtUtils::MakeMaker, which is used to create
930:
791:
467:
In 2005, a group of Perl developers who also had an interest in JavaScript got together to create
1219:
1133:
107:
1378:
1279:
531:
288:
209:
149:
562:
653:
99:
90:
of code, making one file contain common routines used by several programs. Perl calls these
70:
CPAN was conceived in 1993 and has been active online since
October 1995. It is based on the
408:
Given its importance to the Perl developer community, the CPAN both shapes and is shaped by
235:
being replaced with an identical filename, so virtually all distribution names do include a
1199:
1184:
1085:
269:
burden. Users will be transitioned and redirected to the third-party alternative MetaCPAN.
83:
47:
8:
1332:
1113:
417:
342:
87:
40:
36:
1353:
1100:
1023:
978:
1327:
1118:
1317:
1229:
1158:
1148:
439:
118:
103:
1402:
1239:
1058:
176:
172:
55:
843:
608:"List::Util - A selection of general-utility list subroutines - Perldoc Browser"
460:
hierarchy, some modules are still written largely for amusement; one example is
1363:
723:
681:
582:
374:
236:
74:
model and began as a place to unify the structure of scattered Perl archives.
1433:
1427:
1409:
1388:
1373:
1358:
1322:
1016:
745:
479:
548:
179:
file. Distributions will often contain installation scripts (usually called
1244:
1224:
1143:
1063:
886:
489:
CRAN, the
Comprehensive R Archive Network, is a set of mirrors hosting the
390:
908:
864:
409:
1383:
1368:
1138:
1128:
1080:
95:
43:
and accompanying documentation for 39,000 distributions, written in the
1348:
1294:
434:, a site infamous in the Perl community for having badly written code.
338:
998:
607:
1209:
1068:
437:
Some of the distributions on the CPAN are distributed as jokes. The
115:
1204:
1194:
1123:
382:
358:
248:
137:
111:
19:
989:
702:
632:
583:"ExtUtils::MakeMaker - Create a module Makefile - Perldoc Browser"
452:
function that doesn't run the code given to it (to complement the
1253:
1214:
1189:
1108:
478:
at the Open Source
Developers Conference, Linux kernel developer
464:, which can be used to write Perl programs in a subset of Latin.
398:
378:
194:
In 2003, distributions started to include metadata files, called
1299:
1289:
1263:
1258:
1174:
821:
658:
223:) according to purpose or domain, though this is not enforced.
145:
1249:
276:
Authors can upload new distributions to the CPAN through the
993:
493:
distribution(s), documentation, and contributed extensions.
226:
CPAN module distributions usually have names in the form of
1234:
1153:
1039:
422:
350:
204:
197:
169:
71:
44:
260:
420:
jokes; on 1 April 2002 the site was temporarily named to
346:
284:
972:
510:
1008:
984:
280:(PAUSE). To do so, they must request a PAUSE account.
188:
767:"The end of an era: Saying goodbye to search.cpan.org"
444:
hierarchy is reserved for joke modules; for instance,
952:
208:, with the YAML format file often also included for
298:
999:ZCAN - "The Zen of Comprehensive Archive Networks"
887:"Exploit this formmail.pl for fun and, well, fun"
325:Each of these modules can check a distribution's
283:Once registered, they may use a web interface at
1425:
474:In 2008, after a chance meeting with CPAN admin
426:, where the "J" stood for "Java". In 2003, the
1024:
532:"How are Perl and the CPAN modules licensed?"
716:
646:
1031:
1017:
977:
695:
98:are typically installed in one of several
836:
456:built-in, which does). Even outside the
412:. Its "self-appointed master librarian",
18:
129:, and several of their subdirectories.
1426:
909:"Matt's Script Archive Strikes Again!"
549:"The Timeline of Perl and its Culture"
353:(Python Package Index) repository for
86:, Perl has mechanisms to use external
1012:
164:Files on the CPAN are referred to as
963:Free and open-source software portal
865:"Elements of Programming with Perl"
792:"Saying goodbye to search.cpan.org"
503:
13:
189:Uploading distributions with PAUSE
29:Comprehensive Perl Archive Network
14:
1455:
948:
955:
299:CPAN.pm, CPANPLUS, and cpanminus
923:
901:
879:
857:
809:
784:
759:
738:
132:Perl comes with a small set of
16:Perl module software repository
674:
625:
600:
575:
555:
541:
524:
430:domain name was redirected to
341:. It is roughly equivalent to
1:
990:List of official CPAN mirrors
496:
242:
60:free and open source software
50:by over 12,000 contributors.
746:"CPAN Status and Statistics"
332:
159:
58:). Most software on CPAN is
7:
10:
1460:
1444:Package management systems
416:, often takes part in the
278:Perl Authors Upload Server
65:
1397:
1341:
1310:
1272:
1167:
1099:
1046:
844:"Re: Killer Apps in PERL"
462:Lingua::Romana::Perligata
1038:
817:"PAUSE Operating Model"
121:, common paths include
106:are placed in the Perl
77:
491:R programming language
210:backward compatibility
24:
703:"CPAN Mirror Network"
682:"CPAN::Meta::History"
432:Matt's Script Archive
84:programming languages
22:
724:"How to mirror CPAN"
127:/usr/local/lib/perl5
48:programming language
1333:Perl Best Practices
563:"Grokking the CPAN"
228:CGI-Application-3.1
221:Lingua::EN::Inflect
1354:Randal L. Schwartz
25:
1419:
1418:
1328:Intermediate Perl
1003:Jarkko Hietaniemi
994:status of mirrors
867:. 12 October 2000
662:. 2 December 2015
654:"What is Gitpan?"
511:"CPAN front page"
414:Jarkko Hietaniemi
119:operating systems
110:when it is first
1451:
1439:Archive networks
1318:Programming Perl
1159:Template Toolkit
1033:
1026:
1019:
1010:
1009:
981:
976:
975:
973:Official website
965:
960:
959:
958:
942:
941:
939:
937:
927:
921:
920:
918:
916:
905:
899:
898:
896:
894:
883:
877:
876:
874:
872:
861:
855:
854:
852:
850:
840:
834:
833:
831:
829:
813:
807:
806:
804:
802:
788:
782:
781:
779:
777:
763:
757:
756:
754:
752:
742:
736:
735:
733:
731:
720:
714:
713:
711:
709:
699:
693:
692:
690:
688:
678:
672:
671:
669:
667:
650:
644:
643:
641:
639:
629:
623:
622:
620:
618:
612:perldoc.perl.org
604:
598:
597:
595:
593:
587:perldoc.perl.org
579:
573:
572:
567:
559:
553:
552:
545:
539:
538:
528:
522:
521:
519:
517:
507:
463:
459:
455:
451:
447:
443:
429:
418:April Fools' Day
320:
307:
267:
264:
262:
222:
218:
41:software modules
39:of over 250,000
1459:
1458:
1454:
1453:
1452:
1450:
1449:
1448:
1424:
1423:
1420:
1415:
1393:
1337:
1306:
1268:
1240:Request Tracker
1163:
1095:
1059:Perl Foundation
1042:
1037:
971:
970:
961:
956:
954:
951:
946:
945:
935:
933:
931:"What is CRAN?"
929:
928:
924:
914:
912:
907:
906:
902:
892:
890:
889:. 7 August 2001
885:
884:
880:
870:
868:
863:
862:
858:
848:
846:
842:
841:
837:
827:
825:
815:
814:
810:
800:
798:
790:
789:
785:
775:
773:
765:
764:
760:
750:
748:
744:
743:
739:
729:
727:
722:
721:
717:
707:
705:
701:
700:
696:
686:
684:
680:
679:
675:
665:
663:
652:
651:
647:
637:
635:
631:
630:
626:
616:
614:
606:
605:
601:
591:
589:
581:
580:
576:
565:
561:
560:
556:
547:
546:
542:
530:
529:
525:
515:
513:
509:
508:
504:
499:
461:
457:
453:
449:
445:
438:
427:
335:
318:
305:
301:
259:
245:
220:
216:
162:
80:
68:
56:package manager
17:
12:
11:
5:
1457:
1447:
1446:
1441:
1436:
1417:
1416:
1414:
1413:
1406:
1398:
1395:
1394:
1392:
1391:
1386:
1381:
1376:
1371:
1366:
1364:Allison Randal
1361:
1356:
1351:
1345:
1343:
1339:
1338:
1336:
1335:
1330:
1325:
1320:
1314:
1312:
1308:
1307:
1305:
1304:
1303:
1302:
1297:
1292:
1282:
1276:
1274:
1270:
1269:
1267:
1266:
1261:
1256:
1247:
1242:
1237:
1232:
1227:
1222:
1217:
1212:
1207:
1202:
1197:
1192:
1187:
1182:
1177:
1171:
1169:
1165:
1164:
1162:
1161:
1156:
1151:
1146:
1141:
1136:
1131:
1126:
1121:
1116:
1111:
1105:
1103:
1097:
1096:
1094:
1093:
1088:
1083:
1078:
1077:
1076:
1071:
1066:
1056:
1050:
1048:
1044:
1043:
1036:
1035:
1028:
1021:
1013:
1007:
1006:
996:
987:
982:
967:
966:
950:
949:External links
947:
944:
943:
922:
900:
878:
856:
835:
808:
783:
758:
737:
715:
694:
673:
645:
624:
599:
574:
554:
540:
523:
501:
500:
498:
495:
410:Perl's culture
334:
331:
300:
297:
285:pause.perl.org
244:
241:
237:version number
161:
158:
123:/usr/lib/perl5
79:
76:
67:
64:
15:
9:
6:
4:
3:
2:
1456:
1445:
1442:
1440:
1437:
1435:
1432:
1431:
1429:
1422:
1412:
1411:
1407:
1405:
1404:
1400:
1399:
1396:
1390:
1389:Jesse Vincent
1387:
1385:
1382:
1380:
1377:
1375:
1374:Sean M. Burke
1372:
1370:
1367:
1365:
1362:
1360:
1359:Damian Conway
1357:
1355:
1352:
1350:
1347:
1346:
1344:
1340:
1334:
1331:
1329:
1326:
1324:
1323:Learning Perl
1321:
1319:
1316:
1315:
1313:
1309:
1301:
1298:
1296:
1293:
1291:
1288:
1287:
1286:
1283:
1281:
1278:
1277:
1275:
1271:
1265:
1262:
1260:
1257:
1255:
1251:
1248:
1246:
1243:
1241:
1238:
1236:
1233:
1231:
1228:
1226:
1223:
1221:
1218:
1216:
1213:
1211:
1208:
1206:
1203:
1201:
1198:
1196:
1193:
1191:
1188:
1186:
1183:
1181:
1178:
1176:
1173:
1172:
1170:
1166:
1160:
1157:
1155:
1152:
1150:
1147:
1145:
1142:
1140:
1137:
1135:
1132:
1130:
1127:
1125:
1122:
1120:
1117:
1115:
1112:
1110:
1107:
1106:
1104:
1102:
1098:
1092:
1089:
1087:
1084:
1082:
1079:
1075:
1072:
1070:
1067:
1065:
1062:
1061:
1060:
1057:
1055:
1052:
1051:
1049:
1045:
1041:
1034:
1029:
1027:
1022:
1020:
1015:
1014:
1011:
1004:
1000:
997:
995:
991:
988:
986:
983:
980:
974:
969:
968:
964:
953:
932:
926:
911:. 4 July 2001
910:
904:
888:
882:
866:
860:
845:
839:
824:
823:
818:
812:
797:
793:
787:
772:
768:
762:
747:
741:
725:
719:
704:
698:
683:
677:
661:
660:
655:
649:
634:
628:
613:
609:
603:
588:
584:
578:
571:
564:
558:
550:
544:
537:
533:
527:
512:
506:
502:
494:
492:
487:
485:
481:
480:Rusty Russell
477:
472:
470:
465:
441:
435:
433:
425:
424:
419:
415:
411:
406:
404:
400:
396:
392:
388:
384:
380:
376:
372:
368:
364:
360:
356:
352:
348:
344:
340:
330:
328:
323:
314:
310:
296:
294:
290:
286:
281:
279:
274:
270:
266:
256:
252:
250:
240:
238:
233:
229:
224:
213:
211:
207:
206:
200:
199:
192:
190:
186:
182:
178:
175:archive or a
174:
171:
167:
166:distributions
157:
155:
151:
147:
141:
139:
135:
130:
128:
124:
120:
117:
113:
109:
105:
101:
97:
93:
89:
85:
75:
73:
63:
61:
57:
53:
49:
46:
42:
38:
34:
30:
21:
1421:
1408:
1401:
1245:SpamAssassin
1225:Movable Type
1073:
1064:Perl Mongers
1053:
934:. Retrieved
925:
913:. Retrieved
903:
891:. Retrieved
881:
869:. Retrieved
859:
847:. Retrieved
838:
826:. Retrieved
820:
811:
799:. Retrieved
795:
786:
774:. Retrieved
771:log.perl.org
770:
761:
749:. Retrieved
740:
728:. Retrieved
718:
706:. Retrieved
697:
685:. Retrieved
676:
664:. Retrieved
657:
648:
636:. Retrieved
627:
615:. Retrieved
611:
602:
590:. Retrieved
586:
577:
569:
557:
543:
535:
526:
514:. Retrieved
505:
488:
476:Adam Kennedy
473:
466:
436:
428:www.cpan.org
421:
407:
336:
327:dependencies
324:
315:
311:
302:
292:
282:
277:
275:
271:
257:
253:
246:
231:
227:
225:
214:
202:
195:
193:
184:
180:
165:
163:
142:
134:core modules
133:
131:
126:
122:
96:Perl modules
91:
81:
69:
51:
32:
28:
26:
1384:brian d foy
1369:Audrey Tang
1139:Mojolicious
1129:DBIx::Class
936:20 December
849:24 February
828:20 December
708:16 November
687:20 December
666:16 November
638:20 December
617:18 November
592:18 November
446:Acme::Don't
230:(where the
217:Apache::DBI
181:Makefile.PL
108:interpreter
100:directories
1428:Categories
1349:Larry Wall
1101:Frameworks
726:. CPAN.org
516:27 January
497:References
484:C language
339:killer app
293:first-come
243:Components
82:Like many
37:repository
1379:chromatic
1210:Dada Mail
1200:Bricolage
1069:PerlMonks
730:22 August
633:"BackPAN"
333:Influence
251:of data.
249:gigabytes
160:Structure
138:Makefiles
116:Unix-like
88:libraries
23:CPAN logo
1410:Category
1205:Bugzilla
1195:BackupPC
1168:Software
1114:Catalyst
1074:archives
985:MetaCPAN
915:25 April
893:25 April
871:25 April
796:perl.com
383:LuaRocks
359:RubyGems
343:Composer
287:, or an
185:Build.PL
112:compiled
1403:Outline
1273:Related
1254:Foswiki
1215:ikiwiki
1190:AWStats
1109:BioPerl
1086:Perl VM
801:26 June
448:adds a
403:Haskell
399:Hackage
379:Node.js
170:gzipped
92:modules
66:History
35:) is a
1342:People
1300:MoarVM
1290:Rakudo
1280:Parrot
1264:Webmin
1259:W3Perl
1220:Makepp
1175:Amavis
1119:Dancer
1081:module
1047:Things
822:GitHub
776:22 May
659:GitHub
458:Acme::
397:; and
355:Python
349:; the
261:search
150:Parrot
146:GitHub
102:whose
1311:Books
1295:rules
1250:TWiki
1230:Munin
1180:Argus
1149:Plack
1144:Moose
751:9 May
566:(PDF)
450:don't
391:Maven
319:cpanm
263:.cpan
203:META.
196:META.
114:; on
104:paths
1434:Perl
1285:Raku
1235:OTRS
1185:@SSP
1154:PSGI
1091:YAPC
1054:CPAN
1040:Perl
938:2019
917:2013
895:2013
873:2013
851:2013
830:2019
803:2018
778:2018
753:2010
732:2024
710:2016
689:2019
668:2016
640:2019
619:2020
594:2020
518:2016
469:JSAN
440:Acme
423:CJAN
401:for
395:Java
393:for
385:for
377:for
369:for
367:CRAN
363:Ruby
361:for
351:PyPI
345:for
306:cpan
265:.org
205:json
154:Raku
152:and
78:Role
72:CTAN
52:CPAN
45:Perl
33:CPAN
27:The
1134:LWP
1124:DBI
387:Lua
375:npm
347:PHP
289:FTP
219:or
198:yml
191:).
183:or
177:ZIP
173:tar
94:.
1430::
1005:).
992:,
819:.
794:.
769:.
656:.
610:.
585:.
568:.
534:.
486:.
454:do
442:::
389:;
381:;
373:;
365:;
357:;
239:.
232:::
212:.
156:.
125:,
62:.
1252:/
1032:e
1025:t
1018:v
940:.
919:.
897:.
875:.
853:.
832:.
805:.
780:.
755:.
734:.
712:.
691:.
670:.
642:.
621:.
596:.
551:.
520:.
371:R
31:(
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.