home *** CD-ROM | disk | FTP | other *** search
/ Amiga Magazin: Amiga-CD 1996 July / AMIGA_1996_7.BIN / ausgabe_7_96 / pd-programmierung / perl5_002bin.lha / man / catp / perlmod.0 < prev    next >
Text File  |  1996-03-02  |  59KB  |  1,255 lines

  1.  
  2.  
  3.  
  4. PERLMOD(1)     User Contributed Perl Documentation     PERLMOD(1)
  5.  
  6.  
  7. NNNNAAAAMMMMEEEE
  8.        perlmod - Perl modules (packages)
  9.  
  10. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  11.        PPPPaaaacccckkkkaaaaggggeeeessss
  12.  
  13.        Perl provides a mechanism for alternative namespaces to
  14.        protect packages from stomping on each others variables.
  15.        In fact, apart from certain magical variables, there's
  16.        really no such thing as a global variable in Perl.  The
  17.        package statement declares the compilation unit as being
  18.        in the given namespace.  The scope of the package
  19.        declaration is from the declaration itself through the end
  20.        of the enclosing block (the same scope as the _l_o_c_a_l_(_)
  21.        operator).  All further unqualified dynamic identifiers
  22.        will be in this namespace.  A package statement only
  23.        affects dynamic variables--including those you've used
  24.        _l_o_c_a_l_(_) on--but _n_o_t lexical variables created with _m_y_(_).
  25.        Typically it would be the first declaration in a file to
  26.        be included by the rrrreeeeqqqquuuuiiiirrrreeee or uuuusssseeee operator.  You can
  27.        switch into a package in more than one place; it merely
  28.        influences which symbol table is used by the compiler for
  29.        the rest of that block.  You can refer to variables and
  30.        filehandles in other packages by prefixing the identifier
  31.        with the package name and a double colon:
  32.        $$$$PPPPaaaacccckkkkaaaaggggeeee::::::::VVVVaaaarrrriiiiaaaabbbblllleeee.  If the package name is null, the mmmmaaaaiiiinnnn
  33.        package as assumed.  That is, $$$$::::::::ssssaaaaiiiillll is equivalent to
  34.        $$$$mmmmaaaaiiiinnnn::::::::ssssaaaaiiiillll.
  35.  
  36.        (The old package delimiter was a single quote, but double
  37.        colon is now the preferred delimiter, in part because it's
  38.        more readable to humans, and in part because it's more
  39.        readable to eeeemmmmaaaaccccssss macros.  It also makes C++ programmers
  40.        feel like they know what's going on.)
  41.  
  42.        Packages may be nested inside other packages:
  43.        $$$$OOOOUUUUTTTTEEEERRRR::::::::IIIINNNNNNNNEEEERRRR::::::::vvvvaaaarrrr.  This implies nothing about the order
  44.        of name lookups, however.  All symbols are either local to
  45.        the current package, or must be fully qualified from the
  46.        outer package name down.  For instance, there is nowhere
  47.        within package OOOOUUUUTTTTEEEERRRR that $$$$IIIINNNNNNNNEEEERRRR::::::::vvvvaaaarrrr refers to
  48.        $$$$OOOOUUUUTTTTEEEERRRR::::::::IIIINNNNNNNNEEEERRRR::::::::vvvvaaaarrrr.  It would treat package IIIINNNNNNNNEEEERRRR as a
  49.        totally separate global package.
  50.  
  51.        Only identifiers starting with letters (or underscore) are
  52.        stored in a package's symbol table.  All other symbols are
  53.        kept in package mmmmaaaaiiiinnnn, including all of the punctuation
  54.        variables like $$$$____.  In addition, the identifiers STDIN,
  55.        STDOUT, STDERR, ARGV, ARGVOUT, ENV, INC and SIG are forced
  56.        to be in package mmmmaaaaiiiinnnn, even when used for other purposes
  57.        than their built-in one.  Note also that, if you have a
  58.        package called mmmm, ssss or yyyy, then you can't use the qualified
  59.        form of an identifier because it will be interpreted
  60.        instead as a pattern match, a substitution, or a
  61.  
  62.  
  63.  
  64. 2/Feb/96                 perl 5.002 with                        1
  65.  
  66.  
  67.  
  68.  
  69.  
  70. PERLMOD(1)     User Contributed Perl Documentation     PERLMOD(1)
  71.  
  72.  
  73.        translation.
  74.  
  75.        (Variables beginning with underscore used to be forced
  76.        into package main, but we decided it was more useful for
  77.        package writers to be able to use leading underscore to
  78.        indicate private variables and method names.  $$$$____ is still
  79.        global though.)
  80.  
  81.        _E_v_a_l_(_)ed strings are compiled in the package in which the
  82.        _e_v_a_l_(_) was compiled.  (Assignments to $$$$SSSSIIIIGGGG{{{{}}}}, however,
  83.        assume the signal handler specified is in the mmmmaaaaiiiinnnn
  84.        package.  Qualify the signal handler name if you wish to
  85.        have a signal handler in a package.)  For an example,
  86.        examine _p_e_r_l_d_b_._p_l in the Perl library.  It initially
  87.        switches to the DDDDBBBB package so that the debugger doesn't
  88.        interfere with variables in the script you are trying to
  89.        debug.  At various points, however, it temporarily
  90.        switches back to the mmmmaaaaiiiinnnn package to evaluate various
  91.        expressions in the context of the mmmmaaaaiiiinnnn package (or
  92.        wherever you came from).  See the _p_e_r_l_d_e_b_u_g manpage.
  93.  
  94.        See the _p_e_r_l_s_u_b manpage for other scoping issues related
  95.        to _m_y_(_) and _l_o_c_a_l_(_), or the _p_e_r_l_r_e_f manpage regarding
  96.        closures.
  97.  
  98.        SSSSyyyymmmmbbbboooollll TTTTaaaabbbblllleeeessss
  99.  
  100.        The symbol table for a package happens to be stored in the
  101.        associative array of that name appended with two colons.
  102.        The main symbol table's name is thus %%%%mmmmaaaaiiiinnnn::::::::, or %%%%:::::::: for
  103.        short.  Likewise the nested package mentioned earlier is
  104.        named %%%%OOOOUUUUTTTTEEEERRRR::::::::IIIINNNNNNNNEEEERRRR::::::::.
  105.  
  106.        The value in each entry of the associative array is what
  107.        you are referring to when you use the ****nnnnaaaammmmeeee typeglob
  108.        notation.  In fact, the following have the same effect,
  109.        though the first is more efficient because it does the
  110.        symbol table lookups at compile time:
  111.  
  112.            llllooooccccaaaallll((((****mmmmaaaaiiiinnnn::::::::ffffoooooooo)))) ==== ****mmmmaaaaiiiinnnn::::::::bbbbaaaarrrr;;;; llllooooccccaaaallll(((($$$$mmmmaaaaiiiinnnn::::::::{{{{''''ffffoooooooo''''}}}})))) ====
  113.            $$$$mmmmaaaaiiiinnnn::::::::{{{{''''bbbbaaaarrrr''''}}}};;;;
  114.  
  115.        You can use this to print out all the variables in a
  116.        package, for instance.  Here is _d_u_m_p_v_a_r_._p_l from the Perl
  117.        library:
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130. 2/Feb/96                 perl 5.002 with                        2
  131.  
  132.  
  133.  
  134.  
  135.  
  136. PERLMOD(1)     User Contributed Perl Documentation     PERLMOD(1)
  137.  
  138.  
  139.           ppppaaaacccckkkkaaaaggggeeee dddduuuummmmppppvvvvaaaarrrr;;;;
  140.           ssssuuuubbbb mmmmaaaaiiiinnnn::::::::dddduuuummmmppppvvvvaaaarrrr {{{{
  141.               (((($$$$ppppaaaacccckkkkaaaaggggeeee)))) ==== @@@@____;;;;
  142.               llllooooccccaaaallll((((****ssssttttaaaabbbb)))) ==== eeeevvvvaaaallll((((""""****$$$${{{{ppppaaaacccckkkkaaaaggggeeee}}}}::::::::""""))));;;;
  143.               wwwwhhhhiiiilllleeee (((((((($$$$kkkkeeeeyyyy,,,,$$$$vvvvaaaallll)))) ==== eeeeaaaacccchhhh((((%%%%ssssttttaaaabbbb)))))))) {{{{
  144.                   llllooooccccaaaallll((((****eeeennnnttttrrrryyyy)))) ==== $$$$vvvvaaaallll;;;;
  145.                   iiiiffff ((((ddddeeeeffffiiiinnnneeeedddd $$$$eeeennnnttttrrrryyyy)))) {{{{
  146.                       pppprrrriiiinnnntttt """"\\\\$$$$$$$$kkkkeeeeyyyy ==== ''''$$$$eeeennnnttttrrrryyyy''''\\\\nnnn"""";;;;
  147.                   }}}}
  148.  
  149.                   iiiiffff ((((ddddeeeeffffiiiinnnneeeedddd @@@@eeeennnnttttrrrryyyy)))) {{{{
  150.                       pppprrrriiiinnnntttt """"\\\\@@@@$$$$kkkkeeeeyyyy ==== ((((\\\\nnnn"""";;;;
  151.                       ffffoooorrrreeeeaaaacccchhhh $$$$nnnnuuuummmm (((($$$$[[[[ ........ $$$$####eeeennnnttttrrrryyyy)))) {{{{
  152.                           pppprrrriiiinnnntttt """"  $$$$nnnnuuuummmm\\\\tttt''''"""",,,,$$$$eeeennnnttttrrrryyyy[[[[$$$$nnnnuuuummmm]]]],,,,""""''''\\\\nnnn"""";;;;
  153.                       }}}}
  154.                       pppprrrriiiinnnntttt """"))))\\\\nnnn"""";;;;
  155.                   }}}}
  156.  
  157.                   iiiiffff (((($$$$kkkkeeeeyyyy nnnneeee """"$$$${{{{ppppaaaacccckkkkaaaaggggeeee}}}}::::::::"""" &&&&&&&& ddddeeeeffffiiiinnnneeeedddd %%%%eeeennnnttttrrrryyyy)))) {{{{
  158.                       pppprrrriiiinnnntttt """"\\\\%%%%$$$$kkkkeeeeyyyy ==== ((((\\\\nnnn"""";;;;
  159.                       ffffoooorrrreeeeaaaacccchhhh $$$$kkkkeeeeyyyy ((((ssssoooorrrrtttt kkkkeeeeyyyyssss((((%%%%eeeennnnttttrrrryyyy)))))))) {{{{
  160.                           pppprrrriiiinnnntttt """"  $$$$kkkkeeeeyyyy\\\\tttt''''"""",,,,$$$$eeeennnnttttrrrryyyy{{{{$$$$kkkkeeeeyyyy}}}},,,,""""''''\\\\nnnn"""";;;;
  161.                       }}}}
  162.                       pppprrrriiiinnnntttt """"))))\\\\nnnn"""";;;;
  163.                   }}}}
  164.               }}}}
  165.           }}}}
  166.  
  167.        Note that even though the subroutine is compiled in
  168.        package dddduuuummmmppppvvvvaaaarrrr, the name of the subroutine is qualified
  169.        so that its name is inserted into package mmmmaaaaiiiinnnn.
  170.  
  171.        Assignment to a typeglob performs an aliasing operation,
  172.        i.e.,
  173.  
  174.            ****ddddiiiicccckkkk ==== ****rrrriiiicccchhhhaaaarrrrdddd;;;;
  175.  
  176.        causes variables, subroutines and file handles accessible
  177.        via the identifier rrrriiiicccchhhhaaaarrrrdddd to also be accessible via the
  178.        symbol ddddiiiicccckkkk.  If you only want to alias a particular
  179.        variable or subroutine, you can assign a reference
  180.        instead:
  181.  
  182.            ****ddddiiiicccckkkk ==== \\\\$$$$rrrriiiicccchhhhaaaarrrrdddd;;;;
  183.  
  184.        makes $$$$rrrriiiicccchhhhaaaarrrrdddd and $$$$ddddiiiicccckkkk the same variable, but leaves
  185.        @@@@rrrriiiicccchhhhaaaarrrrdddd and @@@@ddddiiiicccckkkk as separate arrays.  Tricky, eh?
  186.  
  187.        This mechanism may be used to pass and return cheap
  188.        references into or from subroutines if you won't want to
  189.        copy the whole thing.
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196. 2/Feb/96                 perl 5.002 with                        3
  197.  
  198.  
  199.  
  200.  
  201.  
  202. PERLMOD(1)     User Contributed Perl Documentation     PERLMOD(1)
  203.  
  204.  
  205.            %%%%ssssoooommmmeeee____hhhhaaaasssshhhh ==== (((())));;;;
  206.            ****ssssoooommmmeeee____hhhhaaaasssshhhh ==== ffffnnnn(((( \\\\%%%%aaaannnnooootttthhhheeeerrrr____hhhhaaaasssshhhh ))));;;;
  207.            ssssuuuubbbb ffffnnnn {{{{
  208.                llllooooccccaaaallll ****hhhhaaaasssshhhhssssyyyymmmm ==== sssshhhhiiiifffftttt;;;;
  209.                #### nnnnoooowwww uuuusssseeee %%%%hhhhaaaasssshhhhssssyyyymmmm nnnnoooorrrrmmmmaaaallllllllyyyy,,,, aaaannnndddd yyyyoooouuuu
  210.                #### wwwwiiiillllllll aaaaffffffffeeeecccctttt tttthhhheeee ccccaaaalllllllleeeerrrr''''ssss %%%%aaaannnnooootttthhhheeeerrrr____hhhhaaaasssshhhh
  211.                mmmmyyyy %%%%nnnnhhhhaaaasssshhhh ==== (((())));;;; #### ddddoooo wwwwhhhhaaaatttt yyyyoooouuuu wwwwaaaannnntttt
  212.                rrrreeeettttuuuurrrrnnnn \\\\%%%%nnnnhhhhaaaasssshhhh;;;;
  213.            }}}}
  214.  
  215.        On return, the reference wil overwrite the hash slot in
  216.        the symbol table specified by the *some_hash typeglob.
  217.        This is a somewhat tricky way of passing around refernces
  218.        cheaply when you won't want to have to remember to
  219.        dereference variables explicitly.
  220.  
  221.        Another use of symbol tables is for making "constant"
  222.        scalars.
  223.  
  224.            ****PPPPIIII ==== \\\\3333....11114444111155559999222266665555333355558888999977779999;;;;
  225.  
  226.        Now you cannot alter $$$$PPPPIIII, which is probably a good thing
  227.        all in all.
  228.  
  229.        PPPPaaaacccckkkkaaaaggggeeee CCCCoooonnnnssssttttrrrruuuuccccttttoooorrrrssss aaaannnndddd DDDDeeeessssttttrrrruuuuccccttttoooorrrrssss
  230.  
  231.        There are two special subroutine definitions that function
  232.        as package constructors and destructors.  These are the
  233.        BBBBEEEEGGGGIIIINNNN and EEEENNNNDDDD routines.  The ssssuuuubbbb is optional for these
  234.        routines.
  235.  
  236.        A BBBBEEEEGGGGIIIINNNN subroutine is executed as soon as possible, that
  237.        is, the moment it is completely defined, even before the
  238.        rest of the containing file is parsed.  You may have
  239.        multiple BBBBEEEEGGGGIIIINNNN blocks within a file--they will execute in
  240.        order of definition.  Because a BBBBEEEEGGGGIIIINNNN block executes
  241.        immediately, it can pull in definitions of subroutines and
  242.        such from other files in time to be visible to the rest of
  243.        the file.
  244.  
  245.        An EEEENNNNDDDD subroutine is executed as late as possible, that
  246.        is, when the interpreter is being exited, even if it is
  247.        exiting as a result of a _d_i_e_(_) function.  (But not if it's
  248.        is being blown out of the water by a signal--you have to
  249.        trap that yourself (if you can).)  You may have multiple
  250.        EEEENNNNDDDD blocks within a file--they will execute in reverse
  251.        order of definition; that is: last in, first out (LIFO).
  252.  
  253.        Note that when you use the ----nnnn and ----pppp switches to Perl,
  254.        BBBBEEEEGGGGIIIINNNN and EEEENNNNDDDD work just as they do in aaaawwwwkkkk, as a degenerate
  255.        case.
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262. 2/Feb/96                 perl 5.002 with                        4
  263.  
  264.  
  265.  
  266.  
  267.  
  268. PERLMOD(1)     User Contributed Perl Documentation     PERLMOD(1)
  269.  
  270.  
  271.        PPPPeeeerrrrllll CCCCllllaaaasssssssseeeessss
  272.  
  273.        There is no special class syntax in Perl, but a package
  274.        may function as a class if it provides subroutines that
  275.        function as methods.  Such a package may also derive some
  276.        of its methods from another class package by listing the
  277.        other package name in its @@@@IIIISSSSAAAA array.
  278.  
  279.        For more on this, see the _p_e_r_l_o_b_j manpage.
  280.  
  281.        PPPPeeeerrrrllll MMMMoooodddduuuulllleeeessss
  282.  
  283.        A module is just a package that is defined in a library
  284.        file of the same name, and is designed to be reusable.  It
  285.        may do this by providing a mechanism for exporting some of
  286.        its symbols into the symbol table of any package using it.
  287.        Or it may function as a class definition and make its
  288.        semantics available implicitly through method calls on the
  289.        class and its objects, without explicit exportation of any
  290.        symbols.  Or it can do a little of both.
  291.  
  292.        For example, to start a normal module called Fred, create
  293.        a file called Fred.pm and put this at the start of it:
  294.  
  295.            ppppaaaacccckkkkaaaaggggeeee      FFFFrrrreeeedddd;;;;
  296.            rrrreeeeqqqquuuuiiiirrrreeee      EEEExxxxppppoooorrrrtttteeeerrrr;;;;
  297.            @@@@IIIISSSSAAAA       ==== qqqqwwww((((EEEExxxxppppoooorrrrtttteeeerrrr))));;;;
  298.            @@@@EEEEXXXXPPPPOOOORRRRTTTT    ==== qqqqwwww((((ffffuuuunnnncccc1111 ffffuuuunnnncccc2222))));;;;
  299.            @@@@EEEEXXXXPPPPOOOORRRRTTTT____OOOOKKKK ==== qqqqwwww(((($$$$ssssaaaallllllllyyyy @@@@lllliiiissssttttaaaabbbboooobbbb %%%%hhhhaaaarrrrrrrryyyy ffffuuuunnnncccc3333))));;;;
  300.  
  301.        Then go on to declare and use your variables in functions
  302.        without any qualifications.  See the _E_x_p_o_r_t_e_r manpage and
  303.        the _P_e_r_l _M_o_d_u_l_e_s _F_i_l_e for details on mechanics and style
  304.        issues in module creation.
  305.  
  306.        Perl modules are included into your program by saying
  307.  
  308.            uuuusssseeee MMMMoooodddduuuulllleeee;;;;
  309.  
  310.        or
  311.  
  312.            uuuusssseeee MMMMoooodddduuuulllleeee LLLLIIIISSSSTTTT;;;;
  313.  
  314.        This is exactly equivalent to
  315.  
  316.            BBBBEEEEGGGGIIIINNNN {{{{ rrrreeeeqqqquuuuiiiirrrreeee """"MMMMoooodddduuuulllleeee....ppppmmmm"""";;;; iiiimmmmppppoooorrrrtttt MMMMoooodddduuuulllleeee;;;; }}}}
  317.  
  318.        or
  319.  
  320.            BBBBEEEEGGGGIIIINNNN {{{{ rrrreeeeqqqquuuuiiiirrrreeee """"MMMMoooodddduuuulllleeee....ppppmmmm"""";;;; iiiimmmmppppoooorrrrtttt MMMMoooodddduuuulllleeee LLLLIIIISSSSTTTT;;;; }}}}
  321.  
  322.        As a special case
  323.  
  324.            uuuusssseeee MMMMoooodddduuuulllleeee (((())));;;;
  325.  
  326.  
  327.  
  328. 2/Feb/96                 perl 5.002 with                        5
  329.  
  330.  
  331.  
  332.  
  333.  
  334. PERLMOD(1)     User Contributed Perl Documentation     PERLMOD(1)
  335.  
  336.  
  337.        is exactly equivalent to
  338.  
  339.            BBBBEEEEGGGGIIIINNNN {{{{ rrrreeeeqqqquuuuiiiirrrreeee """"MMMMoooodddduuuulllleeee....ppppmmmm"""";;;; }}}}
  340.  
  341.        All Perl module files have the extension _._p_m.  uuuusssseeee assumes
  342.        this so that you don't have to spell out "_M_o_d_u_l_e_._p_m" in
  343.        quotes.  This also helps to differentiate new modules from
  344.        old _._p_l and _._p_h files.  Module names are also capitalized
  345.        unless they're functioning as pragmas, "Pragmas" are in
  346.        effect compiler directives, and are sometimes called
  347.        "pragmatic modules" (or even "pragmata" if you're a
  348.        classicist).
  349.  
  350.        Because the uuuusssseeee statement implies a BBBBEEEEGGGGIIIINNNN block, the
  351.        importation of semantics happens at the moment the uuuusssseeee
  352.        statement is compiled, before the rest of the file is
  353.        compiled.  This is how it is able to function as a pragma
  354.        mechanism, and also how modules are able to declare
  355.        subroutines that are then visible as list operators for
  356.        the rest of the current file.  This will not work if you
  357.        use rrrreeeeqqqquuuuiiiirrrreeee instead of uuuusssseeee.  With require you can get into
  358.        this problem:
  359.  
  360.            rrrreeeeqqqquuuuiiiirrrreeee CCCCwwwwdddd;;;;                #### mmmmaaaakkkkeeee CCCCwwwwdddd:::::::: aaaacccccccceeeessssssssiiiibbbblllleeee
  361.            $$$$hhhheeeerrrreeee ==== CCCCwwwwdddd::::::::ggggeeeettttccccwwwwdddd(((())));;;;
  362.  
  363.            uuuusssseeee CCCCwwwwdddd;;;;                    #### iiiimmmmppppoooorrrrtttt nnnnaaaammmmeeeessss ffffrrrroooommmm CCCCwwwwdddd::::::::
  364.            $$$$hhhheeeerrrreeee ==== ggggeeeettttccccwwwwdddd(((())));;;;
  365.  
  366.            rrrreeeeqqqquuuuiiiirrrreeee CCCCwwwwdddd;;;;                #### mmmmaaaakkkkeeee CCCCwwwwdddd:::::::: aaaacccccccceeeessssssssiiiibbbblllleeee
  367.            $$$$hhhheeeerrrreeee ==== ggggeeeettttccccwwwwdddd(((())));;;;           #### ooooooooppppssss!!!! nnnnoooo mmmmaaaaiiiinnnn::::::::ggggeeeettttccccwwwwdddd(((())))
  368.  
  369.        In general uuuusssseeee MMMMoooodddduuuulllleeee (((())));;;; is recommended over rrrreeeeqqqquuuuiiiirrrreeee
  370.        MMMMoooodddduuuulllleeee;;;;.
  371.  
  372.        Perl packages may be nested inside other package names, so
  373.        we can have package names containing ::::::::.  But if we used
  374.        that package name directly as a filename it would makes
  375.        for unwieldy or impossible filenames on some systems.
  376.        Therefore, if a module's name is, say, TTTTeeeexxxxtttt::::::::SSSSoooouuuunnnnddddeeeexxxx, then
  377.        its definition is actually found in the library file
  378.        _T_e_x_t_/_S_o_u_n_d_e_x_._p_m.
  379.  
  380.        Perl modules always have a _._p_m file, but there may also be
  381.        dynamically linked executables or autoloaded subroutine
  382.        definitions associated with the module.  If so, these will
  383.        be entirely transparent to the user of the module.  It is
  384.        the responsibility of the _._p_m file to load (or arrange to
  385.        autoload) any additional functionality.  The POSIX module
  386.        happens to do both dynamic loading and autoloading, but
  387.        the user can just say uuuusssseeee PPPPOOOOSSSSIIIIXXXX to get it all.
  388.  
  389.        For more information on writing extension modules, see the
  390.        _p_e_r_l_x_s manpage and the _p_e_r_l_g_u_t_s manpage.
  391.  
  392.  
  393.  
  394. 2/Feb/96                 perl 5.002 with                        6
  395.  
  396.  
  397.  
  398.  
  399.  
  400. PERLMOD(1)     User Contributed Perl Documentation     PERLMOD(1)
  401.  
  402.  
  403. NNNNOOOOTTTTEEEE
  404.        Perl does not enforce private and public parts of its
  405.        modules as you may have been used to in other languages
  406.        like C++, Ada, or Modula-17.  Perl doesn't have an
  407.        infatuation with enforced privacy.  It would prefer that
  408.        you stayed out of its living room because you weren't
  409.        invited, not because it has a shotgun.
  410.  
  411.        The module and its user have a contract, part of which is
  412.        common law, and part of which is "written".  Part of the
  413.        common law contract is that a module doesn't pollute any
  414.        namespace it wasn't asked to.  The written contract for
  415.        the module (AKA documentation) may make other provisions.
  416.        But then you know when you uuuusssseeee RRRReeeeddddeeeeffffiiiinnnneeeeTTTThhhheeeeWWWWoooorrrrlllldddd that
  417.        you're redefining the world and willing to take the
  418.        consequences.
  419.  
  420. TTTTHHHHEEEE PPPPEEEERRRRLLLL MMMMOOOODDDDUUUULLLLEEEE LLLLIIIIBBBBRRRRAAAARRRRYYYY
  421.        A number of modules are included the the Perl
  422.        distribution.  These are described below, and all end in
  423.        _._p_m.  You may also discover files in the library directory
  424.        that end in either _._p_l or _._p_h.  These are old libraries
  425.        supplied so that old programs that use them still run.
  426.        The the _._p_h files made by hhhh2222pppphhhh will probably end up as
  427.        extension modules made by hhhh2222xxxxssss.  (Some _._p_h values may
  428.        already be available through the POSIX module.)  The ppppllll2222ppppmmmm
  429.        file in the distribution may help in your conversion, but
  430.        it's just a mechanical process, so is far from bullet
  431.        proof.
  432.  
  433.        PPPPrrrraaaaggggmmmmaaaattttiiiicccc MMMMoooodddduuuulllleeeessss
  434.  
  435.        They work somewhat like pragmas in that they tend to
  436.        affect the compilation of your program, and thus will
  437.        usually only work well when used within a uuuusssseeee, or nnnnoooo.
  438.        These are locally scoped, so an inner BLOCK may
  439.        countermand any of these by saying
  440.  
  441.            nnnnoooo iiiinnnntttteeeeggggeeeerrrr;;;;
  442.            nnnnoooo ssssttttrrrriiiicccctttt ''''rrrreeeeffffssss'''';;;;
  443.  
  444.        which lasts until the end of that BLOCK.
  445.  
  446.        The following programs are defined (and have their own
  447.        documentation).
  448.  
  449.        diagnostics Pragma to produce enhanced diagnostics
  450.  
  451.        integer     Pragma to compute arithmetic in integer
  452.                    instead of double
  453.  
  454.        less        Pragma to request less of something from the
  455.                    compiler
  456.  
  457.  
  458.  
  459.  
  460. 2/Feb/96                 perl 5.002 with                        7
  461.  
  462.  
  463.  
  464.  
  465.  
  466. PERLMOD(1)     User Contributed Perl Documentation     PERLMOD(1)
  467.  
  468.  
  469.        overload    Pragma for overloading operators
  470.  
  471.        sigtrap     Pragma to enable stack backtrace on unexpected
  472.                    signals
  473.  
  474.        strict      Pragma to restrict unsafe constructs
  475.  
  476.        subs        Pragma to predeclare sub names
  477.  
  478.        SSSSttttaaaannnnddddaaaarrrrdddd MMMMoooodddduuuulllleeeessss
  479.  
  480.        Standard, bundled modules are all expected to behave in a
  481.        well-defined manner with respect to namespace pollution
  482.        because they use the Exporter module.  See their own
  483.        documentation for details.
  484.  
  485.        AnyDBM_File provide framework for multiple DBMs
  486.  
  487.        AutoLoader  load functions only on demand
  488.  
  489.        AutoSplit   split a package for autoloading
  490.  
  491.        Benchmark   benchmark running times of code
  492.  
  493.        Carp        warn of errors (from perspective of caller)
  494.  
  495.        Config      access Perl configuration option
  496.  
  497.        Cwd         get pathname of current working directory
  498.  
  499.        DB_File     Perl access to Berkeley DB
  500.  
  501.        Devel::SelfStubber
  502.                    generate stubs for a SelfLoading module
  503.  
  504.        DynaLoader  Dynamically load C libraries into Perl code
  505.  
  506.        English     use nice English (or awk) names for ugly
  507.                    punctuation variables
  508.  
  509.        Env         perl module that imports environment variables
  510.  
  511.        Exporter    provide inport/export controls for Perl
  512.                    modules
  513.  
  514.        ExtUtils::Liblist
  515.                    determine libraries to use and how to use them
  516.  
  517.        ExtUtils::MakeMaker
  518.                    create an extension Makefile
  519.  
  520.        ExtUtils::Manifest
  521.                    utilities to write and check a MANIFEST file
  522.  
  523.  
  524.  
  525.  
  526. 2/Feb/96                 perl 5.002 with                        8
  527.  
  528.  
  529.  
  530.  
  531.  
  532. PERLMOD(1)     User Contributed Perl Documentation     PERLMOD(1)
  533.  
  534.  
  535.        ExtUtils::Mkbootstrap
  536.                    make a bootstrap file for use by DynaLoader
  537.  
  538.        ExtUtils::Miniperl
  539.                    !!!GOOD QUESTION!!!
  540.  
  541.        Fcntl       load the C Fcntl.h defines
  542.  
  543.        File::Basename
  544.                    parse file specifications
  545.  
  546.        File::CheckTree
  547.                    run many filetest checks on a tree
  548.  
  549.        File::Find  traverse a file tree
  550.  
  551.        FileHandle  supply object methods for filehandles
  552.  
  553.        File::Path  create or remove a series of directories
  554.  
  555.        Getopt::Long
  556.                    extended getopt processing
  557.  
  558.        Getopt::Std Process single-character switches with switch
  559.                    clustering
  560.  
  561.        I18N::Collate
  562.                    compare 8-bit scalar data according to the
  563.                    current locale
  564.  
  565.        IPC::Open2  a process for both reading and writing
  566.  
  567.        IPC::Open3  open a process for reading, writing, and error
  568.                    handling
  569.  
  570.        Net::Ping   check a host for upness
  571.  
  572.        POSIX       Perl interface to IEEE Std 1003.1
  573.  
  574.        SelfLoader  load functions only on demand
  575.  
  576.        Safe        Creation controlled compartments in which perl
  577.                    code can be evaluated.
  578.  
  579.        Socket      load the C socket.h defines and structure
  580.                    manipulators
  581.  
  582.        Test::Harness
  583.                    run perl standard test scripts with statistics
  584.  
  585.        Text::Abbrev
  586.                    rceate an abbreviation table from a list
  587.  
  588.        To find out _a_l_l the modules installed on your system,
  589.  
  590.  
  591.  
  592. 2/Feb/96                 perl 5.002 with                        9
  593.  
  594.  
  595.  
  596.  
  597.  
  598. PERLMOD(1)     User Contributed Perl Documentation     PERLMOD(1)
  599.  
  600.  
  601.        including those without documentation or outside the
  602.        standard release, do this:
  603.  
  604.            ffffiiiinnnndddd ````ppppeeeerrrrllll ----eeee ''''pppprrrriiiinnnntttt """"@@@@IIIINNNNCCCC""""''''```` ----nnnnaaaammmmeeee ''''****....ppppmmmm'''' ----pppprrrriiiinnnntttt
  605.  
  606.        They should all have their own documentation installed and
  607.        accessible via your system _m_a_n(1) command.  If that fails,
  608.        try the _p_e_r_l_d_o_c program.
  609.  
  610.        EEEExxxxtttteeeennnnssssiiiioooonnnn MMMMoooodddduuuulllleeeessss
  611.  
  612.        Extension modules are written in C (or a mix of Perl and
  613.        C) and get dynamically loaded into Perl if and when you
  614.        need them.  Supported extension modules include the
  615.        Socket, Fcntl, and POSIX modules.
  616.  
  617.        Many popular C extension modules do not come bundled (at
  618.        least, not completely) due to their size, volatility, or
  619.        simply lack of time for adequate testing and configuration
  620.        across the multitude of platforms on which Perl was beta-
  621.        tested.  You are encouraged to look for them in
  622.        _a_r_c_h_i_e(1L), the Perl FAQ or Meta-FAQ, the WWW page, and
  623.        even with their authors before randomly posting asking for
  624.        their present condition and disposition.
  625.  
  626. CCCCPPPPAAAANNNN
  627.        CPAN stands for the Comprehensive Perl Archive Network.
  628.        This is a globally replicated collection of all known Perl
  629.        materials, including hundreds of unbunded modules.  Here
  630.        are the major categories of modules:
  631.  
  632.        +o Language Extensions and Documentation Tools
  633.  
  634.        +o Development Support
  635.  
  636.        +o Operating System Interfaces
  637.  
  638.        +o Networking, Device Control (modems) and InterProcess
  639.             Communication
  640.  
  641.        +o Data Types and Data Type Utilities
  642.  
  643.        +o Database Interfaces
  644.  
  645.        +o User Interfaces
  646.  
  647.        +o Interfaces to / Emulations of Other Programming
  648.             Languages
  649.  
  650.        +o File Names, File Systems and File Locking (see also File
  651.             Handles)
  652.  
  653.        +o String Processing, Language Text Processing, Parsing and
  654.             Searching
  655.  
  656.  
  657.  
  658. 2/Feb/96                 perl 5.002 with                       10
  659.  
  660.  
  661.  
  662.  
  663.  
  664. PERLMOD(1)     User Contributed Perl Documentation     PERLMOD(1)
  665.  
  666.  
  667.        +o Option, Argument, Parameter and Configuration File
  668.             Processing
  669.  
  670.        +o Internationalization and Locale
  671.  
  672.        +o Authentication, Security and Encryption
  673.  
  674.        +o World Wide Web, HTML, HTTP, CGI, MIME
  675.  
  676.        +o Server and Daemon Utilities
  677.  
  678.        +o Archiving and Compression
  679.  
  680.        +o Images, Pixmap and Bitmap Manipulation, Drawing and
  681.             Graphing
  682.  
  683.        +o Mail and Usenet News
  684.  
  685.        +o Control Flow Utilities (callbacks and exceptions etc)
  686.  
  687.        +o File Handle and Input/Output Stream Utilities
  688.  
  689.        +o Miscellaneous Modules
  690.  
  691.        Some of the reguster CPAN sites as of this writing include
  692.        the following.  You should try to choose one close to you:
  693.  
  694.        +o ftp://ftp.sterling.com/programming/languages/perl/
  695.  
  696.        +o ftp://ftp.sedl.org/pub/mirrors/CPAN/
  697.  
  698.        +o ftp://ftp.uoknor.edu/mirrors/CPAN/
  699.  
  700.        +o ftp://ftp.delphi.com/pub/mirrors/packages/perl/CPAN/
  701.  
  702.        +o ftp://uiarchive.cso.uiuc.edu/pub/lang/perl/CPAN/
  703.  
  704.        +o ftp://ftp.cis.ufl.edu/pub/perl/CPAN/
  705.  
  706.        +o ftp://ftp.switch.ch/mirror/CPAN/
  707.  
  708.        +o ftp://ftp.sunet.se/pub/lang/perl/CPAN/
  709.  
  710.        +o ftp://ftp.ci.uminho.pt/pub/lang/perl/
  711.  
  712.        +o ftp://ftp.cs.ruu.nl/pub/PERL/CPAN/
  713.  
  714.        +o ftp://ftp.demon.co.uk/pub/mirrors/perl/CPAN/
  715.  
  716.        +o ftp://ftp.rz.ruhr-uni-
  717.             bochum.de/pub/programming/languages/perl/CPAN/
  718.  
  719.        +o
  720.             ftp://ftp.leo.org/pub/comp/programming/languages/perl/CPAN/
  721.  
  722.  
  723.  
  724. 2/Feb/96                 perl 5.002 with                       11
  725.  
  726.  
  727.  
  728.  
  729.  
  730. PERLMOD(1)     User Contributed Perl Documentation     PERLMOD(1)
  731.  
  732.  
  733.        +o ftp://ftp.pasteur.fr/pub/computing/unix/perl/CPAN/
  734.  
  735.        +o ftp://ftp.ibp.fr/pub/perl/CPAN/
  736.  
  737.        +o ftp://ftp.funet.fi/pub/languages/perl/CPAN/
  738.  
  739.        +o ftp://ftp.tekotago.ac.nz/pub/perl/CPAN/
  740.  
  741.        +o ftp://ftp.mame.mu.oz.au/pub/perl/CPAN/
  742.  
  743.        +o ftp://coombs.anu.edu.au/pub/perl/
  744.  
  745.        +o ftp://dongpo.math.ncu.edu.tw/perl/CPAN/
  746.  
  747.        +o ftp://ftp.lab.kdd.co.jp/lang/perl/CPAN/
  748.  
  749.        +o ftp://ftp.is.co.za/programming/perl/CPAN/
  750.  
  751.        For an up-to-date listing of CPAN sites, see
  752.        http://www.perl.com/perl/ or ftp://ftp.perl.com/perl/ .
  753.  
  754. MMMMoooodddduuuulllleeeessss:::: CCCCrrrreeeeaaaattttiiiioooonnnn,,,, UUUUsssseeee aaaannnndddd AAAAbbbbuuuusssseeee
  755.        (The following section is borrowed directly from Tim
  756.        Bunce's modules file, available at your nearest CPAN
  757.        site.)
  758.  
  759.        Perl 5 implements a class using a package, but the
  760.        presence of a package doesn't imply the presence of a
  761.        class.  A package is just a namespace.  A class is a
  762.        package that provides subroutines that can be used as
  763.        methods.  A method is just a subroutine that expects, as
  764.        its first argument, either the name of a package (for
  765.        "static" methods), or a reference to something (for
  766.        "virtual" methods).
  767.  
  768.        A module is a file that (by convention) provides a class
  769.        of the same name (sans the .pm), plus an import method in
  770.        that class that can be called to fetch exported symbols.
  771.        This module may implement some of its methods by loading
  772.        dynamic C or C++ objects, but that should be totally
  773.        transparent to the user of the module.  Likewise, the
  774.        module might set up an AUTOLOAD function to slurp in
  775.        subroutine definitions on demand, but this is also
  776.        transparent.  Only the .pm file is required to exist.
  777.  
  778.        GGGGuuuuiiiiddddeeeelllliiiinnnneeeessss ffffoooorrrr MMMMoooodddduuuulllleeee CCCCrrrreeeeaaaattttiiiioooonnnn
  779.  
  780.  
  781.        Do similar modules already exist in some form?
  782.            If so, please try to reuse the existing modules either
  783.            in whole or by inheriting useful features into a new
  784.            class.  If this is not practical try to get together
  785.            with the module authors to work on extending or
  786.            enhancing the functionality of the existing modules.
  787.  
  788.  
  789.  
  790. 2/Feb/96                 perl 5.002 with                       12
  791.  
  792.  
  793.  
  794.  
  795.  
  796. PERLMOD(1)     User Contributed Perl Documentation     PERLMOD(1)
  797.  
  798.  
  799.            A perfect example is the plethora of packages in perl4
  800.            for dealing with command line options.
  801.  
  802.            If you are writing a module to expand an already
  803.            existing set of modules, please coordinate with the
  804.            author of the package.  It helps if you follow the
  805.            same naming scheme and module interaction scheme as
  806.            the original author.
  807.  
  808.        Try to design the new module to be easy to extend and
  809.            reuse.
  810.            Use blessed references.  Use the two argument form of
  811.            bless to bless into the class name given as the first
  812.            parameter of the constructor, e.g.:
  813.  
  814.             ssssuuuubbbb nnnneeeewwww {{{{
  815.                    mmmmyyyy $$$$ccccllllaaaassssssss ==== sssshhhhiiiifffftttt;;;;
  816.                    rrrreeeettttuuuurrrrnnnn bbbblllleeeessssssss {{{{}}}},,,, $$$$ccccllllaaaassssssss;;;;
  817.             }}}}
  818.  
  819.            or even this if you'd like it to be used as either a
  820.            static or a virtual method.
  821.  
  822.             ssssuuuubbbb nnnneeeewwww {{{{
  823.                    mmmmyyyy $$$$sssseeeellllffff  ==== sssshhhhiiiifffftttt;;;;
  824.                    mmmmyyyy $$$$ccccllllaaaassssssss ==== rrrreeeeffff(((($$$$sssseeeellllffff)))) |||||||| $$$$sssseeeellllffff;;;;
  825.                    rrrreeeettttuuuurrrrnnnn bbbblllleeeessssssss {{{{}}}},,,, $$$$ccccllllaaaassssssss;;;;
  826.             }}}}
  827.  
  828.            Pass arrays as references so more parameters can be
  829.            added later (it's also faster).  Convert functions
  830.            into methods where appropriate.  Split large methods
  831.            into smaller more flexible ones.  Inherit methods from
  832.            other modules if appropriate.
  833.  
  834.            Avoid class name tests like: die "Invalid" unless ref
  835.            $$$$rrrreeeeffff eq 'FOO'.  Generally you can delete the "eq
  836.            'FOO'" part with no harm at all.  Let the objects look
  837.            after themselves! Generally, avoid hardwired class
  838.            names as far as possible.
  839.  
  840.            Avoid $$$$rrrr->_C_l_a_s_s_:_:_f_u_n_c_(_) where using @@@@IIIISSSSAAAA=qw(... Class
  841.            ...) and $$$$rrrr->_f_u_n_c_(_) would work (see perlbot man page
  842.            for more details).
  843.  
  844.            Use autosplit so little used or newly added functions
  845.            won't be a burden to programs which don't use them.
  846.            Add test functions to the module after __END__ either
  847.            using AutoSplit or by saying:
  848.  
  849.             eeeevvvvaaaallll jjjjooooiiiinnnn(((('''''''',,,,<<<<mmmmaaaaiiiinnnn::::::::DDDDAAAATTTTAAAA>>>>)))) |||||||| ddddiiiieeee $$$$@@@@ uuuunnnnlllleeeessssssss ccccaaaalllllllleeeerrrr(((())));;;;
  850.  
  851.            Does your module pass the 'empty sub-class' test? If
  852.            you say "@SUBCLASS::ISA = _q_w(YOURCLASS);" your
  853.  
  854.  
  855.  
  856. 2/Feb/96                 perl 5.002 with                       13
  857.  
  858.  
  859.  
  860.  
  861.  
  862. PERLMOD(1)     User Contributed Perl Documentation     PERLMOD(1)
  863.  
  864.  
  865.            applications should be able to use SUBCLASS in exactly
  866.            the same way as YOURCLASS.  For example, does your
  867.            application still work if you change:  $$$$oooobbbbjjjj = new
  868.            YOURCLASS; into: $$$$oooobbbbjjjj = new SUBCLASS; ?
  869.  
  870.            Avoid keeping any state information in your packages.
  871.            It makes it difficult for multiple other packages to
  872.            use yours. Keep state information in objects.
  873.  
  874.            Always use ----wwww. Try to uuuusssseeee ssssttttrrrriiiicccctttt;;;; (or uuuusssseeee ssssttttrrrriiiicccctttt
  875.            qqqqwwww((((............))));;;;).  Remember that you can add nnnnoooo ssssttttrrrriiiicccctttt
  876.            qqqqwwww((((............))));;;; to individual blocks of code which need less
  877.            strictness. Always use ----wwww. Always use ----wwww!  Follow the
  878.            guidelines in the _p_e_r_l_s_t_y_l_e(1) manual.
  879.  
  880.        Some simple style guidelines
  881.            The perlstyle manual supplied with perl has many
  882.            helpful points.
  883.  
  884.            Coding style is a matter of personal taste. Many
  885.            people evolve their style over several years as they
  886.            learn what helps them write and maintain good code.
  887.            Here's one set of assorted suggestions that seem to be
  888.            widely used by experienced developers:
  889.  
  890.            Use underscores to separate words.  It is generally
  891.            easier to read $$$$vvvvaaaarrrr____nnnnaaaammmmeeeessss____lllliiiikkkkeeee____tttthhhhiiiissss than
  892.            $$$$VVVVaaaarrrrNNNNaaaammmmeeeessssLLLLiiiikkkkeeeeTTTThhhhiiiissss, especially for non-native speakers
  893.            of English. It's also a simple rule that works
  894.            consistently with VAR_NAMES_LIKE_THIS.
  895.  
  896.            Package/Module names are an exception to this rule.
  897.            Perl informally reserves lowercase module names for
  898.            'pragma' modules like integer and strict. Other
  899.            modules normally begin with a capital letter and use
  900.            mixed case with no underscores (need to be short and
  901.            portable).
  902.  
  903.            You may find it helpful to use letter case to indicate
  904.            the scope or nature of a variable. For example:
  905.  
  906.             $$$$AAAALLLLLLLL____CCCCAAAAPPPPSSSS____HHHHEEEERRRREEEE   ccccoooonnnnssssttttaaaannnnttttssss oooonnnnllllyyyy ((((bbbbeeeewwwwaaaarrrreeee ccccllllaaaasssshhhheeeessss wwwwiiiitttthhhh ppppeeeerrrrllll vvvvaaaarrrrssss))))
  907.             $$$$SSSSoooommmmeeee____CCCCaaaappppssss____HHHHeeeerrrreeee  ppppaaaacccckkkkaaaaggggeeee----wwwwiiiiddddeeee gggglllloooobbbbaaaallll////ssssttttaaaattttiiiicccc
  908.             $$$$nnnnoooo____ccccaaaappppssss____hhhheeeerrrreeee    ffffuuuunnnnccccttttiiiioooonnnn ssssccccooooppppeeee mmmmyyyy(((()))) oooorrrr llllooooccccaaaallll(((()))) vvvvaaaarrrriiiiaaaabbbblllleeeessss
  909.  
  910.            Function and method names seem to work best as all
  911.            lowercase.  E.g., $$$$oooobbbbjjjj->_a_s___s_t_r_i_n_g_(_).
  912.  
  913.            You can use a leading underscore to indicate that a
  914.            variable or function should not be used outside the
  915.            package that defined it.
  916.  
  917.        Select what to export.
  918.            Do NOT export method names!
  919.  
  920.  
  921.  
  922. 2/Feb/96                 perl 5.002 with                       14
  923.  
  924.  
  925.  
  926.  
  927.  
  928. PERLMOD(1)     User Contributed Perl Documentation     PERLMOD(1)
  929.  
  930.  
  931.            Do NOT export anything else by default without a good
  932.            reason!
  933.  
  934.            Exports pollute the namespace of the module user.  If
  935.            you must export try to use @@@@EEEEXXXXPPPPOOOORRRRTTTT____OOOOKKKK in preference to
  936.            @@@@EEEEXXXXPPPPOOOORRRRTTTT and avoid short or common names to reduce the
  937.            risk of name clashes.
  938.  
  939.            Generally anything not exported is still accessible
  940.            from outside the module using the
  941.            ModuleName::item_name (or $$$$bbbblllleeeesssssssseeeedddd____rrrreeeeffff->method)
  942.            syntax.  By convention you can use a leading
  943.            underscore on names to informally indicate that they
  944.            are 'internal' and not for public use.
  945.  
  946.            (It is actually possible to get private functions by
  947.            saying: my $$$$ssssuuuubbbbrrrreeeeffff = sub { ... };  &$subref; But
  948.            there's no way to call that directly as a method,
  949.            since a method must have a name in the symbol table.)
  950.  
  951.            As a general rule, if the module is trying to be
  952.            object oriented then export nothing. If it's just a
  953.            collection of functions then @@@@EEEEXXXXPPPPOOOORRRRTTTT____OOOOKKKK anything but
  954.            use @@@@EEEEXXXXPPPPOOOORRRRTTTT with caution.
  955.  
  956.        Select a name for the module.
  957.            This name should be as descriptive, accurate and
  958.            complete as possible.  Avoid any risk of ambiguity.
  959.            Always try to use two or more whole words.  Generally
  960.            the name should reflect what is special about what the
  961.            module does rather than how it does it.  Please use
  962.            nested module names to informally group or categorise
  963.            a module.  A module should have a very good reason not
  964.            to have a nested name.  Module names should begin with
  965.            a capital letter.
  966.  
  967.            Having 57 modules all called Sort will not make life
  968.            easy for anyone (though having 23 called Sort::Quick
  969.            is only marginally better :-).  Imagine someone trying
  970.            to install your module alongside many others.  If in
  971.            any doubt ask for suggestions in comp.lang.perl.misc.
  972.  
  973.            If you are developing a suite of related
  974.            modules/classes it's good practice to use nested
  975.            classes with a common prefix as this will avoid
  976.            namespace clashes. For example:  Xyz::Control,
  977.            Xyz::View, Xyz::Model etc. Use the modules in this
  978.            list as a naming guide.
  979.  
  980.            If adding a new module to a set, follow the original
  981.            author's standards for naming modules and the
  982.            interface to methods in those modules.
  983.  
  984.            To be portable each component of a module name should
  985.  
  986.  
  987.  
  988. 2/Feb/96                 perl 5.002 with                       15
  989.  
  990.  
  991.  
  992.  
  993.  
  994. PERLMOD(1)     User Contributed Perl Documentation     PERLMOD(1)
  995.  
  996.  
  997.            be limited to 11 characters. If it might be used on
  998.            DOS then try to ensure each is unique in the first 8
  999.            characters. Nested modules make this easier.
  1000.  
  1001.        Have you got it right?
  1002.            How do you know that you've made the right decisions?
  1003.            Have you picked an interface design that will cause
  1004.            problems later? Have you picked the most appropriate
  1005.            name? Do you have any questions?
  1006.  
  1007.            The best way to know for sure, and pick up many
  1008.            helpful suggestions, is to ask someone who knows.
  1009.            Comp.lang.perl.misc is read by just about all the
  1010.            people who develop modules and it's the best place to
  1011.            ask.
  1012.  
  1013.            All you need to do is post a short summary of the
  1014.            module, its purpose and interfaces. A few lines on
  1015.            each of the main methods is probably enough. (If you
  1016.            post the whole module it might be ignored by busy
  1017.            people - generally the very people you want to read
  1018.            it!)
  1019.  
  1020.            Don't worry about posting if you can't say when the
  1021.            module will be ready - just say so in the message. It
  1022.            might be worth inviting others to help you, they may
  1023.            be able to complete it for you!
  1024.  
  1025.        README and other Additional Files.
  1026.            It's well known that software developers usually fully
  1027.            document the software they write. If, however, the
  1028.            world is in urgent need of your software and there is
  1029.            not enough time to write the full documentation please
  1030.            at least provide a README file containing:
  1031.  
  1032.        +o A description of the module/package/extension etc.
  1033.  
  1034.        +o A copyright notice - see below.
  1035.  
  1036.        +o Prerequisites - what else you may need to have.
  1037.  
  1038.        +o How to build it - possible changes to Makefile.PL etc.
  1039.  
  1040.        +o How to install it.
  1041.  
  1042.        +o Recent changes in this release, especially
  1043.                      incompatibilities
  1044.  
  1045.        +o Changes / enhancements you plan to make in the future.
  1046.  
  1047.                      If the README file seems to be getting too
  1048.                      large you may wish to split out some of the
  1049.                      sections into separate files: INSTALL,
  1050.                      Copying, ToDo etc.
  1051.  
  1052.  
  1053.  
  1054. 2/Feb/96                 perl 5.002 with                       16
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060. PERLMOD(1)     User Contributed Perl Documentation     PERLMOD(1)
  1061.  
  1062.  
  1063.        Adding a Copyright Notice.
  1064.            How you choose to licence your work is a personal
  1065.            decision.  The general mechanism is to assert your
  1066.            Copyright and then make a declaration of how others
  1067.            may copy/use/modify your work.
  1068.  
  1069.            Perl, for example, is supplied with two types of
  1070.            licence: The GNU GPL and The Artistic License (see the
  1071.            files README, Copying and Artistic).  Larry has good
  1072.            reasons for NOT just using the GNU GPL.
  1073.  
  1074.            My personal recommendation, out of respect for Larry,
  1075.            Perl and the perl community at large is to simply
  1076.            state something like:
  1077.  
  1078.             CCCCooooppppyyyyrrrriiiigggghhhhtttt ((((cccc)))) 1111999999995555 YYYYoooouuuurrrr NNNNaaaammmmeeee.... AAAAllllllll rrrriiiigggghhhhttttssss rrrreeeesssseeeerrrrvvvveeeedddd....
  1079.             TTTThhhhiiiissss pppprrrrooooggggrrrraaaammmm iiiissss ffffrrrreeeeeeee ssssooooffffttttwwwwaaaarrrreeee;;;; yyyyoooouuuu ccccaaaannnn rrrreeeeddddiiiissssttttrrrriiiibbbbuuuutttteeee iiiitttt aaaannnndddd////oooorrrr
  1080.             mmmmooooddddiiiiffffyyyy iiiitttt uuuunnnnddddeeeerrrr tttthhhheeee ssssaaaammmmeeee tttteeeerrrrmmmmssss aaaassss PPPPeeeerrrrllll iiiittttsssseeeellllffff....
  1081.  
  1082.            This statement should at least appear in the README
  1083.            file. You may also wish to include it in a Copying
  1084.            file and your source files.  Remember to include the
  1085.            other words in addition to the Copyright.
  1086.  
  1087.        Give the module a version/issue/release number.
  1088.            To be fully compatible with the Exporter and MakeMaker
  1089.            modules you should store your module's version number
  1090.            in a non-my package variable called $$$$VVVVEEEERRRRSSSSIIIIOOOONNNN.  This
  1091.            should be a valid floating point number with at least
  1092.            two digits after the decimal (ie hundredths, e.g,
  1093.            $$$$VVVVEEEERRRRSSSSIIIIOOOONNNN = "0.01").  Don't use a "1.3.2" style
  1094.            version.  See Exporter.pm in Perl5.001m or later for
  1095.            details.
  1096.  
  1097.            It may be handy to add a function or method to
  1098.            retrieve the number.  Use the number in announcements
  1099.            and archive file names when releasing the module
  1100.            (ModuleName-1.02.tar.Z).  See perldoc
  1101.            ExtUtils::MakeMaker.pm for details.
  1102.  
  1103.        How to release and distribute a module.
  1104.            It's good idea to post an announcement of the
  1105.            availability of your module (or the module itself if
  1106.            small) to the comp.lang.perl.announce Usenet
  1107.            newsgroup.  This will at least ensure very wide once-
  1108.            off distribution.
  1109.  
  1110.            If possible you should place the module into a major
  1111.            ftp archive and include details of it's location in
  1112.            your announcement.
  1113.  
  1114.            Some notes about ftp archives: Please use a long
  1115.            descriptive file name which includes the version
  1116.            number. Most incoming directories will not be
  1117.  
  1118.  
  1119.  
  1120. 2/Feb/96                 perl 5.002 with                       17
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126. PERLMOD(1)     User Contributed Perl Documentation     PERLMOD(1)
  1127.  
  1128.  
  1129.            readable/listable, i.e., you won't be able to see your
  1130.            file after uploading it. Remember to send your email
  1131.            notification message as soon as possible after
  1132.            uploading else your file may get deleted
  1133.            automatically. Allow time for the file to be processed
  1134.            and/or check the file has been processed before
  1135.            announcing its location.
  1136.  
  1137.            FTP Archives for Perl Modules:
  1138.  
  1139.            Follow the instructions and links on
  1140.  
  1141.               hhhhttttttttpppp::::////////ffffrrrraaaannnnzzzz....wwwwwwww....ttttuuuu----bbbbeeeerrrrlllliiiinnnn....ddddeeee////mmmmoooodddduuuulllleeeelllliiiisssstttt
  1142.  
  1143.            or upload to one of these sites:
  1144.  
  1145.               ffffttttpppp::::////////ffffrrrraaaannnnzzzz....wwwwwwww....ttttuuuu----bbbbeeeerrrrlllliiiinnnn....ddddeeee////iiiinnnnccccoooommmmiiiinnnngggg
  1146.               ffffttttpppp::::////////ffffttttpppp....cccciiiissss....uuuuffffllll....eeeedddduuuu////iiiinnnnccccoooommmmiiiinnnngggg
  1147.  
  1148.            and notify upload@franz.ww.tu-berlin.de.
  1149.  
  1150.            By using the WWW interface you can ask the Upload
  1151.            Server to mirror your modules from your ftp or WWW
  1152.            site into your own directory on CPAN!
  1153.  
  1154.            Please remember to send me an updated entry for the
  1155.            Module list!
  1156.  
  1157.        Take care when changing a released module.
  1158.            Always strive to remain compatible with previous
  1159.            released versions (see 2.2 above) Otherwise try to add
  1160.            a mechanism to revert to the old behaviour if people
  1161.            rely on it. Document incompatible changes.
  1162.  
  1163.        GGGGuuuuiiiiddddeeeelllliiiinnnneeeessss ffffoooorrrr CCCCoooonnnnvvvveeeerrrrttttiiiinnnngggg PPPPeeeerrrrllll 4444 LLLLiiiibbbbrrrraaaarrrryyyy SSSSccccrrrriiiippppttttssss iiiinnnnttttoooo
  1164.        MMMMoooodddduuuulllleeeessss
  1165.  
  1166.  
  1167.        There is no requirement to convert anything.
  1168.            If it ain't broke, don't fix it! Perl 4 library
  1169.            scripts should continue to work with no problems. You
  1170.            may need to make some minor changes (like escaping
  1171.            non-array @'s in double quoted strings) but there is
  1172.            no need to convert a .pl file into a Module for just
  1173.            that.
  1174.  
  1175.        Consider the implications.
  1176.            All the perl applications which make use of the script
  1177.            will need to be changed (slightly) if the script is
  1178.            converted into a module.  Is it worth it unless you
  1179.            plan to make other changes at the same time?
  1180.  
  1181.        Make the most of the opportunity.
  1182.            If you are going to convert the script to a module you
  1183.  
  1184.  
  1185.  
  1186. 2/Feb/96                 perl 5.002 with                       18
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192. PERLMOD(1)     User Contributed Perl Documentation     PERLMOD(1)
  1193.  
  1194.  
  1195.            can use the opportunity to redesign the interface. The
  1196.            'Guidelines for Module Creation' above include many of
  1197.            the issues you should consider.
  1198.  
  1199.        The pl2pm utility will get you started.
  1200.            This utility will read *.pl files (given as
  1201.            parameters) and write corresponding *.pm files. The
  1202.            pl2pm utilities does the following:
  1203.  
  1204.        +o Adds the standard Module prologue lines
  1205.  
  1206.        +o Converts package specifiers from ' to ::
  1207.  
  1208.        +o Converts die(...) to croak(...)
  1209.  
  1210.        +o Several other minor changes
  1211.  
  1212.                      Being a mechanical process pl2pm is not
  1213.                      bullet proof. The converted code will need
  1214.                      careful checking, especially any package
  1215.                      statements.  Don't delete the original .pl
  1216.                      file till the new .pm one works!
  1217.  
  1218.        GGGGuuuuiiiiddddeeeelllliiiinnnneeeessss ffffoooorrrr RRRReeeeuuuussssiiiinnnngggg AAAApppppppplllliiiiccccaaaattttiiiioooonnnn CCCCooooddddeeee
  1219.  
  1220.  
  1221.        Complete applications rarely belong in the Perl Module
  1222.            Library.
  1223.  
  1224.        Many applications contain some perl code which could be
  1225.            reused.
  1226.            Help save the world! Share your code in a form that
  1227.            makes it easy to reuse.
  1228.  
  1229.        Break-out the reusable code into one or more separate
  1230.            module files.
  1231.  
  1232.        Take the opportunity to reconsider and redesign the
  1233.            interfaces.
  1234.  
  1235.        In some cases the 'application' can then be reduced to a
  1236.            small
  1237.            fragment of code built on top of the reusable modules.
  1238.            In these cases the application could invoked as:
  1239.  
  1240.                 ppppeeeerrrrllll ----eeee ''''uuuusssseeee MMMMoooodddduuuulllleeee::::::::NNNNaaaammmmeeee;;;; mmmmeeeetttthhhhoooodddd((((@@@@AAAARRRRGGGGVVVV))))'''' ............
  1241.            oooorrrr
  1242.                 ppppeeeerrrrllll ----mmmmMMMMoooodddduuuulllleeee::::::::NNNNaaaammmmeeee ............    ((((iiiinnnn ppppeeeerrrrllll5555....000000002222????))))
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252. 2/Feb/96                 perl 5.002 with                       19
  1253.  
  1254.  
  1255.