1=for maintainers 2Generated by perlmodlib.PL -- DO NOT EDIT! 3 4=head1 NAME 5 6perlmodlib - constructing new Perl modules and finding existing ones 7 8=head1 THE PERL MODULE LIBRARY 9 10Many modules are included in the Perl distribution. These are described 11below, and all end in F<.pm>. You may discover compiled library 12files (usually ending in F<.so>) or small pieces of modules to be 13autoloaded (ending in F<.al>); these were automatically generated 14by the installation process. You may also discover files in the 15library directory that end in either F<.pl> or F<.ph>. These are 16old libraries supplied so that old programs that use them still 17run. The F<.pl> files will all eventually be converted into standard 18modules, and the F<.ph> files made by B<h2ph> will probably end up 19as extension modules made by B<h2xs>. (Some F<.ph> values may 20already be available through the POSIX, Errno, or Fcntl modules.) 21The B<pl2pm> file in the distribution may help in your conversion, 22but it's just a mechanical process and therefore far from bulletproof. 23 24=head2 Pragmatic Modules 25 26They work somewhat like compiler directives (pragmata) in that they 27tend to affect the compilation of your program, and thus will usually 28work well only when used within a C<use>, or C<no>. Most of these 29are lexically scoped, so an inner BLOCK may countermand them 30by saying: 31 32 no integer; 33 no strict 'refs'; 34 no warnings; 35 36which lasts until the end of that BLOCK. 37 38Some pragmas are lexically scoped--typically those that affect the 39C<$^H> hints variable. Others affect the current package instead, 40like C<use vars> and C<use subs>, which allow you to predeclare a 41variables or subroutines within a particular I<file> rather than 42just a block. Such declarations are effective for the entire file 43for which they were declared. You cannot rescind them with C<no 44vars> or C<no subs>. 45 46The following pragmas are defined (and have their own documentation). 47 48=over 12 49 50=item attributes 51 52Get/set subroutine or variable attributes 53 54=item attrs 55 56Set/get attributes of a subroutine (deprecated) 57 58=item autouse 59 60Postpone load of modules until a function is used 61 62=item base 63 64Establish IS-A relationship with base classes at compile time 65 66=item bigint 67 68Transparent BigInteger support for Perl 69 70=item bignum 71 72Transparent BigNumber support for Perl 73 74=item bigrat 75 76Transparent BigNumber/BigRational support for Perl 77 78=item blib 79 80Use MakeMaker's uninstalled version of a package 81 82=item bytes 83 84Force byte semantics rather than character semantics 85 86=item charnames 87 88Define character names for C<\N{named}> string literal escapes 89 90=item constant 91 92Declare constants 93 94=item diagnostics 95 96Produce verbose warning diagnostics 97 98=item encoding 99 100Allows you to write your script in non-ascii or non-utf8 101 102=item fields 103 104Compile-time class fields 105 106=item filetest 107 108Control the filetest permission operators 109 110=item if 111 112C<use> a Perl module if a condition holds 113 114=item integer 115 116Use integer arithmetic instead of floating point 117 118=item less 119 120Request less of something from the compiler 121 122=item lib 123 124Manipulate @INC at compile time 125 126=item locale 127 128Use and avoid POSIX locales for built-in operations 129 130=item open 131 132Set default PerlIO layers for input and output 133 134=item ops 135 136Restrict unsafe operations when compiling 137 138=item overload 139 140Package for overloading Perl operations 141 142=item re 143 144Alter regular expression behaviour 145 146=item sigtrap 147 148Enable simple signal handling 149 150=item sort 151 152Control sort() behaviour 153 154=item strict 155 156Restrict unsafe constructs 157 158=item subs 159 160Predeclare sub names 161 162=item threads 163 164Perl extension allowing use of interpreter based threads from perl 165 166=item threads::shared 167 168Perl extension for sharing data structures between threads 169 170=item utf8 171 172Enable/disable UTF-8 (or UTF-EBCDIC) in source code 173 174=item vars 175 176Predeclare global variable names (obsolete) 177 178=item vmsish 179 180Control VMS-specific language features 181 182=item warnings 183 184Control optional warnings 185 186=item warnings::register 187 188Warnings import function 189 190=back 191 192=head2 Standard Modules 193 194Standard, bundled modules are all expected to behave in a well-defined 195manner with respect to namespace pollution because they use the 196Exporter module. See their own documentation for details. 197 198It's possible that not all modules listed below are installed on your 199system. For example, the GDBM_File module will not be installed if you 200don't have the gdbm library. 201 202=over 12 203 204=item AnyDBM_File 205 206Provide framework for multiple DBMs 207 208=item Attribute::Handlers 209 210Simpler definition of attribute handlers 211 212=item AutoLoader 213 214Load subroutines only on demand 215 216=item AutoSplit 217 218Split a package for autoloading 219 220=item B 221 222The Perl Compiler 223 224=item B::Asmdata 225 226Autogenerated data about Perl ops, used to generate bytecode 227 228=item B::Assembler 229 230Assemble Perl bytecode 231 232=item B::Bblock 233 234Walk basic blocks 235 236=item B::Bytecode 237 238Perl compiler's bytecode backend 239 240=item B::C 241 242Perl compiler's C backend 243 244=item B::CC 245 246Perl compiler's optimized C translation backend 247 248=item B::Concise 249 250Walk Perl syntax tree, printing concise info about ops 251 252=item B::Debug 253 254Walk Perl syntax tree, printing debug info about ops 255 256=item B::Deparse 257 258Perl compiler backend to produce perl code 259 260=item B::Disassembler 261 262Disassemble Perl bytecode 263 264=item B::Lint 265 266Perl lint 267 268=item B::Showlex 269 270Show lexical variables used in functions or files 271 272=item B::Stackobj 273 274Helper module for CC backend 275 276=item B::Stash 277 278Show what stashes are loaded 279 280=item B::Terse 281 282Walk Perl syntax tree, printing terse info about ops 283 284=item B::Xref 285 286Generates cross reference reports for Perl programs 287 288=item Benchmark 289 290Benchmark running times of Perl code 291 292=item ByteLoader 293 294Load byte compiled perl code 295 296=item CGI 297 298Simple Common Gateway Interface Class 299 300=item CGI::Apache 301 302Backward compatibility module for CGI.pm 303 304=item CGI::Carp 305 306CGI routines for writing to the HTTPD (or other) error log 307 308=item CGI::Cookie 309 310Interface to Netscape Cookies 311 312=item CGI::Fast 313 314CGI Interface for Fast CGI 315 316=item CGI::Pretty 317 318Module to produce nicely formatted HTML code 319 320=item CGI::Push 321 322Simple Interface to Server Push 323 324=item CGI::Switch 325 326Backward compatibility module for defunct CGI::Switch 327 328=item CGI::Util 329 330Internal utilities used by CGI module 331 332=item CPAN 333 334Query, download and build perl modules from CPAN sites 335 336=item CPAN::FirstTime 337 338Utility for CPAN::Config file Initialization 339 340=item CPAN::Nox 341 342Wrapper around CPAN.pm without using any XS module 343 344=item CPAN::Version 345 346Utility functions to compare CPAN versions 347 348=item Carp 349 350Warn of errors (from perspective of caller) 351 352=item Carp::Heavy 353 354Heavy machinery, no user serviceable parts inside 355 356=item Class::ISA 357 358Report the search path for a class's ISA tree 359 360=item Class::Struct 361 362Declare struct-like datatypes as Perl classes 363 364=item Config 365 366Access Perl configuration information 367 368=item Cwd 369 370Get pathname of current working directory 371 372=item DB 373 374Programmatic interface to the Perl debugging API (draft, subject to 375 376=item DBM_Filter 377 378Filter DBM keys/values 379 380=item DB_File 381 382Perl5 access to Berkeley DB version 1.x 383 384=item Data::Dumper 385 386Stringified perl data structures, suitable for both printing and C<eval> 387 388=item Devel::DProf 389 390A Perl code profiler 391 392=item Devel::PPPort 393 394Perl/Pollution/Portability 395 396=item Devel::Peek 397 398A data debugging tool for the XS programmer 399 400=item Devel::SelfStubber 401 402Generate stubs for a SelfLoading module 403 404=item Digest 405 406Modules that calculate message digests 407 408=item Digest::MD5 409 410Perl interface to the MD5 Algorithm 411 412=item Digest::base 413 414Digest base class 415 416=item Digest::file 417 418Calculate digests of files 419 420=item DirHandle 421 422Supply object methods for directory handles 423 424=item Dumpvalue 425 426Provides screen dump of Perl data. 427 428=item DynaLoader 429 430Dynamically load C libraries into Perl code 431 432=item Encode 433 434Character encodings 435 436=item Encode::Alias 437 438Alias definitions to encodings 439 440=item Encode::Byte 441 442Single Byte Encodings 443 444=item Encode::CJKConstants 445 446Internally used by Encode::??::ISO_2022_* 447 448=item Encode::CN 449 450China-based Chinese Encodings 451 452=item Encode::CN::HZ 453 454Internally used by Encode::CN 455 456=item Encode::Config 457 458Internally used by Encode 459 460=item Encode::EBCDIC 461 462EBCDIC Encodings 463 464=item Encode::Encoder 465 466Object Oriented Encoder 467 468=item Encode::Encoding 469 470Encode Implementation Base Class 471 472=item Encode::Guess 473 474Guesses encoding from data 475 476=item Encode::JP 477 478Japanese Encodings 479 480=item Encode::JP::H2Z 481 482Internally used by Encode::JP::2022_JP* 483 484=item Encode::JP::JIS7 485 486Internally used by Encode::JP 487 488=item Encode::KR 489 490Korean Encodings 491 492=item Encode::KR::2022_KR 493 494Internally used by Encode::KR 495 496=item Encode::MIME::Header 497 498MIME 'B' and 'Q' header encoding 499 500=item Encode::PerlIO 501 502A detailed document on Encode and PerlIO 503 504=item Encode::Supported 505 506Encodings supported by Encode 507 508=item Encode::Symbol 509 510Symbol Encodings 511 512=item Encode::TW 513 514Taiwan-based Chinese Encodings 515 516=item Encode::Unicode 517 518Various Unicode Transformation Formats 519 520=item Encode::Unicode::UTF7 521 522UTF-7 encoding 523 524=item English 525 526Use nice English (or awk) names for ugly punctuation variables 527 528=item Env 529 530Perl module that imports environment variables as scalars or arrays 531 532=item Errno 533 534System errno constants 535 536=item Exporter 537 538Implements default import method for modules 539 540=item Exporter::Heavy 541 542Exporter guts 543 544=item ExtUtils::Command 545 546Utilities to replace common UNIX commands in Makefiles etc. 547 548=item ExtUtils::Command::MM 549 550Commands for the MM's to use in Makefiles 551 552=item ExtUtils::Constant 553 554Generate XS code to import C header constants 555 556=item ExtUtils::Constant::Base 557 558Base class for ExtUtils::Constant objects 559 560=item ExtUtils::Constant::Utils 561 562Helper functions for ExtUtils::Constant 563 564=item ExtUtils::Constant::XS 565 566Base class for ExtUtils::Constant objects 567 568=item ExtUtils::Embed 569 570Utilities for embedding Perl in C/C++ applications 571 572=item ExtUtils::Install 573 574Install files from here to there 575 576=item ExtUtils::Installed 577 578Inventory management of installed modules 579 580=item ExtUtils::Liblist 581 582Determine libraries to use and how to use them 583 584=item ExtUtils::MM 585 586OS adjusted ExtUtils::MakeMaker subclass 587 588=item ExtUtils::MM_AIX 589 590AIX specific subclass of ExtUtils::MM_Unix 591 592=item ExtUtils::MM_Any 593 594Platform-agnostic MM methods 595 596=item ExtUtils::MM_BeOS 597 598Methods to override UN*X behaviour in ExtUtils::MakeMaker 599 600=item ExtUtils::MM_Cygwin 601 602Methods to override UN*X behaviour in ExtUtils::MakeMaker 603 604=item ExtUtils::MM_DOS 605 606DOS specific subclass of ExtUtils::MM_Unix 607 608=item ExtUtils::MM_MacOS 609 610Once produced Makefiles for MacOS Classic 611 612=item ExtUtils::MM_NW5 613 614Methods to override UN*X behaviour in ExtUtils::MakeMaker 615 616=item ExtUtils::MM_OS2 617 618Methods to override UN*X behaviour in ExtUtils::MakeMaker 619 620=item ExtUtils::MM_QNX 621 622QNX specific subclass of ExtUtils::MM_Unix 623 624=item ExtUtils::MM_UWIN 625 626U/WIN specific subclass of ExtUtils::MM_Unix 627 628=item ExtUtils::MM_Unix 629 630Methods used by ExtUtils::MakeMaker 631 632=item ExtUtils::MM_VMS 633 634Methods to override UN*X behaviour in ExtUtils::MakeMaker 635 636=item ExtUtils::MM_VOS 637 638VOS specific subclass of ExtUtils::MM_Unix 639 640=item ExtUtils::MM_Win32 641 642Methods to override UN*X behaviour in ExtUtils::MakeMaker 643 644=item ExtUtils::MM_Win95 645 646Method to customize MakeMaker for Win9X 647 648=item ExtUtils::MY 649 650ExtUtils::MakeMaker subclass for customization 651 652=item ExtUtils::MakeMaker 653 654Create a module Makefile 655 656=item ExtUtils::MakeMaker::Config 657 658Wrapper around Config.pm 659 660=item ExtUtils::MakeMaker::FAQ 661 662Frequently Asked Questions About MakeMaker 663 664=item ExtUtils::MakeMaker::Tutorial 665 666Writing a module with MakeMaker 667 668=item ExtUtils::MakeMaker::bytes 669 670Version-agnostic bytes.pm 671 672=item ExtUtils::MakeMaker::vmsish 673 674Platform-agnostic vmsish.pm 675 676=item ExtUtils::Manifest 677 678Utilities to write and check a MANIFEST file 679 680=item ExtUtils::Mkbootstrap 681 682Make a bootstrap file for use by DynaLoader 683 684=item ExtUtils::Mksymlists 685 686Write linker options files for dynamic extension 687 688=item ExtUtils::Packlist 689 690Manage .packlist files 691 692=item ExtUtils::testlib 693 694Add blib/* directories to @INC 695 696=item Fatal 697 698Replace functions with equivalents which succeed or die 699 700=item Fcntl 701 702Load the C Fcntl.h defines 703 704=item File::Basename 705 706Parse file paths into directory, filename and suffix. 707 708=item File::CheckTree 709 710Run many filetest checks on a tree 711 712=item File::Compare 713 714Compare files or filehandles 715 716=item File::Copy 717 718Copy files or filehandles 719 720=item File::DosGlob 721 722DOS like globbing and then some 723 724=item File::Find 725 726Traverse a directory tree. 727 728=item File::Glob 729 730Perl extension for BSD glob routine 731 732=item File::Path 733 734Create or remove directory trees 735 736=item File::Spec 737 738Portably perform operations on file names 739 740=item File::Spec::Cygwin 741 742Methods for Cygwin file specs 743 744=item File::Spec::Epoc 745 746Methods for Epoc file specs 747 748=item File::Spec::Functions 749 750Portably perform operations on file names 751 752=item File::Spec::Mac 753 754File::Spec for Mac OS (Classic) 755 756=item File::Spec::OS2 757 758Methods for OS/2 file specs 759 760=item File::Spec::Unix 761 762File::Spec for Unix, base for other File::Spec modules 763 764=item File::Spec::VMS 765 766Methods for VMS file specs 767 768=item File::Spec::Win32 769 770Methods for Win32 file specs 771 772=item File::Temp 773 774Return name and handle of a temporary file safely 775 776=item File::stat 777 778By-name interface to Perl's built-in stat() functions 779 780=item FileCache 781 782Keep more files open than the system permits 783 784=item FileHandle 785 786Supply object methods for filehandles 787 788=item Filter::Simple 789 790Simplified source filtering 791 792=item Filter::Util::Call 793 794Perl Source Filter Utility Module 795 796=item FindBin 797 798Locate directory of original perl script 799 800=item GDBM_File 801 802Perl5 access to the gdbm library. 803 804=item Getopt::Long 805 806Extended processing of command line options 807 808=item Getopt::Std 809 810Process single-character switches with switch clustering 811 812=item Hash::Util 813 814A selection of general-utility hash subroutines 815 816=item I18N::Collate 817 818Compare 8-bit scalar data according to the current locale 819 820=item I18N::LangTags 821 822Functions for dealing with RFC3066-style language tags 823 824=item I18N::LangTags::Detect 825 826Detect the user's language preferences 827 828=item I18N::LangTags::List 829 830Tags and names for human languages 831 832=item I18N::Langinfo 833 834Query locale information 835 836=item IO 837 838Load various IO modules 839 840=item IO::Dir 841 842Supply object methods for directory handles 843 844=item IO::File 845 846Supply object methods for filehandles 847 848=item IO::Handle 849 850Supply object methods for I/O handles 851 852=item IO::Pipe 853 854Supply object methods for pipes 855 856=item IO::Poll 857 858Object interface to system poll call 859 860=item IO::Seekable 861 862Supply seek based methods for I/O objects 863 864=item IO::Select 865 866OO interface to the select system call 867 868=item IO::Socket 869 870Object interface to socket communications 871 872=item IO::Socket::INET 873 874Object interface for AF_INET domain sockets 875 876=item IO::Socket::UNIX 877 878Object interface for AF_UNIX domain sockets 879 880=item IPC::Open2 881 882Open a process for both reading and writing 883 884=item IPC::Open3 885 886Open a process for reading, writing, and error handling 887 888=item IPC::SysV 889 890SysV IPC constants 891 892=item IPC::SysV::Msg 893 894SysV Msg IPC object class 895 896=item IPC::SysV::Semaphore 897 898SysV Semaphore IPC object class 899 900=item List::Util 901 902A selection of general-utility list subroutines 903 904=item Locale::Constants 905 906Constants for Locale codes 907 908=item Locale::Country 909 910ISO codes for country identification (ISO 3166) 911 912=item Locale::Currency 913 914ISO three letter codes for currency identification (ISO 4217) 915 916=item Locale::Language 917 918ISO two letter codes for language identification (ISO 639) 919 920=item Locale::Maketext 921 922Framework for localization 923 924=item Locale::Maketext::TPJ13 925 926Article about software localization 927 928=item Locale::Script 929 930ISO codes for script identification (ISO 15924) 931 932=item MIME::Base64 933 934Encoding and decoding of base64 strings 935 936=item MIME::Base64::QuotedPrint 937 938Encoding and decoding of quoted-printable strings 939 940=item Math::BigFloat 941 942Arbitrary size floating point math package 943 944=item Math::BigInt 945 946Arbitrary size integer/float math package 947 948=item Math::BigInt::Calc 949 950Pure Perl module to support Math::BigInt 951 952=item Math::BigInt::CalcEmu 953 954Emulate low-level math with BigInt code 955 956=item Math::BigRat 957 958Arbitrary big rational numbers 959 960=item Math::Complex 961 962Complex numbers and associated mathematical functions 963 964=item Math::Trig 965 966Trigonometric functions 967 968=item Memoize 969 970Make functions faster by trading space for time 971 972=item Memoize::AnyDBM_File 973 974Glue to provide EXISTS for AnyDBM_File for Storable use 975 976=item Memoize::Expire 977 978Plug-in module for automatic expiration of memoized values 979 980=item Memoize::ExpireFile 981 982Test for Memoize expiration semantics 983 984=item Memoize::ExpireTest 985 986Test for Memoize expiration semantics 987 988=item Memoize::NDBM_File 989 990Glue to provide EXISTS for NDBM_File for Storable use 991 992=item Memoize::SDBM_File 993 994Glue to provide EXISTS for SDBM_File for Storable use 995 996=item Memoize::Storable 997 998Store Memoized data in Storable database 999 1000=item NDBM_File 1001 1002Tied access to ndbm files 1003 1004=item NEXT 1005 1006Provide a pseudo-class NEXT (et al) that allows method redispatch 1007 1008=item Net::Cmd 1009 1010Network Command class (as used by FTP, SMTP etc) 1011 1012=item Net::Config 1013 1014Local configuration data for libnet 1015 1016=item Net::Domain 1017 1018Attempt to evaluate the current host's internet name and domain 1019 1020=item Net::FTP 1021 1022FTP Client class 1023 1024=item Net::NNTP 1025 1026NNTP Client class 1027 1028=item Net::Netrc 1029 1030OO interface to users netrc file 1031 1032=item Net::POP3 1033 1034Post Office Protocol 3 Client class (RFC1939) 1035 1036=item Net::Ping 1037 1038Check a remote host for reachability 1039 1040=item Net::SMTP 1041 1042Simple Mail Transfer Protocol Client 1043 1044=item Net::Time 1045 1046Time and daytime network client interface 1047 1048=item Net::hostent 1049 1050By-name interface to Perl's built-in gethost*() functions 1051 1052=item Net::libnetFAQ 1053 1054Libnet Frequently Asked Questions 1055 1056=item Net::netent 1057 1058By-name interface to Perl's built-in getnet*() functions 1059 1060=item Net::protoent 1061 1062By-name interface to Perl's built-in getproto*() functions 1063 1064=item Net::servent 1065 1066By-name interface to Perl's built-in getserv*() functions 1067 1068=item O 1069 1070Generic interface to Perl Compiler backends 1071 1072=item ODBM_File 1073 1074Tied access to odbm files 1075 1076=item Opcode 1077 1078Disable named opcodes when compiling perl code 1079 1080=item POSIX 1081 1082Perl interface to IEEE Std 1003.1 1083 1084=item PerlIO 1085 1086On demand loader for PerlIO layers and root of PerlIO::* name space 1087 1088=item PerlIO::encoding 1089 1090Encoding layer 1091 1092=item PerlIO::scalar 1093 1094In-memory IO, scalar IO 1095 1096=item PerlIO::via 1097 1098Helper class for PerlIO layers implemented in perl 1099 1100=item PerlIO::via::QuotedPrint 1101 1102PerlIO layer for quoted-printable strings 1103 1104=item Pod::Checker 1105 1106Check pod documents for syntax errors 1107 1108=item Pod::Find 1109 1110Find POD documents in directory trees 1111 1112=item Pod::Functions 1113 1114Group Perl's functions a la perlfunc.pod 1115 1116=item Pod::Html 1117 1118Module to convert pod files to HTML 1119 1120=item Pod::InputObjects 1121 1122Objects representing POD input paragraphs, commands, etc. 1123 1124=item Pod::LaTeX 1125 1126Convert Pod data to formatted Latex 1127 1128=item Pod::Man 1129 1130Convert POD data to formatted *roff input 1131 1132=item Pod::ParseLink 1133 1134Parse an LE<lt>E<gt> formatting code in POD text 1135 1136=item Pod::ParseUtils 1137 1138Helpers for POD parsing and conversion 1139 1140=item Pod::Parser 1141 1142Base class for creating POD filters and translators 1143 1144=item Pod::Perldoc::ToChecker 1145 1146Let Perldoc check Pod for errors 1147 1148=item Pod::Perldoc::ToMan 1149 1150Let Perldoc render Pod as man pages 1151 1152=item Pod::Perldoc::ToNroff 1153 1154Let Perldoc convert Pod to nroff 1155 1156=item Pod::Perldoc::ToPod 1157 1158Let Perldoc render Pod as ... Pod! 1159 1160=item Pod::Perldoc::ToRtf 1161 1162Let Perldoc render Pod as RTF 1163 1164=item Pod::Perldoc::ToText 1165 1166Let Perldoc render Pod as plaintext 1167 1168=item Pod::Perldoc::ToTk 1169 1170Let Perldoc use Tk::Pod to render Pod 1171 1172=item Pod::Perldoc::ToXml 1173 1174Let Perldoc render Pod as XML 1175 1176=item Pod::PlainText 1177 1178Convert POD data to formatted ASCII text 1179 1180=item Pod::Plainer 1181 1182Perl extension for converting Pod to old style Pod. 1183 1184=item Pod::Select 1185 1186Extract selected sections of POD from input 1187 1188=item Pod::Text 1189 1190Convert POD data to formatted ASCII text 1191 1192=item Pod::Text::Color 1193 1194Convert POD data to formatted color ASCII text 1195 1196=item Pod::Text::Overstrike 1197 1198Convert POD data to formatted overstrike text 1199 1200=item Pod::Text::Termcap 1201 1202Convert POD data to ASCII text with format escapes 1203 1204=item Pod::Usage 1205 1206Print a usage message from embedded pod documentation 1207 1208=item SDBM_File 1209 1210Tied access to sdbm files 1211 1212=item Safe 1213 1214Compile and execute code in restricted compartments 1215 1216=item Scalar::Util 1217 1218A selection of general-utility scalar subroutines 1219 1220=item Search::Dict 1221 1222Search for key in dictionary file 1223 1224=item SelectSaver 1225 1226Save and restore selected file handle 1227 1228=item SelfLoader 1229 1230Load functions only on demand 1231 1232=item Shell 1233 1234Run shell commands transparently within perl 1235 1236=item Socket 1237 1238Load the C socket.h defines and structure manipulators 1239 1240=item Storable 1241 1242Persistence for Perl data structures 1243 1244=item Switch 1245 1246A switch statement for Perl 1247 1248=item Symbol 1249 1250Manipulate Perl symbols and their names 1251 1252=item Sys::Hostname 1253 1254Try every conceivable way to get hostname 1255 1256=item Sys::Syslog 1257 1258Perl interface to the UNIX syslog(3) calls 1259 1260=item Term::ANSIColor 1261 1262Color screen output using ANSI escape sequences 1263 1264=item Term::Cap 1265 1266Perl termcap interface 1267 1268=item Term::Complete 1269 1270Perl word completion module 1271 1272=item Term::ReadLine 1273 1274Perl interface to various C<readline> packages. 1275 1276=item Test 1277 1278Provides a simple framework for writing test scripts 1279 1280=item Test::Builder 1281 1282Backend for building test libraries 1283 1284=item Test::Builder::Module 1285 1286Base class for test modules 1287 1288=item Test::Builder::Tester 1289 1290Test testsuites that have been built with 1291 1292=item Test::Builder::Tester::Color 1293 1294Turn on colour in Test::Builder::Tester 1295 1296=item Test::Harness 1297 1298Run Perl standard test scripts with statistics 1299 1300=item Test::Harness::Assert 1301 1302Simple assert 1303 1304=item Test::Harness::Iterator 1305 1306Internal Test::Harness Iterator 1307 1308=item Test::Harness::Point 1309 1310Object for tracking a single test point 1311 1312=item Test::Harness::Straps 1313 1314Detailed analysis of test results 1315 1316=item Test::Harness::TAP 1317 1318Documentation for the TAP format 1319 1320=item Test::More 1321 1322Yet another framework for writing test scripts 1323 1324=item Test::Simple 1325 1326Basic utilities for writing tests. 1327 1328=item Test::Tutorial 1329 1330A tutorial about writing really basic tests 1331 1332=item Text::Abbrev 1333 1334Create an abbreviation table from a list 1335 1336=item Text::Balanced 1337 1338Extract delimited text sequences from strings. 1339 1340=item Text::ParseWords 1341 1342Parse text into an array of tokens or array of arrays 1343 1344=item Text::Soundex 1345 1346Implementation of the Soundex Algorithm as Described by Knuth 1347 1348=item Text::Tabs 1349 1350Expand and unexpand tabs per the unix expand(1) and unexpand(1) 1351 1352=item Text::Wrap 1353 1354Line wrapping to form simple paragraphs 1355 1356=item Thread 1357 1358Manipulate threads in Perl (for old code only) 1359 1360=item Thread::Queue 1361 1362Thread-safe queues 1363 1364=item Thread::Semaphore 1365 1366Thread-safe semaphores 1367 1368=item Thread::Signal 1369 1370Start a thread which runs signal handlers reliably (for old code) 1371 1372=item Thread::Specific 1373 1374Thread-specific keys 1375 1376=item Tie::Array 1377 1378Base class for tied arrays 1379 1380=item Tie::File 1381 1382Access the lines of a disk file via a Perl array 1383 1384=item Tie::Handle 1385 1386Base class definitions for tied handles 1387 1388=item Tie::Hash 1389 1390Base class definitions for tied hashes 1391 1392=item Tie::Memoize 1393 1394Add data to hash when needed 1395 1396=item Tie::RefHash 1397 1398Use references as hash keys 1399 1400=item Tie::Scalar 1401 1402Base class definitions for tied scalars 1403 1404=item Tie::SubstrHash 1405 1406Fixed-table-size, fixed-key-length hashing 1407 1408=item Time::HiRes 1409 1410High resolution alarm, sleep, gettimeofday, interval timers 1411 1412=item Time::Local 1413 1414Efficiently compute time from local and GMT time 1415 1416=item Time::gmtime 1417 1418By-name interface to Perl's built-in gmtime() function 1419 1420=item Time::localtime 1421 1422By-name interface to Perl's built-in localtime() function 1423 1424=item Time::tm 1425 1426Internal object used by Time::gmtime and Time::localtime 1427 1428=item UNIVERSAL 1429 1430Base class for ALL classes (blessed references) 1431 1432=item Unicode::Collate 1433 1434Unicode Collation Algorithm 1435 1436=item Unicode::Normalize 1437 1438Unicode Normalization Forms 1439 1440=item Unicode::UCD 1441 1442Unicode character database 1443 1444=item User::grent 1445 1446By-name interface to Perl's built-in getgr*() functions 1447 1448=item User::pwent 1449 1450By-name interface to Perl's built-in getpw*() functions 1451 1452=item XS::APItest 1453 1454Test the perl C API 1455 1456=item XS::Typemap 1457 1458Module to test the XS typemaps distributed with perl 1459 1460=item XSLoader 1461 1462Dynamically load C libraries into Perl code 1463 1464=back 1465 1466To find out I<all> modules installed on your system, including 1467those without documentation or outside the standard release, 1468just use the following command (under the default win32 shell, 1469double quotes should be used instead of single quotes). 1470 1471 % perl -MFile::Find=find -MFile::Spec::Functions -Tlwe \ 1472 'find { wanted => sub { print canonpath $_ if /\.pm\z/ }, 1473 no_chdir => 1 }, @INC' 1474 1475(The -T is here to prevent '.' from being listed in @INC.) 1476They should all have their own documentation installed and accessible 1477via your system man(1) command. If you do not have a B<find> 1478program, you can use the Perl B<find2perl> program instead, which 1479generates Perl code as output you can run through perl. If you 1480have a B<man> program but it doesn't find your modules, you'll have 1481to fix your manpath. See L<perl> for details. If you have no 1482system B<man> command, you might try the B<perldoc> program. 1483 1484Note also that the command C<perldoc perllocal> gives you a (possibly 1485incomplete) list of the modules that have been further installed on 1486your system. (The perllocal.pod file is updated by the standard MakeMaker 1487install process.) 1488 1489=head2 Extension Modules 1490 1491Extension modules are written in C (or a mix of Perl and C). They 1492are usually dynamically loaded into Perl if and when you need them, 1493but may also be linked in statically. Supported extension modules 1494include Socket, Fcntl, and POSIX. 1495 1496Many popular C extension modules do not come bundled (at least, not 1497completely) due to their sizes, volatility, or simply lack of time 1498for adequate testing and configuration across the multitude of 1499platforms on which Perl was beta-tested. You are encouraged to 1500look for them on CPAN (described below), or using web search engines 1501like Alta Vista or Google. 1502 1503=head1 CPAN 1504 1505CPAN stands for Comprehensive Perl Archive Network; it's a globally 1506replicated trove of Perl materials, including documentation, style 1507guides, tricks and traps, alternate ports to non-Unix systems and 1508occasional binary distributions for these. Search engines for 1509CPAN can be found at http://www.cpan.org/ 1510 1511Most importantly, CPAN includes around a thousand unbundled modules, 1512some of which require a C compiler to build. Major categories of 1513modules are: 1514 1515=over 1516 1517=item * 1518 1519Language Extensions and Documentation Tools 1520 1521=item * 1522 1523Development Support 1524 1525=item * 1526 1527Operating System Interfaces 1528 1529=item * 1530 1531Networking, Device Control (modems) and InterProcess Communication 1532 1533=item * 1534 1535Data Types and Data Type Utilities 1536 1537=item * 1538 1539Database Interfaces 1540 1541=item * 1542 1543User Interfaces 1544 1545=item * 1546 1547Interfaces to / Emulations of Other Programming Languages 1548 1549=item * 1550 1551File Names, File Systems and File Locking (see also File Handles) 1552 1553=item * 1554 1555String Processing, Language Text Processing, Parsing, and Searching 1556 1557=item * 1558 1559Option, Argument, Parameter, and Configuration File Processing 1560 1561=item * 1562 1563Internationalization and Locale 1564 1565=item * 1566 1567Authentication, Security, and Encryption 1568 1569=item * 1570 1571World Wide Web, HTML, HTTP, CGI, MIME 1572 1573=item * 1574 1575Server and Daemon Utilities 1576 1577=item * 1578 1579Archiving and Compression 1580 1581=item * 1582 1583Images, Pixmap and Bitmap Manipulation, Drawing, and Graphing 1584 1585=item * 1586 1587Mail and Usenet News 1588 1589=item * 1590 1591Control Flow Utilities (callbacks and exceptions etc) 1592 1593=item * 1594 1595File Handle and Input/Output Stream Utilities 1596 1597=item * 1598 1599Miscellaneous Modules 1600 1601=back 1602 1603The list of the registered CPAN sites as of this writing follows. 1604Please note that the sorting order is alphabetical on fields: 1605 1606Continent 1607 | 1608 |-->Country 1609 | 1610 |-->[state/province] 1611 | 1612 |-->ftp 1613 | 1614 |-->[http] 1615 1616and thus the North American servers happen to be listed between the 1617European and the South American sites. 1618 1619You should try to choose one close to you. 1620 1621=head2 Africa 1622 1623=over 4 1624 1625=item South Africa 1626 1627 http://ftp.rucus.ru.ac.za/pub/perl/CPAN/ 1628 ftp://ftp.rucus.ru.ac.za/pub/perl/CPAN/ 1629 ftp://ftp.is.co.za/programming/perl/CPAN/ 1630 ftp://ftp.saix.net/pub/CPAN/ 1631 ftp://ftp.sun.ac.za/CPAN/CPAN/ 1632 1633=back 1634 1635=head2 Asia 1636 1637=over 4 1638 1639=item China 1640 1641 http://cpan.linuxforum.net/ 1642 http://cpan.shellhung.org/ 1643 ftp://ftp.shellhung.org/pub/CPAN 1644 ftp://mirrors.hknet.com/CPAN 1645 1646=item Indonesia 1647 1648 http://mirrors.tf.itb.ac.id/cpan/ 1649 http://cpan.cbn.net.id/ 1650 ftp://ftp.cbn.net.id/mirror/CPAN 1651 1652=item Israel 1653 1654 ftp://ftp.iglu.org.il/pub/CPAN/ 1655 http://cpan.lerner.co.il/ 1656 http://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/ 1657 ftp://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/ 1658 1659=item Japan 1660 1661 ftp://ftp.u-aizu.ac.jp/pub/CPAN 1662 ftp://ftp.kddlabs.co.jp/CPAN/ 1663 ftp://ftp.ayamura.org/pub/CPAN/ 1664 ftp://ftp.jaist.ac.jp/pub/lang/perl/CPAN/ 1665 http://ftp.cpan.jp/ 1666 ftp://ftp.cpan.jp/CPAN/ 1667 ftp://ftp.dti.ad.jp/pub/lang/CPAN/ 1668 ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/ 1669 1670=item Malaysia 1671 1672 http://cpan.MyBSD.org.my 1673 http://mirror.leafbug.org/pub/CPAN 1674 http://ossig.mncc.com.my/mirror/pub/CPAN 1675 1676=item Russian Federation 1677 1678 http://cpan.tomsk.ru 1679 ftp://cpan.tomsk.ru/ 1680 1681=item Saudi Arabia 1682 1683 ftp://ftp.isu.net.sa/pub/CPAN/ 1684 1685=item Singapore 1686 1687 http://CPAN.en.com.sg/ 1688 ftp://cpan.en.com.sg/ 1689 http://mirror.averse.net/pub/CPAN 1690 ftp://mirror.averse.net/pub/CPAN 1691 http://cpan.oss.eznetsols.org 1692 ftp://ftp.oss.eznetsols.org/cpan 1693 1694=item South Korea 1695 1696 http://CPAN.bora.net/ 1697 ftp://ftp.bora.net/pub/CPAN/ 1698 http://mirror.kr.FreeBSD.org/CPAN 1699 ftp://ftp.kr.FreeBSD.org/pub/CPAN 1700 1701=item Taiwan 1702 1703 ftp://ftp.nctu.edu.tw/UNIX/perl/CPAN 1704 http://cpan.cdpa.nsysu.edu.tw/ 1705 ftp://cpan.cdpa.nsysu.edu.tw/pub/CPAN 1706 http://ftp.isu.edu.tw/pub/CPAN 1707 ftp://ftp.isu.edu.tw/pub/CPAN 1708 ftp://ftp1.sinica.edu.tw/pub1/perl/CPAN/ 1709 http://ftp.tku.edu.tw/pub/CPAN/ 1710 ftp://ftp.tku.edu.tw/pub/CPAN/ 1711 1712=item Thailand 1713 1714 ftp://ftp.loxinfo.co.th/pub/cpan/ 1715 ftp://ftp.cs.riubon.ac.th/pub/mirrors/CPAN/ 1716 1717=back 1718 1719=head2 Central America 1720 1721=over 4 1722 1723=item Costa Rica 1724 1725 http://ftp.ucr.ac.cr/Unix/CPAN/ 1726 ftp://ftp.ucr.ac.cr/pub/Unix/CPAN/ 1727 1728=back 1729 1730=head2 Europe 1731 1732=over 4 1733 1734=item Austria 1735 1736 http://cpan.inode.at/ 1737 ftp://cpan.inode.at 1738 ftp://ftp.tuwien.ac.at/pub/CPAN/ 1739 1740=item Belgium 1741 1742 http://ftp.easynet.be/pub/CPAN/ 1743 ftp://ftp.easynet.be/pub/CPAN/ 1744 http://cpan.skynet.be 1745 ftp://ftp.cpan.skynet.be/pub/CPAN 1746 ftp://ftp.kulnet.kuleuven.ac.be/pub/mirror/CPAN/ 1747 1748=item Bosnia and Herzegovina 1749 1750 http://cpan.blic.net/ 1751 1752=item Bulgaria 1753 1754 http://cpan.online.bg 1755 ftp://cpan.online.bg/cpan 1756 http://cpan.zadnik.org 1757 ftp://ftp.zadnik.org/mirrors/CPAN/ 1758 http://cpan.lirex.net/ 1759 ftp://ftp.lirex.net/pub/mirrors/CPAN 1760 1761=item Croatia 1762 1763 http://ftp.linux.hr/pub/CPAN/ 1764 ftp://ftp.linux.hr/pub/CPAN/ 1765 1766=item Czech Republic 1767 1768 ftp://ftp.fi.muni.cz/pub/CPAN/ 1769 ftp://sunsite.mff.cuni.cz/MIRRORS/ftp.funet.fi/pub/languages/perl/CPAN/ 1770 1771=item Denmark 1772 1773 http://mirrors.sunsite.dk/cpan/ 1774 ftp://sunsite.dk/mirrors/cpan/ 1775 http://cpan.cybercity.dk 1776 http://www.cpan.dk/CPAN/ 1777 ftp://www.cpan.dk/ftp.cpan.org/CPAN/ 1778 1779=item Estonia 1780 1781 ftp://ftp.ut.ee/pub/languages/perl/CPAN/ 1782 1783=item Finland 1784 1785 ftp://ftp.funet.fi/pub/languages/perl/CPAN/ 1786 http://mirror.eunet.fi/CPAN 1787 1788=item France 1789 1790 http://www.enstimac.fr/Perl/CPAN 1791 http://ftp.u-paris10.fr/perl/CPAN 1792 ftp://ftp.u-paris10.fr/perl/CPAN 1793 http://cpan.mirrors.easynet.fr/ 1794 ftp://cpan.mirrors.easynet.fr/pub/ftp.cpan.org/ 1795 ftp://ftp.club-internet.fr/pub/perl/CPAN/ 1796 http://fr.cpan.org/ 1797 ftp://ftp.lip6.fr/pub/perl/CPAN/ 1798 ftp://ftp.oleane.net/pub/mirrors/CPAN/ 1799 ftp://ftp.pasteur.fr/pub/computing/CPAN/ 1800 http://mir2.ovh.net/ftp.cpan.org 1801 ftp://mir1.ovh.net/ftp.cpan.org 1802 http://ftp.crihan.fr/mirrors/ftp.cpan.org/ 1803 ftp://ftp.crihan.fr/mirrors/ftp.cpan.org/ 1804 http://ftp.u-strasbg.fr/CPAN 1805 ftp://ftp.u-strasbg.fr/CPAN 1806 ftp://cpan.cict.fr/pub/CPAN/ 1807 ftp://ftp.uvsq.fr/pub/perl/CPAN/ 1808 1809=item Germany 1810 1811 ftp://ftp.rub.de/pub/CPAN/ 1812 ftp://ftp.freenet.de/pub/ftp.cpan.org/pub/CPAN/ 1813 ftp://ftp.uni-erlangen.de/pub/source/CPAN/ 1814 ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/CPAN 1815 http://pandemonium.tiscali.de/pub/CPAN/ 1816 ftp://pandemonium.tiscali.de/pub/CPAN/ 1817 http://ftp.gwdg.de/pub/languages/perl/CPAN/ 1818 ftp://ftp.gwdg.de/pub/languages/perl/CPAN/ 1819 ftp://ftp.uni-hamburg.de/pub/soft/lang/perl/CPAN/ 1820 ftp://ftp.leo.org/pub/CPAN/ 1821 http://cpan.noris.de/ 1822 ftp://cpan.noris.de/pub/CPAN/ 1823 ftp://ftp.mpi-sb.mpg.de/pub/perl/CPAN/ 1824 ftp://ftp.gmd.de/mirrors/CPAN/ 1825 1826=item Greece 1827 1828 ftp://ftp.acn.gr/pub/lang/perl 1829 ftp://ftp.forthnet.gr/pub/languages/perl/CPAN 1830 ftp://ftp.ntua.gr/pub/lang/perl/ 1831 1832=item Hungary 1833 1834 http://ftp.kfki.hu/packages/perl/CPAN/ 1835 ftp://ftp.kfki.hu/pub/packages/perl/CPAN/ 1836 1837=item Iceland 1838 1839 http://ftp.rhnet.is/pub/CPAN/ 1840 ftp://ftp.rhnet.is/pub/CPAN/ 1841 1842=item Ireland 1843 1844 http://cpan.indigo.ie/ 1845 ftp://cpan.indigo.ie/pub/CPAN/ 1846 http://ftp.heanet.ie/mirrors/ftp.perl.org/pub/CPAN 1847 ftp://ftp.heanet.ie/mirrors/ftp.perl.org/pub/CPAN 1848 http://sunsite.compapp.dcu.ie/pub/perl/ 1849 ftp://sunsite.compapp.dcu.ie/pub/perl/ 1850 1851=item Italy 1852 1853 http://cpan.nettuno.it/ 1854 http://gusp.dyndns.org/CPAN/ 1855 ftp://gusp.dyndns.org/pub/CPAN 1856 http://softcity.iol.it/cpan 1857 ftp://softcity.iol.it/pub/cpan 1858 ftp://ftp.unina.it/pub/Other/CPAN/CPAN/ 1859 ftp://ftp.unipi.it/pub/mirror/perl/CPAN/ 1860 ftp://cis.uniRoma2.it/CPAN/ 1861 ftp://ftp.edisontel.it/pub/CPAN_Mirror/ 1862 http://cpan.flashnet.it/ 1863 ftp://ftp.flashnet.it/pub/CPAN/ 1864 1865=item Latvia 1866 1867 http://kvin.lv/pub/CPAN/ 1868 1869=item Lithuania 1870 1871 ftp://ftp.unix.lt/pub/CPAN/ 1872 1873=item Netherlands 1874 1875 ftp://download.xs4all.nl/pub/mirror/CPAN/ 1876 ftp://ftp.nl.uu.net/pub/CPAN/ 1877 ftp://ftp.nluug.nl/pub/languages/perl/CPAN/ 1878 http://cpan.cybercomm.nl/ 1879 ftp://mirror.cybercomm.nl/pub/CPAN 1880 ftp://mirror.vuurwerk.nl/pub/CPAN/ 1881 ftp://ftp.cpan.nl/pub/CPAN/ 1882 http://ftp.easynet.nl/mirror/CPAN 1883 ftp://ftp.easynet.nl/mirror/CPAN 1884 http://archive.cs.uu.nl/mirror/CPAN/ 1885 ftp://ftp.cs.uu.nl/mirror/CPAN/ 1886 1887=item Norway 1888 1889 ftp://ftp.uninett.no/pub/languages/perl/CPAN 1890 ftp://ftp.uit.no/pub/languages/perl/cpan/ 1891 1892=item Poland 1893 1894 ftp://ftp.mega.net.pl/CPAN 1895 ftp://ftp.man.torun.pl/pub/doc/CPAN/ 1896 ftp://sunsite.icm.edu.pl/pub/CPAN/ 1897 1898=item Portugal 1899 1900 ftp://ftp.ua.pt/pub/CPAN/ 1901 ftp://perl.di.uminho.pt/pub/CPAN/ 1902 http://cpan.dei.uc.pt/ 1903 ftp://ftp.dei.uc.pt/pub/CPAN 1904 ftp://ftp.nfsi.pt/pub/CPAN 1905 http://ftp.linux.pt/pub/mirrors/CPAN 1906 ftp://ftp.linux.pt/pub/mirrors/CPAN 1907 http://cpan.ip.pt/ 1908 ftp://cpan.ip.pt/pub/cpan/ 1909 http://cpan.telepac.pt/ 1910 ftp://ftp.telepac.pt/pub/cpan/ 1911 1912=item Romania 1913 1914 ftp://ftp.bio-net.ro/pub/CPAN 1915 ftp://ftp.kappa.ro/pub/mirrors/ftp.perl.org/pub/CPAN/ 1916 ftp://ftp.lug.ro/CPAN 1917 ftp://ftp.roedu.net/pub/CPAN/ 1918 ftp://ftp.dntis.ro/pub/cpan/ 1919 ftp://ftp.iasi.roedu.net/pub/mirrors/ftp.cpan.org/ 1920 http://cpan.ambra.ro/ 1921 ftp://ftp.ambra.ro/pub/CPAN 1922 ftp://ftp.dnttm.ro/pub/CPAN/ 1923 ftp://ftp.lasting.ro/pub/CPAN 1924 ftp://ftp.timisoara.roedu.net/mirrors/CPAN/ 1925 1926=item Russia 1927 1928 ftp://ftp.chg.ru/pub/lang/perl/CPAN/ 1929 http://cpan.rinet.ru/ 1930 ftp://cpan.rinet.ru/pub/mirror/CPAN/ 1931 ftp://ftp.aha.ru/pub/CPAN/ 1932 ftp://ftp.corbina.ru/pub/CPAN/ 1933 http://cpan.sai.msu.ru/ 1934 ftp://ftp.sai.msu.su/pub/lang/perl/CPAN/ 1935 1936=item Slovakia 1937 1938 ftp://ftp.cvt.stuba.sk/pub/CPAN/ 1939 1940=item Slovenia 1941 1942 ftp://ftp.arnes.si/software/perl/CPAN/ 1943 1944=item Spain 1945 1946 http://cpan.imasd.elmundo.es/ 1947 ftp://ftp.rediris.es/mirror/CPAN/ 1948 ftp://ftp.ri.telefonica-data.net/CPAN 1949 ftp://ftp.etse.urv.es/pub/perl/ 1950 1951=item Sweden 1952 1953 http://ftp.du.se/CPAN/ 1954 ftp://ftp.du.se/pub/CPAN/ 1955 http://mirror.dataphone.se/CPAN 1956 ftp://mirror.dataphone.se/pub/CPAN 1957 ftp://ftp.sunet.se/pub/lang/perl/CPAN/ 1958 1959=item Switzerland 1960 1961 http://cpan.mirror.solnet.ch/ 1962 ftp://ftp.solnet.ch/mirror/CPAN/ 1963 ftp://ftp.danyk.ch/CPAN/ 1964 ftp://sunsite.cnlab-switch.ch/mirror/CPAN/ 1965 1966=item Turkey 1967 1968 http://ftp.ulak.net.tr/perl/CPAN/ 1969 ftp://ftp.ulak.net.tr/perl/CPAN 1970 ftp://sunsite.bilkent.edu.tr/pub/languages/CPAN/ 1971 1972=item Ukraine 1973 1974 http://cpan.org.ua/ 1975 ftp://cpan.org.ua/ 1976 ftp://ftp.perl.org.ua/pub/CPAN/ 1977 http://no-more.kiev.ua/CPAN/ 1978 ftp://no-more.kiev.ua/pub/CPAN/ 1979 1980=item United Kingdom 1981 1982 http://www.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN 1983 ftp://ftp.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN/ 1984 http://cpan.teleglobe.net/ 1985 ftp://cpan.teleglobe.net/pub/CPAN 1986 http://cpan.mirror.anlx.net/ 1987 ftp://ftp.mirror.anlx.net/CPAN/ 1988 http://cpan.etla.org/ 1989 ftp://cpan.etla.org/pub/CPAN 1990 ftp://ftp.demon.co.uk/pub/CPAN/ 1991 http://cpan.m.flirble.org/ 1992 ftp://ftp.flirble.org/pub/languages/perl/CPAN/ 1993 ftp://ftp.plig.org/pub/CPAN/ 1994 http://cpan.hambule.co.uk/ 1995 http://cpan.mirrors.clockerz.net/ 1996 ftp://ftp.clockerz.net/pub/CPAN/ 1997 ftp://usit.shef.ac.uk/pub/packages/CPAN/ 1998 1999=back 2000 2001=head2 North America 2002 2003=over 4 2004 2005=item Canada 2006 2007=over 8 2008 2009=item Alberta 2010 2011 http://cpan.sunsite.ualberta.ca/ 2012 ftp://cpan.sunsite.ualberta.ca/pub/CPAN/ 2013 2014=item Manitoba 2015 2016 http://theoryx5.uwinnipeg.ca/pub/CPAN/ 2017 ftp://theoryx5.uwinnipeg.ca/pub/CPAN/ 2018 2019=item Nova Scotia 2020 2021 ftp://cpan.chebucto.ns.ca/pub/CPAN/ 2022 2023=item Ontario 2024 2025 ftp://ftp.nrc.ca/pub/CPAN/ 2026 2027=back 2028 2029=item Mexico 2030 2031 http://cpan.azc.uam.mx 2032 ftp://cpan.azc.uam.mx/mirrors/CPAN 2033 http://www.cpan.unam.mx/ 2034 ftp://ftp.unam.mx/pub/CPAN 2035 http://www.msg.com.mx/CPAN/ 2036 ftp://ftp.msg.com.mx/pub/CPAN/ 2037 2038=item United States 2039 2040=over 8 2041 2042=item Alabama 2043 2044 http://mirror.hiwaay.net/CPAN/ 2045 ftp://mirror.hiwaay.net/CPAN/ 2046 2047=item California 2048 2049 http://cpan.develooper.com/ 2050 http://www.cpan.org/ 2051 ftp://cpan.valueclick.com/pub/CPAN/ 2052 http://www.mednor.net/ftp/pub/mirrors/CPAN/ 2053 ftp://ftp.mednor.net/pub/mirrors/CPAN/ 2054 http://mirrors.gossamer-threads.com/CPAN 2055 ftp://cpan.nas.nasa.gov/pub/perl/CPAN/ 2056 http://mirrors.kernel.org/cpan/ 2057 ftp://mirrors.kernel.org/pub/CPAN 2058 http://cpan-sj.viaverio.com/ 2059 ftp://cpan-sj.viaverio.com/pub/CPAN/ 2060 http://cpan.digisle.net/ 2061 ftp://cpan.digisle.net/pub/CPAN 2062 http://www.perl.com/CPAN/ 2063 http://www.uberlan.net/CPAN 2064 2065=item Colorado 2066 2067 ftp://ftp.cs.colorado.edu/pub/perl/CPAN/ 2068 http://cpan.four10.com 2069 2070=item Delaware 2071 2072 http://ftp.lug.udel.edu/pub/CPAN 2073 ftp://ftp.lug.udel.edu/pub/CPAN 2074 2075=item District of Columbia 2076 2077 ftp://ftp.dc.aleron.net/pub/CPAN/ 2078 2079=item Florida 2080 2081 ftp://ftp.cise.ufl.edu/pub/mirrors/CPAN/ 2082 http://mirror.csit.fsu.edu/pub/CPAN/ 2083 ftp://mirror.csit.fsu.edu/pub/CPAN/ 2084 http://cpan.mirrors.nks.net/ 2085 2086=item Indiana 2087 2088 ftp://ftp.uwsg.iu.edu/pub/perl/CPAN/ 2089 http://cpan.netnitco.net/ 2090 ftp://cpan.netnitco.net/pub/mirrors/CPAN/ 2091 http://archive.progeny.com/CPAN/ 2092 ftp://archive.progeny.com/CPAN/ 2093 http://fx.saintjoe.edu/pub/CPAN 2094 ftp://ftp.saintjoe.edu/pub/CPAN 2095 http://csociety-ftp.ecn.purdue.edu/pub/CPAN 2096 ftp://csociety-ftp.ecn.purdue.edu/pub/CPAN 2097 2098=item Kentucky 2099 2100 http://cpan.uky.edu/ 2101 ftp://cpan.uky.edu/pub/CPAN/ 2102 http://slugsite.louisville.edu/cpan 2103 ftp://slugsite.louisville.edu/CPAN 2104 2105=item Massachusetts 2106 2107 http://mirrors.towardex.com/CPAN 2108 ftp://mirrors.towardex.com/pub/CPAN 2109 ftp://ftp.ccs.neu.edu/net/mirrors/ftp.funet.fi/pub/languages/perl/CPAN/ 2110 2111=item Michigan 2112 2113 ftp://cpan.cse.msu.edu/ 2114 http://cpan.calvin.edu/pub/CPAN 2115 ftp://cpan.calvin.edu/pub/CPAN 2116 2117=item Nevada 2118 2119 http://www.oss.redundant.com/pub/CPAN 2120 ftp://www.oss.redundant.com/pub/CPAN 2121 2122=item New Jersey 2123 2124 http://ftp.cpanel.net/pub/CPAN/ 2125 ftp://ftp.cpanel.net/pub/CPAN/ 2126 http://cpan.teleglobe.net/ 2127 ftp://cpan.teleglobe.net/pub/CPAN 2128 2129=item New York 2130 2131 http://cpan.belfry.net/ 2132 http://cpan.erlbaum.net/ 2133 ftp://cpan.erlbaum.net/ 2134 http://cpan.thepirtgroup.com/ 2135 ftp://cpan.thepirtgroup.com/ 2136 ftp://ftp.stealth.net/pub/CPAN/ 2137 http://www.rge.com/pub/languages/perl/ 2138 ftp://ftp.rge.com/pub/languages/perl/ 2139 2140=item North Carolina 2141 2142 http://www.ibiblio.org/pub/languages/perl/CPAN 2143 ftp://ftp.ibiblio.org/pub/languages/perl/CPAN 2144 ftp://ftp.duke.edu/pub/perl/ 2145 ftp://ftp.ncsu.edu/pub/mirror/CPAN/ 2146 2147=item Oklahoma 2148 2149 ftp://ftp.ou.edu/mirrors/CPAN/ 2150 2151=item Oregon 2152 2153 ftp://ftp.orst.edu/pub/CPAN 2154 2155=item Pennsylvania 2156 2157 http://ftp.epix.net/CPAN/ 2158 ftp://ftp.epix.net/pub/languages/perl/ 2159 http://mirrors.phenominet.com/pub/CPAN/ 2160 ftp://mirrors.phenominet.com/pub/CPAN/ 2161 http://cpan.pair.com/ 2162 ftp://cpan.pair.com/pub/CPAN/ 2163 ftp://carroll.cac.psu.edu/pub/CPAN/ 2164 2165=item Tennessee 2166 2167 ftp://ftp.sunsite.utk.edu/pub/CPAN/ 2168 2169=item Texas 2170 2171 http://ftp.sedl.org/pub/mirrors/CPAN/ 2172 http://www.binarycode.org/cpan 2173 ftp://mirror.telentente.com/pub/CPAN 2174 http://mirrors.theonlinerecordstore.com/CPAN 2175 2176=item Utah 2177 2178 ftp://mirror.xmission.com/CPAN/ 2179 2180=item Virginia 2181 2182 http://cpan-du.viaverio.com/ 2183 ftp://cpan-du.viaverio.com/pub/CPAN/ 2184 http://mirrors.rcn.net/pub/lang/CPAN/ 2185 ftp://mirrors.rcn.net/pub/lang/CPAN/ 2186 http://perl.secsup.org/ 2187 ftp://perl.secsup.org/pub/perl/ 2188 http://noc.cvaix.com/mirrors/CPAN/ 2189 2190=item Washington 2191 2192 http://cpan.llarian.net/ 2193 ftp://cpan.llarian.net/pub/CPAN/ 2194 http://cpan.mirrorcentral.com/ 2195 ftp://ftp.mirrorcentral.com/pub/CPAN/ 2196 ftp://ftp-mirror.internap.com/pub/CPAN/ 2197 2198=item Wisconsin 2199 2200 http://mirror.sit.wisc.edu/pub/CPAN/ 2201 ftp://mirror.sit.wisc.edu/pub/CPAN/ 2202 http://mirror.aphix.com/CPAN 2203 ftp://mirror.aphix.com/pub/CPAN 2204 2205=back 2206 2207=back 2208 2209=head2 Oceania 2210 2211=over 4 2212 2213=item Australia 2214 2215 http://ftp.planetmirror.com/pub/CPAN/ 2216 ftp://ftp.planetmirror.com/pub/CPAN/ 2217 ftp://mirror.aarnet.edu.au/pub/perl/CPAN/ 2218 ftp://cpan.topend.com.au/pub/CPAN/ 2219 http://cpan.mirrors.ilisys.com.au 2220 2221=item New Zealand 2222 2223 ftp://ftp.auckland.ac.nz/pub/perl/CPAN/ 2224 2225=item United States 2226 2227 http://aniani.ifa.hawaii.edu/CPAN/ 2228 ftp://aniani.ifa.hawaii.edu/CPAN/ 2229 2230=back 2231 2232=head2 South America 2233 2234=over 4 2235 2236=item Argentina 2237 2238 ftp://mirrors.bannerlandia.com.ar/mirrors/CPAN/ 2239 http://www.linux.org.ar/mirrors/cpan 2240 ftp://ftp.linux.org.ar/mirrors/cpan 2241 2242=item Brazil 2243 2244 ftp://cpan.pop-mg.com.br/pub/CPAN/ 2245 ftp://ftp.matrix.com.br/pub/perl/CPAN/ 2246 http://cpan.hostsul.com.br/ 2247 ftp://cpan.hostsul.com.br/ 2248 2249=item Chile 2250 2251 http://cpan.netglobalis.net/ 2252 ftp://cpan.netglobalis.net/pub/CPAN/ 2253 2254=back 2255 2256=head2 RSYNC Mirrors 2257 2258 www.linux.org.ar::cpan 2259 theoryx5.uwinnipeg.ca::CPAN 2260 ftp.shellhung.org::CPAN 2261 rsync.nic.funet.fi::CPAN 2262 ftp.u-paris10.fr::CPAN 2263 mir1.ovh.net::CPAN 2264 rsync://ftp.crihan.fr::CPAN 2265 ftp.gwdg.de::FTP/languages/perl/CPAN/ 2266 ftp.leo.org::CPAN 2267 ftp.cbn.net.id::CPAN 2268 rsync://ftp.heanet.ie/mirrors/ftp.perl.org/pub/CPAN 2269 ftp.iglu.org.il::CPAN 2270 gusp.dyndns.org::cpan 2271 ftp.kddlabs.co.jp::cpan 2272 ftp.ayamura.org::pub/CPAN/ 2273 mirror.leafbug.org::CPAN 2274 rsync.en.com.sg::CPAN 2275 mirror.averse.net::cpan 2276 rsync.oss.eznetsols.org 2277 ftp.kr.FreeBSD.org::CPAN 2278 ftp.solnet.ch::CPAN 2279 cpan.cdpa.nsysu.edu.tw::CPAN 2280 cpan.teleglobe.net::CPAN 2281 rsync://rsync.mirror.anlx.net::CPAN 2282 ftp.sedl.org::cpan 2283 ibiblio.org::CPAN 2284 cpan-du.viaverio.com::CPAN 2285 aniani.ifa.hawaii.edu::CPAN 2286 archive.progeny.com::CPAN 2287 rsync://slugsite.louisville.edu::CPAN 2288 mirror.aphix.com::CPAN 2289 cpan.teleglobe.net::CPAN 2290 ftp.lug.udel.edu::cpan 2291 mirrors.kernel.org::mirrors/CPAN 2292 mirrors.phenominet.com::CPAN 2293 cpan.pair.com::CPAN 2294 cpan-sj.viaverio.com::CPAN 2295 mirror.csit.fsu.edu::CPAN 2296 csociety-ftp.ecn.purdue.edu::CPAN 2297 2298For an up-to-date listing of CPAN sites, 2299see http://www.cpan.org/SITES or ftp://www.cpan.org/SITES . 2300 2301=head1 Modules: Creation, Use, and Abuse 2302 2303(The following section is borrowed directly from Tim Bunce's modules 2304file, available at your nearest CPAN site.) 2305 2306Perl implements a class using a package, but the presence of a 2307package doesn't imply the presence of a class. A package is just a 2308namespace. A class is a package that provides subroutines that can be 2309used as methods. A method is just a subroutine that expects, as its 2310first argument, either the name of a package (for "static" methods), 2311or a reference to something (for "virtual" methods). 2312 2313A module is a file that (by convention) provides a class of the same 2314name (sans the .pm), plus an import method in that class that can be 2315called to fetch exported symbols. This module may implement some of 2316its methods by loading dynamic C or C++ objects, but that should be 2317totally transparent to the user of the module. Likewise, the module 2318might set up an AUTOLOAD function to slurp in subroutine definitions on 2319demand, but this is also transparent. Only the F<.pm> file is required to 2320exist. See L<perlsub>, L<perltoot>, and L<AutoLoader> for details about 2321the AUTOLOAD mechanism. 2322 2323=head2 Guidelines for Module Creation 2324 2325=over 4 2326 2327=item * 2328 2329Do similar modules already exist in some form? 2330 2331If so, please try to reuse the existing modules either in whole or 2332by inheriting useful features into a new class. If this is not 2333practical try to get together with the module authors to work on 2334extending or enhancing the functionality of the existing modules. 2335A perfect example is the plethora of packages in perl4 for dealing 2336with command line options. 2337 2338If you are writing a module to expand an already existing set of 2339modules, please coordinate with the author of the package. It 2340helps if you follow the same naming scheme and module interaction 2341scheme as the original author. 2342 2343=item * 2344 2345Try to design the new module to be easy to extend and reuse. 2346 2347Try to C<use warnings;> (or C<use warnings qw(...);>). 2348Remember that you can add C<no warnings qw(...);> to individual blocks 2349of code that need less warnings. 2350 2351Use blessed references. Use the two argument form of bless to bless 2352into the class name given as the first parameter of the constructor, 2353e.g.,: 2354 2355 sub new { 2356 my $class = shift; 2357 return bless {}, $class; 2358 } 2359 2360or even this if you'd like it to be used as either a static 2361or a virtual method. 2362 2363 sub new { 2364 my $self = shift; 2365 my $class = ref($self) || $self; 2366 return bless {}, $class; 2367 } 2368 2369Pass arrays as references so more parameters can be added later 2370(it's also faster). Convert functions into methods where 2371appropriate. Split large methods into smaller more flexible ones. 2372Inherit methods from other modules if appropriate. 2373 2374Avoid class name tests like: C<die "Invalid" unless ref $ref eq 'FOO'>. 2375Generally you can delete the C<eq 'FOO'> part with no harm at all. 2376Let the objects look after themselves! Generally, avoid hard-wired 2377class names as far as possible. 2378 2379Avoid C<< $r->Class::func() >> where using C<@ISA=qw(... Class ...)> and 2380C<< $r->func() >> would work (see L<perlbot> for more details). 2381 2382Use autosplit so little used or newly added functions won't be a 2383burden to programs that don't use them. Add test functions to 2384the module after __END__ either using AutoSplit or by saying: 2385 2386 eval join('',<main::DATA>) || die $@ unless caller(); 2387 2388Does your module pass the 'empty subclass' test? If you say 2389C<@SUBCLASS::ISA = qw(YOURCLASS);> your applications should be able 2390to use SUBCLASS in exactly the same way as YOURCLASS. For example, 2391does your application still work if you change: C<$obj = new YOURCLASS;> 2392into: C<$obj = new SUBCLASS;> ? 2393 2394Avoid keeping any state information in your packages. It makes it 2395difficult for multiple other packages to use yours. Keep state 2396information in objects. 2397 2398Always use B<-w>. 2399 2400Try to C<use strict;> (or C<use strict qw(...);>). 2401Remember that you can add C<no strict qw(...);> to individual blocks 2402of code that need less strictness. 2403 2404Always use B<-w>. 2405 2406Follow the guidelines in the perlstyle(1) manual. 2407 2408Always use B<-w>. 2409 2410=item * 2411 2412Some simple style guidelines 2413 2414The perlstyle manual supplied with Perl has many helpful points. 2415 2416Coding style is a matter of personal taste. Many people evolve their 2417style over several years as they learn what helps them write and 2418maintain good code. Here's one set of assorted suggestions that 2419seem to be widely used by experienced developers: 2420 2421Use underscores to separate words. It is generally easier to read 2422$var_names_like_this than $VarNamesLikeThis, especially for 2423non-native speakers of English. It's also a simple rule that works 2424consistently with VAR_NAMES_LIKE_THIS. 2425 2426Package/Module names are an exception to this rule. Perl informally 2427reserves lowercase module names for 'pragma' modules like integer 2428and strict. Other modules normally begin with a capital letter and 2429use mixed case with no underscores (need to be short and portable). 2430 2431You may find it helpful to use letter case to indicate the scope 2432or nature of a variable. For example: 2433 2434 $ALL_CAPS_HERE constants only (beware clashes with Perl vars) 2435 $Some_Caps_Here package-wide global/static 2436 $no_caps_here function scope my() or local() variables 2437 2438Function and method names seem to work best as all lowercase. 2439e.g., C<< $obj->as_string() >>. 2440 2441You can use a leading underscore to indicate that a variable or 2442function should not be used outside the package that defined it. 2443 2444=item * 2445 2446Select what to export. 2447 2448Do NOT export method names! 2449 2450Do NOT export anything else by default without a good reason! 2451 2452Exports pollute the namespace of the module user. If you must 2453export try to use @EXPORT_OK in preference to @EXPORT and avoid 2454short or common names to reduce the risk of name clashes. 2455 2456Generally anything not exported is still accessible from outside the 2457module using the ModuleName::item_name (or C<< $blessed_ref->method >>) 2458syntax. By convention you can use a leading underscore on names to 2459indicate informally that they are 'internal' and not for public use. 2460 2461(It is actually possible to get private functions by saying: 2462C<my $subref = sub { ... }; &$subref;>. But there's no way to call that 2463directly as a method, because a method must have a name in the symbol 2464table.) 2465 2466As a general rule, if the module is trying to be object oriented 2467then export nothing. If it's just a collection of functions then 2468@EXPORT_OK anything but use @EXPORT with caution. 2469 2470=item * 2471 2472Select a name for the module. 2473 2474This name should be as descriptive, accurate, and complete as 2475possible. Avoid any risk of ambiguity. Always try to use two or 2476more whole words. Generally the name should reflect what is special 2477about what the module does rather than how it does it. Please use 2478nested module names to group informally or categorize a module. 2479There should be a very good reason for a module not to have a nested name. 2480Module names should begin with a capital letter. 2481 2482Having 57 modules all called Sort will not make life easy for anyone 2483(though having 23 called Sort::Quick is only marginally better :-). 2484Imagine someone trying to install your module alongside many others. 2485If in any doubt ask for suggestions in comp.lang.perl.misc. 2486 2487If you are developing a suite of related modules/classes it's good 2488practice to use nested classes with a common prefix as this will 2489avoid namespace clashes. For example: Xyz::Control, Xyz::View, 2490Xyz::Model etc. Use the modules in this list as a naming guide. 2491 2492If adding a new module to a set, follow the original author's 2493standards for naming modules and the interface to methods in 2494those modules. 2495 2496If developing modules for private internal or project specific use, 2497that will never be released to the public, then you should ensure 2498that their names will not clash with any future public module. You 2499can do this either by using the reserved Local::* category or by 2500using a category name that includes an underscore like Foo_Corp::*. 2501 2502To be portable each component of a module name should be limited to 250311 characters. If it might be used on MS-DOS then try to ensure each is 2504unique in the first 8 characters. Nested modules make this easier. 2505 2506=item * 2507 2508Have you got it right? 2509 2510How do you know that you've made the right decisions? Have you 2511picked an interface design that will cause problems later? Have 2512you picked the most appropriate name? Do you have any questions? 2513 2514The best way to know for sure, and pick up many helpful suggestions, 2515is to ask someone who knows. Comp.lang.perl.misc is read by just about 2516all the people who develop modules and it's the best place to ask. 2517 2518All you need to do is post a short summary of the module, its 2519purpose and interfaces. A few lines on each of the main methods is 2520probably enough. (If you post the whole module it might be ignored 2521by busy people - generally the very people you want to read it!) 2522 2523Don't worry about posting if you can't say when the module will be 2524ready - just say so in the message. It might be worth inviting 2525others to help you, they may be able to complete it for you! 2526 2527=item * 2528 2529README and other Additional Files. 2530 2531It's well known that software developers usually fully document the 2532software they write. If, however, the world is in urgent need of 2533your software and there is not enough time to write the full 2534documentation please at least provide a README file containing: 2535 2536=over 10 2537 2538=item * 2539 2540A description of the module/package/extension etc. 2541 2542=item * 2543 2544A copyright notice - see below. 2545 2546=item * 2547 2548Prerequisites - what else you may need to have. 2549 2550=item * 2551 2552How to build it - possible changes to Makefile.PL etc. 2553 2554=item * 2555 2556How to install it. 2557 2558=item * 2559 2560Recent changes in this release, especially incompatibilities 2561 2562=item * 2563 2564Changes / enhancements you plan to make in the future. 2565 2566=back 2567 2568If the README file seems to be getting too large you may wish to 2569split out some of the sections into separate files: INSTALL, 2570Copying, ToDo etc. 2571 2572=over 4 2573 2574=item * 2575 2576Adding a Copyright Notice. 2577 2578How you choose to license your work is a personal decision. 2579The general mechanism is to assert your Copyright and then make 2580a declaration of how others may copy/use/modify your work. 2581 2582Perl, for example, is supplied with two types of licence: The GNU GPL 2583and The Artistic Licence (see the files README, Copying, and Artistic, 2584or L<perlgpl> and L<perlartistic>). Larry has good reasons for NOT 2585just using the GNU GPL. 2586 2587My personal recommendation, out of respect for Larry, Perl, and the 2588Perl community at large is to state something simply like: 2589 2590 Copyright (c) 1995 Your Name. All rights reserved. 2591 This program is free software; you can redistribute it and/or 2592 modify it under the same terms as Perl itself. 2593 2594This statement should at least appear in the README file. You may 2595also wish to include it in a Copying file and your source files. 2596Remember to include the other words in addition to the Copyright. 2597 2598=item * 2599 2600Give the module a version/issue/release number. 2601 2602To be fully compatible with the Exporter and MakeMaker modules you 2603should store your module's version number in a non-my package 2604variable called $VERSION. This should be a floating point 2605number with at least two digits after the decimal (i.e., hundredths, 2606e.g, C<$VERSION = "0.01">). Don't use a "1.3.2" style version. 2607See L<Exporter> for details. 2608 2609It may be handy to add a function or method to retrieve the number. 2610Use the number in announcements and archive file names when 2611releasing the module (ModuleName-1.02.tar.Z). 2612See perldoc ExtUtils::MakeMaker.pm for details. 2613 2614=item * 2615 2616How to release and distribute a module. 2617 2618It's good idea to post an announcement of the availability of your 2619module (or the module itself if small) to the comp.lang.perl.announce 2620Usenet newsgroup. This will at least ensure very wide once-off 2621distribution. 2622 2623If possible, register the module with CPAN. You should 2624include details of its location in your announcement. 2625 2626Some notes about ftp archives: Please use a long descriptive file 2627name that includes the version number. Most incoming directories 2628will not be readable/listable, i.e., you won't be able to see your 2629file after uploading it. Remember to send your email notification 2630message as soon as possible after uploading else your file may get 2631deleted automatically. Allow time for the file to be processed 2632and/or check the file has been processed before announcing its 2633location. 2634 2635FTP Archives for Perl Modules: 2636 2637Follow the instructions and links on: 2638 2639 http://www.cpan.org/modules/00modlist.long.html 2640 http://www.cpan.org/modules/04pause.html 2641 2642or upload to one of these sites: 2643 2644 https://pause.kbx.de/pause/ 2645 http://pause.perl.org/pause/ 2646 2647and notify <modules@perl.org>. 2648 2649By using the WWW interface you can ask the Upload Server to mirror 2650your modules from your ftp or WWW site into your own directory on 2651CPAN! 2652 2653Please remember to send me an updated entry for the Module list! 2654 2655=item * 2656 2657Take care when changing a released module. 2658 2659Always strive to remain compatible with previous released versions. 2660Otherwise try to add a mechanism to revert to the 2661old behavior if people rely on it. Document incompatible changes. 2662 2663=back 2664 2665=back 2666 2667=head2 Guidelines for Converting Perl 4 Library Scripts into Modules 2668 2669=over 4 2670 2671=item * 2672 2673There is no requirement to convert anything. 2674 2675If it ain't broke, don't fix it! Perl 4 library scripts should 2676continue to work with no problems. You may need to make some minor 2677changes (like escaping non-array @'s in double quoted strings) but 2678there is no need to convert a .pl file into a Module for just that. 2679 2680=item * 2681 2682Consider the implications. 2683 2684All Perl applications that make use of the script will need to 2685be changed (slightly) if the script is converted into a module. Is 2686it worth it unless you plan to make other changes at the same time? 2687 2688=item * 2689 2690Make the most of the opportunity. 2691 2692If you are going to convert the script to a module you can use the 2693opportunity to redesign the interface. The guidelines for module 2694creation above include many of the issues you should consider. 2695 2696=item * 2697 2698The pl2pm utility will get you started. 2699 2700This utility will read *.pl files (given as parameters) and write 2701corresponding *.pm files. The pl2pm utilities does the following: 2702 2703=over 10 2704 2705=item * 2706 2707Adds the standard Module prologue lines 2708 2709=item * 2710 2711Converts package specifiers from ' to :: 2712 2713=item * 2714 2715Converts die(...) to croak(...) 2716 2717=item * 2718 2719Several other minor changes 2720 2721=back 2722 2723Being a mechanical process pl2pm is not bullet proof. The converted 2724code will need careful checking, especially any package statements. 2725Don't delete the original .pl file till the new .pm one works! 2726 2727=back 2728 2729=head2 Guidelines for Reusing Application Code 2730 2731=over 4 2732 2733=item * 2734 2735Complete applications rarely belong in the Perl Module Library. 2736 2737=item * 2738 2739Many applications contain some Perl code that could be reused. 2740 2741Help save the world! Share your code in a form that makes it easy 2742to reuse. 2743 2744=item * 2745 2746Break-out the reusable code into one or more separate module files. 2747 2748=item * 2749 2750Take the opportunity to reconsider and redesign the interfaces. 2751 2752=item * 2753 2754In some cases the 'application' can then be reduced to a small 2755 2756fragment of code built on top of the reusable modules. In these cases 2757the application could invoked as: 2758 2759 % perl -e 'use Module::Name; method(@ARGV)' ... 2760or 2761 % perl -mModule::Name ... (in perl5.002 or higher) 2762 2763=back 2764 2765=head1 NOTE 2766 2767Perl does not enforce private and public parts of its modules as you may 2768have been used to in other languages like C++, Ada, or Modula-17. Perl 2769doesn't have an infatuation with enforced privacy. It would prefer 2770that you stayed out of its living room because you weren't invited, not 2771because it has a shotgun. 2772 2773The module and its user have a contract, part of which is common law, 2774and part of which is "written". Part of the common law contract is 2775that a module doesn't pollute any namespace it wasn't asked to. The 2776written contract for the module (A.K.A. documentation) may make other 2777provisions. But then you know when you C<use RedefineTheWorld> that 2778you're redefining the world and willing to take the consequences. 2779