1 | # Generated by perlmodlib.PL DO NOT EDIT! |
---|
2 | |
---|
3 | =head1 NAME |
---|
4 | |
---|
5 | perlmodlib - constructing new Perl modules and finding existing ones |
---|
6 | |
---|
7 | =head1 DESCRIPTION |
---|
8 | |
---|
9 | =head1 THE PERL MODULE LIBRARY |
---|
10 | |
---|
11 | Many modules are included the Perl distribution. These are described |
---|
12 | below, and all end in F<.pm>. You may discover compiled library |
---|
13 | file (usually ending in F<.so>) or small pieces of modules to be |
---|
14 | autoloaded (ending in F<.al>); these were automatically generated |
---|
15 | by the installation process. You may also discover files in the |
---|
16 | library directory that end in either F<.pl> or F<.ph>. These are |
---|
17 | old libraries supplied so that old programs that use them still |
---|
18 | run. The F<.pl> files will all eventually be converted into standard |
---|
19 | modules, and the F<.ph> files made by B<h2ph> will probably end up |
---|
20 | as extension modules made by B<h2xs>. (Some F<.ph> values may |
---|
21 | already be available through the POSIX, Errno, or Fcntl modules.) |
---|
22 | The B<pl2pm> file in the distribution may help in your conversion, |
---|
23 | but it's just a mechanical process and therefore far from bulletproof. |
---|
24 | |
---|
25 | =head2 Pragmatic Modules |
---|
26 | |
---|
27 | They work somewhat like compiler directives (pragmata) in that they |
---|
28 | tend to affect the compilation of your program, and thus will usually |
---|
29 | work well only when used within a C<use>, or C<no>. Most of these |
---|
30 | are lexically scoped, so an inner BLOCK may countermand them |
---|
31 | by saying: |
---|
32 | |
---|
33 | no integer; |
---|
34 | no strict 'refs'; |
---|
35 | no warnings; |
---|
36 | |
---|
37 | which lasts until the end of that BLOCK. |
---|
38 | |
---|
39 | Some pragmas are lexically scoped--typically those that affect the |
---|
40 | C<$^H> hints variable. Others affect the current package instead, |
---|
41 | like C<use vars> and C<use subs>, which allow you to predeclare a |
---|
42 | variables or subroutines within a particular I<file> rather than |
---|
43 | just a block. Such declarations are effective for the entire file |
---|
44 | for which they were declared. You cannot rescind them with C<no |
---|
45 | vars> or C<no subs>. |
---|
46 | |
---|
47 | The following pragmas are defined (and have their own documentation). |
---|
48 | |
---|
49 | =over 12 |
---|
50 | |
---|
51 | =item attributes |
---|
52 | |
---|
53 | Get/set subroutine or variable attributes |
---|
54 | |
---|
55 | =item attrs |
---|
56 | |
---|
57 | Set/get attributes of a subroutine (deprecated) |
---|
58 | |
---|
59 | =item autouse |
---|
60 | |
---|
61 | Postpone load of modules until a function is used |
---|
62 | |
---|
63 | =item base |
---|
64 | |
---|
65 | Establish IS-A relationship with base class at compile time |
---|
66 | |
---|
67 | =item blib |
---|
68 | |
---|
69 | Use MakeMaker's uninstalled version of a package |
---|
70 | |
---|
71 | =item bytes |
---|
72 | |
---|
73 | Force byte semantics rather than character semantics |
---|
74 | |
---|
75 | =item charnames |
---|
76 | |
---|
77 | Define character names for C<\N{named}> string literal escape. |
---|
78 | |
---|
79 | =item constant |
---|
80 | |
---|
81 | Declare constants |
---|
82 | |
---|
83 | =item diagnostics |
---|
84 | |
---|
85 | Perl compiler pragma to force verbose warning diagnostics |
---|
86 | |
---|
87 | =item fields |
---|
88 | |
---|
89 | Compile-time class fields |
---|
90 | |
---|
91 | =item filetest |
---|
92 | |
---|
93 | Control the filetest permission operators |
---|
94 | |
---|
95 | =item integer |
---|
96 | |
---|
97 | Use integer arithmetic instead of floating point |
---|
98 | |
---|
99 | =item less |
---|
100 | |
---|
101 | Request less of something from the compiler |
---|
102 | |
---|
103 | =item lib |
---|
104 | |
---|
105 | Manipulate @INC at compile time |
---|
106 | |
---|
107 | =item locale |
---|
108 | |
---|
109 | Use and avoid POSIX locales for built-in operations |
---|
110 | |
---|
111 | =item open |
---|
112 | |
---|
113 | Set default disciplines for input and output |
---|
114 | |
---|
115 | =item ops |
---|
116 | |
---|
117 | Restrict unsafe operations when compiling |
---|
118 | |
---|
119 | =item overload |
---|
120 | |
---|
121 | Package for overloading perl operations |
---|
122 | |
---|
123 | =item re |
---|
124 | |
---|
125 | Alter regular expression behaviour |
---|
126 | |
---|
127 | =item sigtrap |
---|
128 | |
---|
129 | Enable simple signal handling |
---|
130 | |
---|
131 | =item strict |
---|
132 | |
---|
133 | Restrict unsafe constructs |
---|
134 | |
---|
135 | =item subs |
---|
136 | |
---|
137 | Predeclare sub names |
---|
138 | |
---|
139 | =item utf8 |
---|
140 | |
---|
141 | Enable/disable UTF-8 in source code |
---|
142 | |
---|
143 | =item vars |
---|
144 | |
---|
145 | Predeclare global variable names (obsolete) |
---|
146 | |
---|
147 | =item warnings |
---|
148 | |
---|
149 | Control optional warnings |
---|
150 | |
---|
151 | =item warnings::register |
---|
152 | |
---|
153 | Warnings import function |
---|
154 | |
---|
155 | =back |
---|
156 | |
---|
157 | =head2 Standard Modules |
---|
158 | |
---|
159 | Standard, bundled modules are all expected to behave in a well-defined |
---|
160 | manner with respect to namespace pollution because they use the |
---|
161 | Exporter module. See their own documentation for details. |
---|
162 | |
---|
163 | =over 12 |
---|
164 | |
---|
165 | =item AnyDBM_File |
---|
166 | |
---|
167 | Provide framework for multiple DBMs |
---|
168 | |
---|
169 | =item AutoLoader |
---|
170 | |
---|
171 | Load subroutines only on demand |
---|
172 | |
---|
173 | =item AutoSplit |
---|
174 | |
---|
175 | Split a package for autoloading |
---|
176 | |
---|
177 | =item B |
---|
178 | |
---|
179 | The Perl Compiler |
---|
180 | |
---|
181 | =item B::Asmdata |
---|
182 | |
---|
183 | Autogenerated data about Perl ops, used to generate bytecode |
---|
184 | |
---|
185 | =item B::Assembler |
---|
186 | |
---|
187 | Assemble Perl bytecode |
---|
188 | |
---|
189 | =item B::Bblock |
---|
190 | |
---|
191 | Walk basic blocks |
---|
192 | |
---|
193 | =item B::Bytecode |
---|
194 | |
---|
195 | Perl compiler's bytecode backend |
---|
196 | |
---|
197 | =item B::C |
---|
198 | |
---|
199 | Perl compiler's C backend |
---|
200 | |
---|
201 | =item B::CC |
---|
202 | |
---|
203 | Perl compiler's optimized C translation backend |
---|
204 | |
---|
205 | =item B::Concise |
---|
206 | |
---|
207 | Walk Perl syntax tree, printing concise info about ops |
---|
208 | |
---|
209 | =item B::Debug |
---|
210 | |
---|
211 | Walk Perl syntax tree, printing debug info about ops |
---|
212 | |
---|
213 | =item B::Deparse |
---|
214 | |
---|
215 | Perl compiler backend to produce perl code |
---|
216 | |
---|
217 | =item B::Disassembler |
---|
218 | |
---|
219 | Disassemble Perl bytecode |
---|
220 | |
---|
221 | =item B::Lint |
---|
222 | |
---|
223 | Perl lint |
---|
224 | |
---|
225 | =item B::Showlex |
---|
226 | |
---|
227 | Show lexical variables used in functions or files |
---|
228 | |
---|
229 | =item B::Stackobj |
---|
230 | |
---|
231 | Helper module for CC backend |
---|
232 | |
---|
233 | =item B::Stash |
---|
234 | |
---|
235 | Show what stashes are loaded |
---|
236 | |
---|
237 | =item B::Terse |
---|
238 | |
---|
239 | Walk Perl syntax tree, printing terse info about ops |
---|
240 | |
---|
241 | =item B::Xref |
---|
242 | |
---|
243 | Generates cross reference reports for Perl programs |
---|
244 | |
---|
245 | =item Benchmark |
---|
246 | |
---|
247 | Benchmark running times of Perl code |
---|
248 | |
---|
249 | =item ByteLoader |
---|
250 | |
---|
251 | Load byte compiled perl code |
---|
252 | |
---|
253 | =item CGI |
---|
254 | |
---|
255 | Simple Common Gateway Interface Class |
---|
256 | |
---|
257 | =item CGI::Apache |
---|
258 | |
---|
259 | Backward compatibility module for CGI.pm |
---|
260 | |
---|
261 | =item CGI::Carp |
---|
262 | |
---|
263 | CGI routines for writing to the HTTPD (or other) error log |
---|
264 | |
---|
265 | =item CGI::Cookie |
---|
266 | |
---|
267 | Interface to Netscape Cookies |
---|
268 | |
---|
269 | =item CGI::Fast |
---|
270 | |
---|
271 | CGI Interface for Fast CGI |
---|
272 | |
---|
273 | =item CGI::Pretty |
---|
274 | |
---|
275 | Module to produce nicely formatted HTML code |
---|
276 | |
---|
277 | =item CGI::Push |
---|
278 | |
---|
279 | Simple Interface to Server Push |
---|
280 | |
---|
281 | =item CGI::Switch |
---|
282 | |
---|
283 | Backward compatibility module for defunct CGI::Switch |
---|
284 | |
---|
285 | =item CGI::Util |
---|
286 | |
---|
287 | Internal utilities used by CGI module |
---|
288 | |
---|
289 | =item CPAN |
---|
290 | |
---|
291 | Query, download and build perl modules from CPAN sites |
---|
292 | |
---|
293 | =item CPAN::FirstTime |
---|
294 | |
---|
295 | Utility for CPAN::Config file Initialization |
---|
296 | |
---|
297 | =item CPAN::Nox |
---|
298 | |
---|
299 | Wrapper around CPAN.pm without using any XS module |
---|
300 | |
---|
301 | =item Carp |
---|
302 | |
---|
303 | Warn of errors (from perspective of caller) |
---|
304 | |
---|
305 | =item Carp::Heavy |
---|
306 | |
---|
307 | Carp guts |
---|
308 | |
---|
309 | =item Class::Struct |
---|
310 | |
---|
311 | Declare struct-like datatypes as Perl classes |
---|
312 | |
---|
313 | =item Cwd |
---|
314 | |
---|
315 | Get pathname of current working directory |
---|
316 | |
---|
317 | =item DB |
---|
318 | |
---|
319 | Programmatic interface to the Perl debugging API (draft, subject to |
---|
320 | |
---|
321 | =item DB_File |
---|
322 | |
---|
323 | Perl5 access to Berkeley DB version 1.x |
---|
324 | |
---|
325 | =item Devel::SelfStubber |
---|
326 | |
---|
327 | Generate stubs for a SelfLoading module |
---|
328 | |
---|
329 | =item DirHandle |
---|
330 | |
---|
331 | Supply object methods for directory handles |
---|
332 | |
---|
333 | =item Dumpvalue |
---|
334 | |
---|
335 | Provides screen dump of Perl data. |
---|
336 | |
---|
337 | =item English |
---|
338 | |
---|
339 | Use nice English (or awk) names for ugly punctuation variables |
---|
340 | |
---|
341 | =item Env |
---|
342 | |
---|
343 | Perl module that imports environment variables as scalars or arrays |
---|
344 | |
---|
345 | =item Exporter |
---|
346 | |
---|
347 | Implements default import method for modules |
---|
348 | |
---|
349 | =item Exporter::Heavy |
---|
350 | |
---|
351 | Exporter guts |
---|
352 | |
---|
353 | =item ExtUtils::Command |
---|
354 | |
---|
355 | Utilities to replace common UNIX commands in Makefiles etc. |
---|
356 | |
---|
357 | =item ExtUtils::Embed |
---|
358 | |
---|
359 | Utilities for embedding Perl in C/C++ applications |
---|
360 | |
---|
361 | =item ExtUtils::Install |
---|
362 | |
---|
363 | Install files from here to there |
---|
364 | |
---|
365 | =item ExtUtils::Installed |
---|
366 | |
---|
367 | Inventory management of installed modules |
---|
368 | |
---|
369 | =item ExtUtils::Liblist |
---|
370 | |
---|
371 | Determine libraries to use and how to use them |
---|
372 | |
---|
373 | =item ExtUtils::MM_Cygwin |
---|
374 | |
---|
375 | Methods to override UN*X behaviour in ExtUtils::MakeMaker |
---|
376 | |
---|
377 | =item ExtUtils::MM_OS2 |
---|
378 | |
---|
379 | Methods to override UN*X behaviour in ExtUtils::MakeMaker |
---|
380 | |
---|
381 | =item ExtUtils::MM_Unix |
---|
382 | |
---|
383 | Methods used by ExtUtils::MakeMaker |
---|
384 | |
---|
385 | =item ExtUtils::MM_VMS |
---|
386 | |
---|
387 | Methods to override UN*X behaviour in ExtUtils::MakeMaker |
---|
388 | |
---|
389 | =item ExtUtils::MM_Win32 |
---|
390 | |
---|
391 | Methods to override UN*X behaviour in ExtUtils::MakeMaker |
---|
392 | |
---|
393 | =item ExtUtils::MakeMaker |
---|
394 | |
---|
395 | Create an extension Makefile |
---|
396 | |
---|
397 | =item ExtUtils::Manifest |
---|
398 | |
---|
399 | Utilities to write and check a MANIFEST file |
---|
400 | |
---|
401 | =item ExtUtils::Mkbootstrap |
---|
402 | |
---|
403 | Make a bootstrap file for use by DynaLoader |
---|
404 | |
---|
405 | =item ExtUtils::Mksymlists |
---|
406 | |
---|
407 | Write linker options files for dynamic extension |
---|
408 | |
---|
409 | =item ExtUtils::Packlist |
---|
410 | |
---|
411 | Manage .packlist files |
---|
412 | |
---|
413 | =item ExtUtils::testlib |
---|
414 | |
---|
415 | Add blib/* directories to @INC |
---|
416 | |
---|
417 | =item Fatal |
---|
418 | |
---|
419 | Replace functions with equivalents which succeed or die |
---|
420 | |
---|
421 | =item Fcntl |
---|
422 | |
---|
423 | Load the C Fcntl.h defines |
---|
424 | |
---|
425 | =item File::Basename |
---|
426 | |
---|
427 | Split a pathname into pieces |
---|
428 | |
---|
429 | =item File::CheckTree |
---|
430 | |
---|
431 | Run many filetest checks on a tree |
---|
432 | |
---|
433 | =item File::Compare |
---|
434 | |
---|
435 | Compare files or filehandles |
---|
436 | |
---|
437 | =item File::Copy |
---|
438 | |
---|
439 | Copy files or filehandles |
---|
440 | |
---|
441 | =item File::DosGlob |
---|
442 | |
---|
443 | DOS like globbing and then some |
---|
444 | |
---|
445 | =item File::Find |
---|
446 | |
---|
447 | Traverse a file tree |
---|
448 | |
---|
449 | =item File::Path |
---|
450 | |
---|
451 | Create or remove directory trees |
---|
452 | |
---|
453 | =item File::Spec |
---|
454 | |
---|
455 | Portably perform operations on file names |
---|
456 | |
---|
457 | =item File::Spec::Epoc |
---|
458 | |
---|
459 | Methods for Epoc file specs |
---|
460 | |
---|
461 | =item File::Spec::Functions |
---|
462 | |
---|
463 | Portably perform operations on file names |
---|
464 | |
---|
465 | =item File::Spec::Mac |
---|
466 | |
---|
467 | File::Spec for MacOS |
---|
468 | |
---|
469 | =item File::Spec::OS2 |
---|
470 | |
---|
471 | Methods for OS/2 file specs |
---|
472 | |
---|
473 | =item File::Spec::Unix |
---|
474 | |
---|
475 | Methods used by File::Spec |
---|
476 | |
---|
477 | =item File::Spec::VMS |
---|
478 | |
---|
479 | Methods for VMS file specs |
---|
480 | |
---|
481 | =item File::Spec::Win32 |
---|
482 | |
---|
483 | Methods for Win32 file specs |
---|
484 | |
---|
485 | =item File::Temp |
---|
486 | |
---|
487 | Return name and handle of a temporary file safely |
---|
488 | |
---|
489 | =item File::stat |
---|
490 | |
---|
491 | By-name interface to Perl's built-in stat() functions |
---|
492 | |
---|
493 | =item FileCache |
---|
494 | |
---|
495 | Keep more files open than the system permits |
---|
496 | |
---|
497 | =item FileHandle |
---|
498 | |
---|
499 | Supply object methods for filehandles |
---|
500 | |
---|
501 | =item FindBin |
---|
502 | |
---|
503 | Locate directory of original perl script |
---|
504 | |
---|
505 | =item GDBM_File |
---|
506 | |
---|
507 | Perl5 access to the gdbm library. |
---|
508 | |
---|
509 | =item Getopt::Long |
---|
510 | |
---|
511 | Extended processing of command line options |
---|
512 | |
---|
513 | =item Getopt::Std |
---|
514 | |
---|
515 | Process single-character switches with switch clustering |
---|
516 | |
---|
517 | =item I18N::Collate |
---|
518 | |
---|
519 | Compare 8-bit scalar data according to the current locale |
---|
520 | |
---|
521 | =item IO |
---|
522 | |
---|
523 | Load various IO modules |
---|
524 | |
---|
525 | =item IPC::Open2 |
---|
526 | |
---|
527 | Open a process for both reading and writing |
---|
528 | |
---|
529 | =item IPC::Open3 |
---|
530 | |
---|
531 | Open a process for reading, writing, and error handling |
---|
532 | |
---|
533 | =item Math::BigFloat |
---|
534 | |
---|
535 | Arbitrary length float math package |
---|
536 | |
---|
537 | =item Math::BigInt |
---|
538 | |
---|
539 | Arbitrary size integer math package |
---|
540 | |
---|
541 | =item Math::Complex |
---|
542 | |
---|
543 | Complex numbers and associated mathematical functions |
---|
544 | |
---|
545 | =item Math::Trig |
---|
546 | |
---|
547 | Trigonometric functions |
---|
548 | |
---|
549 | =item Net::Ping |
---|
550 | |
---|
551 | Check a remote host for reachability |
---|
552 | |
---|
553 | =item Net::hostent |
---|
554 | |
---|
555 | By-name interface to Perl's built-in gethost*() functions |
---|
556 | |
---|
557 | =item Net::netent |
---|
558 | |
---|
559 | By-name interface to Perl's built-in getnet*() functions |
---|
560 | |
---|
561 | =item Net::protoent |
---|
562 | |
---|
563 | By-name interface to Perl's built-in getproto*() functions |
---|
564 | |
---|
565 | =item Net::servent |
---|
566 | |
---|
567 | By-name interface to Perl's built-in getserv*() functions |
---|
568 | |
---|
569 | =item O |
---|
570 | |
---|
571 | Generic interface to Perl Compiler backends |
---|
572 | |
---|
573 | =item Opcode |
---|
574 | |
---|
575 | Disable named opcodes when compiling perl code |
---|
576 | |
---|
577 | =item POSIX |
---|
578 | |
---|
579 | Perl interface to IEEE Std 1003.1 |
---|
580 | |
---|
581 | =item Pod::Checker |
---|
582 | |
---|
583 | Check pod documents for syntax errors |
---|
584 | |
---|
585 | =item Pod::Find |
---|
586 | |
---|
587 | Find POD documents in directory trees |
---|
588 | |
---|
589 | =item Pod::Html |
---|
590 | |
---|
591 | Module to convert pod files to HTML |
---|
592 | |
---|
593 | =item Pod::InputObjects |
---|
594 | |
---|
595 | Objects representing POD input paragraphs, commands, etc. |
---|
596 | |
---|
597 | =item Pod::LaTeX |
---|
598 | |
---|
599 | Convert Pod data to formatted Latex |
---|
600 | |
---|
601 | =item Pod::Man |
---|
602 | |
---|
603 | Convert POD data to formatted *roff input |
---|
604 | |
---|
605 | =item Pod::ParseUtils |
---|
606 | |
---|
607 | Helpers for POD parsing and conversion |
---|
608 | |
---|
609 | =item Pod::Parser |
---|
610 | |
---|
611 | Base class for creating POD filters and translators |
---|
612 | |
---|
613 | =item Pod::Plainer |
---|
614 | |
---|
615 | Perl extension for converting Pod to old style Pod. |
---|
616 | |
---|
617 | =item Pod::Select |
---|
618 | |
---|
619 | Extract selected sections of POD from input |
---|
620 | |
---|
621 | =item Pod::Text |
---|
622 | |
---|
623 | Convert POD data to formatted ASCII text |
---|
624 | |
---|
625 | =item Pod::Text::Color |
---|
626 | |
---|
627 | Convert POD data to formatted color ASCII text |
---|
628 | |
---|
629 | =item Pod::Text::Overstrike |
---|
630 | |
---|
631 | Convert POD data to formatted overstrike text |
---|
632 | |
---|
633 | =item Pod::Text::Termcap |
---|
634 | |
---|
635 | Convert POD data to ASCII text with format escapes |
---|
636 | |
---|
637 | =item Pod::Usage |
---|
638 | |
---|
639 | Print a usage message from embedded pod documentation |
---|
640 | |
---|
641 | =item SDBM_File |
---|
642 | |
---|
643 | Tied access to sdbm files |
---|
644 | |
---|
645 | =item Safe |
---|
646 | |
---|
647 | Compile and execute code in restricted compartments |
---|
648 | |
---|
649 | =item Search::Dict |
---|
650 | |
---|
651 | Search for key in dictionary file |
---|
652 | |
---|
653 | =item SelectSaver |
---|
654 | |
---|
655 | Save and restore selected file handle |
---|
656 | |
---|
657 | =item SelfLoader |
---|
658 | |
---|
659 | Load functions only on demand |
---|
660 | |
---|
661 | =item Shell |
---|
662 | |
---|
663 | Run shell commands transparently within perl |
---|
664 | |
---|
665 | =item Socket |
---|
666 | |
---|
667 | Load the C socket.h defines and structure manipulators |
---|
668 | |
---|
669 | =item Symbol |
---|
670 | |
---|
671 | Manipulate Perl symbols and their names |
---|
672 | |
---|
673 | =item Term::ANSIColor |
---|
674 | |
---|
675 | Color screen output using ANSI escape sequences |
---|
676 | |
---|
677 | =item Term::Cap |
---|
678 | |
---|
679 | Perl termcap interface |
---|
680 | |
---|
681 | =item Term::Complete |
---|
682 | |
---|
683 | Perl word completion module |
---|
684 | |
---|
685 | =item Term::ReadLine |
---|
686 | |
---|
687 | Perl interface to various C<readline> packages. If |
---|
688 | |
---|
689 | =item Test |
---|
690 | |
---|
691 | Provides a simple framework for writing test scripts |
---|
692 | |
---|
693 | =item Test::Harness |
---|
694 | |
---|
695 | Run perl standard test scripts with statistics |
---|
696 | |
---|
697 | =item Text::Abbrev |
---|
698 | |
---|
699 | Create an abbreviation table from a list |
---|
700 | |
---|
701 | =item Text::ParseWords |
---|
702 | |
---|
703 | Parse text into an array of tokens or array of arrays |
---|
704 | |
---|
705 | =item Text::Soundex |
---|
706 | |
---|
707 | Implementation of the Soundex Algorithm as Described by Knuth |
---|
708 | |
---|
709 | =item Text::Tabs |
---|
710 | |
---|
711 | Expand and unexpand tabs per the unix expand(1) and unexpand(1) |
---|
712 | |
---|
713 | =item Text::Wrap |
---|
714 | |
---|
715 | Line wrapping to form simple paragraphs |
---|
716 | |
---|
717 | =item Thread |
---|
718 | |
---|
719 | Manipulate threads in Perl (EXPERIMENTAL, subject to change) |
---|
720 | |
---|
721 | =item Thread::Queue |
---|
722 | |
---|
723 | Thread-safe queues |
---|
724 | |
---|
725 | =item Thread::Semaphore |
---|
726 | |
---|
727 | Thread-safe semaphores |
---|
728 | |
---|
729 | =item Thread::Signal |
---|
730 | |
---|
731 | Start a thread which runs signal handlers reliably |
---|
732 | |
---|
733 | =item Thread::Specific |
---|
734 | |
---|
735 | Thread-specific keys |
---|
736 | |
---|
737 | =item Tie::Array |
---|
738 | |
---|
739 | Base class for tied arrays |
---|
740 | |
---|
741 | =item Tie::Handle |
---|
742 | |
---|
743 | Base class definitions for tied handles |
---|
744 | |
---|
745 | =item Tie::Hash |
---|
746 | |
---|
747 | Base class definitions for tied hashes |
---|
748 | |
---|
749 | =item Tie::RefHash |
---|
750 | |
---|
751 | Use references as hash keys |
---|
752 | |
---|
753 | =item Tie::Scalar |
---|
754 | |
---|
755 | Base class definitions for tied scalars |
---|
756 | |
---|
757 | =item Tie::SubstrHash |
---|
758 | |
---|
759 | Fixed-table-size, fixed-key-length hashing |
---|
760 | |
---|
761 | =item Time::Local |
---|
762 | |
---|
763 | Efficiently compute time from local and GMT time |
---|
764 | |
---|
765 | =item Time::gmtime |
---|
766 | |
---|
767 | By-name interface to Perl's built-in gmtime() function |
---|
768 | |
---|
769 | =item Time::localtime |
---|
770 | |
---|
771 | By-name interface to Perl's built-in localtime() function |
---|
772 | |
---|
773 | =item Time::tm |
---|
774 | |
---|
775 | Internal object used by Time::gmtime and Time::localtime |
---|
776 | |
---|
777 | =item UNIVERSAL |
---|
778 | |
---|
779 | Base class for ALL classes (blessed references) |
---|
780 | |
---|
781 | =item User::grent |
---|
782 | |
---|
783 | By-name interface to Perl's built-in getgr*() functions |
---|
784 | |
---|
785 | =item User::pwent |
---|
786 | |
---|
787 | By-name interface to Perl's built-in getpw*() functions |
---|
788 | |
---|
789 | =item Win32 |
---|
790 | |
---|
791 | Interfaces to some Win32 API Functions |
---|
792 | |
---|
793 | =back |
---|
794 | |
---|
795 | To find out I<all> modules installed on your system, including |
---|
796 | those without documentation or outside the standard release, |
---|
797 | just do this: |
---|
798 | |
---|
799 | % find `perl -e 'print "@INC"'` -name '*.pm' -print |
---|
800 | |
---|
801 | They should all have their own documentation installed and accessible |
---|
802 | via your system man(1) command. If you do not have a B<find> |
---|
803 | program, you can use the Perl B<find2perl> program instead, which |
---|
804 | generates Perl code as output you can run through perl. If you |
---|
805 | have a B<man> program but it doesn't find your modules, you'll have |
---|
806 | to fix your manpath. See L<perl> for details. If you have no |
---|
807 | system B<man> command, you might try the B<perldoc> program. |
---|
808 | |
---|
809 | =head2 Extension Modules |
---|
810 | |
---|
811 | Extension modules are written in C (or a mix of Perl and C). They |
---|
812 | are usually dynamically loaded into Perl if and when you need them, |
---|
813 | but may also be be linked in statically. Supported extension modules |
---|
814 | include Socket, Fcntl, and POSIX. |
---|
815 | |
---|
816 | Many popular C extension modules do not come bundled (at least, not |
---|
817 | completely) due to their sizes, volatility, or simply lack of time |
---|
818 | for adequate testing and configuration across the multitude of |
---|
819 | platforms on which Perl was beta-tested. You are encouraged to |
---|
820 | look for them on CPAN (described below), or using web search engines |
---|
821 | like Alta Vista or Deja News. |
---|
822 | |
---|
823 | =head1 CPAN |
---|
824 | |
---|
825 | CPAN stands for Comprehensive Perl Archive Network; it's a globally |
---|
826 | replicated trove of Perl materials, including documentation, style |
---|
827 | guides, tricks and traps, alternate ports to non-Unix systems and |
---|
828 | occasional binary distributions for these. Search engines for |
---|
829 | CPAN can be found at http://cpan.perl.com/ and at |
---|
830 | http://theory.uwinnipeg.ca/mod_perl/cpan-search.pl . |
---|
831 | |
---|
832 | Most importantly, CPAN includes around a thousand unbundled modules, |
---|
833 | some of which require a C compiler to build. Major categories of |
---|
834 | modules are: |
---|
835 | |
---|
836 | =over |
---|
837 | |
---|
838 | =item * |
---|
839 | |
---|
840 | Language Extensions and Documentation Tools |
---|
841 | |
---|
842 | =item * |
---|
843 | |
---|
844 | Development Support |
---|
845 | |
---|
846 | =item * |
---|
847 | |
---|
848 | Operating System Interfaces |
---|
849 | |
---|
850 | =item * |
---|
851 | |
---|
852 | Networking, Device Control (modems) and InterProcess Communication |
---|
853 | |
---|
854 | =item * |
---|
855 | |
---|
856 | Data Types and Data Type Utilities |
---|
857 | |
---|
858 | =item * |
---|
859 | |
---|
860 | Database Interfaces |
---|
861 | |
---|
862 | =item * |
---|
863 | |
---|
864 | User Interfaces |
---|
865 | |
---|
866 | =item * |
---|
867 | |
---|
868 | Interfaces to / Emulations of Other Programming Languages |
---|
869 | |
---|
870 | =item * |
---|
871 | |
---|
872 | File Names, File Systems and File Locking (see also File Handles) |
---|
873 | |
---|
874 | =item * |
---|
875 | |
---|
876 | String Processing, Language Text Processing, Parsing, and Searching |
---|
877 | |
---|
878 | =item * |
---|
879 | |
---|
880 | Option, Argument, Parameter, and Configuration File Processing |
---|
881 | |
---|
882 | =item * |
---|
883 | |
---|
884 | Internationalization and Locale |
---|
885 | |
---|
886 | =item * |
---|
887 | |
---|
888 | Authentication, Security, and Encryption |
---|
889 | |
---|
890 | =item * |
---|
891 | |
---|
892 | World Wide Web, HTML, HTTP, CGI, MIME |
---|
893 | |
---|
894 | =item * |
---|
895 | |
---|
896 | Server and Daemon Utilities |
---|
897 | |
---|
898 | =item * |
---|
899 | |
---|
900 | Archiving and Compression |
---|
901 | |
---|
902 | =item * |
---|
903 | |
---|
904 | Images, Pixmap and Bitmap Manipulation, Drawing, and Graphing |
---|
905 | |
---|
906 | =item * |
---|
907 | |
---|
908 | Mail and Usenet News |
---|
909 | |
---|
910 | =item * |
---|
911 | |
---|
912 | Control Flow Utilities (callbacks and exceptions etc) |
---|
913 | |
---|
914 | =item * |
---|
915 | |
---|
916 | File Handle and Input/Output Stream Utilities |
---|
917 | |
---|
918 | =item * |
---|
919 | |
---|
920 | Miscellaneous Modules |
---|
921 | |
---|
922 | =back |
---|
923 | |
---|
924 | Registered CPAN sites as of this writing include the following. |
---|
925 | You should try to choose one close to you: |
---|
926 | |
---|
927 | =head2 Africa |
---|
928 | |
---|
929 | =over 4 |
---|
930 | |
---|
931 | =item * |
---|
932 | |
---|
933 | South Africa |
---|
934 | |
---|
935 | ftp://ftp.is.co.za/programming/perl/CPAN/ |
---|
936 | ftp://ftp.saix.net/pub/CPAN/ |
---|
937 | ftp://ftpza.co.za/pub/mirrors/cpan/ |
---|
938 | ftp://ftp.sun.ac.za/CPAN/ |
---|
939 | |
---|
940 | =back |
---|
941 | |
---|
942 | =head2 Asia |
---|
943 | |
---|
944 | =over 4 |
---|
945 | |
---|
946 | =item * |
---|
947 | |
---|
948 | China |
---|
949 | |
---|
950 | ftp://freesoft.cei.gov.cn/pub/languages/perl/CPAN/ |
---|
951 | http://www2.linuxforum.net/mirror/CPAN/ |
---|
952 | http://cpan.shellhung.org/ |
---|
953 | ftp://ftp.shellhung.org/pub/CPAN |
---|
954 | |
---|
955 | =item * |
---|
956 | |
---|
957 | Hong Kong |
---|
958 | |
---|
959 | http://CPAN.pacific.net.hk/ |
---|
960 | ftp://ftp.pacific.net.hk/pub/mirror/CPAN/ |
---|
961 | |
---|
962 | =item * |
---|
963 | |
---|
964 | Indonesia |
---|
965 | |
---|
966 | http://piksi.itb.ac.id/CPAN/ |
---|
967 | ftp://mirrors.piksi.itb.ac.id/CPAN/ |
---|
968 | http://CPAN.mweb.co.id/ |
---|
969 | ftp://ftp.mweb.co.id/pub/languages/perl/CPAN/ |
---|
970 | |
---|
971 | =item * |
---|
972 | |
---|
973 | Israel |
---|
974 | |
---|
975 | http://www.iglu.org.il:/pub/CPAN/ |
---|
976 | ftp://ftp.iglu.org.il/pub/CPAN/ |
---|
977 | http://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/ |
---|
978 | ftp://bioinfo.weizmann.ac.il/pub/software/perl/CPAN/ |
---|
979 | |
---|
980 | =item * |
---|
981 | |
---|
982 | Japan |
---|
983 | |
---|
984 | ftp://ftp.u-aizu.ac.jp/pub/lang/perl/CPAN/ |
---|
985 | ftp://ftp.kddlabs.co.jp/CPAN/ |
---|
986 | http://mirror.nucba.ac.jp/mirror/Perl/ |
---|
987 | ftp://mirror.nucba.ac.jp/mirror/Perl/ |
---|
988 | ftp://ftp.meisei-u.ac.jp/pub/CPAN/ |
---|
989 | ftp://ftp.jaist.ac.jp/pub/lang/perl/CPAN/ |
---|
990 | ftp://ftp.dti.ad.jp/pub/lang/CPAN/ |
---|
991 | ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/ |
---|
992 | |
---|
993 | =item * |
---|
994 | |
---|
995 | Saudi Arabia |
---|
996 | |
---|
997 | ftp://ftp.isu.net.sa/pub/CPAN/ |
---|
998 | |
---|
999 | =item * |
---|
1000 | |
---|
1001 | Singapore |
---|
1002 | |
---|
1003 | http://cpan.hjc.edu.sg |
---|
1004 | http://ftp.nus.edu.sg/unix/perl/CPAN/ |
---|
1005 | ftp://ftp.nus.edu.sg/pub/unix/perl/CPAN/ |
---|
1006 | |
---|
1007 | =item * |
---|
1008 | |
---|
1009 | South Korea |
---|
1010 | |
---|
1011 | http://CPAN.bora.net/ |
---|
1012 | ftp://ftp.bora.net/pub/CPAN/ |
---|
1013 | http://ftp.kornet.net/CPAN/ |
---|
1014 | ftp://ftp.kornet.net/pub/CPAN/ |
---|
1015 | ftp://ftp.nuri.net/pub/CPAN/ |
---|
1016 | |
---|
1017 | =item * |
---|
1018 | |
---|
1019 | Taiwan |
---|
1020 | |
---|
1021 | ftp://coda.nctu.edu.tw/UNIX/perl/CPAN |
---|
1022 | ftp://ftp.ee.ncku.edu.tw/pub/perl/CPAN/ |
---|
1023 | ftp://ftp1.sinica.edu.tw/pub1/perl/CPAN/ |
---|
1024 | |
---|
1025 | =item * |
---|
1026 | |
---|
1027 | Thailand |
---|
1028 | |
---|
1029 | http://download.nectec.or.th/CPAN/ |
---|
1030 | ftp://ftp.nectec.or.th/pub/languages/CPAN/ |
---|
1031 | ftp://ftp.cs.riubon.ac.th/pub/mirrors/CPAN/ |
---|
1032 | |
---|
1033 | =back |
---|
1034 | |
---|
1035 | =head2 Central America |
---|
1036 | |
---|
1037 | =over 4 |
---|
1038 | |
---|
1039 | =item * |
---|
1040 | |
---|
1041 | Costa Rica |
---|
1042 | |
---|
1043 | ftp://ftp.linux.co.cr/mirrors/CPAN/ |
---|
1044 | http://ftp.ucr.ac.cr/Unix/CPAN/ |
---|
1045 | ftp://ftp.ucr.ac.cr/pub/Unix/CPAN/ |
---|
1046 | |
---|
1047 | =back |
---|
1048 | |
---|
1049 | =head2 Europe |
---|
1050 | |
---|
1051 | =over 4 |
---|
1052 | |
---|
1053 | =item * |
---|
1054 | |
---|
1055 | Austria |
---|
1056 | |
---|
1057 | ftp://ftp.tuwien.ac.at/pub/languages/perl/CPAN/ |
---|
1058 | |
---|
1059 | =item * |
---|
1060 | |
---|
1061 | Belgium |
---|
1062 | |
---|
1063 | http://ftp.easynet.be/CPAN/ |
---|
1064 | ftp://ftp.easynet.be/CPAN/ |
---|
1065 | ftp://ftp.kulnet.kuleuven.ac.be/pub/mirror/CPAN/ |
---|
1066 | |
---|
1067 | =item * |
---|
1068 | |
---|
1069 | Bulgaria |
---|
1070 | |
---|
1071 | ftp://ftp.ntrl.net/pub/mirrors/CPAN/ |
---|
1072 | |
---|
1073 | =item * |
---|
1074 | |
---|
1075 | Croatia |
---|
1076 | |
---|
1077 | ftp://ftp.linux.hr/pub/CPAN/ |
---|
1078 | |
---|
1079 | =item * |
---|
1080 | |
---|
1081 | Czech Republic |
---|
1082 | |
---|
1083 | http://www.fi.muni.cz/pub/perl/ |
---|
1084 | ftp://ftp.fi.muni.cz/pub/perl/ |
---|
1085 | ftp://sunsite.mff.cuni.cz/MIRRORS/ftp.funet.fi/pub/languages/perl/CPAN/ |
---|
1086 | |
---|
1087 | =item * |
---|
1088 | |
---|
1089 | Denmark |
---|
1090 | |
---|
1091 | ftp://sunsite.auc.dk/pub/languages/perl/CPAN/ |
---|
1092 | http://www.cpan.dk/CPAN/ |
---|
1093 | ftp://www.cpan.dk/ftp.cpan.org/CPAN/ |
---|
1094 | |
---|
1095 | =item * |
---|
1096 | |
---|
1097 | England |
---|
1098 | |
---|
1099 | http://www.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN |
---|
1100 | ftp://ftp.mirror.ac.uk/sites/ftp.funet.fi/pub/languages/perl/CPAN/ |
---|
1101 | ftp://ftp.demon.co.uk/pub/mirrors/perl/CPAN/ |
---|
1102 | ftp://ftp.flirble.org/pub/languages/perl/CPAN/ |
---|
1103 | ftp://ftp.plig.org/pub/CPAN/ |
---|
1104 | ftp://sunsite.doc.ic.ac.uk/packages/CPAN/ |
---|
1105 | http://mirror.uklinux.net/CPAN/ |
---|
1106 | ftp://mirror.uklinux.net/pub/CPAN/ |
---|
1107 | ftp://usit.shef.ac.uk/pub/packages/CPAN/ |
---|
1108 | |
---|
1109 | =item * |
---|
1110 | |
---|
1111 | Estonia |
---|
1112 | |
---|
1113 | ftp://ftp.ut.ee/pub/languages/perl/CPAN/ |
---|
1114 | |
---|
1115 | =item * |
---|
1116 | |
---|
1117 | Finland |
---|
1118 | |
---|
1119 | ftp://ftp.funet.fi/pub/languages/perl/CPAN/ |
---|
1120 | |
---|
1121 | =item * |
---|
1122 | |
---|
1123 | France |
---|
1124 | |
---|
1125 | ftp://cpan.ftp.worldonline.fr/pub/CPAN/ |
---|
1126 | ftp://ftp.club-internet.fr/pub/perl/CPAN/ |
---|
1127 | ftp://ftp.lip6.fr/pub/perl/CPAN/ |
---|
1128 | ftp://ftp.oleane.net/pub/mirrors/CPAN/ |
---|
1129 | ftp://ftp.pasteur.fr/pub/computing/CPAN/ |
---|
1130 | ftp://cpan.cict.fr/pub/CPAN/ |
---|
1131 | ftp://ftp.uvsq.fr/pub/perl/CPAN/ |
---|
1132 | |
---|
1133 | =item * |
---|
1134 | |
---|
1135 | Germany |
---|
1136 | |
---|
1137 | ftp://ftp.rz.ruhr-uni-bochum.de/pub/CPAN/ |
---|
1138 | ftp://ftp.freenet.de/pub/ftp.cpan.org/pub/CPAN/ |
---|
1139 | ftp://ftp.uni-erlangen.de/pub/source/CPAN/ |
---|
1140 | ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/CPAN |
---|
1141 | ftp://ftp.gigabell.net/pub/CPAN/ |
---|
1142 | http://ftp.gwdg.de/pub/languages/perl/CPAN/ |
---|
1143 | ftp://ftp.gwdg.de/pub/languages/perl/CPAN/ |
---|
1144 | ftp://ftp.uni-hamburg.de/pub/soft/lang/perl/CPAN/ |
---|
1145 | ftp://ftp.leo.org/pub/comp/general/programming/languages/script/perl/CPAN/ |
---|
1146 | ftp://ftp.mpi-sb.mpg.de/pub/perl/CPAN/ |
---|
1147 | ftp://ftp.gmd.de/mirrors/CPAN/ |
---|
1148 | |
---|
1149 | =item * |
---|
1150 | |
---|
1151 | Greece |
---|
1152 | |
---|
1153 | ftp://ftp.forthnet.gr/pub/languages/perl/CPAN |
---|
1154 | ftp://ftp.ntua.gr/pub/lang/perl/ |
---|
1155 | |
---|
1156 | =item * |
---|
1157 | |
---|
1158 | Hungary |
---|
1159 | |
---|
1160 | http://cpan.artifact.hu/ |
---|
1161 | ftp://cpan.artifact.hu/CPAN/ |
---|
1162 | ftp://ftp.kfki.hu/pub/packages/perl/CPAN/ |
---|
1163 | |
---|
1164 | =item * |
---|
1165 | |
---|
1166 | Iceland |
---|
1167 | |
---|
1168 | http://cpan.gm.is/ |
---|
1169 | ftp://ftp.gm.is/pub/CPAN/ |
---|
1170 | |
---|
1171 | =item * |
---|
1172 | |
---|
1173 | Ireland |
---|
1174 | |
---|
1175 | http://cpan.indigo.ie/ |
---|
1176 | ftp://cpan.indigo.ie/pub/CPAN/ |
---|
1177 | http://sunsite.compapp.dcu.ie/pub/perl/ |
---|
1178 | ftp://sunsite.compapp.dcu.ie/pub/perl/ |
---|
1179 | |
---|
1180 | =item * |
---|
1181 | |
---|
1182 | Italy |
---|
1183 | |
---|
1184 | http://cpan.nettuno.it/ |
---|
1185 | http://gusp.dyndns.org/CPAN/ |
---|
1186 | ftp://gusp.dyndns.org/pub/CPAN |
---|
1187 | http://softcity.iol.it/cpan |
---|
1188 | ftp://softcity.iol.it/pub/cpan |
---|
1189 | ftp://ftp.unina.it/pub/Other/CPAN/ |
---|
1190 | ftp://ftp.unipi.it/pub/mirror/perl/CPAN/ |
---|
1191 | ftp://cis.uniRoma2.it/CPAN/ |
---|
1192 | ftp://ftp.edisontel.it/pub/CPAN_Mirror/ |
---|
1193 | ftp://ftp.flashnet.it/pub/CPAN/ |
---|
1194 | |
---|
1195 | =item * |
---|
1196 | |
---|
1197 | Latvia |
---|
1198 | |
---|
1199 | http://kvin.lv/pub/CPAN/ |
---|
1200 | |
---|
1201 | =item * |
---|
1202 | |
---|
1203 | Netherlands |
---|
1204 | |
---|
1205 | ftp://download.xs4all.nl/pub/mirror/CPAN/ |
---|
1206 | ftp://ftp.nl.uu.net/pub/CPAN/ |
---|
1207 | ftp://ftp.nluug.nl/pub/languages/perl/CPAN/ |
---|
1208 | ftp://ftp.cpan.nl/pub/CPAN/ |
---|
1209 | http://www.cs.uu.nl/mirror/CPAN/ |
---|
1210 | ftp://ftp.cs.uu.nl/mirror/CPAN/ |
---|
1211 | |
---|
1212 | =item * |
---|
1213 | |
---|
1214 | Norway |
---|
1215 | |
---|
1216 | ftp://sunsite.uio.no/pub/languages/perl/CPAN/ |
---|
1217 | ftp://ftp.uit.no/pub/languages/perl/cpan/ |
---|
1218 | |
---|
1219 | =item * |
---|
1220 | |
---|
1221 | Poland |
---|
1222 | |
---|
1223 | ftp://ftp.pk.edu.pl/pub/lang/perl/CPAN/ |
---|
1224 | ftp://ftp.mega.net.pl/pub/mirrors/ftp.perl.com/ |
---|
1225 | ftp://ftp.man.torun.pl/pub/doc/CPAN/ |
---|
1226 | ftp://sunsite.icm.edu.pl/pub/CPAN/ |
---|
1227 | |
---|
1228 | =item * |
---|
1229 | |
---|
1230 | Portugal |
---|
1231 | |
---|
1232 | ftp://ftp.ua.pt/pub/CPAN/ |
---|
1233 | ftp://perl.di.uminho.pt/pub/CPAN/ |
---|
1234 | ftp://ftp.ist.utl.pt/pub/CPAN/ |
---|
1235 | ftp://ftp.netc.pt/pub/CPAN/ |
---|
1236 | |
---|
1237 | =item * |
---|
1238 | |
---|
1239 | Romania |
---|
1240 | |
---|
1241 | ftp://archive.logicnet.ro/mirrors/ftp.cpan.org/CPAN/ |
---|
1242 | ftp://ftp.kappa.ro/pub/mirrors/ftp.perl.org/pub/CPAN/ |
---|
1243 | ftp://ftp.dntis.ro/pub/cpan/ |
---|
1244 | ftp://ftp.opsynet.com/cpan/ |
---|
1245 | ftp://ftp.dnttm.ro/pub/CPAN/ |
---|
1246 | ftp://ftp.timisoara.roedu.net/mirrors/CPAN/ |
---|
1247 | |
---|
1248 | =item * |
---|
1249 | |
---|
1250 | Russia |
---|
1251 | |
---|
1252 | ftp://ftp.chg.ru/pub/lang/perl/CPAN/ |
---|
1253 | http://cpan.rinet.ru/ |
---|
1254 | ftp://cpan.rinet.ru/pub/mirror/CPAN/ |
---|
1255 | ftp://ftp.aha.ru/pub/CPAN/ |
---|
1256 | ftp://ftp.sai.msu.su/pub/lang/perl/CPAN/ |
---|
1257 | |
---|
1258 | =item * |
---|
1259 | |
---|
1260 | Slovakia |
---|
1261 | |
---|
1262 | ftp://ftp.entry.sk/pub/languages/perl/CPAN/ |
---|
1263 | |
---|
1264 | =item * |
---|
1265 | |
---|
1266 | Slovenia |
---|
1267 | |
---|
1268 | ftp://ftp.arnes.si/software/perl/CPAN/ |
---|
1269 | |
---|
1270 | =item * |
---|
1271 | |
---|
1272 | Spain |
---|
1273 | |
---|
1274 | ftp://ftp.rediris.es/mirror/CPAN/ |
---|
1275 | ftp://ftp.etse.urv.es/pub/perl/ |
---|
1276 | |
---|
1277 | =item * |
---|
1278 | |
---|
1279 | Sweden |
---|
1280 | |
---|
1281 | http://ftp.du.se/CPAN/ |
---|
1282 | ftp://ftp.du.se/pub/CPAN/ |
---|
1283 | ftp://ftp.sunet.se/pub/lang/perl/CPAN/ |
---|
1284 | |
---|
1285 | =item * |
---|
1286 | |
---|
1287 | Switzerland |
---|
1288 | |
---|
1289 | ftp://ftp.danyk.ch/CPAN/ |
---|
1290 | ftp://sunsite.cnlab-switch.ch/mirror/CPAN/ |
---|
1291 | |
---|
1292 | =item * |
---|
1293 | |
---|
1294 | Turkey |
---|
1295 | |
---|
1296 | ftp://sunsite.bilkent.edu.tr/pub/languages/CPAN/ |
---|
1297 | |
---|
1298 | =back |
---|
1299 | |
---|
1300 | =head2 North America |
---|
1301 | |
---|
1302 | =over 4 |
---|
1303 | |
---|
1304 | =item * |
---|
1305 | |
---|
1306 | Canada |
---|
1307 | |
---|
1308 | =over 8 |
---|
1309 | |
---|
1310 | =item * |
---|
1311 | |
---|
1312 | Alberta |
---|
1313 | |
---|
1314 | http://sunsite.ualberta.ca/pub/Mirror/CPAN/ |
---|
1315 | ftp://sunsite.ualberta.ca/pub/Mirror/CPAN/ |
---|
1316 | |
---|
1317 | =item * |
---|
1318 | |
---|
1319 | Manitoba |
---|
1320 | |
---|
1321 | http://theoryx5.uwinnipeg.ca/pub/CPAN/ |
---|
1322 | ftp://theoryx5.uwinnipeg.ca/pub/CPAN/ |
---|
1323 | |
---|
1324 | =item * |
---|
1325 | |
---|
1326 | Nova Scotia |
---|
1327 | |
---|
1328 | ftp://cpan.chebucto.ns.ca/pub/CPAN/ |
---|
1329 | |
---|
1330 | =item * |
---|
1331 | |
---|
1332 | Ontario |
---|
1333 | |
---|
1334 | ftp://ftp.crc.ca/pub/packages/lang/perl/CPAN/ |
---|
1335 | |
---|
1336 | =item * |
---|
1337 | |
---|
1338 | Mexico |
---|
1339 | |
---|
1340 | http://www.msg.com.mx/CPAN/ |
---|
1341 | ftp://ftp.msg.com.mx/pub/CPAN/ |
---|
1342 | |
---|
1343 | =back |
---|
1344 | |
---|
1345 | =item * |
---|
1346 | |
---|
1347 | United States |
---|
1348 | |
---|
1349 | =over 8 |
---|
1350 | |
---|
1351 | =item * |
---|
1352 | |
---|
1353 | Alabama |
---|
1354 | |
---|
1355 | http://mirror.hiwaay.net/CPAN/ |
---|
1356 | ftp://mirror.hiwaay.net/CPAN/ |
---|
1357 | |
---|
1358 | =item * |
---|
1359 | |
---|
1360 | California |
---|
1361 | |
---|
1362 | http://www.cpan.org/ |
---|
1363 | ftp://ftp.cpan.org/CPAN/ |
---|
1364 | ftp://cpan.nas.nasa.gov/pub/perl/CPAN/ |
---|
1365 | ftp://ftp.digital.com/pub/plan/perl/CPAN/ |
---|
1366 | http://www.kernel.org/pub/mirrors/cpan/ |
---|
1367 | ftp://ftp.kernel.org/pub/mirrors/cpan/ |
---|
1368 | http://www.perl.com/CPAN/ |
---|
1369 | http://download.sourceforge.net/mirrors/CPAN/ |
---|
1370 | |
---|
1371 | =item * |
---|
1372 | |
---|
1373 | Colorado |
---|
1374 | |
---|
1375 | ftp://ftp.cs.colorado.edu/pub/perl/CPAN/ |
---|
1376 | |
---|
1377 | =item * |
---|
1378 | |
---|
1379 | Florida |
---|
1380 | |
---|
1381 | ftp://ftp.cise.ufl.edu/pub/perl/CPAN/ |
---|
1382 | |
---|
1383 | =item * |
---|
1384 | |
---|
1385 | Georgia |
---|
1386 | |
---|
1387 | ftp://ftp.twoguys.org/CPAN/ |
---|
1388 | |
---|
1389 | =item * |
---|
1390 | |
---|
1391 | Illinois |
---|
1392 | |
---|
1393 | http://www.neurogames.com/mirrors/CPAN |
---|
1394 | http://uiarchive.uiuc.edu/mirrors/ftp/ftp.cpan.org/pub/CPAN/ |
---|
1395 | ftp://uiarchive.uiuc.edu/mirrors/ftp/ftp.cpan.org/pub/CPAN/ |
---|
1396 | |
---|
1397 | =item * |
---|
1398 | |
---|
1399 | Indiana |
---|
1400 | |
---|
1401 | ftp://ftp.uwsg.indiana.edu/pub/perl/CPAN/ |
---|
1402 | http://cpan.nitco.com/ |
---|
1403 | ftp://cpan.nitco.com/pub/CPAN/ |
---|
1404 | ftp://cpan.in-span.net/ |
---|
1405 | http://csociety-ftp.ecn.purdue.edu/pub/CPAN |
---|
1406 | ftp://csociety-ftp.ecn.purdue.edu/pub/CPAN |
---|
1407 | |
---|
1408 | =item * |
---|
1409 | |
---|
1410 | Kentucky |
---|
1411 | |
---|
1412 | http://cpan.uky.edu/ |
---|
1413 | ftp://cpan.uky.edu/pub/CPAN/ |
---|
1414 | |
---|
1415 | =item * |
---|
1416 | |
---|
1417 | Massachusetts |
---|
1418 | |
---|
1419 | ftp://ftp.ccs.neu.edu/net/mirrors/ftp.funet.fi/pub/languages/perl/CPAN/ |
---|
1420 | ftp://ftp.iguide.com/pub/mirrors/packages/perl/CPAN/ |
---|
1421 | |
---|
1422 | =item * |
---|
1423 | |
---|
1424 | New Jersey |
---|
1425 | |
---|
1426 | ftp://ftp.cpanel.net/pub/CPAN/ |
---|
1427 | |
---|
1428 | =item * |
---|
1429 | |
---|
1430 | New York |
---|
1431 | |
---|
1432 | ftp://ftp.freesoftware.com/pub/perl/CPAN/ |
---|
1433 | http://www.deao.net/mirrors/CPAN/ |
---|
1434 | ftp://ftp.deao.net/pub/CPAN/ |
---|
1435 | ftp://ftp.stealth.net/pub/mirrors/ftp.cpan.org/pub/CPAN/ |
---|
1436 | http://mirror.nyc.anidea.com/CPAN/ |
---|
1437 | ftp://mirror.nyc.anidea.com/pub/CPAN/ |
---|
1438 | http://www.rge.com/pub/languages/perl/ |
---|
1439 | ftp://ftp.rge.com/pub/languages/perl/ |
---|
1440 | ftp://mirrors.cloud9.net/pub/mirrors/CPAN/ |
---|
1441 | |
---|
1442 | =item * |
---|
1443 | |
---|
1444 | North Carolina |
---|
1445 | |
---|
1446 | ftp://ftp.duke.edu/pub/perl/ |
---|
1447 | |
---|
1448 | =item * |
---|
1449 | |
---|
1450 | Ohio |
---|
1451 | |
---|
1452 | ftp://ftp.loaded.net/pub/CPAN/ |
---|
1453 | |
---|
1454 | =item * |
---|
1455 | |
---|
1456 | Oklahoma |
---|
1457 | |
---|
1458 | ftp://ftp.ou.edu/mirrors/CPAN/ |
---|
1459 | |
---|
1460 | =item * |
---|
1461 | |
---|
1462 | Oregon |
---|
1463 | |
---|
1464 | ftp://ftp.orst.edu/pub/packages/CPAN/ |
---|
1465 | |
---|
1466 | =item * |
---|
1467 | |
---|
1468 | Pennsylvania |
---|
1469 | |
---|
1470 | http://ftp.epix.net/CPAN/ |
---|
1471 | ftp://ftp.epix.net/pub/languages/perl/ |
---|
1472 | ftp://carroll.cac.psu.edu/pub/CPAN/ |
---|
1473 | |
---|
1474 | =item * |
---|
1475 | |
---|
1476 | Tennessee |
---|
1477 | |
---|
1478 | ftp://ftp.sunsite.utk.edu/pub/CPAN/ |
---|
1479 | |
---|
1480 | =item * |
---|
1481 | |
---|
1482 | Texas |
---|
1483 | |
---|
1484 | http://ftp.sedl.org/pub/mirrors/CPAN/ |
---|
1485 | http://jhcloos.com/pub/mirror/CPAN/ |
---|
1486 | ftp://jhcloos.com/pub/mirror/CPAN/ |
---|
1487 | |
---|
1488 | =item * |
---|
1489 | |
---|
1490 | Utah |
---|
1491 | |
---|
1492 | ftp://mirror.xmission.com/CPAN/ |
---|
1493 | |
---|
1494 | =item * |
---|
1495 | |
---|
1496 | Virginia |
---|
1497 | |
---|
1498 | http://mirrors.rcn.net/pub/lang/CPAN/ |
---|
1499 | ftp://mirrors.rcn.net/pub/lang/CPAN/ |
---|
1500 | ftp://ruff.cs.jmu.edu/pub/CPAN/ |
---|
1501 | http://perl.Liquidation.com/CPAN/ |
---|
1502 | |
---|
1503 | =item * |
---|
1504 | |
---|
1505 | Washington |
---|
1506 | |
---|
1507 | http://cpan.llarian.net/ |
---|
1508 | ftp://cpan.llarian.net/pub/CPAN/ |
---|
1509 | ftp://ftp-mirror.internap.com/pub/CPAN/ |
---|
1510 | ftp://ftp.spu.edu/pub/CPAN/ |
---|
1511 | |
---|
1512 | =back |
---|
1513 | |
---|
1514 | =back |
---|
1515 | |
---|
1516 | =head2 Oceania |
---|
1517 | |
---|
1518 | =over 4 |
---|
1519 | |
---|
1520 | =item * |
---|
1521 | |
---|
1522 | Australia |
---|
1523 | |
---|
1524 | http://ftp.planetmirror.com/pub/CPAN/ |
---|
1525 | ftp://ftp.planetmirror.com/pub/CPAN/ |
---|
1526 | ftp://mirror.aarnet.edu.au/pub/perl/CPAN/ |
---|
1527 | ftp://cpan.topend.com.au/pub/CPAN/ |
---|
1528 | |
---|
1529 | =item * |
---|
1530 | |
---|
1531 | New Zealand |
---|
1532 | |
---|
1533 | ftp://ftp.auckland.ac.nz/pub/perl/CPAN/ |
---|
1534 | |
---|
1535 | =back |
---|
1536 | |
---|
1537 | =head2 South America |
---|
1538 | |
---|
1539 | =over 4 |
---|
1540 | |
---|
1541 | =item * |
---|
1542 | |
---|
1543 | Argentina |
---|
1544 | |
---|
1545 | ftp://mirrors.bannerlandia.com.ar/mirrors/CPAN/ |
---|
1546 | |
---|
1547 | =item * |
---|
1548 | |
---|
1549 | Brazil |
---|
1550 | |
---|
1551 | ftp://cpan.pop-mg.com.br/pub/CPAN/ |
---|
1552 | ftp://ftp.matrix.com.br/pub/perl/ |
---|
1553 | ftp://cpan.if.usp.br/pub/mirror/CPAN/ |
---|
1554 | |
---|
1555 | =item * |
---|
1556 | |
---|
1557 | Chile |
---|
1558 | |
---|
1559 | ftp://ftp.psinet.cl/pub/programming/perl/CPAN/ |
---|
1560 | ftp://sunsite.dcc.uchile.cl/pub/lang/perl/ |
---|
1561 | |
---|
1562 | =back |
---|
1563 | |
---|
1564 | For an up-to-date listing of CPAN sites, |
---|
1565 | see http://www.cpan.org/SITES or ftp://www.cpan.org/SITES . |
---|
1566 | |
---|
1567 | =head1 Modules: Creation, Use, and Abuse |
---|
1568 | |
---|
1569 | (The following section is borrowed directly from Tim Bunce's modules |
---|
1570 | file, available at your nearest CPAN site.) |
---|
1571 | |
---|
1572 | Perl implements a class using a package, but the presence of a |
---|
1573 | package doesn't imply the presence of a class. A package is just a |
---|
1574 | namespace. A class is a package that provides subroutines that can be |
---|
1575 | used as methods. A method is just a subroutine that expects, as its |
---|
1576 | first argument, either the name of a package (for "static" methods), |
---|
1577 | or a reference to something (for "virtual" methods). |
---|
1578 | |
---|
1579 | A module is a file that (by convention) provides a class of the same |
---|
1580 | name (sans the .pm), plus an import method in that class that can be |
---|
1581 | called to fetch exported symbols. This module may implement some of |
---|
1582 | its methods by loading dynamic C or C++ objects, but that should be |
---|
1583 | totally transparent to the user of the module. Likewise, the module |
---|
1584 | might set up an AUTOLOAD function to slurp in subroutine definitions on |
---|
1585 | demand, but this is also transparent. Only the F<.pm> file is required to |
---|
1586 | exist. See L<perlsub>, L<perltoot>, and L<AutoLoader> for details about |
---|
1587 | the AUTOLOAD mechanism. |
---|
1588 | |
---|
1589 | =head2 Guidelines for Module Creation |
---|
1590 | |
---|
1591 | =over 4 |
---|
1592 | |
---|
1593 | =item * |
---|
1594 | |
---|
1595 | Do similar modules already exist in some form? |
---|
1596 | |
---|
1597 | If so, please try to reuse the existing modules either in whole or |
---|
1598 | by inheriting useful features into a new class. If this is not |
---|
1599 | practical try to get together with the module authors to work on |
---|
1600 | extending or enhancing the functionality of the existing modules. |
---|
1601 | A perfect example is the plethora of packages in perl4 for dealing |
---|
1602 | with command line options. |
---|
1603 | |
---|
1604 | If you are writing a module to expand an already existing set of |
---|
1605 | modules, please coordinate with the author of the package. It |
---|
1606 | helps if you follow the same naming scheme and module interaction |
---|
1607 | scheme as the original author. |
---|
1608 | |
---|
1609 | =item * |
---|
1610 | |
---|
1611 | Try to design the new module to be easy to extend and reuse. |
---|
1612 | |
---|
1613 | Try to C<use warnings;> (or C<use warnings qw(...);>). |
---|
1614 | Remember that you can add C<no warnings qw(...);> to individual blocks |
---|
1615 | of code that need less warnings. |
---|
1616 | |
---|
1617 | Use blessed references. Use the two argument form of bless to bless |
---|
1618 | into the class name given as the first parameter of the constructor, |
---|
1619 | e.g.,: |
---|
1620 | |
---|
1621 | sub new { |
---|
1622 | my $class = shift; |
---|
1623 | return bless {}, $class; |
---|
1624 | } |
---|
1625 | |
---|
1626 | or even this if you'd like it to be used as either a static |
---|
1627 | or a virtual method. |
---|
1628 | |
---|
1629 | sub new { |
---|
1630 | my $self = shift; |
---|
1631 | my $class = ref($self) || $self; |
---|
1632 | return bless {}, $class; |
---|
1633 | } |
---|
1634 | |
---|
1635 | Pass arrays as references so more parameters can be added later |
---|
1636 | (it's also faster). Convert functions into methods where |
---|
1637 | appropriate. Split large methods into smaller more flexible ones. |
---|
1638 | Inherit methods from other modules if appropriate. |
---|
1639 | |
---|
1640 | Avoid class name tests like: C<die "Invalid" unless ref $ref eq 'FOO'>. |
---|
1641 | Generally you can delete the C<eq 'FOO'> part with no harm at all. |
---|
1642 | Let the objects look after themselves! Generally, avoid hard-wired |
---|
1643 | class names as far as possible. |
---|
1644 | |
---|
1645 | Avoid C<< $r->Class::func() >> where using C<@ISA=qw(... Class ...)> and |
---|
1646 | C<< $r->func() >> would work (see L<perlbot> for more details). |
---|
1647 | |
---|
1648 | Use autosplit so little used or newly added functions won't be a |
---|
1649 | burden to programs that don't use them. Add test functions to |
---|
1650 | the module after __END__ either using AutoSplit or by saying: |
---|
1651 | |
---|
1652 | eval join('',<main::DATA>) || die $@ unless caller(); |
---|
1653 | |
---|
1654 | Does your module pass the 'empty subclass' test? If you say |
---|
1655 | C<@SUBCLASS::ISA = qw(YOURCLASS);> your applications should be able |
---|
1656 | to use SUBCLASS in exactly the same way as YOURCLASS. For example, |
---|
1657 | does your application still work if you change: C<$obj = new YOURCLASS;> |
---|
1658 | into: C<$obj = new SUBCLASS;> ? |
---|
1659 | |
---|
1660 | Avoid keeping any state information in your packages. It makes it |
---|
1661 | difficult for multiple other packages to use yours. Keep state |
---|
1662 | information in objects. |
---|
1663 | |
---|
1664 | Always use B<-w>. |
---|
1665 | |
---|
1666 | Try to C<use strict;> (or C<use strict qw(...);>). |
---|
1667 | Remember that you can add C<no strict qw(...);> to individual blocks |
---|
1668 | of code that need less strictness. |
---|
1669 | |
---|
1670 | Always use B<-w>. |
---|
1671 | |
---|
1672 | Follow the guidelines in the perlstyle(1) manual. |
---|
1673 | |
---|
1674 | Always use B<-w>. |
---|
1675 | |
---|
1676 | =item * |
---|
1677 | |
---|
1678 | Some simple style guidelines |
---|
1679 | |
---|
1680 | The perlstyle manual supplied with Perl has many helpful points. |
---|
1681 | |
---|
1682 | Coding style is a matter of personal taste. Many people evolve their |
---|
1683 | style over several years as they learn what helps them write and |
---|
1684 | maintain good code. Here's one set of assorted suggestions that |
---|
1685 | seem to be widely used by experienced developers: |
---|
1686 | |
---|
1687 | Use underscores to separate words. It is generally easier to read |
---|
1688 | $var_names_like_this than $VarNamesLikeThis, especially for |
---|
1689 | non-native speakers of English. It's also a simple rule that works |
---|
1690 | consistently with VAR_NAMES_LIKE_THIS. |
---|
1691 | |
---|
1692 | Package/Module names are an exception to this rule. Perl informally |
---|
1693 | reserves lowercase module names for 'pragma' modules like integer |
---|
1694 | and strict. Other modules normally begin with a capital letter and |
---|
1695 | use mixed case with no underscores (need to be short and portable). |
---|
1696 | |
---|
1697 | You may find it helpful to use letter case to indicate the scope |
---|
1698 | or nature of a variable. For example: |
---|
1699 | |
---|
1700 | $ALL_CAPS_HERE constants only (beware clashes with Perl vars) |
---|
1701 | $Some_Caps_Here package-wide global/static |
---|
1702 | $no_caps_here function scope my() or local() variables |
---|
1703 | |
---|
1704 | Function and method names seem to work best as all lowercase. |
---|
1705 | e.g., C<< $obj->as_string() >>. |
---|
1706 | |
---|
1707 | You can use a leading underscore to indicate that a variable or |
---|
1708 | function should not be used outside the package that defined it. |
---|
1709 | |
---|
1710 | =item * |
---|
1711 | |
---|
1712 | Select what to export. |
---|
1713 | |
---|
1714 | Do NOT export method names! |
---|
1715 | |
---|
1716 | Do NOT export anything else by default without a good reason! |
---|
1717 | |
---|
1718 | Exports pollute the namespace of the module user. If you must |
---|
1719 | export try to use @EXPORT_OK in preference to @EXPORT and avoid |
---|
1720 | short or common names to reduce the risk of name clashes. |
---|
1721 | |
---|
1722 | Generally anything not exported is still accessible from outside the |
---|
1723 | module using the ModuleName::item_name (or C<< $blessed_ref->method >>) |
---|
1724 | syntax. By convention you can use a leading underscore on names to |
---|
1725 | indicate informally that they are 'internal' and not for public use. |
---|
1726 | |
---|
1727 | (It is actually possible to get private functions by saying: |
---|
1728 | C<my $subref = sub { ... }; &$subref;>. But there's no way to call that |
---|
1729 | directly as a method, because a method must have a name in the symbol |
---|
1730 | table.) |
---|
1731 | |
---|
1732 | As a general rule, if the module is trying to be object oriented |
---|
1733 | then export nothing. If it's just a collection of functions then |
---|
1734 | @EXPORT_OK anything but use @EXPORT with caution. |
---|
1735 | |
---|
1736 | =item * |
---|
1737 | |
---|
1738 | Select a name for the module. |
---|
1739 | |
---|
1740 | This name should be as descriptive, accurate, and complete as |
---|
1741 | possible. Avoid any risk of ambiguity. Always try to use two or |
---|
1742 | more whole words. Generally the name should reflect what is special |
---|
1743 | about what the module does rather than how it does it. Please use |
---|
1744 | nested module names to group informally or categorize a module. |
---|
1745 | There should be a very good reason for a module not to have a nested name. |
---|
1746 | Module names should begin with a capital letter. |
---|
1747 | |
---|
1748 | Having 57 modules all called Sort will not make life easy for anyone |
---|
1749 | (though having 23 called Sort::Quick is only marginally better :-). |
---|
1750 | Imagine someone trying to install your module alongside many others. |
---|
1751 | If in any doubt ask for suggestions in comp.lang.perl.misc. |
---|
1752 | |
---|
1753 | If you are developing a suite of related modules/classes it's good |
---|
1754 | practice to use nested classes with a common prefix as this will |
---|
1755 | avoid namespace clashes. For example: Xyz::Control, Xyz::View, |
---|
1756 | Xyz::Model etc. Use the modules in this list as a naming guide. |
---|
1757 | |
---|
1758 | If adding a new module to a set, follow the original author's |
---|
1759 | standards for naming modules and the interface to methods in |
---|
1760 | those modules. |
---|
1761 | |
---|
1762 | If developing modules for private internal or project specific use, |
---|
1763 | that will never be released to the public, then you should ensure |
---|
1764 | that their names will not clash with any future public module. You |
---|
1765 | can do this either by using the reserved Local::* category or by |
---|
1766 | using a category name that includes an underscore like Foo_Corp::*. |
---|
1767 | |
---|
1768 | To be portable each component of a module name should be limited to |
---|
1769 | 11 characters. If it might be used on MS-DOS then try to ensure each is |
---|
1770 | unique in the first 8 characters. Nested modules make this easier. |
---|
1771 | |
---|
1772 | =item * |
---|
1773 | |
---|
1774 | Have you got it right? |
---|
1775 | |
---|
1776 | How do you know that you've made the right decisions? Have you |
---|
1777 | picked an interface design that will cause problems later? Have |
---|
1778 | you picked the most appropriate name? Do you have any questions? |
---|
1779 | |
---|
1780 | The best way to know for sure, and pick up many helpful suggestions, |
---|
1781 | is to ask someone who knows. Comp.lang.perl.misc is read by just about |
---|
1782 | all the people who develop modules and it's the best place to ask. |
---|
1783 | |
---|
1784 | All you need to do is post a short summary of the module, its |
---|
1785 | purpose and interfaces. A few lines on each of the main methods is |
---|
1786 | probably enough. (If you post the whole module it might be ignored |
---|
1787 | by busy people - generally the very people you want to read it!) |
---|
1788 | |
---|
1789 | Don't worry about posting if you can't say when the module will be |
---|
1790 | ready - just say so in the message. It might be worth inviting |
---|
1791 | others to help you, they may be able to complete it for you! |
---|
1792 | |
---|
1793 | =item * |
---|
1794 | |
---|
1795 | README and other Additional Files. |
---|
1796 | |
---|
1797 | It's well known that software developers usually fully document the |
---|
1798 | software they write. If, however, the world is in urgent need of |
---|
1799 | your software and there is not enough time to write the full |
---|
1800 | documentation please at least provide a README file containing: |
---|
1801 | |
---|
1802 | =over 10 |
---|
1803 | |
---|
1804 | =item * |
---|
1805 | |
---|
1806 | A description of the module/package/extension etc. |
---|
1807 | |
---|
1808 | =item * |
---|
1809 | |
---|
1810 | A copyright notice - see below. |
---|
1811 | |
---|
1812 | =item * |
---|
1813 | |
---|
1814 | Prerequisites - what else you may need to have. |
---|
1815 | |
---|
1816 | =item * |
---|
1817 | |
---|
1818 | How to build it - possible changes to Makefile.PL etc. |
---|
1819 | |
---|
1820 | =item * |
---|
1821 | |
---|
1822 | How to install it. |
---|
1823 | |
---|
1824 | =item * |
---|
1825 | |
---|
1826 | Recent changes in this release, especially incompatibilities |
---|
1827 | |
---|
1828 | =item * |
---|
1829 | |
---|
1830 | Changes / enhancements you plan to make in the future. |
---|
1831 | |
---|
1832 | =back |
---|
1833 | |
---|
1834 | If the README file seems to be getting too large you may wish to |
---|
1835 | split out some of the sections into separate files: INSTALL, |
---|
1836 | Copying, ToDo etc. |
---|
1837 | |
---|
1838 | =over 4 |
---|
1839 | |
---|
1840 | =item Adding a Copyright Notice. |
---|
1841 | |
---|
1842 | |
---|
1843 | How you choose to license your work is a personal decision. |
---|
1844 | The general mechanism is to assert your Copyright and then make |
---|
1845 | a declaration of how others may copy/use/modify your work. |
---|
1846 | |
---|
1847 | Perl, for example, is supplied with two types of licence: The GNU |
---|
1848 | GPL and The Artistic Licence (see the files README, Copying, and |
---|
1849 | Artistic). Larry has good reasons for NOT just using the GNU GPL. |
---|
1850 | |
---|
1851 | My personal recommendation, out of respect for Larry, Perl, and the |
---|
1852 | Perl community at large is to state something simply like: |
---|
1853 | |
---|
1854 | Copyright (c) 1995 Your Name. All rights reserved. |
---|
1855 | This program is free software; you can redistribute it and/or |
---|
1856 | modify it under the same terms as Perl itself. |
---|
1857 | |
---|
1858 | This statement should at least appear in the README file. You may |
---|
1859 | also wish to include it in a Copying file and your source files. |
---|
1860 | Remember to include the other words in addition to the Copyright. |
---|
1861 | |
---|
1862 | =item * |
---|
1863 | |
---|
1864 | Give the module a version/issue/release number. |
---|
1865 | |
---|
1866 | To be fully compatible with the Exporter and MakeMaker modules you |
---|
1867 | should store your module's version number in a non-my package |
---|
1868 | variable called $VERSION. This should be a floating point |
---|
1869 | number with at least two digits after the decimal (i.e., hundredths, |
---|
1870 | e.g, C<$VERSION = "0.01">). Don't use a "1.3.2" style version. |
---|
1871 | See L<Exporter> for details. |
---|
1872 | |
---|
1873 | It may be handy to add a function or method to retrieve the number. |
---|
1874 | Use the number in announcements and archive file names when |
---|
1875 | releasing the module (ModuleName-1.02.tar.Z). |
---|
1876 | See perldoc ExtUtils::MakeMaker.pm for details. |
---|
1877 | |
---|
1878 | =item * |
---|
1879 | |
---|
1880 | How to release and distribute a module. |
---|
1881 | |
---|
1882 | It's good idea to post an announcement of the availability of your |
---|
1883 | module (or the module itself if small) to the comp.lang.perl.announce |
---|
1884 | Usenet newsgroup. This will at least ensure very wide once-off |
---|
1885 | distribution. |
---|
1886 | |
---|
1887 | If possible, register the module with CPAN. You should |
---|
1888 | include details of its location in your announcement. |
---|
1889 | |
---|
1890 | Some notes about ftp archives: Please use a long descriptive file |
---|
1891 | name that includes the version number. Most incoming directories |
---|
1892 | will not be readable/listable, i.e., you won't be able to see your |
---|
1893 | file after uploading it. Remember to send your email notification |
---|
1894 | message as soon as possible after uploading else your file may get |
---|
1895 | deleted automatically. Allow time for the file to be processed |
---|
1896 | and/or check the file has been processed before announcing its |
---|
1897 | location. |
---|
1898 | |
---|
1899 | FTP Archives for Perl Modules: |
---|
1900 | |
---|
1901 | Follow the instructions and links on: |
---|
1902 | |
---|
1903 | http://www.cpan.org/modules/00modlist.long.html |
---|
1904 | http://www.cpan.org/modules/04pause.html |
---|
1905 | |
---|
1906 | or upload to one of these sites: |
---|
1907 | |
---|
1908 | https://pause.kbx.de/pause/ |
---|
1909 | http://pause.perl.org/pause/ |
---|
1910 | |
---|
1911 | and notify <modules@perl.org>. |
---|
1912 | |
---|
1913 | By using the WWW interface you can ask the Upload Server to mirror |
---|
1914 | your modules from your ftp or WWW site into your own directory on |
---|
1915 | CPAN! |
---|
1916 | |
---|
1917 | Please remember to send me an updated entry for the Module list! |
---|
1918 | |
---|
1919 | =item * |
---|
1920 | |
---|
1921 | Take care when changing a released module. |
---|
1922 | |
---|
1923 | Always strive to remain compatible with previous released versions. |
---|
1924 | Otherwise try to add a mechanism to revert to the |
---|
1925 | old behavior if people rely on it. Document incompatible changes. |
---|
1926 | |
---|
1927 | =back |
---|
1928 | |
---|
1929 | =back |
---|
1930 | |
---|
1931 | =head2 Guidelines for Converting Perl 4 Library Scripts into Modules |
---|
1932 | |
---|
1933 | =over 4 |
---|
1934 | |
---|
1935 | =item * |
---|
1936 | |
---|
1937 | There is no requirement to convert anything. |
---|
1938 | |
---|
1939 | If it ain't broke, don't fix it! Perl 4 library scripts should |
---|
1940 | continue to work with no problems. You may need to make some minor |
---|
1941 | changes (like escaping non-array @'s in double quoted strings) but |
---|
1942 | there is no need to convert a .pl file into a Module for just that. |
---|
1943 | |
---|
1944 | =item * |
---|
1945 | |
---|
1946 | Consider the implications. |
---|
1947 | |
---|
1948 | All Perl applications that make use of the script will need to |
---|
1949 | be changed (slightly) if the script is converted into a module. Is |
---|
1950 | it worth it unless you plan to make other changes at the same time? |
---|
1951 | |
---|
1952 | =item * |
---|
1953 | |
---|
1954 | Make the most of the opportunity. |
---|
1955 | |
---|
1956 | If you are going to convert the script to a module you can use the |
---|
1957 | opportunity to redesign the interface. The guidelines for module |
---|
1958 | creation above include many of the issues you should consider. |
---|
1959 | |
---|
1960 | =item * |
---|
1961 | |
---|
1962 | The pl2pm utility will get you started. |
---|
1963 | |
---|
1964 | This utility will read *.pl files (given as parameters) and write |
---|
1965 | corresponding *.pm files. The pl2pm utilities does the following: |
---|
1966 | |
---|
1967 | =over 10 |
---|
1968 | |
---|
1969 | =item * |
---|
1970 | |
---|
1971 | Adds the standard Module prologue lines |
---|
1972 | |
---|
1973 | =item * |
---|
1974 | |
---|
1975 | Converts package specifiers from ' to :: |
---|
1976 | |
---|
1977 | =item * |
---|
1978 | |
---|
1979 | Converts die(...) to croak(...) |
---|
1980 | |
---|
1981 | =item * |
---|
1982 | |
---|
1983 | Several other minor changes |
---|
1984 | |
---|
1985 | =back |
---|
1986 | |
---|
1987 | Being a mechanical process pl2pm is not bullet proof. The converted |
---|
1988 | code will need careful checking, especially any package statements. |
---|
1989 | Don't delete the original .pl file till the new .pm one works! |
---|
1990 | |
---|
1991 | =back |
---|
1992 | |
---|
1993 | =head2 Guidelines for Reusing Application Code |
---|
1994 | |
---|
1995 | =over 4 |
---|
1996 | |
---|
1997 | =item * |
---|
1998 | |
---|
1999 | Complete applications rarely belong in the Perl Module Library. |
---|
2000 | |
---|
2001 | =item * |
---|
2002 | |
---|
2003 | Many applications contain some Perl code that could be reused. |
---|
2004 | |
---|
2005 | Help save the world! Share your code in a form that makes it easy |
---|
2006 | to reuse. |
---|
2007 | |
---|
2008 | =item * |
---|
2009 | |
---|
2010 | Break-out the reusable code into one or more separate module files. |
---|
2011 | |
---|
2012 | =item * |
---|
2013 | |
---|
2014 | Take the opportunity to reconsider and redesign the interfaces. |
---|
2015 | |
---|
2016 | =item * |
---|
2017 | |
---|
2018 | In some cases the 'application' can then be reduced to a small |
---|
2019 | |
---|
2020 | fragment of code built on top of the reusable modules. In these cases |
---|
2021 | the application could invoked as: |
---|
2022 | |
---|
2023 | % perl -e 'use Module::Name; method(@ARGV)' ... |
---|
2024 | or |
---|
2025 | % perl -mModule::Name ... (in perl5.002 or higher) |
---|
2026 | |
---|
2027 | =back |
---|
2028 | |
---|
2029 | =head1 NOTE |
---|
2030 | |
---|
2031 | Perl does not enforce private and public parts of its modules as you may |
---|
2032 | have been used to in other languages like C++, Ada, or Modula-17. Perl |
---|
2033 | doesn't have an infatuation with enforced privacy. It would prefer |
---|
2034 | that you stayed out of its living room because you weren't invited, not |
---|
2035 | because it has a shotgun. |
---|
2036 | |
---|
2037 | The module and its user have a contract, part of which is common law, |
---|
2038 | and part of which is "written". Part of the common law contract is |
---|
2039 | that a module doesn't pollute any namespace it wasn't asked to. The |
---|
2040 | written contract for the module (A.K.A. documentation) may make other |
---|
2041 | provisions. But then you know when you C<use RedefineTheWorld> that |
---|
2042 | you're redefining the world and willing to take the consequences. |
---|