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 / perlguts.0 < prev    next >
Text File  |  1996-03-02  |  149KB  |  2,707 lines

  1.  
  2.  
  3.  
  4. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  5.  
  6.  
  7. NNNNAAAAMMMMEEEE
  8.        perlguts - Perl's Internal Functions
  9.  
  10. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  11.        This document attempts to describe some of the internal
  12.        functions of the Perl executable.  It is far from complete
  13.        and probably contains many errors.  Please refer any
  14.        questions or comments to the author below.
  15.  
  16. DDDDaaaattttaaaattttyyyyppppeeeessss
  17.        Perl has three typedefs that handle Perl's three main data
  18.        types:
  19.  
  20.            SSSSVVVV  SSSSccccaaaallllaaaarrrr VVVVaaaalllluuuueeee
  21.            AAAAVVVV  AAAArrrrrrrraaaayyyy VVVVaaaalllluuuueeee
  22.            HHHHVVVV  HHHHaaaasssshhhh VVVVaaaalllluuuueeee
  23.  
  24.        Each typedef has specific routines that manipulate the
  25.        various data types.
  26.  
  27.        WWWWhhhhaaaatttt iiiissss aaaannnn """"IIIIVVVV""""????
  28.  
  29.        Perl uses a special typedef IV which is large enough to
  30.        hold either an integer or a pointer.
  31.  
  32.        Perl also uses two special typedefs, I32 and I16, which
  33.        will always be at least 32-bits and 16-bits long,
  34.        respectively.
  35.  
  36.        WWWWoooorrrrkkkkiiiinnnngggg wwwwiiiitttthhhh SSSSVVVV''''ssss
  37.  
  38.        An SV can be created and loaded with one command.  There
  39.        are four types of values that can be loaded: an integer
  40.        value (IV), a double (NV), a string, (PV), and another
  41.        scalar (SV).
  42.  
  43.        The four routines are:
  44.  
  45.            SSSSVVVV****  nnnneeeewwwwSSSSVVVViiiivvvv((((IIIIVVVV))));;;;
  46.            SSSSVVVV****  nnnneeeewwwwSSSSVVVVnnnnvvvv((((ddddoooouuuubbbblllleeee))));;;;
  47.            SSSSVVVV****  nnnneeeewwwwSSSSVVVVppppvvvv((((cccchhhhaaaarrrr****,,,, iiiinnnntttt))));;;;
  48.            SSSSVVVV****  nnnneeeewwwwSSSSVVVVssssvvvv((((SSSSVVVV****))));;;;
  49.  
  50.        To change the value of an *already-existing* SV, there are
  51.        five routines:
  52.  
  53.            vvvvooooiiiidddd  ssssvvvv____sssseeeettttiiiivvvv((((SSSSVVVV****,,,, IIIIVVVV))));;;;
  54.            vvvvooooiiiidddd  ssssvvvv____sssseeeettttnnnnvvvv((((SSSSVVVV****,,,, ddddoooouuuubbbblllleeee))));;;;
  55.            vvvvooooiiiidddd  ssssvvvv____sssseeeettttppppvvvvnnnn((((SSSSVVVV****,,,, cccchhhhaaaarrrr****,,,, iiiinnnntttt))))
  56.            vvvvooooiiiidddd  ssssvvvv____sssseeeettttppppvvvv((((SSSSVVVV****,,,, cccchhhhaaaarrrr****))));;;;
  57.            vvvvooooiiiidddd  ssssvvvv____sssseeeettttssssvvvv((((SSSSVVVV****,,,, SSSSVVVV****))));;;;
  58.  
  59.        Notice that you can choose to specify the length of the
  60.        string to be assigned by using ssssvvvv____sssseeeettttppppvvvvnnnn or nnnneeeewwwwSSSSVVVVppppvvvv, or
  61.  
  62.  
  63.  
  64. 23/Jan/96                perl 5.002 with                        1
  65.  
  66.  
  67.  
  68.  
  69.  
  70. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  71.  
  72.  
  73.        you may allow Perl to calculate the length by using
  74.        ssssvvvv____sssseeeettttppppvvvv or by specifying 0 as the second argument to
  75.        nnnneeeewwwwSSSSVVVVppppvvvv.  Be warned, though, that Perl will determine the
  76.        string's length by using ssssttttrrrrlllleeeennnn, which depends on the
  77.        string terminating with a NUL character.
  78.  
  79.        To access the actual value that an SV points to, you can
  80.        use the macros:
  81.  
  82.            SSSSvvvvIIIIVVVV((((SSSSVVVV****))))
  83.            SSSSvvvvNNNNVVVV((((SSSSVVVV****))))
  84.            SSSSvvvvPPPPVVVV((((SSSSVVVV****,,,, SSSSTTTTRRRRLLLLEEEENNNN lllleeeennnn))))
  85.  
  86.        which will automatically coerce the actual scalar type
  87.        into an IV, double, or string.
  88.  
  89.        In the SSSSvvvvPPPPVVVV macro, the length of the string returned is
  90.        placed into the variable lllleeeennnn (this is a macro, so you do
  91.        _n_o_t use &&&&lllleeeennnn).  If you do not care what the length of the
  92.        data is, use the global variable nnnnaaaa.  Remember, however,
  93.        that Perl allows arbitrary strings of data that may both
  94.        contain NUL's and not be terminated by a NUL.
  95.  
  96.        If you simply want to know if the scalar value is TRUE,
  97.        you can use:
  98.  
  99.            SSSSvvvvTTTTRRRRUUUUEEEE((((SSSSVVVV****))))
  100.  
  101.        Although Perl will automatically grow strings for you, if
  102.        you need to force Perl to allocate more memory for your
  103.        SV, you can use the macro
  104.  
  105.            SSSSvvvvGGGGRRRROOOOWWWW((((SSSSVVVV****,,,, SSSSTTTTRRRRLLLLEEEENNNN nnnneeeewwwwlllleeeennnn))))
  106.  
  107.        which will determine if more memory needs to be allocated.
  108.        If so, it will call the function ssssvvvv____ggggrrrroooowwww.  Note that
  109.        SSSSvvvvGGGGRRRROOOOWWWW can only increase, not decrease, the allocated
  110.        memory of an SV.
  111.  
  112.        If you have an SV and want to know what kind of data Perl
  113.        thinks is stored in it, you can use the following macros
  114.        to check the type of SV you have.
  115.  
  116.            SSSSvvvvIIIIOOOOKKKK((((SSSSVVVV****))))
  117.            SSSSvvvvNNNNOOOOKKKK((((SSSSVVVV****))))
  118.            SSSSvvvvPPPPOOOOKKKK((((SSSSVVVV****))))
  119.  
  120.        You can get and set the current length of the string
  121.        stored in an SV with the following macros:
  122.  
  123.            SSSSvvvvCCCCUUUURRRR((((SSSSVVVV****))))
  124.            SSSSvvvvCCCCUUUURRRR____sssseeeetttt((((SSSSVVVV****,,,, IIII33332222 vvvvaaaallll))))
  125.  
  126.        You can also get a pointer to the end of the string stored
  127.  
  128.  
  129.  
  130. 23/Jan/96                perl 5.002 with                        2
  131.  
  132.  
  133.  
  134.  
  135.  
  136. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  137.  
  138.  
  139.        in the SV with the macro:
  140.  
  141.            SSSSvvvvEEEENNNNDDDD((((SSSSVVVV****))))
  142.  
  143.        But note that these last three macros are valid only if
  144.        SSSSvvvvPPPPOOOOKKKK(((()))) is true.
  145.  
  146.        If you want to append something to the end of string
  147.        stored in an SSSSVVVV****, you can use the following functions:
  148.  
  149.            vvvvooooiiiidddd  ssssvvvv____ccccaaaattttppppvvvv((((SSSSVVVV****,,,, cccchhhhaaaarrrr****))));;;;
  150.            vvvvooooiiiidddd  ssssvvvv____ccccaaaattttppppvvvvnnnn((((SSSSVVVV****,,,, cccchhhhaaaarrrr****,,,, iiiinnnntttt))));;;;
  151.            vvvvooooiiiidddd  ssssvvvv____ccccaaaattttssssvvvv((((SSSSVVVV****,,,, SSSSVVVV****))));;;;
  152.  
  153.        The first function calculates the length of the string to
  154.        be appended by using ssssttttrrrrlllleeeennnn.  In the second, you specify
  155.        the length of the string yourself.  The third function
  156.        extends the string stored in the first SV with the string
  157.        stored in the second SV.  It also forces the second SV to
  158.        be interpreted as a string.
  159.  
  160.        If you know the name of a scalar variable, you can get a
  161.        pointer to its SV by using the following:
  162.  
  163.            SSSSVVVV****  ppppeeeerrrrllll____ggggeeeetttt____ssssvvvv((((""""vvvvaaaarrrrnnnnaaaammmmeeee"""",,,, FFFFAAAALLLLSSSSEEEE))));;;;
  164.  
  165.        This returns NULL if the variable does not exist.
  166.  
  167.        If you want to know if this variable (or any other SV) is
  168.        actually ddddeeeeffffiiiinnnneeeedddd, you can call:
  169.  
  170.            SSSSvvvvOOOOKKKK((((SSSSVVVV****))))
  171.  
  172.        The scalar uuuunnnnddddeeeeffff value is stored in an SV instance called
  173.        ssssvvvv____uuuunnnnddddeeeeffff.  Its address can be used whenever an SSSSVVVV**** is
  174.        needed.
  175.  
  176.        There are also the two values ssssvvvv____yyyyeeeessss and ssssvvvv____nnnnoooo, which
  177.        contain Boolean TRUE and FALSE values, respectively.  Like
  178.        ssssvvvv____uuuunnnnddddeeeeffff, their addresses can be used whenever an SSSSVVVV**** is
  179.        needed.
  180.  
  181.        Do not be fooled into thinking that ((((SSSSVVVV ****)))) 0000 is the same
  182.        as &&&&ssssvvvv____uuuunnnnddddeeeeffff.  Take this code:
  183.  
  184.            SSSSVVVV**** ssssvvvv ==== ((((SSSSVVVV****)))) 0000;;;;
  185.            iiiiffff ((((IIII----aaaammmm----ttttoooo----rrrreeeettttuuuurrrrnnnn----aaaa----rrrreeeeaaaallll----vvvvaaaalllluuuueeee)))) {{{{
  186.                    ssssvvvv ==== ssssvvvv____2222mmmmoooorrrrttttaaaallll((((nnnneeeewwwwSSSSVVVViiiivvvv((((44442222))))))));;;;
  187.            }}}}
  188.            ssssvvvv____sssseeeettttssssvvvv((((SSSSTTTT((((0000)))),,,, ssssvvvv))));;;;
  189.  
  190.        This code tries to return a new SV (which contains the
  191.        value 42) if it should return a real value, or undef
  192.        otherwise.  Instead it has returned a null pointer which,
  193.  
  194.  
  195.  
  196. 23/Jan/96                perl 5.002 with                        3
  197.  
  198.  
  199.  
  200.  
  201.  
  202. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  203.  
  204.  
  205.        somewhere down the line, will cause a segmentation
  206.        violation, or just weird results.  Change the zero to
  207.        &&&&ssssvvvv____uuuunnnnddddeeeeffff in the first line and all will be well.
  208.  
  209.        To free an SV that you've created, call SSSSvvvvRRRREEEEFFFFCCCCNNNNTTTT____ddddeeeecccc((((SSSSVVVV****)))).
  210.        Normally this call is not necessary.  See the section on
  211.        MMMMOOOORRRRTTTTAAAALLLLIIIITTTTYYYY.
  212.  
  213.        WWWWhhhhaaaatttt''''ssss RRRReeeeaaaallllllllyyyy SSSSttttoooorrrreeeedddd iiiinnnn aaaannnn SSSSVVVV????
  214.  
  215.        Recall that the usual method of determining the type of
  216.        scalar you have is to use SSSSvvvv****OOOOKKKK macros.  Since a scalar
  217.        can be both a number and a string, usually these macros
  218.        will always return TRUE and calling the SSSSvvvv****VVVV macros will
  219.        do the appropriate conversion of string to integer/double
  220.        or integer/double to string.
  221.  
  222.        If you _r_e_a_l_l_y need to know if you have an integer, double,
  223.        or string pointer in an SV, you can use the following
  224.        three macros instead:
  225.  
  226.            SSSSvvvvIIIIOOOOKKKKpppp((((SSSSVVVV****))))
  227.            SSSSvvvvNNNNOOOOKKKKpppp((((SSSSVVVV****))))
  228.            SSSSvvvvPPPPOOOOKKKKpppp((((SSSSVVVV****))))
  229.  
  230.        These will tell you if you truly have an integer, double,
  231.        or string pointer stored in your SV.  The "p" stands for
  232.        private.
  233.  
  234.        In general, though, it's best to just use the SSSSvvvv****VVVV macros.
  235.  
  236.        WWWWoooorrrrkkkkiiiinnnngggg wwwwiiiitttthhhh AAAAVVVV''''ssss
  237.  
  238.        There are two ways to create and load an AV.  The first
  239.        method just creates an empty AV:
  240.  
  241.            AAAAVVVV****  nnnneeeewwwwAAAAVVVV(((())));;;;
  242.  
  243.        The second method both creates the AV and initially
  244.        populates it with SV's:
  245.  
  246.            AAAAVVVV****  aaaavvvv____mmmmaaaakkkkeeee((((IIII33332222 nnnnuuuummmm,,,, SSSSVVVV ********ppppttttrrrr))));;;;
  247.  
  248.        The second argument points to an array containing nnnnuuuummmm
  249.        SSSSVVVV****'s.  Once the AV has been created, the SV's can be
  250.        destroyed, if so desired.
  251.  
  252.        Once the AV has been created, the following operations are
  253.        possible on AV's:
  254.  
  255.            vvvvooooiiiidddd  aaaavvvv____ppppuuuusssshhhh((((AAAAVVVV****,,,, SSSSVVVV****))));;;;
  256.            SSSSVVVV****   aaaavvvv____ppppoooopppp((((AAAAVVVV****))));;;;
  257.            SSSSVVVV****   aaaavvvv____sssshhhhiiiifffftttt((((AAAAVVVV****))));;;;
  258.            vvvvooooiiiidddd  aaaavvvv____uuuunnnnsssshhhhiiiifffftttt((((AAAAVVVV****,,,, IIII33332222 nnnnuuuummmm))));;;;
  259.  
  260.  
  261.  
  262. 23/Jan/96                perl 5.002 with                        4
  263.  
  264.  
  265.  
  266.  
  267.  
  268. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  269.  
  270.  
  271.        These should be familiar operations, with the exception of
  272.        aaaavvvv____uuuunnnnsssshhhhiiiifffftttt.  This routine adds nnnnuuuummmm elements at the front
  273.        of the array with the uuuunnnnddddeeeeffff value.  You must then use
  274.        aaaavvvv____ssssttttoooorrrreeee (described below) to assign values to these new
  275.        elements.
  276.  
  277.        Here are some other functions:
  278.  
  279.            IIII33332222   aaaavvvv____lllleeeennnn((((AAAAVVVV****))));;;; ////**** RRRReeeettttuuuurrrrnnnnssss hhhhiiiigggghhhheeeesssstttt iiiinnnnddddeeeexxxx vvvvaaaalllluuuueeee iiiinnnn aaaarrrrrrrraaaayyyy ****////
  280.  
  281.            SSSSVVVV********  aaaavvvv____ffffeeeettttcccchhhh((((AAAAVVVV****,,,, IIII33332222 kkkkeeeeyyyy,,,, IIII33332222 llllvvvvaaaallll))));;;;
  282.                    ////**** FFFFeeeettttcccchhhheeeessss vvvvaaaalllluuuueeee aaaatttt kkkkeeeeyyyy ooooffffffffsssseeeetttt,,,, bbbbuuuutttt iiiitttt ssssttttoooorrrreeeessss aaaannnn uuuunnnnddddeeeeffff vvvvaaaalllluuuueeee
  283.                       aaaatttt tttthhhheeee ooooffffffffsssseeeetttt iiiiffff llllvvvvaaaallll iiiissss nnnnoooonnnn----zzzzeeeerrrroooo ****////
  284.            SSSSVVVV********  aaaavvvv____ssssttttoooorrrreeee((((AAAAVVVV****,,,, IIII33332222 kkkkeeeeyyyy,,,, SSSSVVVV**** vvvvaaaallll))));;;;
  285.                    ////**** SSSSttttoooorrrreeeessss vvvvaaaallll aaaatttt ooooffffffffsssseeeetttt kkkkeeeeyyyy ****////
  286.  
  287.        Take note that aaaavvvv____ffffeeeettttcccchhhh and aaaavvvv____ssssttttoooorrrreeee return SSSSVVVV********'s, not
  288.        SSSSVVVV****'s.
  289.  
  290.            vvvvooooiiiidddd  aaaavvvv____cccclllleeeeaaaarrrr((((AAAAVVVV****))));;;;
  291.                    ////**** CCCClllleeeeaaaarrrr oooouuuutttt aaaallllllll eeeelllleeeemmmmeeeennnnttttssss,,,, bbbbuuuutttt lllleeeeaaaavvvveeee tttthhhheeee aaaarrrrrrrraaaayyyy ****////
  292.            vvvvooooiiiidddd  aaaavvvv____uuuunnnnddddeeeeffff((((AAAAVVVV****))));;;;
  293.                    ////**** UUUUnnnnddddeeeeffffiiiinnnneeeessss tttthhhheeee aaaarrrrrrrraaaayyyy,,,, rrrreeeemmmmoooovvvviiiinnnngggg aaaallllllll eeeelllleeeemmmmeeeennnnttttssss ****////
  294.            vvvvooooiiiidddd  aaaavvvv____eeeexxxxtttteeeennnndddd((((AAAAVVVV****,,,, IIII33332222 kkkkeeeeyyyy))));;;;
  295.                    ////**** EEEExxxxtttteeeennnndddd tttthhhheeee aaaarrrrrrrraaaayyyy ttttoooo aaaa ttttoooottttaaaallll ooooffff kkkkeeeeyyyy eeeelllleeeemmmmeeeennnnttttssss ****////
  296.  
  297.        If you know the name of an array variable, you can get a
  298.        pointer to its AV by using the following:
  299.  
  300.            AAAAVVVV****  ppppeeeerrrrllll____ggggeeeetttt____aaaavvvv((((""""vvvvaaaarrrrnnnnaaaammmmeeee"""",,,, FFFFAAAALLLLSSSSEEEE))));;;;
  301.  
  302.        This returns NULL if the variable does not exist.
  303.  
  304.        WWWWoooorrrrkkkkiiiinnnngggg wwwwiiiitttthhhh HHHHVVVV''''ssss
  305.  
  306.        To create an HV, you use the following routine:
  307.  
  308.            HHHHVVVV****  nnnneeeewwwwHHHHVVVV(((())));;;;
  309.  
  310.        Once the HV has been created, the following operations are
  311.        possible on HV's:
  312.  
  313.            SSSSVVVV********  hhhhvvvv____ssssttttoooorrrreeee((((HHHHVVVV****,,,, cccchhhhaaaarrrr**** kkkkeeeeyyyy,,,, UUUU33332222 kkkklllleeeennnn,,,, SSSSVVVV**** vvvvaaaallll,,,, UUUU33332222 hhhhaaaasssshhhh))));;;;
  314.            SSSSVVVV********  hhhhvvvv____ffffeeeettttcccchhhh((((HHHHVVVV****,,,, cccchhhhaaaarrrr**** kkkkeeeeyyyy,,,, UUUU33332222 kkkklllleeeennnn,,,, IIII33332222 llllvvvvaaaallll))));;;;
  315.  
  316.        The kkkklllleeeennnn parameter is the length of the key being passed
  317.        in.  The vvvvaaaallll argument contains the SV pointer to the
  318.        scalar being stored, and hhhhaaaasssshhhh is the pre-computed hash
  319.        value (zero if you want hhhhvvvv____ssssttttoooorrrreeee to calculate it for you).
  320.        The llllvvvvaaaallll parameter indicates whether this fetch is
  321.        actually a part of a store operation.
  322.  
  323.        Remember that hhhhvvvv____ssssttttoooorrrreeee and hhhhvvvv____ffffeeeettttcccchhhh return SSSSVVVV********'s and not
  324.        just SSSSVVVV****.  In order to access the scalar value, you must
  325.  
  326.  
  327.  
  328. 23/Jan/96                perl 5.002 with                        5
  329.  
  330.  
  331.  
  332.  
  333.  
  334. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  335.  
  336.  
  337.        first dereference the return value.  However, you should
  338.        check to make sure that the return value is not NULL
  339.        before dereferencing it.
  340.  
  341.        These two functions check if a hash table entry exists,
  342.        and deletes it.
  343.  
  344.            bbbboooooooollll  hhhhvvvv____eeeexxxxiiiissssttttssss((((HHHHVVVV****,,,, cccchhhhaaaarrrr**** kkkkeeeeyyyy,,,, UUUU33332222 kkkklllleeeennnn))));;;;
  345.            SSSSVVVV****   hhhhvvvv____ddddeeeelllleeeetttteeee((((HHHHVVVV****,,,, cccchhhhaaaarrrr**** kkkkeeeeyyyy,,,, UUUU33332222 kkkklllleeeennnn,,,, IIII33332222 ffffllllaaaaggggssss))));;;;
  346.  
  347.        And more miscellaneous functions:
  348.  
  349.            vvvvooooiiiidddd   hhhhvvvv____cccclllleeeeaaaarrrr((((HHHHVVVV****))));;;;
  350.                    ////**** CCCClllleeeeaaaarrrrssss aaaallllllll eeeennnnttttrrrriiiieeeessss iiiinnnn hhhhaaaasssshhhh ttttaaaabbbblllleeee ****////
  351.            vvvvooooiiiidddd   hhhhvvvv____uuuunnnnddddeeeeffff((((HHHHVVVV****))));;;;
  352.                    ////**** UUUUnnnnddddeeeeffffiiiinnnneeeessss tttthhhheeee hhhhaaaasssshhhh ttttaaaabbbblllleeee ****////
  353.  
  354.        Perl keeps the actual data in linked list of structures
  355.        with a typedef of HE.  These contain the actual key and
  356.        value pointers (plus extra administrative overhead).  The
  357.        key is a string pointer; the value is an SSSSVVVV****.  However,
  358.        once you have an HHHHEEEE****, to get the actual key and value, use
  359.        the routines specified below.
  360.  
  361.            IIII33332222    hhhhvvvv____iiiitttteeeerrrriiiinnnniiiitttt((((HHHHVVVV****))));;;;
  362.                    ////**** PPPPrrrreeeeppppaaaarrrreeeessss ssssttttaaaarrrrttttiiiinnnngggg ppppooooiiiinnnntttt ttttoooo ttttrrrraaaavvvveeeerrrrsssseeee hhhhaaaasssshhhh ttttaaaabbbblllleeee ****////
  363.            HHHHEEEE****    hhhhvvvv____iiiitttteeeerrrrnnnneeeexxxxtttt((((HHHHVVVV****))));;;;
  364.                    ////**** GGGGeeeetttt tttthhhheeee nnnneeeexxxxtttt eeeennnnttttrrrryyyy,,,, aaaannnndddd rrrreeeettttuuuurrrrnnnn aaaa ppppooooiiiinnnntttteeeerrrr ttttoooo aaaa
  365.                       ssssttttrrrruuuuccccttttuuuurrrreeee tttthhhhaaaatttt hhhhaaaassss bbbbooootttthhhh tttthhhheeee kkkkeeeeyyyy aaaannnndddd vvvvaaaalllluuuueeee ****////
  366.            cccchhhhaaaarrrr****  hhhhvvvv____iiiitttteeeerrrrkkkkeeeeyyyy((((HHHHEEEE**** eeeennnnttttrrrryyyy,,,, IIII33332222**** rrrreeeettttlllleeeennnn))));;;;
  367.                    ////**** GGGGeeeetttt tttthhhheeee kkkkeeeeyyyy ffffrrrroooommmm aaaannnn HHHHEEEE ssssttttrrrruuuuccccttttuuuurrrreeee aaaannnndddd aaaallllssssoooo rrrreeeettttuuuurrrrnnnn
  368.                       tttthhhheeee lllleeeennnnggggtttthhhh ooooffff tttthhhheeee kkkkeeeeyyyy ssssttttrrrriiiinnnngggg ****////
  369.            SSSSVVVV****    hhhhvvvv____iiiitttteeeerrrrvvvvaaaallll((((HHHHVVVV****,,,, HHHHEEEE**** eeeennnnttttrrrryyyy))));;;;
  370.                    ////**** RRRReeeettttuuuurrrrnnnn aaaa SSSSVVVV ppppooooiiiinnnntttteeeerrrr ttttoooo tttthhhheeee vvvvaaaalllluuuueeee ooooffff tttthhhheeee HHHHEEEE
  371.                       ssssttttrrrruuuuccccttttuuuurrrreeee ****////
  372.            SSSSVVVV****    hhhhvvvv____iiiitttteeeerrrrnnnneeeexxxxttttssssvvvv((((HHHHVVVV****,,,, cccchhhhaaaarrrr******** kkkkeeeeyyyy,,,, IIII33332222**** rrrreeeettttlllleeeennnn))));;;;
  373.                    ////**** TTTThhhhiiiissss ccccoooonnnnvvvveeeennnniiiieeeennnncccceeee rrrroooouuuuttttiiiinnnneeee ccccoooommmmbbbbiiiinnnneeeessss hhhhvvvv____iiiitttteeeerrrrnnnneeeexxxxtttt,,,,
  374.                       hhhhvvvv____iiiitttteeeerrrrkkkkeeeeyyyy,,,, aaaannnndddd hhhhvvvv____iiiitttteeeerrrrvvvvaaaallll....  TTTThhhheeee kkkkeeeeyyyy aaaannnndddd rrrreeeettttlllleeeennnn
  375.                       aaaarrrrgggguuuummmmeeeennnnttttssss aaaarrrreeee rrrreeeettttuuuurrrrnnnn vvvvaaaalllluuuueeeessss ffffoooorrrr tttthhhheeee kkkkeeeeyyyy aaaannnndddd iiiittttssss
  376.                       lllleeeennnnggggtttthhhh....  TTTThhhheeee vvvvaaaalllluuuueeee iiiissss rrrreeeettttuuuurrrrnnnneeeedddd iiiinnnn tttthhhheeee SSSSVVVV**** aaaarrrrgggguuuummmmeeeennnntttt ****////
  377.  
  378.        If you know the name of a hash variable, you can get a
  379.        pointer to its HV by using the following:
  380.  
  381.            HHHHVVVV****  ppppeeeerrrrllll____ggggeeeetttt____hhhhvvvv((((""""vvvvaaaarrrrnnnnaaaammmmeeee"""",,,, FFFFAAAALLLLSSSSEEEE))));;;;
  382.  
  383.        This returns NULL if the variable does not exist.
  384.  
  385.        The hash algorithm, for those who are interested, is:
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394. 23/Jan/96                perl 5.002 with                        6
  395.  
  396.  
  397.  
  398.  
  399.  
  400. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  401.  
  402.  
  403.            iiii ==== kkkklllleeeennnn;;;;
  404.            hhhhaaaasssshhhh ==== 0000;;;;
  405.            ssss ==== kkkkeeeeyyyy;;;;
  406.            wwwwhhhhiiiilllleeee ((((iiii--------))))
  407.                hhhhaaaasssshhhh ==== hhhhaaaasssshhhh **** 33333333 ++++ ****ssss++++++++;;;;
  408.  
  409.  
  410.        RRRReeeeffffeeeerrrreeeennnncccceeeessss
  411.  
  412.        References are a special type of scalar that point to
  413.        other data types (including references).
  414.  
  415.        To create a reference, use the following command:
  416.  
  417.            SSSSVVVV**** nnnneeeewwwwRRRRVVVV((((((((SSSSVVVV****)))) tttthhhhiiiinnnngggg))));;;;
  418.  
  419.        The tttthhhhiiiinnnngggg argument can be any of an SSSSVVVV****, AAAAVVVV****, or HHHHVVVV****.
  420.        Once you have a reference, you can use the following macro
  421.        to dereference the reference:
  422.  
  423.            SSSSvvvvRRRRVVVV((((SSSSVVVV****))))
  424.  
  425.        then call the appropriate routines, casting the returned
  426.        SSSSVVVV**** to either an AAAAVVVV**** or HHHHVVVV****, if required.
  427.  
  428.        To determine if an SV is a reference, you can use the
  429.        following macro:
  430.  
  431.            SSSSvvvvRRRROOOOKKKK((((SSSSVVVV****))))
  432.  
  433.        To actually discover what the reference refers to, you
  434.        must use the following macro and then check the value
  435.        returned.
  436.  
  437.            SSSSvvvvTTTTYYYYPPPPEEEE((((SSSSvvvvRRRRVVVV((((SSSSVVVV****))))))))
  438.  
  439.        The most useful types that will be returned are:
  440.  
  441.            SSSSVVVVtttt____IIIIVVVV    SSSSccccaaaallllaaaarrrr
  442.            SSSSVVVVtttt____NNNNVVVV    SSSSccccaaaallllaaaarrrr
  443.            SSSSVVVVtttt____PPPPVVVV    SSSSccccaaaallllaaaarrrr
  444.            SSSSVVVVtttt____PPPPVVVVAAAAVVVV  AAAArrrrrrrraaaayyyy
  445.            SSSSVVVVtttt____PPPPVVVVHHHHVVVV  HHHHaaaasssshhhh
  446.            SSSSVVVVtttt____PPPPVVVVCCCCVVVV  CCCCooooddddeeee
  447.            SSSSVVVVtttt____PPPPVVVVMMMMGGGG  BBBBlllleeeesssssssseeeedddd SSSSccccaaaallllaaaarrrr
  448.  
  449.  
  450.        BBBBlllleeeesssssssseeeedddd RRRReeeeffffeeeerrrreeeennnncccceeeessss aaaannnndddd CCCCllllaaaassssssss OOOObbbbjjjjeeeeccccttttssss
  451.  
  452.        References are also used to support object-oriented
  453.        programming.  In the OO lexicon, an object is simply a
  454.        reference that has been blessed into a package (or class).
  455.        Once blessed, the programmer may now use the reference to
  456.        access the various methods in the class.
  457.  
  458.  
  459.  
  460. 23/Jan/96                perl 5.002 with                        7
  461.  
  462.  
  463.  
  464.  
  465.  
  466. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  467.  
  468.  
  469.        A reference can be blessed into a package with the
  470.        following function:
  471.  
  472.            SSSSVVVV**** ssssvvvv____bbbblllleeeessssssss((((SSSSVVVV**** ssssvvvv,,,, HHHHVVVV**** ssssttttaaaasssshhhh))));;;;
  473.  
  474.        The ssssvvvv argument must be a reference.  The ssssttttaaaasssshhhh argument
  475.        specifies which class the reference will belong to.  See
  476.        the section on the _S_t_a_s_h_e_s manpage for information on
  477.        converting class names into stashes.
  478.  
  479.        /* Still under construction */
  480.  
  481.        Upgrades rv to reference if not already one.  Creates new
  482.        SV for rv to point to.  If classname is non-null, the SV
  483.        is blessed into the specified class.  SV is returned.
  484.  
  485.                SSSSVVVV**** nnnneeeewwwwSSSSVVVVrrrrvvvv((((SSSSVVVV**** rrrrvvvv,,,, cccchhhhaaaarrrr**** ccccllllaaaassssssssnnnnaaaammmmeeee))));;;;
  486.  
  487.        Copies integer or double into an SV whose reference is rv.
  488.        SV is blessed if classname is non-null.
  489.  
  490.                SSSSVVVV**** ssssvvvv____sssseeeettttrrrreeeeffff____iiiivvvv((((SSSSVVVV**** rrrrvvvv,,,, cccchhhhaaaarrrr**** ccccllllaaaassssssssnnnnaaaammmmeeee,,,, IIIIVVVV iiiivvvv))));;;;
  491.                SSSSVVVV**** ssssvvvv____sssseeeettttrrrreeeeffff____nnnnvvvv((((SSSSVVVV**** rrrrvvvv,,,, cccchhhhaaaarrrr**** ccccllllaaaassssssssnnnnaaaammmmeeee,,,, NNNNVVVV iiiivvvv))));;;;
  492.  
  493.        Copies pointer (_n_o_t _a _s_t_r_i_n_g_!) into an SV whose reference
  494.        is rv.  SV is blessed if classname is non-null.
  495.  
  496.                SSSSVVVV**** ssssvvvv____sssseeeettttrrrreeeeffff____ppppvvvv((((SSSSVVVV**** rrrrvvvv,,,, cccchhhhaaaarrrr**** ccccllllaaaassssssssnnnnaaaammmmeeee,,,, PPPPVVVV iiiivvvv))));;;;
  497.  
  498.        Copies string into an SV whose reference is rv.  Set
  499.        length to 0 to let Perl calculate the string length.  SV
  500.        is blessed if classname is non-null.
  501.  
  502.                SSSSVVVV**** ssssvvvv____sssseeeettttrrrreeeeffff____ppppvvvvnnnn((((SSSSVVVV**** rrrrvvvv,,,, cccchhhhaaaarrrr**** ccccllllaaaassssssssnnnnaaaammmmeeee,,,, PPPPVVVV iiiivvvv,,,, iiiinnnntttt lllleeeennnnggggtttthhhh))));;;;
  503.  
  504.                iiiinnnntttt ssssvvvv____iiiissssaaaa((((SSSSVVVV**** ssssvvvv,,,, cccchhhhaaaarrrr**** nnnnaaaammmmeeee))));;;;
  505.                iiiinnnntttt ssssvvvv____iiiissssoooobbbbjjjjeeeecccctttt((((SSSSVVVV**** ssssvvvv))));;;;
  506.  
  507.  
  508. CCCCrrrreeeeaaaattttiiiinnnngggg NNNNeeeewwww VVVVaaaarrrriiiiaaaabbbblllleeeessss
  509.        To create a new Perl variable, which can be accessed from
  510.        your Perl script, use the following routines, depending on
  511.        the variable type.
  512.  
  513.            SSSSVVVV****  ppppeeeerrrrllll____ggggeeeetttt____ssssvvvv((((""""vvvvaaaarrrrnnnnaaaammmmeeee"""",,,, TTTTRRRRUUUUEEEE))));;;;
  514.            AAAAVVVV****  ppppeeeerrrrllll____ggggeeeetttt____aaaavvvv((((""""vvvvaaaarrrrnnnnaaaammmmeeee"""",,,, TTTTRRRRUUUUEEEE))));;;;
  515.            HHHHVVVV****  ppppeeeerrrrllll____ggggeeeetttt____hhhhvvvv((((""""vvvvaaaarrrrnnnnaaaammmmeeee"""",,,, TTTTRRRRUUUUEEEE))));;;;
  516.  
  517.        Notice the use of TRUE as the second parameter.  The new
  518.        variable can now be set, using the routines appropriate to
  519.        the data type.
  520.  
  521.        There are additional bits that may be OR'ed with the TRUE
  522.        argument to enable certain extra features.  Those bits
  523.  
  524.  
  525.  
  526. 23/Jan/96                perl 5.002 with                        8
  527.  
  528.  
  529.  
  530.  
  531.  
  532. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  533.  
  534.  
  535.        are:
  536.  
  537.            0000xxxx00002222  MMMMaaaarrrrkkkkssss tttthhhheeee vvvvaaaarrrriiiiaaaabbbblllleeee aaaassss mmmmuuuullllttttiiiippppllllyyyy ddddeeeeffffiiiinnnneeeedddd,,,, tttthhhhuuuussss pppprrrreeeevvvveeeennnnttttiiiinnnngggg tttthhhheeee
  538.                  """"IIIInnnnddddeeeennnnttttiiiiffffiiiieeeerrrr <<<<vvvvaaaarrrrnnnnaaaammmmeeee>>>> uuuusssseeeedddd oooonnnnllllyyyy oooonnnncccceeee:::: ppppoooossssssssiiiibbbblllleeee ttttyyyyppppoooo"""" wwwwaaaarrrrnnnniiiinnnngggg....
  539.            0000xxxx00004444  IIIIssssssssuuuueeeessss aaaa """"HHHHaaaadddd ttttoooo ccccrrrreeeeaaaatttteeee <<<<vvvvaaaarrrrnnnnaaaammmmeeee>>>> uuuunnnneeeexxxxppppeeeecccctttteeeeddddllllyyyy"""" wwwwaaaarrrrnnnniiiinnnngggg iiiiffff
  540.                  tttthhhheeee vvvvaaaarrrriiiiaaaabbbblllleeee ddddiiiiddddnnnn''''tttt aaaaccccttttuuuuaaaallllllllyyyy eeeexxxxiiiisssstttt....  TTTThhhhiiiissss iiiissss uuuusssseeeeffffuuuullll iiiiffff
  541.                  yyyyoooouuuu eeeexxxxppppeeeecccctttteeeedddd tttthhhheeee vvvvaaaarrrriiiiaaaabbbblllleeee ttttoooo aaaallllrrrreeeeaaaaddddyyyy eeeexxxxiiiisssstttt aaaannnndddd wwwwaaaannnntttt ttttoooo pppprrrrooooppppaaaaggggaaaatttteeee
  542.                  tttthhhhiiiissss wwwwaaaarrrrnnnniiiinnnngggg bbbbaaaacccckkkk ttttoooo tttthhhheeee uuuusssseeeerrrr....
  543.  
  544.        If the vvvvaaaarrrrnnnnaaaammmmeeee argument does not contain a package
  545.        specifier, it is created in the current package.
  546.  
  547. XXXXSSSSUUUUBBBB''''ssss aaaannnndddd tttthhhheeee AAAArrrrgggguuuummmmeeeennnntttt SSSSttttaaaacccckkkk
  548.        The XSUB mechanism is a simple way for Perl programs to
  549.        access C subroutines.  An XSUB routine will have a stack
  550.        that contains the arguments from the Perl program, and a
  551.        way to map from the Perl data structures to a C
  552.        equivalent.
  553.  
  554.        The stack arguments are accessible through the SSSSTTTT((((nnnn))))
  555.        macro, which returns the nnnn'th stack argument.  Argument 0
  556.        is the first argument passed in the Perl subroutine call.
  557.        These arguments are SSSSVVVV****, and can be used anywhere an SSSSVVVV****
  558.        is used.
  559.  
  560.        Most of the time, output from the C routine can be handled
  561.        through use of the RETVAL and OUTPUT directives.  However,
  562.        there are some cases where the argument stack is not
  563.        already long enough to handle all the return values.  An
  564.        example is the POSIX _t_z_n_a_m_e_(_) call, which takes no
  565.        arguments, but returns two, the local timezone's standard
  566.        and summer time abbreviations.
  567.  
  568.        To handle this situation, the PPCODE directive is used and
  569.        the stack is extended using the macro:
  570.  
  571.            EEEEXXXXTTTTEEEENNNNDDDD((((sssspppp,,,, nnnnuuuummmm))));;;;
  572.  
  573.        where sssspppp is the stack pointer, and nnnnuuuummmm is the number of
  574.        elements the stack should be extended by.
  575.  
  576.        Now that there is room on the stack, values can be pushed
  577.        on it using the macros to push IV's, doubles, strings, and
  578.        SV pointers respectively:
  579.  
  580.            PPPPUUUUSSSSHHHHiiii((((IIIIVVVV))))
  581.            PPPPUUUUSSSSHHHHnnnn((((ddddoooouuuubbbblllleeee))))
  582.            PPPPUUUUSSSSHHHHpppp((((cccchhhhaaaarrrr****,,,, IIII33332222))))
  583.            PPPPUUUUSSSSHHHHssss((((SSSSVVVV****))))
  584.  
  585.        And now the Perl program calling ttttzzzznnnnaaaammmmeeee, the two values
  586.        will be assigned as in:
  587.  
  588.            (((($$$$ssssttttaaaannnnddddaaaarrrrdddd____aaaabbbbbbbbrrrreeeevvvv,,,, $$$$ssssuuuummmmmmmmeeeerrrr____aaaabbbbbbbbrrrreeeevvvv)))) ==== PPPPOOOOSSSSIIIIXXXX::::::::ttttzzzznnnnaaaammmmeeee;;;;
  589.  
  590.  
  591.  
  592. 23/Jan/96                perl 5.002 with                        9
  593.  
  594.  
  595.  
  596.  
  597.  
  598. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  599.  
  600.  
  601.        An alternate (and possibly simpler) method to pushing
  602.        values on the stack is to use the macros:
  603.  
  604.            XXXXPPPPUUUUSSSSHHHHiiii((((IIIIVVVV))))
  605.            XXXXPPPPUUUUSSSSHHHHnnnn((((ddddoooouuuubbbblllleeee))))
  606.            XXXXPPPPUUUUSSSSHHHHpppp((((cccchhhhaaaarrrr****,,,, IIII33332222))))
  607.            XXXXPPPPUUUUSSSSHHHHssss((((SSSSVVVV****))))
  608.  
  609.        These macros automatically adjust the stack for you, if
  610.        needed.
  611.  
  612.        For more information, consult the _p_e_r_l_x_s manpage.
  613.  
  614. MMMMoooorrrrttttaaaalllliiiittttyyyy
  615.        In Perl, values are normally "immortal" -- that is, they
  616.        are not freed unless explicitly done so (via the Perl
  617.        uuuunnnnddddeeeeffff call or other routines in Perl itself).
  618.  
  619.        Add cruft about reference counts.       int SvREFCNT(SV*
  620.        sv);      void SvREFCNT_inc(SV* sv);      void
  621.        SvREFCNT_dec(SV* sv);
  622.  
  623.        In the above example with ttttzzzznnnnaaaammmmeeee, we needed to create two
  624.        new SV's to push onto the argument stack, that being the
  625.        two strings.  However, we don't want these new SV's to
  626.        stick around forever because they will eventually be
  627.        copied into the SV's that hold the two scalar variables.
  628.  
  629.        An SV (or AV or HV) that is "mortal" acts in all ways as a
  630.        normal "immortal" SV, AV, or HV, but is only valid in the
  631.        "current context".  When the Perl interpreter leaves the
  632.        current context, the mortal SV, AV, or HV is automatically
  633.        freed.  Generally the "current context" means a single
  634.        Perl statement.
  635.  
  636.        To create a mortal variable, use the functions:
  637.  
  638.            SSSSVVVV****  ssssvvvv____nnnneeeewwwwmmmmoooorrrrttttaaaallll(((())))
  639.            SSSSVVVV****  ssssvvvv____2222mmmmoooorrrrttttaaaallll((((SSSSVVVV****))))
  640.            SSSSVVVV****  ssssvvvv____mmmmoooorrrrttttaaaallllccccooooppppyyyy((((SSSSVVVV****))))
  641.  
  642.        The first call creates a mortal SV, the second converts an
  643.        existing SV to a mortal SV, the third creates a mortal
  644.        copy of an existing SV.
  645.  
  646.        The mortal routines are not just for SV's -- AV's and HV's
  647.        can be made mortal by passing their address (and casting
  648.        them to SSSSVVVV****) to the ssssvvvv____2222mmmmoooorrrrttttaaaallll or ssssvvvv____mmmmoooorrrrttttaaaallllccccooooppppyyyy routines.
  649.  
  650.        >From Ilya: Beware that the _s_v___2_m_o_r_t_a_l_(_) call is
  651.        eventually equivalent to _s_v_R_E_F_C_N_T___d_e_c_(_). A value can
  652.        happily be mortal in two different contexts, and it will
  653.        be _s_v_R_E_F_C_N_T___d_e_c_(_)ed twice, once on exit from these
  654.        contexts. It can also be mortal twice in the same context.
  655.  
  656.  
  657.  
  658. 23/Jan/96                perl 5.002 with                       10
  659.  
  660.  
  661.  
  662.  
  663.  
  664. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  665.  
  666.  
  667.        This means that you should be very careful to make a value
  668.        mortal exactly as many times as it is needed. The value
  669.        that go to the Perl stack _s_h_o_u_l_d be mortal.
  670.  
  671.        You should be careful about creating mortal variables.  It
  672.        is possible for strange things to happen should you make
  673.        the same value mortal within multiple contexts.
  674.  
  675. SSSSttttaaaasssshhhheeeessss
  676.        A stash is a hash table (associative array) that contains
  677.        all of the different objects that are contained within a
  678.        package.  Each key of the stash is a symbol name (shared
  679.        by all the different types of objects that have the same
  680.        name), and each value in the hash table is called a GV
  681.        (for Glob Value).  This GV in turn contains references to
  682.        the various objects of that name, including (but not
  683.        limited to) the following:
  684.  
  685.            SSSSccccaaaallllaaaarrrr VVVVaaaalllluuuueeee
  686.            AAAArrrrrrrraaaayyyy VVVVaaaalllluuuueeee
  687.            HHHHaaaasssshhhh VVVVaaaalllluuuueeee
  688.            FFFFiiiilllleeee HHHHaaaannnnddddlllleeee
  689.            DDDDiiiirrrreeeeccccttttoooorrrryyyy HHHHaaaannnnddddlllleeee
  690.            FFFFoooorrrrmmmmaaaatttt
  691.            SSSSuuuubbbbrrrroooouuuuttttiiiinnnneeee
  692.  
  693.        Perl stores various stashes in a separate GV structure
  694.        (for global variable) but represents them with an HV
  695.        structure.  The keys in this larger GV are the various
  696.        package names; the values are the GGGGVVVV****'s which are stashes.
  697.        It may help to think of a stash purely as an HV, and that
  698.        the term "GV" means the global variable hash.
  699.  
  700.        To get the stash pointer for a particular package, use the
  701.        function:
  702.  
  703.            HHHHVVVV****  ggggvvvv____ssssttttaaaasssshhhhppppvvvv((((cccchhhhaaaarrrr**** nnnnaaaammmmeeee,,,, IIII33332222 ccccrrrreeeeaaaatttteeee))))
  704.            HHHHVVVV****  ggggvvvv____ssssttttaaaasssshhhhssssvvvv((((SSSSVVVV****,,,, IIII33332222 ccccrrrreeeeaaaatttteeee))))
  705.  
  706.        The first function takes a literal string, the second uses
  707.        the string stored in the SV.  Remember that a stash is
  708.        just a hash table, so you get back an HHHHVVVV****.  The ccccrrrreeeeaaaatttteeee
  709.        flag will create a new package if it is set.
  710.  
  711.        The name that ggggvvvv____ssssttttaaaasssshhhh****vvvv wants is the name of the package
  712.        whose symbol table you want.  The default package is
  713.        called mmmmaaaaiiiinnnn.  If you have multiply nested packages, pass
  714.        their names to ggggvvvv____ssssttttaaaasssshhhh****vvvv, separated by :::::::: as in the Perl
  715.        language itself.
  716.  
  717.        Alternately, if you have an SV that is a blessed
  718.        reference, you can find out the stash pointer by using:
  719.  
  720.            HHHHVVVV****  SSSSvvvvSSSSTTTTAAAASSSSHHHH((((SSSSvvvvRRRRVVVV((((SSSSVVVV****))))))));;;;
  721.  
  722.  
  723.  
  724. 23/Jan/96                perl 5.002 with                       11
  725.  
  726.  
  727.  
  728.  
  729.  
  730. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  731.  
  732.  
  733.        then use the following to get the package name itself:
  734.  
  735.            cccchhhhaaaarrrr****  HHHHvvvvNNNNAAAAMMMMEEEE((((HHHHVVVV**** ssssttttaaaasssshhhh))));;;;
  736.  
  737.        If you need to return a blessed value to your Perl script,
  738.        you can use the following function:
  739.  
  740.            SSSSVVVV****  ssssvvvv____bbbblllleeeessssssss((((SSSSVVVV****,,,, HHHHVVVV**** ssssttttaaaasssshhhh))))
  741.  
  742.        where the first argument, an SSSSVVVV****, must be a reference, and
  743.        the second argument is a stash.  The returned SSSSVVVV**** can now
  744.        be used in the same way as any other SV.
  745.  
  746.        For more information on references and blessings, consult
  747.        the _p_e_r_l_r_e_f manpage.
  748.  
  749. MMMMaaaaggggiiiicccc
  750.        [This section still under construction.  Ignore everything
  751.        here.  Post no bills.  Everything not permitted is
  752.        forbidden.]
  753.  
  754.        # Version 6, 1995/1/27
  755.  
  756.        Any SV may be magical, that is, it has special features
  757.        that a normal SV does not have.  These features are stored
  758.        in the SV structure in a linked list of ssssttttrrrruuuucccctttt mmmmaaaaggggiiiicccc's,
  759.        typedef'ed to MMMMAAAAGGGGIIIICCCC.
  760.  
  761.            ssssttttrrrruuuucccctttt mmmmaaaaggggiiiicccc {{{{
  762.                MMMMAAAAGGGGIIIICCCC****      mmmmgggg____mmmmoooorrrreeeemmmmaaaaggggiiiicccc;;;;
  763.                MMMMGGGGVVVVTTTTBBBBLLLL****     mmmmgggg____vvvviiiirrrrttttuuuuaaaallll;;;;
  764.                UUUU11116666         mmmmgggg____pppprrrriiiivvvvaaaatttteeee;;;;
  765.                cccchhhhaaaarrrr        mmmmgggg____ttttyyyyppppeeee;;;;
  766.                UUUU8888          mmmmgggg____ffffllllaaaaggggssss;;;;
  767.                SSSSVVVV****         mmmmgggg____oooobbbbjjjj;;;;
  768.                cccchhhhaaaarrrr****       mmmmgggg____ppppttttrrrr;;;;
  769.                IIII33332222         mmmmgggg____lllleeeennnn;;;;
  770.            }}}};;;;
  771.  
  772.        Note this is current as of patchlevel 0, and could change
  773.        at any time.
  774.  
  775.        AAAAssssssssiiiiggggnnnniiiinnnngggg MMMMaaaaggggiiiicccc
  776.  
  777.        Perl adds magic to an SV using the sv_magic function:
  778.  
  779.            vvvvooooiiiidddd ssssvvvv____mmmmaaaaggggiiiicccc((((SSSSVVVV**** ssssvvvv,,,, SSSSVVVV**** oooobbbbjjjj,,,, iiiinnnntttt hhhhoooowwww,,,, cccchhhhaaaarrrr**** nnnnaaaammmmeeee,,,, IIII33332222 nnnnaaaammmmlllleeeennnn))));;;;
  780.  
  781.        The ssssvvvv argument is a pointer to the SV that is to acquire
  782.        a new magical feature.
  783.  
  784.        If ssssvvvv is not already magical, Perl uses the SSSSvvvvUUUUPPPPGGGGRRRRAAAADDDDEEEE
  785.        macro to set the SSSSVVVVtttt____PPPPVVVVMMMMGGGG flag for the ssssvvvv.  Perl then
  786.        continues by adding it to the beginning of the linked list
  787.  
  788.  
  789.  
  790. 23/Jan/96                perl 5.002 with                       12
  791.  
  792.  
  793.  
  794.  
  795.  
  796. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  797.  
  798.  
  799.        of magical features.  Any prior entry of the same type of
  800.        magic is deleted.  Note that this can be overriden, and
  801.        multiple instances of the same type of magic can be
  802.        associated with an SV.
  803.  
  804.        The nnnnaaaammmmeeee and nnnnaaaammmmlllleeeemmmm arguments are used to associate a
  805.        string with the magic, typically the name of a variable.
  806.        nnnnaaaammmmlllleeeemmmm is stored in the mmmmgggg____lllleeeennnn field and if nnnnaaaammmmeeee is non-
  807.        null and nnnnaaaammmmlllleeeemmmm >= 0 a malloc'd copy of the name is stored
  808.        in mmmmgggg____ppppttttrrrr field.
  809.  
  810.        The sv_magic function uses hhhhoooowwww to determine which, if any,
  811.        predefined "Magic Virtual Table" should be assigned to the
  812.        mmmmgggg____vvvviiiirrrrttttuuuuaaaallll field.  See the "Magic Virtual Table" section
  813.        below.  The hhhhoooowwww argument is also stored in the mmmmgggg____ttttyyyyppppeeee
  814.        field.
  815.  
  816.        The oooobbbbjjjj argument is stored in the mmmmgggg____oooobbbbjjjj field of the
  817.        MMMMAAAAGGGGIIIICCCC structure.  If it is not the same as the ssssvvvv
  818.        argument, the reference count of the oooobbbbjjjj object is
  819.        incremented.  If it is the same, or if the hhhhoooowwww argument is
  820.        "#", or if it is a null pointer, then oooobbbbjjjj is merely
  821.        stored, without the reference count being incremented.
  822.  
  823.        There is also a function to add magic to an HHHHVVVV:
  824.  
  825.            vvvvooooiiiidddd hhhhvvvv____mmmmaaaaggggiiiicccc((((HHHHVVVV ****hhhhvvvv,,,, GGGGVVVV ****ggggvvvv,,,, iiiinnnntttt hhhhoooowwww))));;;;
  826.  
  827.        This simply calls ssssvvvv____mmmmaaaaggggiiiicccc and coerces the ggggvvvv argument
  828.        into an SSSSVVVV.
  829.  
  830.        To remove the magic from an SV, call the function
  831.        sv_unmagic:
  832.  
  833.            vvvvooooiiiidddd ssssvvvv____uuuunnnnmmmmaaaaggggiiiicccc((((SSSSVVVV ****ssssvvvv,,,, iiiinnnntttt ttttyyyyppppeeee))));;;;
  834.  
  835.        The ttttyyyyppppeeee argument should be equal to the hhhhoooowwww value when
  836.        the SSSSVVVV was initially made magical.
  837.  
  838.        MMMMaaaaggggiiiicccc VVVViiiirrrrttttuuuuaaaallll TTTTaaaabbbblllleeeessss
  839.  
  840.        The mmmmgggg____vvvviiiirrrrttttuuuuaaaallll field in the MMMMAAAAGGGGIIIICCCC structure is a pointer
  841.        to a MMMMGGGGVVVVTTTTBBBBLLLL, which is a structure of function pointers and
  842.        stands for "Magic Virtual Table" to handle the various
  843.        operations that might be applied to that variable.
  844.  
  845.        The MMMMGGGGVVVVTTTTBBBBLLLL has five pointers to the following routine
  846.        types:
  847.  
  848.            iiiinnnntttt  ((((****ssssvvvvtttt____ggggeeeetttt))))((((SSSSVVVV**** ssssvvvv,,,, MMMMAAAAGGGGIIIICCCC**** mmmmgggg))));;;;
  849.            iiiinnnntttt  ((((****ssssvvvvtttt____sssseeeetttt))))((((SSSSVVVV**** ssssvvvv,,,, MMMMAAAAGGGGIIIICCCC**** mmmmgggg))));;;;
  850.            UUUU33332222  ((((****ssssvvvvtttt____lllleeeennnn))))((((SSSSVVVV**** ssssvvvv,,,, MMMMAAAAGGGGIIIICCCC**** mmmmgggg))));;;;
  851.            iiiinnnntttt  ((((****ssssvvvvtttt____cccclllleeeeaaaarrrr))))((((SSSSVVVV**** ssssvvvv,,,, MMMMAAAAGGGGIIIICCCC**** mmmmgggg))));;;;
  852.            iiiinnnntttt  ((((****ssssvvvvtttt____ffffrrrreeeeeeee))))((((SSSSVVVV**** ssssvvvv,,,, MMMMAAAAGGGGIIIICCCC**** mmmmgggg))));;;;
  853.  
  854.  
  855.  
  856. 23/Jan/96                perl 5.002 with                       13
  857.  
  858.  
  859.  
  860.  
  861.  
  862. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  863.  
  864.  
  865.        This MGVTBL structure is set at compile-time in ppppeeeerrrrllll....hhhh and
  866.        there are currently 19 types (or 21 with overloading
  867.        turned on).  These different structures contain pointers
  868.        to various routines that perform additional actions
  869.        depending on which function is being called.
  870.  
  871.            FFFFuuuunnnnccccttttiiiioooonnnn ppppooooiiiinnnntttteeeerrrr    AAAAccccttttiiiioooonnnn ttttaaaakkkkeeeennnn
  872.            ----------------------------------------------------------------    ------------------------------------------------
  873.            ssssvvvvtttt____ggggeeeetttt             DDDDoooo ssssoooommmmeeeetttthhhhiiiinnnngggg aaaafffftttteeeerrrr tttthhhheeee vvvvaaaalllluuuueeee ooooffff tttthhhheeee SSSSVVVV iiiissss rrrreeeettttrrrriiiieeeevvvveeeedddd....
  874.            ssssvvvvtttt____sssseeeetttt             DDDDoooo ssssoooommmmeeeetttthhhhiiiinnnngggg aaaafffftttteeeerrrr tttthhhheeee SSSSVVVV iiiissss aaaassssssssiiiiggggnnnneeeedddd aaaa vvvvaaaalllluuuueeee....
  875.            ssssvvvvtttt____lllleeeennnn             RRRReeeeppppoooorrrrtttt oooonnnn tttthhhheeee SSSSVVVV''''ssss lllleeeennnnggggtttthhhh....
  876.            ssssvvvvtttt____cccclllleeeeaaaarrrr           CCCClllleeeeaaaarrrr ssssoooommmmeeeetttthhhhiiiinnnngggg tttthhhheeee SSSSVVVV rrrreeeepppprrrreeeesssseeeennnnttttssss....
  877.            ssssvvvvtttt____ffffrrrreeeeeeee            FFFFrrrreeeeeeee aaaannnnyyyy eeeexxxxttttrrrraaaa ssssttttoooorrrraaaaggggeeee aaaassssssssoooocccciiiiaaaatttteeeedddd wwwwiiiitttthhhh tttthhhheeee SSSSVVVV....
  878.  
  879.        For instance, the MGVTBL structure called vvvvttttbbbbllll____ssssvvvv (which
  880.        corresponds to an mmmmgggg____ttttyyyyppppeeee of '\0') contains:
  881.  
  882.            {{{{ mmmmaaaaggggiiiicccc____ggggeeeetttt,,,, mmmmaaaaggggiiiicccc____sssseeeetttt,,,, mmmmaaaaggggiiiicccc____lllleeeennnn,,,, 0000,,,, 0000 }}}}
  883.  
  884.        Thus, when an SV is determined to be magical and of type
  885.        '\0', if a get operation is being performed, the routine
  886.        mmmmaaaaggggiiiicccc____ggggeeeetttt is called.  All the various routines for the
  887.        various magical types begin with mmmmaaaaggggiiiicccc____.
  888.  
  889.        The current kinds of Magic Virtual Tables are:
  890.  
  891.            mmmmgggg____ttttyyyyppppeeee  MMMMGGGGVVVVTTTTBBBBLLLL              TTTTyyyyppppeeee ooooffff mmmmaaaaggggiiiiccccaaaallllnnnneeeessssssss
  892.            ----------------------------  ------------------------              ----------------------------------------------------------------------------
  893.            \\\\0000       vvvvttttbbbbllll____ssssvvvv             RRRReeeeggggeeeexxxxpppp????????????
  894.            AAAA        vvvvttttbbbbllll____aaaammmmaaaaggggiiiicccc         OOOOppppeeeerrrraaaattttoooorrrr OOOOvvvveeeerrrrllllooooaaaaddddiiiinnnngggg
  895.            aaaa        vvvvttttbbbbllll____aaaammmmaaaaggggiiiicccceeeelllleeeemmmm     OOOOppppeeeerrrraaaattttoooorrrr OOOOvvvveeeerrrrllllooooaaaaddddiiiinnnngggg
  896.            cccc        0000                   UUUUsssseeeedddd iiiinnnn OOOOppppeeeerrrraaaattttoooorrrr OOOOvvvveeeerrrrllllooooaaaaddddiiiinnnngggg
  897.            BBBB        vvvvttttbbbbllll____bbbbmmmm             BBBBooooyyyyeeeerrrr----MMMMoooooooorrrreeee????????????
  898.            EEEE        vvvvttttbbbbllll____eeeennnnvvvv            %%%%EEEENNNNVVVV hhhhaaaasssshhhh
  899.            eeee        vvvvttttbbbbllll____eeeennnnvvvveeeelllleeeemmmm        %%%%EEEENNNNVVVV hhhhaaaasssshhhh eeeelllleeeemmmmeeeennnntttt
  900.            gggg        vvvvttttbbbbllll____mmmmgggglllloooobbbb          RRRReeeeggggeeeexxxxpppp ////gggg ffffllllaaaagggg????????????
  901.            IIII        vvvvttttbbbbllll____iiiissssaaaa            @@@@IIIISSSSAAAA aaaarrrrrrrraaaayyyy
  902.            iiii        vvvvttttbbbbllll____iiiissssaaaaeeeelllleeeemmmm        @@@@IIIISSSSAAAA aaaarrrrrrrraaaayyyy eeeelllleeeemmmmeeeennnntttt
  903.            LLLL        0000 ((((bbbbuuuutttt sssseeeettttssss RRRRMMMMAAAAGGGGIIIICCCCAAAALLLL))))     PPPPeeeerrrrllll MMMMoooodddduuuulllleeee////DDDDeeeebbbbuuuuggggggggeeeerrrr????????????
  904.            llll        vvvvttttbbbbllll____ddddbbbblllliiiinnnneeee         DDDDeeeebbbbuuuuggggggggeeeerrrr????
  905.            PPPP        vvvvttttbbbbllll____ppppaaaacccckkkk           TTTTiiiieeeedddd AAAArrrrrrrraaaayyyy oooorrrr HHHHaaaasssshhhh
  906.            pppp        vvvvttttbbbbllll____ppppaaaacccckkkkeeeelllleeeemmmm       TTTTiiiieeeedddd AAAArrrrrrrraaaayyyy oooorrrr HHHHaaaasssshhhh eeeelllleeeemmmmeeeennnntttt
  907.            qqqq        vvvvttttbbbbllll____ppppaaaacccckkkkeeeelllleeeemmmm       TTTTiiiieeeedddd SSSSccccaaaallllaaaarrrr oooorrrr HHHHaaaannnnddddlllleeee
  908.            SSSS        vvvvttttbbbbllll____ssssiiiigggg            SSSSiiiiggggnnnnaaaallll HHHHaaaasssshhhh
  909.            ssss        vvvvttttbbbbllll____ssssiiiiggggeeeelllleeeemmmm        SSSSiiiiggggnnnnaaaallll HHHHaaaasssshhhh eeeelllleeeemmmmeeeennnntttt
  910.            tttt        vvvvttttbbbbllll____ttttaaaaiiiinnnntttt          TTTTaaaaiiiinnnntttteeeeddddnnnneeeessssssss
  911.            UUUU        vvvvttttbbbbllll____uuuuvvvvaaaarrrr           ????????????
  912.            vvvv        vvvvttttbbbbllll____vvvveeeecccc            VVVVeeeeccccttttoooorrrr
  913.            xxxx        vvvvttttbbbbllll____ssssuuuubbbbssssttttrrrr         SSSSuuuubbbbssssttttrrrriiiinnnngggg????????????
  914.            ****        vvvvttttbbbbllll____gggglllloooobbbb           GGGGVVVV????????????
  915.            ####        vvvvttttbbbbllll____aaaarrrryyyylllleeeennnn         AAAArrrrrrrraaaayyyy LLLLeeeennnnggggtttthhhh
  916.            ....        vvvvttttbbbbllll____ppppoooossss            $$$$.... ssssccccaaaallllaaaarrrr vvvvaaaarrrriiiiaaaabbbblllleeee
  917.            ~~~~        RRRReeeesssseeeerrrrvvvveeeedddd ffffoooorrrr eeeexxxxtttteeeennnnssssiiiioooonnnnssss,,,, bbbbuuuutttt mmmmuuuullllttttiiiipppplllleeee eeeexxxxtttteeeennnnssssiiiioooonnnnssss mmmmaaaayyyy ccccllllaaaasssshhhh
  918.  
  919.  
  920.  
  921.  
  922. 23/Jan/96                perl 5.002 with                       14
  923.  
  924.  
  925.  
  926.  
  927.  
  928. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  929.  
  930.  
  931.        When an upper-case and lower-case letter both exist in the
  932.        table, then the upper-case letter is used to represent
  933.        some kind of composite type (a list or a hash), and the
  934.        lower-case letter is used to represent an element of that
  935.        composite type.
  936.  
  937.        FFFFiiiinnnnddddiiiinnnngggg MMMMaaaaggggiiiicccc
  938.  
  939.  
  940.            MMMMAAAAGGGGIIIICCCC**** mmmmgggg____ffffiiiinnnndddd((((SSSSVVVV****,,,, iiiinnnntttt ttttyyyyppppeeee))));;;; ////**** FFFFiiiinnnnddddssss tttthhhheeee mmmmaaaaggggiiiicccc ppppooooiiiinnnntttteeeerrrr ooooffff tttthhhhaaaatttt ttttyyyyppppeeee ****////
  941.  
  942.        This routine returns a pointer to the MMMMAAAAGGGGIIIICCCC structure
  943.        stored in the SV.  If the SV does not have that magical
  944.        feature, NNNNUUUULLLLLLLL is returned.  Also, if the SV is not of type
  945.        SVt_PVMG, Perl may core-dump.
  946.  
  947.            iiiinnnntttt mmmmgggg____ccccooooppppyyyy((((SSSSVVVV**** ssssvvvv,,,, SSSSVVVV**** nnnnssssvvvv,,,, cccchhhhaaaarrrr**** kkkkeeeeyyyy,,,, SSSSTTTTRRRRLLLLEEEENNNN kkkklllleeeennnn))));;;;
  948.  
  949.        This routine checks to see what types of magic ssssvvvv has.  If
  950.        the mg_type field is an upper-case letter, then the mg_obj
  951.        is copied to nnnnssssvvvv, but the mg_type field is changed to be
  952.        the lower-case letter.
  953.  
  954. DDDDoooouuuubbbblllleeee----TTTTyyyyppppeeeedddd SSSSVVVV''''ssss
  955.        Scalar variables normally contain only one type of value,
  956.        an integer, double, pointer, or reference.  Perl will
  957.        automatically convert the actual scalar data from the
  958.        stored type into the requested type.
  959.  
  960.        Some scalar variables contain more than one type of scalar
  961.        data.  For example, the variable $$$$!!!! contains either the
  962.        numeric value of eeeerrrrrrrrnnnnoooo or its string equivalent from
  963.        either ssssttttrrrreeeerrrrrrrroooorrrr or ssssyyyyssss____eeeerrrrrrrrlllliiiisssstttt[[[[]]]].
  964.  
  965.        To force multiple data values into an SV, you must do two
  966.        things: use the ssssvvvv____sssseeeetttt****vvvv routines to add the additional
  967.        scalar type, then set a flag so that Perl will believe it
  968.        contains more than one type of data.  The four macros to
  969.        set the flags are:
  970.  
  971.                SSSSvvvvIIIIOOOOKKKK____oooonnnn
  972.                SSSSvvvvNNNNOOOOKKKK____oooonnnn
  973.                SSSSvvvvPPPPOOOOKKKK____oooonnnn
  974.                SSSSvvvvRRRROOOOKKKK____oooonnnn
  975.  
  976.        The particular macro you must use depends on which
  977.        ssssvvvv____sssseeeetttt****vvvv routine you called first.  This is because every
  978.        ssssvvvv____sssseeeetttt****vvvv routine turns on only the bit for the particular
  979.        type of data being set, and turns off all the rest.
  980.  
  981.        For example, to create a new Perl variable called
  982.        "dberror" that contains both the numeric and descriptive
  983.        string error values, you could use the following code:
  984.  
  985.  
  986.  
  987.  
  988. 23/Jan/96                perl 5.002 with                       15
  989.  
  990.  
  991.  
  992.  
  993.  
  994. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  995.  
  996.  
  997.            eeeexxxxtttteeeerrrrnnnn iiiinnnntttt  ddddbbbbeeeerrrrrrrroooorrrr;;;;
  998.            eeeexxxxtttteeeerrrrnnnn cccchhhhaaaarrrr ****ddddbbbbeeeerrrrrrrroooorrrr____lllliiiisssstttt;;;;
  999.  
  1000.            SSSSVVVV**** ssssvvvv ==== ppppeeeerrrrllll____ggggeeeetttt____ssssvvvv((((""""ddddbbbbeeeerrrrrrrroooorrrr"""",,,, TTTTRRRRUUUUEEEE))));;;;
  1001.            ssssvvvv____sssseeeettttiiiivvvv((((ssssvvvv,,,, ((((IIIIVVVV)))) ddddbbbbeeeerrrrrrrroooorrrr))));;;;
  1002.            ssssvvvv____sssseeeettttppppvvvv((((ssssvvvv,,,, ddddbbbbeeeerrrrrrrroooorrrr____lllliiiisssstttt[[[[ddddbbbbeeeerrrrrrrroooorrrr]]]]))));;;;
  1003.            SSSSvvvvIIIIOOOOKKKK____oooonnnn((((ssssvvvv))));;;;
  1004.  
  1005.        If the order of ssssvvvv____sssseeeettttiiiivvvv and ssssvvvv____sssseeeettttppppvvvv had been reversed,
  1006.        then the macro SSSSvvvvPPPPOOOOKKKK____oooonnnn would need to be called instead of
  1007.        SSSSvvvvIIIIOOOOKKKK____oooonnnn.
  1008.  
  1009. CCCCaaaalllllllliiiinnnngggg PPPPeeeerrrrllll RRRRoooouuuuttttiiiinnnneeeessss ffffrrrroooommmm wwwwiiiitttthhhhiiiinnnn CCCC PPPPrrrrooooggggrrrraaaammmmssss
  1010.        There are four routines that can be used to call a Perl
  1011.        subroutine from within a C program.  These four are:
  1012.  
  1013.            IIII33332222  ppppeeeerrrrllll____ccccaaaallllllll____ssssvvvv((((SSSSVVVV****,,,, IIII33332222))));;;;
  1014.            IIII33332222  ppppeeeerrrrllll____ccccaaaallllllll____ppppvvvv((((cccchhhhaaaarrrr****,,,, IIII33332222))));;;;
  1015.            IIII33332222  ppppeeeerrrrllll____ccccaaaallllllll____mmmmeeeetttthhhhoooodddd((((cccchhhhaaaarrrr****,,,, IIII33332222))));;;;
  1016.            IIII33332222  ppppeeeerrrrllll____ccccaaaallllllll____aaaarrrrggggvvvv((((cccchhhhaaaarrrr****,,,, IIII33332222,,,, rrrreeeeggggiiiisssstttteeeerrrr cccchhhhaaaarrrr********))));;;;
  1017.  
  1018.        The routine most often used is ppppeeeerrrrllll____ccccaaaallllllll____ssssvvvv.  The SSSSVVVV****
  1019.        argument contains either the name of the Perl subroutine
  1020.        to be called, or a reference to the subroutine.  The
  1021.        second argument consists of flags that control the context
  1022.        in which the subroutine is called, whether or not the
  1023.        subroutine is being passed arguments, how errors should be
  1024.        trapped, and how to treat return values.
  1025.  
  1026.        All four routines return the number of arguments that the
  1027.        subroutine returned on the Perl stack.
  1028.  
  1029.        When using any of these routines (except ppppeeeerrrrllll____ccccaaaallllllll____aaaarrrrggggvvvv),
  1030.        the programmer must manipulate the Perl stack.  These
  1031.        include the following macros and functions:
  1032.  
  1033.            ddddSSSSPPPP
  1034.            PPPPUUUUSSSSHHHHMMMMAAAARRRRKKKK(((())))
  1035.            PPPPUUUUTTTTBBBBAAAACCCCKKKK
  1036.            SSSSPPPPAAAAGGGGAAAAIIIINNNN
  1037.            EEEENNNNTTTTEEEERRRR
  1038.            SSSSAAAAVVVVEEEETTTTMMMMPPPPSSSS
  1039.            FFFFRRRREEEEEEEETTTTMMMMPPPPSSSS
  1040.            LLLLEEEEAAAAVVVVEEEE
  1041.            XXXXPPPPUUUUSSSSHHHH****(((())))
  1042.            PPPPOOOOPPPP****(((())))
  1043.  
  1044.        For more information, consult the _p_e_r_l_c_a_l_l manpage.
  1045.  
  1046. MMMMeeeemmmmoooorrrryyyy AAAAllllllllooooccccaaaattttiiiioooonnnn
  1047.        It is strongly suggested that you use the version of
  1048.        malloc that is distributed with Perl.  It keeps pools of
  1049.        various sizes of unallocated memory in order to more
  1050.        quickly satisfy allocation requests.  However, on some
  1051.  
  1052.  
  1053.  
  1054. 23/Jan/96                perl 5.002 with                       16
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  1061.  
  1062.  
  1063.        platforms, it may cause spurious malloc or free errors.
  1064.  
  1065.            NNNNeeeewwww((((xxxx,,,, ppppooooiiiinnnntttteeeerrrr,,,, nnnnuuuummmmbbbbeeeerrrr,,,, ttttyyyyppppeeee))));;;;
  1066.            NNNNeeeewwwwcccc((((xxxx,,,, ppppooooiiiinnnntttteeeerrrr,,,, nnnnuuuummmmbbbbeeeerrrr,,,, ttttyyyyppppeeee,,,, ccccaaaasssstttt))));;;;
  1067.            NNNNeeeewwwwzzzz((((xxxx,,,, ppppooooiiiinnnntttteeeerrrr,,,, nnnnuuuummmmbbbbeeeerrrr,,,, ttttyyyyppppeeee))));;;;
  1068.  
  1069.        These three macros are used to initially allocate memory.
  1070.        The first argument xxxx was a "magic cookie" that was used to
  1071.        keep track of who called the macro, to help when debugging
  1072.        memory problems.  However, the current code makes no use
  1073.        of this feature (Larry has switched to using a run-time
  1074.        memory checker), so this argument can be any number.
  1075.  
  1076.        The second argument ppppooooiiiinnnntttteeeerrrr will point to the newly
  1077.        allocated memory.  The third and fourth arguments nnnnuuuummmmbbbbeeeerrrr
  1078.        and ttttyyyyppppeeee specify how many of the specified type of data
  1079.        structure should be allocated.  The argument ttttyyyyppppeeee is
  1080.        passed to ssssiiiizzzzeeeeooooffff.  The final argument to NNNNeeeewwwwcccc, ccccaaaasssstttt,
  1081.        should be used if the ppppooooiiiinnnntttteeeerrrr argument is different from
  1082.        the ttttyyyyppppeeee argument.
  1083.  
  1084.        Unlike the NNNNeeeewwww and NNNNeeeewwwwcccc macros, the NNNNeeeewwwwzzzz macro calls
  1085.        mmmmeeeemmmmzzzzeeeerrrroooo to zero out all the newly allocated memory.
  1086.  
  1087.            RRRReeeennnneeeewwww((((ppppooooiiiinnnntttteeeerrrr,,,, nnnnuuuummmmbbbbeeeerrrr,,,, ttttyyyyppppeeee))));;;;
  1088.            RRRReeeennnneeeewwwwcccc((((ppppooooiiiinnnntttteeeerrrr,,,, nnnnuuuummmmbbbbeeeerrrr,,,, ttttyyyyppppeeee,,,, ccccaaaasssstttt))));;;;
  1089.            SSSSaaaaffffeeeeffffrrrreeeeeeee((((ppppooooiiiinnnntttteeeerrrr))))
  1090.  
  1091.        These three macros are used to change a memory buffer size
  1092.        or to free a piece of memory no longer needed.  The
  1093.        arguments to RRRReeeennnneeeewwww and RRRReeeennnneeeewwwwcccc match those of NNNNeeeewwww and NNNNeeeewwwwcccc
  1094.        with the exception of not needing the "magic cookie"
  1095.        argument.
  1096.  
  1097.            MMMMoooovvvveeee((((ssssoooouuuurrrrcccceeee,,,, ddddeeeesssstttt,,,, nnnnuuuummmmbbbbeeeerrrr,,,, ttttyyyyppppeeee))));;;;
  1098.            CCCCooooppppyyyy((((ssssoooouuuurrrrcccceeee,,,, ddddeeeesssstttt,,,, nnnnuuuummmmbbbbeeeerrrr,,,, ttttyyyyppppeeee))));;;;
  1099.            ZZZZeeeerrrroooo((((ddddeeeesssstttt,,,, nnnnuuuummmmbbbbeeeerrrr,,,, ttttyyyyppppeeee))));;;;
  1100.  
  1101.        These three macros are used to move, copy, or zero out
  1102.        previously allocated memory.  The ssssoooouuuurrrrcccceeee and ddddeeeesssstttt
  1103.        arguments point to the source and destination starting
  1104.        points.  Perl will move, copy, or zero out nnnnuuuummmmbbbbeeeerrrr
  1105.        instances of the size of the ttttyyyyppppeeee data structure (using
  1106.        the ssssiiiizzzzeeeeooooffff function).
  1107.  
  1108. AAAAPPPPIIII LLLLIIIISSSSTTTTIIIINNNNGGGG
  1109.        This is a listing of functions, macros, flags, and
  1110.        variables that may be useful to extension writers or that
  1111.        may be found while reading other extensions.
  1112.  
  1113.        AvFILL  See aaaavvvv____lllleeeennnn.
  1114.  
  1115.        av_clear
  1116.                Clears an array, making it empty.
  1117.  
  1118.  
  1119.  
  1120. 23/Jan/96                perl 5.002 with                       17
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  1127.  
  1128.  
  1129.                        vvvvooooiiiidddd    aaaavvvv____cccclllleeeeaaaarrrr ____((((((((AAAAVVVV**** aaaarrrr))))))));;;;
  1130.  
  1131.  
  1132.        av_extend
  1133.                Pre-extend an array.  The kkkkeeeeyyyy is the index to
  1134.                which the array should be extended.
  1135.  
  1136.                        vvvvooooiiiidddd    aaaavvvv____eeeexxxxtttteeeennnndddd ____((((((((AAAAVVVV**** aaaarrrr,,,, IIII33332222 kkkkeeeeyyyy))))))));;;;
  1137.  
  1138.  
  1139.        av_fetch
  1140.                Returns the SV at the specified index in the
  1141.                array.  The kkkkeeeeyyyy is the index.  If llllvvvvaaaallll is set then
  1142.                the fetch will be part of a store.  Check that the
  1143.                return value is non-null before dereferencing it
  1144.                to a SSSSVVVV****.
  1145.  
  1146.                        SSSSVVVV********    aaaavvvv____ffffeeeettttcccchhhh ____((((((((AAAAVVVV**** aaaarrrr,,,, IIII33332222 kkkkeeeeyyyy,,,, IIII33332222 llllvvvvaaaallll))))))));;;;
  1147.  
  1148.  
  1149.        av_len  Returns the highest index in the array.  Returns
  1150.                -1 if the array is empty.
  1151.  
  1152.                        IIII33332222     aaaavvvv____lllleeeennnn ____((((((((AAAAVVVV**** aaaarrrr))))))));;;;
  1153.  
  1154.  
  1155.        av_make Creats a new AV and populates it with a list of
  1156.                SVs.  The SVs are copied into the array, so they
  1157.                may be freed after the call to av_make.
  1158.  
  1159.                        AAAAVVVV****     aaaavvvv____mmmmaaaakkkkeeee ____((((((((IIII33332222 ssssiiiizzzzeeee,,,, SSSSVVVV******** ssssvvvvpppp))))))));;;;
  1160.  
  1161.  
  1162.        av_pop  Pops an SV off the end of the array.  Returns
  1163.                &&&&ssssvvvv____uuuunnnnddddeeeeffff if the array is empty.
  1164.  
  1165.                        SSSSVVVV****     aaaavvvv____ppppoooopppp ____((((((((AAAAVVVV**** aaaarrrr))))))));;;;
  1166.  
  1167.  
  1168.        av_push Pushes an SV onto the end of the array.
  1169.  
  1170.                        vvvvooooiiiidddd    aaaavvvv____ppppuuuusssshhhh ____((((((((AAAAVVVV**** aaaarrrr,,,, SSSSVVVV**** vvvvaaaallll))))))));;;;
  1171.  
  1172.  
  1173.        av_shift
  1174.                Shifts an SV off the beginning of the array.
  1175.  
  1176.                        SSSSVVVV****     aaaavvvv____sssshhhhiiiifffftttt ____((((((((AAAAVVVV**** aaaarrrr))))))));;;;
  1177.  
  1178.  
  1179.        av_store
  1180.                Stores an SV in an array.  The array index is
  1181.                specified as kkkkeeeeyyyy.  The return value will be null
  1182.                if the operation failed, otherwise it can be
  1183.  
  1184.  
  1185.  
  1186. 23/Jan/96                perl 5.002 with                       18
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  1193.  
  1194.  
  1195.                dereferenced to get the original SSSSVVVV****.
  1196.  
  1197.                        SSSSVVVV********    aaaavvvv____ssssttttoooorrrreeee ____((((((((AAAAVVVV**** aaaarrrr,,,, IIII33332222 kkkkeeeeyyyy,,,, SSSSVVVV**** vvvvaaaallll))))))));;;;
  1198.  
  1199.  
  1200.        av_undef
  1201.                Undefines the array.
  1202.  
  1203.                        vvvvooooiiiidddd    aaaavvvv____uuuunnnnddddeeeeffff ____((((((((AAAAVVVV**** aaaarrrr))))))));;;;
  1204.  
  1205.  
  1206.        av_unshift
  1207.                Unshift an SV onto the beginning of the array.
  1208.  
  1209.                        vvvvooooiiiidddd    aaaavvvv____uuuunnnnsssshhhhiiiifffftttt ____((((((((AAAAVVVV**** aaaarrrr,,,, IIII33332222 nnnnuuuummmm))))))));;;;
  1210.  
  1211.  
  1212.        CLASS   Variable which is setup by xxxxssssuuuubbbbpppppppp to indicate the
  1213.                class name for a C++ XS constructor.  This is
  1214.                always a cccchhhhaaaarrrr****.  See TTTTHHHHIIIISSSS and the _p_e_r_l_x_s manpage.
  1215.  
  1216.        Copy    The XSUB-writer's interface to the C mmmmeeeemmmmccccppppyyyy
  1217.                function.  The ssss is the source, dddd is the
  1218.                destination, nnnn is the number of items, and tttt is
  1219.                the type.
  1220.  
  1221.                        ((((vvvvooooiiiidddd)))) CCCCooooppppyyyy(((( ssss,,,, dddd,,,, nnnn,,,, tttt ))));;;;
  1222.  
  1223.  
  1224.        croak   This is the XSUB-writer's interface to Perl's ddddiiiieeee
  1225.                function.  Use this function the same way you use
  1226.                the C pppprrrriiiinnnnttttffff function.  See wwwwaaaarrrrnnnn.
  1227.  
  1228.        CvSTASH Returns the stash of the CV.
  1229.  
  1230.                        HHHHVVVV **** CCCCvvvvSSSSTTTTAAAASSSSHHHH(((( SSSSVVVV**** ssssvvvv ))))
  1231.  
  1232.  
  1233.        DBsingle
  1234.                When Perl is run in debugging mode, with the ----dddd
  1235.                switch, this SV is a boolean which indicates
  1236.                whether subs are being single-stepped.  Single-
  1237.                stepping is automatically turned on after every
  1238.                step.  See DDDDBBBBssssuuuubbbb.
  1239.  
  1240.        DBsub   When Perl is run in debugging mode, with the ----dddd
  1241.                switch, this GV contains the SV which holds the
  1242.                name of the sub being debugged.  See DDDDBBBBssssiiiinnnngggglllleeee.
  1243.                The sub name can be found by
  1244.  
  1245.                        SSSSvvvvPPPPVVVV(((( GGGGvvvvSSSSVVVV(((( DDDDBBBBssssuuuubbbb )))),,,, nnnnaaaa ))))
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252. 23/Jan/96                perl 5.002 with                       19
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  1259.  
  1260.  
  1261.        dMARK   Declare a stack marker for the XSUB.  See MMMMAAAARRRRKKKK and
  1262.                ddddOOOORRRRIIIIGGGGMMMMAAAARRRRKKKK.
  1263.  
  1264.        dORIGMARK
  1265.                Saves the original stack mark for the XSUB.  See
  1266.                OOOORRRRIIIIGGGGMMMMAAAARRRRKKKK.
  1267.  
  1268.        dSP     Declares a stack pointer for the XSUB.  See SSSSPPPP.
  1269.  
  1270.        dXSARGS Sets up stack and mark pointers for an XSUB,
  1271.                calling dSP and dMARK.  This is usually handled
  1272.                automatically by xxxxssssuuuubbbbpppppppp.  Declares the iiiitttteeeemmmmssss
  1273.                variable to indicate the number of items on the
  1274.                stack.
  1275.  
  1276.        ENTER   Opening bracket on a callback.  See LLLLEEEEAAAAVVVVEEEE and the
  1277.                _p_e_r_l_c_a_l_l manpage.
  1278.  
  1279.                        EEEENNNNTTTTEEEERRRR;;;;
  1280.  
  1281.  
  1282.        EXTEND  Used to extend the argument stack for an XSUB's
  1283.                return values.
  1284.  
  1285.                        EEEEXXXXTTTTEEEENNNNDDDD(((( sssspppp,,,, iiiinnnntttt xxxx ))));;;;
  1286.  
  1287.  
  1288.        FREETMPS
  1289.                Closing bracket for temporaries on a callback.
  1290.                See SSSSAAAAVVVVEEEETTTTMMMMPPPPSSSS and the _p_e_r_l_c_a_l_l manpage.
  1291.  
  1292.                        FFFFRRRREEEEEEEETTTTMMMMPPPPSSSS;;;;
  1293.  
  1294.  
  1295.        G_ARRAY Used to indicate array context.  See GGGGIIIIMMMMMMMMEEEE and the
  1296.                _p_e_r_l_c_a_l_l manpage.
  1297.  
  1298.        G_DISCARD
  1299.                Indicates that arguments returned from a callback
  1300.                should be discarded.  See the _p_e_r_l_c_a_l_l manpage.
  1301.  
  1302.        G_EVAL  Used to force a Perl eeeevvvvaaaallll wrapper around a
  1303.                callback.  See the _p_e_r_l_c_a_l_l manpage.
  1304.  
  1305.        GIMME   The XSUB-writer's equivalent to Perl's wwwwaaaannnnttttaaaarrrrrrrraaaayyyy.
  1306.                Returns GGGG____SSSSCCCCAAAALLLLAAAARRRR or GGGG____AAAARRRRRRRRAAAAYYYY for scalar or array
  1307.                context.
  1308.  
  1309.        G_NOARGS
  1310.                Indicates that no arguments are being sent to a
  1311.                callback.  See the _p_e_r_l_c_a_l_l manpage.
  1312.  
  1313.        G_SCALAR
  1314.                Used to indicate scalar context.  See GGGGIIIIMMMMMMMMEEEE and
  1315.  
  1316.  
  1317.  
  1318. 23/Jan/96                perl 5.002 with                       20
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  1325.  
  1326.  
  1327.                the _p_e_r_l_c_a_l_l manpage.
  1328.  
  1329.        gv_stashpv
  1330.                Returns a pointer to the stash for a specified
  1331.                package.  If ccccrrrreeeeaaaatttteeee is set then the package will
  1332.                be created if it does not already exist.  If
  1333.                ccccrrrreeeeaaaatttteeee is not set and the package does not exist
  1334.                then NULL is returned.
  1335.  
  1336.                        HHHHVVVV****     ggggvvvv____ssssttttaaaasssshhhhppppvvvv ____((((((((cccchhhhaaaarrrr**** nnnnaaaammmmeeee,,,, IIII33332222 ccccrrrreeeeaaaatttteeee))))))));;;;
  1337.  
  1338.  
  1339.        gv_stashsv
  1340.                Returns a pointer to the stash for a specified
  1341.                package.  See ggggvvvv____ssssttttaaaasssshhhhppppvvvv.
  1342.  
  1343.                        HHHHVVVV****     ggggvvvv____ssssttttaaaasssshhhhssssvvvv ____((((((((SSSSVVVV**** ssssvvvv,,,, IIII33332222 ccccrrrreeeeaaaatttteeee))))))));;;;
  1344.  
  1345.  
  1346.        GvSV    Return the SV from the GV.
  1347.  
  1348.        he_free Releases a hash entry from an iterator.  See
  1349.                hhhhvvvv____iiiitttteeeerrrrnnnneeeexxxxtttt.
  1350.  
  1351.        hv_clear
  1352.                Clears a hash, making it empty.
  1353.  
  1354.                        vvvvooooiiiidddd    hhhhvvvv____cccclllleeeeaaaarrrr ____((((((((HHHHVVVV**** ttttbbbb))))))));;;;
  1355.  
  1356.  
  1357.        hv_delete
  1358.                Deletes a key/value pair in the hash.  The value
  1359.                SV is removed from the hash and returned to the
  1360.                caller.  The llllkkkkeeeennnn is the length of the key.  The
  1361.                ffffllllaaaaggggssss value will normally be zero; if set to
  1362.                G_DISCARD then null will be returned.
  1363.  
  1364.                        SSSSVVVV****     hhhhvvvv____ddddeeeelllleeeetttteeee ____((((((((HHHHVVVV**** ttttbbbb,,,, cccchhhhaaaarrrr**** kkkkeeeeyyyy,,,, UUUU33332222 kkkklllleeeennnn,,,, IIII33332222 ffffllllaaaaggggssss))))))));;;;
  1365.  
  1366.  
  1367.        hv_exists
  1368.                Returns a boolean indicating whether the specified
  1369.                hash key exists.  The llllkkkkeeeennnn is the length of the
  1370.                key.
  1371.  
  1372.                        bbbboooooooollll    hhhhvvvv____eeeexxxxiiiissssttttssss ____((((((((HHHHVVVV**** ttttbbbb,,,, cccchhhhaaaarrrr**** kkkkeeeeyyyy,,,, UUUU33332222 kkkklllleeeennnn))))))));;;;
  1373.  
  1374.  
  1375.        hv_fetch
  1376.                Returns the SV which corresponds to the specified
  1377.                key in the hash.  The llllkkkkeeeennnn is the length of the
  1378.                key.  If llllvvvvaaaallll is set then the fetch will be part
  1379.                of a store.  Check that the return value is non-
  1380.                null before dereferencing it to a SSSSVVVV****.
  1381.  
  1382.  
  1383.  
  1384. 23/Jan/96                perl 5.002 with                       21
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  1391.  
  1392.  
  1393.                        SSSSVVVV********    hhhhvvvv____ffffeeeettttcccchhhh ____((((((((HHHHVVVV**** ttttbbbb,,,, cccchhhhaaaarrrr**** kkkkeeeeyyyy,,,, UUUU33332222 kkkklllleeeennnn,,,, IIII33332222 llllvvvvaaaallll))))))));;;;
  1394.  
  1395.  
  1396.        hv_iterinit
  1397.                Prepares a starting point to traverse a hash
  1398.                table.
  1399.  
  1400.                        IIII33332222     hhhhvvvv____iiiitttteeeerrrriiiinnnniiiitttt ____((((((((HHHHVVVV**** ttttbbbb))))))));;;;
  1401.  
  1402.  
  1403.        hv_iterkey
  1404.                Returns the key from the current position of the
  1405.                hash iterator.  See hhhhvvvv____iiiitttteeeerrrriiiinnnniiiitttt.
  1406.  
  1407.                        cccchhhhaaaarrrr****   hhhhvvvv____iiiitttteeeerrrrkkkkeeeeyyyy ____((((((((HHHHEEEE**** eeeennnnttttrrrryyyy,,,, IIII33332222**** rrrreeeettttlllleeeennnn))))))));;;;
  1408.  
  1409.  
  1410.        hv_iternext
  1411.                Returns entries from a hash iterator.  See
  1412.                hhhhvvvv____iiiitttteeeerrrriiiinnnniiiitttt.
  1413.  
  1414.                        HHHHEEEE****     hhhhvvvv____iiiitttteeeerrrrnnnneeeexxxxtttt ____((((((((HHHHVVVV**** ttttbbbb))))))));;;;
  1415.  
  1416.  
  1417.        hv_iternextsv
  1418.                Performs an hhhhvvvv____iiiitttteeeerrrrnnnneeeexxxxtttt, hhhhvvvv____iiiitttteeeerrrrkkkkeeeeyyyy, and
  1419.                hhhhvvvv____iiiitttteeeerrrrvvvvaaaallll in one operation.
  1420.  
  1421.                        SSSSVVVV ****    hhhhvvvv____iiiitttteeeerrrrnnnneeeexxxxttttssssvvvv ____((((((((HHHHVVVV**** hhhhvvvv,,,, cccchhhhaaaarrrr******** kkkkeeeeyyyy,,,, IIII33332222**** rrrreeeettttlllleeeennnn))))))));;;;
  1422.  
  1423.  
  1424.        hv_iterval
  1425.                Returns the value from the current position of the
  1426.                hash iterator.  See hhhhvvvv____iiiitttteeeerrrrkkkkeeeeyyyy.
  1427.  
  1428.                        SSSSVVVV****     hhhhvvvv____iiiitttteeeerrrrvvvvaaaallll ____((((((((HHHHVVVV**** ttttbbbb,,,, HHHHEEEE**** eeeennnnttttrrrryyyy))))))));;;;
  1429.  
  1430.  
  1431.        hv_magic
  1432.                Adds magic to a hash.  See ssssvvvv____mmmmaaaaggggiiiicccc.
  1433.  
  1434.                        vvvvooooiiiidddd    hhhhvvvv____mmmmaaaaggggiiiicccc ____((((((((HHHHVVVV**** hhhhvvvv,,,, GGGGVVVV**** ggggvvvv,,,, iiiinnnntttt hhhhoooowwww))))))));;;;
  1435.  
  1436.  
  1437.        HvNAME  Returns the package name of a stash.  See SSSSvvvvSSSSTTTTAAAASSSSHHHH,
  1438.                CCCCvvvvSSSSTTTTAAAASSSSHHHH.
  1439.  
  1440.                        cccchhhhaaaarrrr ****HHHHvvvvNNNNAAAAMMMMEEEE ((((HHHHVVVV**** ssssttttaaaasssshhhh))))
  1441.  
  1442.  
  1443.        hv_store
  1444.                Stores an SV in a hash.  The hash key is specified
  1445.                as kkkkeeeeyyyy and kkkklllleeeennnn is the length of the key.  The
  1446.                hhhhaaaasssshhhh parameter is the pre-computed hash value; if
  1447.  
  1448.  
  1449.  
  1450. 23/Jan/96                perl 5.002 with                       22
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  1457.  
  1458.  
  1459.                it is zero then Perl will compute it.  The return
  1460.                value will be null if the operation failed,
  1461.                otherwise it can be dereferenced to get the
  1462.                original SSSSVVVV****.
  1463.  
  1464.                        SSSSVVVV********    hhhhvvvv____ssssttttoooorrrreeee ____((((((((HHHHVVVV**** ttttbbbb,,,, cccchhhhaaaarrrr**** kkkkeeeeyyyy,,,, UUUU33332222 kkkklllleeeennnn,,,, SSSSVVVV**** vvvvaaaallll,,,, UUUU33332222 hhhhaaaasssshhhh))))))));;;;
  1465.  
  1466.  
  1467.        hv_undef
  1468.                Undefines the hash.
  1469.  
  1470.                        vvvvooooiiiidddd    hhhhvvvv____uuuunnnnddddeeeeffff ____((((((((HHHHVVVV**** ttttbbbb))))))));;;;
  1471.  
  1472.  
  1473.        isALNUM Returns a boolean indicating whether the C cccchhhhaaaarrrr is
  1474.                an ascii alphanumeric character or digit.
  1475.  
  1476.                        iiiinnnntttt iiiissssAAAALLLLNNNNUUUUMMMM ((((cccchhhhaaaarrrr cccc))))
  1477.  
  1478.  
  1479.        isALPHA Returns a boolean indicating whether the C cccchhhhaaaarrrr is
  1480.                an ascii alphanumeric character.
  1481.  
  1482.                        iiiinnnntttt iiiissssAAAALLLLPPPPHHHHAAAA ((((cccchhhhaaaarrrr cccc))))
  1483.  
  1484.  
  1485.        isDIGIT Returns a boolean indicating whether the C cccchhhhaaaarrrr is
  1486.                an ascii digit.
  1487.  
  1488.                        iiiinnnntttt iiiissssDDDDIIIIGGGGIIIITTTT ((((cccchhhhaaaarrrr cccc))))
  1489.  
  1490.  
  1491.        isLOWER Returns a boolean indicating whether the C cccchhhhaaaarrrr is
  1492.                a lowercase character.
  1493.  
  1494.                        iiiinnnntttt iiiissssLLLLOOOOWWWWEEEERRRR ((((cccchhhhaaaarrrr cccc))))
  1495.  
  1496.  
  1497.        isSPACE Returns a boolean indicating whether the C cccchhhhaaaarrrr is
  1498.                whitespace.
  1499.  
  1500.                        iiiinnnntttt iiiissssSSSSPPPPAAAACCCCEEEE ((((cccchhhhaaaarrrr cccc))))
  1501.  
  1502.  
  1503.        isUPPER Returns a boolean indicating whether the C cccchhhhaaaarrrr is
  1504.                an uppercase character.
  1505.  
  1506.                        iiiinnnntttt iiiissssUUUUPPPPPPPPEEEERRRR ((((cccchhhhaaaarrrr cccc))))
  1507.  
  1508.  
  1509.        items   Variable which is setup by xxxxssssuuuubbbbpppppppp to indicate the
  1510.                number of items on the stack.  See the _p_e_r_l_x_s
  1511.                manpage.
  1512.  
  1513.  
  1514.  
  1515.  
  1516. 23/Jan/96                perl 5.002 with                       23
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  1523.  
  1524.  
  1525.        LEAVE   Closing bracket on a callback.  See EEEENNNNTTTTEEEERRRR and the
  1526.                _p_e_r_l_c_a_l_l manpage.
  1527.  
  1528.                        LLLLEEEEAAAAVVVVEEEE;;;;
  1529.  
  1530.  
  1531.        MARK    Stack marker for the XSUB.  See ddddMMMMAAAARRRRKKKK.
  1532.  
  1533.        mg_clear
  1534.                Clear something magical that the SV represents.
  1535.                See ssssvvvv____mmmmaaaaggggiiiicccc.
  1536.  
  1537.                        iiiinnnntttt     mmmmgggg____cccclllleeeeaaaarrrr ____((((((((SSSSVVVV**** ssssvvvv))))))));;;;
  1538.  
  1539.  
  1540.        mg_copy Copies the magic from one SV to another.  See
  1541.                ssssvvvv____mmmmaaaaggggiiiicccc.
  1542.  
  1543.                        iiiinnnntttt     mmmmgggg____ccccooooppppyyyy ____((((((((SSSSVVVV ****,,,, SSSSVVVV ****,,,, cccchhhhaaaarrrr ****,,,, SSSSTTTTRRRRLLLLEEEENNNN))))))));;;;
  1544.  
  1545.  
  1546.        mg_find Finds the magic pointer for type matching the SV.
  1547.                See ssssvvvv____mmmmaaaaggggiiiicccc.
  1548.  
  1549.                        MMMMAAAAGGGGIIIICCCC****  mmmmgggg____ffffiiiinnnndddd ____((((((((SSSSVVVV**** ssssvvvv,,,, iiiinnnntttt ttttyyyyppppeeee))))))));;;;
  1550.  
  1551.  
  1552.        mg_free Free any magic storage used by the SV.  See
  1553.                ssssvvvv____mmmmaaaaggggiiiicccc.
  1554.  
  1555.                        iiiinnnntttt     mmmmgggg____ffffrrrreeeeeeee ____((((((((SSSSVVVV**** ssssvvvv))))))));;;;
  1556.  
  1557.  
  1558.        mg_get  Do magic after a value is retrieved from the SV.
  1559.                See ssssvvvv____mmmmaaaaggggiiiicccc.
  1560.  
  1561.                        iiiinnnntttt     mmmmgggg____ggggeeeetttt ____((((((((SSSSVVVV**** ssssvvvv))))))));;;;
  1562.  
  1563.  
  1564.        mg_len  Report on the SV's length.  See ssssvvvv____mmmmaaaaggggiiiicccc.
  1565.  
  1566.                        UUUU33332222     mmmmgggg____lllleeeennnn ____((((((((SSSSVVVV**** ssssvvvv))))))));;;;
  1567.  
  1568.  
  1569.        mg_magical
  1570.                Turns on the magical status of an SV.  See
  1571.                ssssvvvv____mmmmaaaaggggiiiicccc.
  1572.  
  1573.                        vvvvooooiiiidddd    mmmmgggg____mmmmaaaaggggiiiiccccaaaallll ____((((((((SSSSVVVV**** ssssvvvv))))))));;;;
  1574.  
  1575.  
  1576.        mg_set  Do magic after a value is assigned to the SV.  See
  1577.                ssssvvvv____mmmmaaaaggggiiiicccc.
  1578.  
  1579.  
  1580.  
  1581.  
  1582. 23/Jan/96                perl 5.002 with                       24
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  1589.  
  1590.  
  1591.                        iiiinnnntttt     mmmmgggg____sssseeeetttt ____((((((((SSSSVVVV**** ssssvvvv))))))));;;;
  1592.  
  1593.  
  1594.        Move    The XSUB-writer's interface to the C mmmmeeeemmmmmmmmoooovvvveeee
  1595.                function.  The ssss is the source, dddd is the
  1596.                destination, nnnn is the number of items, and tttt is
  1597.                the type.
  1598.  
  1599.                        ((((vvvvooooiiiidddd)))) MMMMoooovvvveeee(((( ssss,,,, dddd,,,, nnnn,,,, tttt ))));;;;
  1600.  
  1601.  
  1602.        na      A variable which may be used with SSSSvvvvPPPPVVVV to tell
  1603.                Perl to calculate the string length.
  1604.  
  1605.        New     The XSUB-writer's interface to the C mmmmaaaalllllllloooocccc
  1606.                function.
  1607.  
  1608.                        vvvvooooiiiidddd **** NNNNeeeewwww(((( xxxx,,,, vvvvooooiiiidddd ****ppppttttrrrr,,,, iiiinnnntttt ssssiiiizzzzeeee,,,, ttttyyyyppppeeee ))))
  1609.  
  1610.  
  1611.        Newc    The XSUB-writer's interface to the C mmmmaaaalllllllloooocccc
  1612.                function, with cast.
  1613.  
  1614.                        vvvvooooiiiidddd **** NNNNeeeewwwwcccc(((( xxxx,,,, vvvvooooiiiidddd ****ppppttttrrrr,,,, iiiinnnntttt ssssiiiizzzzeeee,,,, ttttyyyyppppeeee,,,, ccccaaaasssstttt ))))
  1615.  
  1616.  
  1617.        Newz    The XSUB-writer's interface to the C mmmmaaaalllllllloooocccc
  1618.                function.  The allocated memory is zeroed with
  1619.                mmmmeeeemmmmzzzzeeeerrrroooo.
  1620.  
  1621.                        vvvvooooiiiidddd **** NNNNeeeewwwwzzzz(((( xxxx,,,, vvvvooooiiiidddd ****ppppttttrrrr,,,, iiiinnnntttt ssssiiiizzzzeeee,,,, ttttyyyyppppeeee ))))
  1622.  
  1623.  
  1624.        newAV   Creates a new AV.  The refcount is set to 1.
  1625.  
  1626.                        AAAAVVVV****     nnnneeeewwwwAAAAVVVV ____((((((((vvvvooooiiiidddd))))))));;;;
  1627.  
  1628.  
  1629.        newHV   Creates a new HV.  The refcount is set to 1.
  1630.  
  1631.                        HHHHVVVV****     nnnneeeewwwwHHHHVVVV ____((((((((vvvvooooiiiidddd))))))));;;;
  1632.  
  1633.  
  1634.        newRV   Creates an RV wrapper for an SV.  The refcount for
  1635.                the original SV is incremented.
  1636.  
  1637.                        SSSSVVVV****     nnnneeeewwwwRRRRVVVV ____((((((((SSSSVVVV**** rrrreeeeffff))))))));;;;
  1638.  
  1639.  
  1640.        newSV   Creates a new SV.  The lllleeeennnn parameter indicates the
  1641.                number of bytes of pre-allocated string space the
  1642.                SV should have.  The refcount for the new SV is
  1643.                set to 1.
  1644.  
  1645.  
  1646.  
  1647.  
  1648. 23/Jan/96                perl 5.002 with                       25
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  1655.  
  1656.  
  1657.                        SSSSVVVV****     nnnneeeewwwwSSSSVVVV ____((((((((SSSSTTTTRRRRLLLLEEEENNNN lllleeeennnn))))))));;;;
  1658.  
  1659.  
  1660.        newSViv Creates a new SV and copies an integer into it.
  1661.                The refcount for the SV is set to 1.
  1662.  
  1663.                        SSSSVVVV****     nnnneeeewwwwSSSSVVVViiiivvvv ____((((((((IIIIVVVV iiii))))))));;;;
  1664.  
  1665.  
  1666.        newSVnv Creates a new SV and copies a double into it.  The
  1667.                refcount for the SV is set to 1.
  1668.  
  1669.                        SSSSVVVV****     nnnneeeewwwwSSSSVVVVnnnnvvvv ____((((((((NNNNVVVV iiii))))))));;;;
  1670.  
  1671.  
  1672.        newSVpv Creates a new SV and copies a string into it.  The
  1673.                refcount for the SV is set to 1.  If lllleeeennnn is zero
  1674.                then Perl will compute the length.
  1675.  
  1676.                        SSSSVVVV****     nnnneeeewwwwSSSSVVVVppppvvvv ____((((((((cccchhhhaaaarrrr**** ssss,,,, SSSSTTTTRRRRLLLLEEEENNNN lllleeeennnn))))))));;;;
  1677.  
  1678.  
  1679.        newSVrv Creates a new SV for the RV, rrrrvvvv, to point to.  If
  1680.                rrrrvvvv is not an RV then it will be upgraded one.  If
  1681.                ccccllllaaaassssssssnnnnaaaammmmeeee is non-null then the new SV will be
  1682.                blessed in the specified package.  The new SV is
  1683.                returned and its refcount is 1.
  1684.  
  1685.                        SSSSVVVV****     nnnneeeewwwwSSSSVVVVrrrrvvvv ____((((((((SSSSVVVV**** rrrrvvvv,,,, cccchhhhaaaarrrr**** ccccllllaaaassssssssnnnnaaaammmmeeee))))))));;;;
  1686.  
  1687.  
  1688.        newSVsv Creates a new SV which is an exact duplicate of
  1689.                the orignal SV.
  1690.  
  1691.                        SSSSVVVV****     nnnneeeewwwwSSSSVVVVssssvvvv ____((((((((SSSSVVVV**** oooolllldddd))))))));;;;
  1692.  
  1693.  
  1694.        newXS   Used by xxxxssssuuuubbbbpppppppp to hook up XSUBs as Perl subs.
  1695.  
  1696.        newXSproto
  1697.                Used by xxxxssssuuuubbbbpppppppp to hook up XSUBs as Perl subs.
  1698.                Adds Perl prototypes to the subs.
  1699.  
  1700.        Nullav  Null AV pointer.
  1701.  
  1702.        Nullch  Null character pointer.
  1703.  
  1704.        Nullcv  Null CV pointer.
  1705.  
  1706.        Nullhv  Null HV pointer.
  1707.  
  1708.        Nullsv  Null SV pointer.
  1709.  
  1710.  
  1711.  
  1712.  
  1713.  
  1714. 23/Jan/96                perl 5.002 with                       26
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  1721.  
  1722.  
  1723.        ORIGMARK
  1724.                The original stack mark for the XSUB.  See
  1725.                ddddOOOORRRRIIIIGGGGMMMMAAAARRRRKKKK.
  1726.  
  1727.        perl_alloc
  1728.                Allocates a new Perl interpreter.  See the
  1729.                _p_e_r_l_e_m_b_e_d manpage.
  1730.  
  1731.        perl_call_argv
  1732.                Performs a callback to the specified Perl sub.
  1733.                See the _p_e_r_l_c_a_l_l manpage.
  1734.  
  1735.                        IIII33332222     ppppeeeerrrrllll____ccccaaaallllllll____aaaarrrrggggvvvv ____((((((((cccchhhhaaaarrrr**** ssssuuuubbbbnnnnaaaammmmeeee,,,, IIII33332222 ffffllllaaaaggggssss,,,, cccchhhhaaaarrrr******** aaaarrrrggggvvvv))))))));;;;
  1736.  
  1737.  
  1738.        perl_call_method
  1739.                Performs a callback to the specified Perl method.
  1740.                The blessed object must be on the stack.  See the
  1741.                _p_e_r_l_c_a_l_l manpage.
  1742.  
  1743.                        IIII33332222     ppppeeeerrrrllll____ccccaaaallllllll____mmmmeeeetttthhhhoooodddd ____((((((((cccchhhhaaaarrrr**** mmmmeeeetttthhhhnnnnaaaammmmeeee,,,, IIII33332222 ffffllllaaaaggggssss))))))));;;;
  1744.  
  1745.  
  1746.        perl_call_pv
  1747.                Performs a callback to the specified Perl sub.
  1748.                See the _p_e_r_l_c_a_l_l manpage.
  1749.  
  1750.                        IIII33332222     ppppeeeerrrrllll____ccccaaaallllllll____ppppvvvv ____((((((((cccchhhhaaaarrrr**** ssssuuuubbbbnnnnaaaammmmeeee,,,, IIII33332222 ffffllllaaaaggggssss))))))));;;;
  1751.  
  1752.  
  1753.        perl_call_sv
  1754.                Performs a callback to the Perl sub whose name is
  1755.                in the SV.  See the _p_e_r_l_c_a_l_l manpage.
  1756.  
  1757.                        IIII33332222     ppppeeeerrrrllll____ccccaaaallllllll____ssssvvvv ____((((((((SSSSVVVV**** ssssvvvv,,,, IIII33332222 ffffllllaaaaggggssss))))))));;;;
  1758.  
  1759.  
  1760.        perl_construct
  1761.                Initializes a new Perl interpreter.  See the
  1762.                _p_e_r_l_e_m_b_e_d manpage.
  1763.  
  1764.        perl_destruct
  1765.                Shuts down a Perl interpreter.  See the _p_e_r_l_e_m_b_e_d
  1766.                manpage.
  1767.  
  1768.        perl_eval_sv
  1769.                Tells Perl to eeeevvvvaaaallll the string in the SV.
  1770.  
  1771.                        IIII33332222     ppppeeeerrrrllll____eeeevvvvaaaallll____ssssvvvv ____((((((((SSSSVVVV**** ssssvvvv,,,, IIII33332222 ffffllllaaaaggggssss))))))));;;;
  1772.  
  1773.  
  1774.        perl_free
  1775.                Releases a Perl interpreter.  See the _p_e_r_l_e_m_b_e_d
  1776.                manpage.
  1777.  
  1778.  
  1779.  
  1780. 23/Jan/96                perl 5.002 with                       27
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  1787.  
  1788.  
  1789.        perl_get_av
  1790.                Returns the AV of the specified Perl array.  If
  1791.                ccccrrrreeeeaaaatttteeee is set and the Perl variable does not exist
  1792.                then it will be created.  If ccccrrrreeeeaaaatttteeee is not set and
  1793.                the variable does not exist then null is returned.
  1794.  
  1795.                        AAAAVVVV****     ppppeeeerrrrllll____ggggeeeetttt____aaaavvvv ____((((((((cccchhhhaaaarrrr**** nnnnaaaammmmeeee,,,, IIII33332222 ccccrrrreeeeaaaatttteeee))))))));;;;
  1796.  
  1797.  
  1798.        perl_get_cv
  1799.                Returns the CV of the specified Perl sub.  If
  1800.                ccccrrrreeeeaaaatttteeee is set and the Perl variable does not exist
  1801.                then it will be created.  If ccccrrrreeeeaaaatttteeee is not set and
  1802.                the variable does not exist then null is returned.
  1803.  
  1804.                        CCCCVVVV****     ppppeeeerrrrllll____ggggeeeetttt____ccccvvvv ____((((((((cccchhhhaaaarrrr**** nnnnaaaammmmeeee,,,, IIII33332222 ccccrrrreeeeaaaatttteeee))))))));;;;
  1805.  
  1806.  
  1807.        perl_get_hv
  1808.                Returns the HV of the specified Perl hash.  If
  1809.                ccccrrrreeeeaaaatttteeee is set and the Perl variable does not exist
  1810.                then it will be created.  If ccccrrrreeeeaaaatttteeee is not set and
  1811.                the variable does not exist then null is returned.
  1812.  
  1813.                        HHHHVVVV****     ppppeeeerrrrllll____ggggeeeetttt____hhhhvvvv ____((((((((cccchhhhaaaarrrr**** nnnnaaaammmmeeee,,,, IIII33332222 ccccrrrreeeeaaaatttteeee))))))));;;;
  1814.  
  1815.  
  1816.        perl_get_sv
  1817.                Returns the SV of the specified Perl scalar.  If
  1818.                ccccrrrreeeeaaaatttteeee is set and the Perl variable does not exist
  1819.                then it will be created.  If ccccrrrreeeeaaaatttteeee is not set and
  1820.                the variable does not exist then null is returned.
  1821.  
  1822.                        SSSSVVVV****     ppppeeeerrrrllll____ggggeeeetttt____ssssvvvv ____((((((((cccchhhhaaaarrrr**** nnnnaaaammmmeeee,,,, IIII33332222 ccccrrrreeeeaaaatttteeee))))))));;;;
  1823.  
  1824.  
  1825.        perl_parse
  1826.                Tells a Perl interpreter to parse a Perl script.
  1827.                See the _p_e_r_l_e_m_b_e_d manpage.
  1828.  
  1829.        perl_require_pv
  1830.                Tells Perl to rrrreeeeqqqquuuuiiiirrrreeee a module.
  1831.  
  1832.                        vvvvooooiiiidddd    ppppeeeerrrrllll____rrrreeeeqqqquuuuiiiirrrreeee____ppppvvvv ____((((((((cccchhhhaaaarrrr**** ppppvvvv))))))));;;;
  1833.  
  1834.  
  1835.        perl_run
  1836.                Tells a Perl interpreter to run.  See the
  1837.                _p_e_r_l_e_m_b_e_d manpage.
  1838.  
  1839.        POPi    Pops an integer off the stack.
  1840.  
  1841.                        iiiinnnntttt PPPPOOOOPPPPiiii(((())));;;;
  1842.  
  1843.  
  1844.  
  1845.  
  1846. 23/Jan/96                perl 5.002 with                       28
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  1853.  
  1854.  
  1855.        POPl    Pops a long off the stack.
  1856.  
  1857.                        lllloooonnnngggg PPPPOOOOPPPPllll(((())));;;;
  1858.  
  1859.  
  1860.        POPp    Pops a string off the stack.
  1861.  
  1862.                        cccchhhhaaaarrrr **** PPPPOOOOPPPPpppp(((())));;;;
  1863.  
  1864.  
  1865.        POPn    Pops a double off the stack.
  1866.  
  1867.                        ddddoooouuuubbbblllleeee PPPPOOOOPPPPnnnn(((())));;;;
  1868.  
  1869.  
  1870.        POPs    Pops an SV off the stack.
  1871.  
  1872.                        SSSSVVVV**** PPPPOOOOPPPPssss(((())));;;;
  1873.  
  1874.  
  1875.        PUSHMARK
  1876.                Opening bracket for arguments on a callback.  See
  1877.                PPPPUUUUTTTTBBBBAAAACCCCKKKK and the _p_e_r_l_c_a_l_l manpage.
  1878.  
  1879.                        PPPPUUUUSSSSHHHHMMMMAAAARRRRKKKK((((pppp))))
  1880.  
  1881.  
  1882.        PUSHi   Push an integer onto the stack.  The stack must
  1883.                have room for this element.  See XXXXPPPPUUUUSSSSHHHHiiii.
  1884.  
  1885.                        PPPPUUUUSSSSHHHHiiii((((iiiinnnntttt dddd))))
  1886.  
  1887.  
  1888.        PUSHn   Push a double onto the stack.  The stack must have
  1889.                room for this element.  See XXXXPPPPUUUUSSSSHHHHnnnn.
  1890.  
  1891.                        PPPPUUUUSSSSHHHHnnnn((((ddddoooouuuubbbblllleeee dddd))))
  1892.  
  1893.  
  1894.        PUSHp   Push a string onto the stack.  The stack must have
  1895.                room for this element.  The lllleeeennnn indicates the
  1896.                length of the string.  See XXXXPPPPUUUUSSSSHHHHpppp.
  1897.  
  1898.                        PPPPUUUUSSSSHHHHpppp((((cccchhhhaaaarrrr ****cccc,,,, iiiinnnntttt lllleeeennnn ))))
  1899.  
  1900.  
  1901.        PUSHs   Push an SV onto the stack.  The stack must have
  1902.                room for this element.  See XXXXPPPPUUUUSSSSHHHHssss.
  1903.  
  1904.                        PPPPUUUUSSSSHHHHssss((((ssssvvvv))))
  1905.  
  1906.  
  1907.        PUTBACK Closing bracket for XSUB arguments.  This is
  1908.                usually handled by xxxxssssuuuubbbbpppppppp.  See PPPPUUUUSSSSHHHHMMMMAAAARRRRKKKK and the
  1909.  
  1910.  
  1911.  
  1912. 23/Jan/96                perl 5.002 with                       29
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  1919.  
  1920.  
  1921.                _p_e_r_l_c_a_l_l manpage for other uses.
  1922.  
  1923.                        PPPPUUUUTTTTBBBBAAAACCCCKKKK;;;;
  1924.  
  1925.  
  1926.        Renew   The XSUB-writer's interface to the C rrrreeeeaaaalllllllloooocccc
  1927.                function.
  1928.  
  1929.                        vvvvooooiiiidddd **** RRRReeeennnneeeewwww(((( vvvvooooiiiidddd ****ppppttttrrrr,,,, iiiinnnntttt ssssiiiizzzzeeee,,,, ttttyyyyppppeeee ))))
  1930.  
  1931.  
  1932.        Renewc  The XSUB-writer's interface to the C rrrreeeeaaaalllllllloooocccc
  1933.                function, with cast.
  1934.  
  1935.                        vvvvooooiiiidddd **** RRRReeeennnneeeewwwwcccc(((( vvvvooooiiiidddd ****ppppttttrrrr,,,, iiiinnnntttt ssssiiiizzzzeeee,,,, ttttyyyyppppeeee,,,, ccccaaaasssstttt ))))
  1936.  
  1937.  
  1938.        RETVAL  Variable which is setup by xxxxssssuuuubbbbpppppppp to hold the
  1939.                return value for an XSUB.  This is always the
  1940.                proper type for the XSUB.  See the _p_e_r_l_x_s manpage.
  1941.  
  1942.        safefree
  1943.                The XSUB-writer's interface to the C ffffrrrreeeeeeee
  1944.                function.
  1945.  
  1946.        safemalloc
  1947.                The XSUB-writer's interface to the C mmmmaaaalllllllloooocccc
  1948.                function.
  1949.  
  1950.        saferealloc
  1951.                The XSUB-writer's interface to the C rrrreeeeaaaalllllllloooocccc
  1952.                function.
  1953.  
  1954.        savepv  Copy a string to a safe spot.  This does not use
  1955.                an SV.
  1956.  
  1957.                        cccchhhhaaaarrrr****   ssssaaaavvvveeeeppppvvvv ____((((((((cccchhhhaaaarrrr**** ssssvvvv))))))));;;;
  1958.  
  1959.  
  1960.        savepvn Copy a string to a safe spot.  The lllleeeennnn indicates
  1961.                number of bytes to copy.  This does not use an SV.
  1962.  
  1963.                        cccchhhhaaaarrrr****   ssssaaaavvvveeeeppppvvvvnnnn ____((((((((cccchhhhaaaarrrr**** ssssvvvv,,,, IIII33332222 lllleeeennnn))))))));;;;
  1964.  
  1965.  
  1966.        SAVETMPS
  1967.                Opening bracket for temporaries on a callback.
  1968.                See FFFFRRRREEEEEEEETTTTMMMMPPPPSSSS and the _p_e_r_l_c_a_l_l manpage.
  1969.  
  1970.                        SSSSAAAAVVVVEEEETTTTMMMMPPPPSSSS;;;;
  1971.  
  1972.  
  1973.        SP      Stack pointer.  This is usually handled by xxxxssssuuuubbbbpppppppp.
  1974.                See ddddSSSSPPPP and SSSSPPPPAAAAGGGGAAAAIIIINNNN.
  1975.  
  1976.  
  1977.  
  1978. 23/Jan/96                perl 5.002 with                       30
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  1985.  
  1986.  
  1987.        SPAGAIN Refetch the stack pointer.  Used after a callback.
  1988.                See the _p_e_r_l_c_a_l_l manpage.
  1989.  
  1990.                        SSSSPPPPAAAAGGGGAAAAIIIINNNN;;;;
  1991.  
  1992.  
  1993.        ST      Used to access elements on the XSUB's stack.
  1994.  
  1995.                        SSSSVVVV**** SSSSTTTT((((iiiinnnntttt xxxx))))
  1996.  
  1997.  
  1998.        strEQ   Test two strings to see if they are equal.
  1999.                Returns true or false.
  2000.  
  2001.                        iiiinnnntttt ssssttttrrrrEEEEQQQQ(((( cccchhhhaaaarrrr ****ssss1111,,,, cccchhhhaaaarrrr ****ssss2222 ))))
  2002.  
  2003.  
  2004.        strGE   Test two strings to see if the first, ssss1111, is
  2005.                greater than or equal to the second, ssss2222.  Returns
  2006.                true or false.
  2007.  
  2008.                        iiiinnnntttt ssssttttrrrrGGGGEEEE(((( cccchhhhaaaarrrr ****ssss1111,,,, cccchhhhaaaarrrr ****ssss2222 ))))
  2009.  
  2010.  
  2011.        strGT   Test two strings to see if the first, ssss1111, is
  2012.                greater than the second, ssss2222.  Returns true or
  2013.                false.
  2014.  
  2015.                        iiiinnnntttt ssssttttrrrrGGGGTTTT(((( cccchhhhaaaarrrr ****ssss1111,,,, cccchhhhaaaarrrr ****ssss2222 ))))
  2016.  
  2017.  
  2018.        strLE   Test two strings to see if the first, ssss1111, is less
  2019.                than or equal to the second, ssss2222.  Returns true or
  2020.                false.
  2021.  
  2022.                        iiiinnnntttt ssssttttrrrrLLLLEEEE(((( cccchhhhaaaarrrr ****ssss1111,,,, cccchhhhaaaarrrr ****ssss2222 ))))
  2023.  
  2024.  
  2025.        strLT   Test two strings to see if the first, ssss1111, is less
  2026.                than the second, ssss2222.  Returns true or false.
  2027.  
  2028.                        iiiinnnntttt ssssttttrrrrLLLLTTTT(((( cccchhhhaaaarrrr ****ssss1111,,,, cccchhhhaaaarrrr ****ssss2222 ))))
  2029.  
  2030.  
  2031.        strNE   Test two strings to see if they are different.
  2032.                Returns true or false.
  2033.  
  2034.                        iiiinnnntttt ssssttttrrrrNNNNEEEE(((( cccchhhhaaaarrrr ****ssss1111,,,, cccchhhhaaaarrrr ****ssss2222 ))))
  2035.  
  2036.  
  2037.        strnEQ  Test two strings to see if they are equal.  The
  2038.                lllleeeennnn parameter indicates the number of bytes to
  2039.                compare.  Returns true or false.
  2040.  
  2041.  
  2042.  
  2043.  
  2044. 23/Jan/96                perl 5.002 with                       31
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  2051.  
  2052.  
  2053.                        iiiinnnntttt ssssttttrrrrnnnnEEEEQQQQ(((( cccchhhhaaaarrrr ****ssss1111,,,, cccchhhhaaaarrrr ****ssss2222 ))))
  2054.  
  2055.  
  2056.        strnNE  Test two strings to see if they are different.
  2057.                The lllleeeennnn parameter indicates the number of bytes to
  2058.                compare.  Returns true or false.
  2059.  
  2060.                        iiiinnnntttt ssssttttrrrrnnnnNNNNEEEE(((( cccchhhhaaaarrrr ****ssss1111,,,, cccchhhhaaaarrrr ****ssss2222,,,, iiiinnnntttt lllleeeennnn ))))
  2061.  
  2062.  
  2063.        sv_2mortal
  2064.                Marks an SV as mortal.  The SV will be destroyed
  2065.                when the current context ends.
  2066.  
  2067.                        SSSSVVVV****     ssssvvvv____2222mmmmoooorrrrttttaaaallll ____((((((((SSSSVVVV**** ssssvvvv))))))));;;;
  2068.  
  2069.  
  2070.        sv_bless
  2071.                Blesses an SV into a specified package.  The SV
  2072.                must be an RV.  The package must be designated by
  2073.                its stash (see ggggvvvv____ssssttttaaaasssshhhhppppvvvv(((())))).  The refcount of the
  2074.                SV is unaffected.
  2075.  
  2076.                        SSSSVVVV****     ssssvvvv____bbbblllleeeessssssss ____((((((((SSSSVVVV**** ssssvvvv,,,, HHHHVVVV**** ssssttttaaaasssshhhh))))))));;;;
  2077.  
  2078.  
  2079.        sv_catpv
  2080.                Concatenates the string onto the end of the string
  2081.                which is in the SV.
  2082.  
  2083.                        vvvvooooiiiidddd    ssssvvvv____ccccaaaattttppppvvvv ____((((((((SSSSVVVV**** ssssvvvv,,,, cccchhhhaaaarrrr**** ppppttttrrrr))))))));;;;
  2084.  
  2085.  
  2086.        sv_catpvn
  2087.                Concatenates the string onto the end of the string
  2088.                which is in the SV.  The lllleeeennnn indicates number of
  2089.                bytes to copy.
  2090.  
  2091.                        vvvvooooiiiidddd    ssssvvvv____ccccaaaattttppppvvvvnnnn ____((((((((SSSSVVVV**** ssssvvvv,,,, cccchhhhaaaarrrr**** ppppttttrrrr,,,, SSSSTTTTRRRRLLLLEEEENNNN lllleeeennnn))))))));;;;
  2092.  
  2093.  
  2094.        sv_catsv
  2095.                Concatentates the string from SV ssssssssvvvv onto the end
  2096.                of the string in SV ddddssssvvvv.
  2097.  
  2098.                        vvvvooooiiiidddd    ssssvvvv____ccccaaaattttssssvvvv ____((((((((SSSSVVVV**** ddddssssvvvv,,,, SSSSVVVV**** ssssssssvvvv))))))));;;;
  2099.  
  2100.  
  2101.        SvCUR   Returns the length of the string which is in the
  2102.                SV.  See SSSSvvvvLLLLEEEENNNN.
  2103.  
  2104.                        iiiinnnntttt SSSSvvvvCCCCUUUURRRR ((((SSSSVVVV**** ssssvvvv))))
  2105.  
  2106.  
  2107.  
  2108.  
  2109.  
  2110. 23/Jan/96                perl 5.002 with                       32
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  2117.  
  2118.  
  2119.        SvCUR_set
  2120.                Set the length of the string which is in the SV.
  2121.                See SSSSvvvvCCCCUUUURRRR.
  2122.  
  2123.                        SSSSvvvvCCCCUUUURRRR____sssseeeetttt ((((SSSSVVVV**** ssssvvvv,,,, iiiinnnntttt vvvvaaaallll ))))
  2124.  
  2125.  
  2126.        SvEND   Returns a pointer to the last character in the
  2127.                string which is in the SV.  See SSSSvvvvCCCCUUUURRRR.  Access the
  2128.                character as
  2129.  
  2130.                        ****SSSSvvvvEEEENNNNDDDD((((ssssvvvv))))
  2131.  
  2132.  
  2133.        SvGROW  Expands the character buffer in the SV.
  2134.  
  2135.                        cccchhhhaaaarrrr **** SSSSvvvvGGGGRRRROOOOWWWW(((( SSSSVVVV**** ssssvvvv,,,, iiiinnnntttt lllleeeennnn ))))
  2136.  
  2137.  
  2138.        SvIOK   Returns a boolean indicating whether the SV
  2139.                contains an integer.
  2140.  
  2141.                        iiiinnnntttt SSSSvvvvIIIIOOOOKKKK ((((SSSSVVVV**** SSSSVVVV))))
  2142.  
  2143.  
  2144.        SvIOK_off
  2145.                Unsets the IV status of an SV.
  2146.  
  2147.                        SSSSvvvvIIIIOOOOKKKK____ooooffffffff ((((SSSSVVVV**** ssssvvvv))))
  2148.  
  2149.  
  2150.        SvIOK_on
  2151.                Tells an SV that it is an integer.
  2152.  
  2153.                        SSSSvvvvIIIIOOOOKKKK____oooonnnn ((((SSSSVVVV**** ssssvvvv))))
  2154.  
  2155.  
  2156.        SvIOKp  Returns a boolean indicating whether the SV
  2157.                contains an integer.  Checks the pppprrrriiiivvvvaaaatttteeee setting.
  2158.                Use SSSSvvvvIIIIOOOOKKKK.
  2159.  
  2160.                        iiiinnnntttt SSSSvvvvIIIIOOOOKKKKpppp ((((SSSSVVVV**** SSSSVVVV))))
  2161.  
  2162.  
  2163.        sv_isa  Returns a boolean indicating whether the SV is
  2164.                blessed into the specified class.  This does not
  2165.                know how to check for subtype, so it doesn't work
  2166.                in an inheritance relationship.
  2167.  
  2168.                        iiiinnnntttt     ssssvvvv____iiiissssaaaa ____((((((((SSSSVVVV**** ssssvvvv,,,, cccchhhhaaaarrrr**** nnnnaaaammmmeeee))))))));;;;
  2169.  
  2170.  
  2171.        SvIV    Returns the integer which is in the SV.
  2172.  
  2173.  
  2174.  
  2175.  
  2176. 23/Jan/96                perl 5.002 with                       33
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  2183.  
  2184.  
  2185.                        iiiinnnntttt SSSSvvvvIIIIVVVV ((((SSSSVVVV**** ssssvvvv))))
  2186.  
  2187.  
  2188.        sv_isobject
  2189.                Returns a boolean indicating whether the SV is an
  2190.                RV pointing to a blessed object.  If the SV is not
  2191.                an RV, or if the object is not blessed, then this
  2192.                will return false.
  2193.  
  2194.                        iiiinnnntttt     ssssvvvv____iiiissssoooobbbbjjjjeeeecccctttt ____((((((((SSSSVVVV**** ssssvvvv))))))));;;;
  2195.  
  2196.  
  2197.        SvIVX   Returns the integer which is stored in the SV.
  2198.  
  2199.                        iiiinnnntttt  SSSSvvvvIIIIVVVVXXXX ((((SSSSVVVV**** ssssvvvv))));;;;
  2200.  
  2201.  
  2202.        SvLEN   Returns the size of the string buffer in the SV.
  2203.                See SSSSvvvvCCCCUUUURRRR.
  2204.  
  2205.                        iiiinnnntttt SSSSvvvvLLLLEEEENNNN ((((SSSSVVVV**** ssssvvvv))))
  2206.  
  2207.  
  2208.        sv_magic
  2209.                Adds magic to an SV.
  2210.  
  2211.                        vvvvooooiiiidddd    ssssvvvv____mmmmaaaaggggiiiicccc ____((((((((SSSSVVVV**** ssssvvvv,,,, SSSSVVVV**** oooobbbbjjjj,,,, iiiinnnntttt hhhhoooowwww,,,, cccchhhhaaaarrrr**** nnnnaaaammmmeeee,,,, IIII33332222 nnnnaaaammmmlllleeeennnn))))))));;;;
  2212.  
  2213.  
  2214.        sv_mortalcopy
  2215.                Creates a new SV which is a copy of the original
  2216.                SV.  The new SV is marked as mortal.
  2217.  
  2218.                        SSSSVVVV****     ssssvvvv____mmmmoooorrrrttttaaaallllccccooooppppyyyy ____((((((((SSSSVVVV**** oooollllddddssssvvvv))))))));;;;
  2219.  
  2220.  
  2221.        SvOK    Returns a boolean indicating whether the value is
  2222.                an SV.
  2223.  
  2224.                        iiiinnnntttt SSSSvvvvOOOOKKKK ((((SSSSVVVV**** ssssvvvv))))
  2225.  
  2226.  
  2227.        sv_newmortal
  2228.                Creates a new SV which is mortal.  The refcount of
  2229.                the SV is set to 1.
  2230.  
  2231.                        SSSSVVVV****     ssssvvvv____nnnneeeewwwwmmmmoooorrrrttttaaaallll ____((((((((vvvvooooiiiidddd))))))));;;;
  2232.  
  2233.  
  2234.        sv_no   This is the ffffaaaallllsssseeee SV.  See ssssvvvv____yyyyeeeessss.  Always refer
  2235.                to this as &&&&ssssvvvv____nnnnoooo.
  2236.  
  2237.        SvNIOK  Returns a boolean indicating whether the SV
  2238.                contains a number, integer or double.
  2239.  
  2240.  
  2241.  
  2242. 23/Jan/96                perl 5.002 with                       34
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  2249.  
  2250.  
  2251.                        iiiinnnntttt SSSSvvvvNNNNIIIIOOOOKKKK ((((SSSSVVVV**** SSSSVVVV))))
  2252.  
  2253.  
  2254.        SvNIOK_off
  2255.                Unsets the NV/IV status of an SV.
  2256.  
  2257.                        SSSSvvvvNNNNIIIIOOOOKKKK____ooooffffffff ((((SSSSVVVV**** ssssvvvv))))
  2258.  
  2259.  
  2260.        SvNIOKp Returns a boolean indicating whether the SV
  2261.                contains a number, integer or double.  Checks the
  2262.                pppprrrriiiivvvvaaaatttteeee setting.  Use SSSSvvvvNNNNIIIIOOOOKKKK.
  2263.  
  2264.                        iiiinnnntttt SSSSvvvvNNNNIIIIOOOOKKKKpppp ((((SSSSVVVV**** SSSSVVVV))))
  2265.  
  2266.  
  2267.        SvNOK   Returns a boolean indicating whether the SV
  2268.                contains a double.
  2269.  
  2270.                        iiiinnnntttt SSSSvvvvNNNNOOOOKKKK ((((SSSSVVVV**** SSSSVVVV))))
  2271.  
  2272.  
  2273.        SvNOK_off
  2274.                Unsets the NV status of an SV.
  2275.  
  2276.                        SSSSvvvvNNNNOOOOKKKK____ooooffffffff ((((SSSSVVVV**** ssssvvvv))))
  2277.  
  2278.  
  2279.        SvNOK_on
  2280.                Tells an SV that it is a double.
  2281.  
  2282.                        SSSSvvvvNNNNOOOOKKKK____oooonnnn ((((SSSSVVVV**** ssssvvvv))))
  2283.  
  2284.  
  2285.        SvNOKp  Returns a boolean indicating whether the SV
  2286.                contains a double.  Checks the pppprrrriiiivvvvaaaatttteeee setting.
  2287.                Use SSSSvvvvNNNNOOOOKKKK.
  2288.  
  2289.                        iiiinnnntttt SSSSvvvvNNNNOOOOKKKKpppp ((((SSSSVVVV**** SSSSVVVV))))
  2290.  
  2291.  
  2292.        SvNV    Returns the double which is stored in the SV.
  2293.  
  2294.                        ddddoooouuuubbbblllleeee SSSSvvvvNNNNVVVV ((((SSSSVVVV**** ssssvvvv))));;;;
  2295.  
  2296.  
  2297.        SvNVX   Returns the double which is stored in the SV.
  2298.  
  2299.                        ddddoooouuuubbbblllleeee SSSSvvvvNNNNVVVVXXXX ((((SSSSVVVV**** ssssvvvv))));;;;
  2300.  
  2301.  
  2302.        SvPOK   Returns a boolean indicating whether the SV
  2303.                contains a character string.
  2304.  
  2305.  
  2306.  
  2307.  
  2308. 23/Jan/96                perl 5.002 with                       35
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  2315.  
  2316.  
  2317.                        iiiinnnntttt SSSSvvvvPPPPOOOOKKKK ((((SSSSVVVV**** SSSSVVVV))))
  2318.  
  2319.  
  2320.        SvPOK_off
  2321.                Unsets the PV status of an SV.
  2322.  
  2323.                        SSSSvvvvPPPPOOOOKKKK____ooooffffffff ((((SSSSVVVV**** ssssvvvv))))
  2324.  
  2325.  
  2326.        SvPOK_on
  2327.                Tells an SV that it is a string.
  2328.  
  2329.                        SSSSvvvvPPPPOOOOKKKK____oooonnnn ((((SSSSVVVV**** ssssvvvv))))
  2330.  
  2331.  
  2332.        SvPOKp  Returns a boolean indicating whether the SV
  2333.                contains a character string.  Checks the pppprrrriiiivvvvaaaatttteeee
  2334.                setting.  Use SSSSvvvvPPPPOOOOKKKK.
  2335.  
  2336.                        iiiinnnntttt SSSSvvvvPPPPOOOOKKKKpppp ((((SSSSVVVV**** SSSSVVVV))))
  2337.  
  2338.  
  2339.        SvPV    Returns a pointer to the string in the SV, or a
  2340.                stringified form of the SV if the SV does not
  2341.                contain a string.  If lllleeeennnn is nnnnaaaa then Perl will
  2342.                handle the length on its own.
  2343.  
  2344.                        cccchhhhaaaarrrr **** SSSSvvvvPPPPVVVV ((((SSSSVVVV**** ssssvvvv,,,, iiiinnnntttt lllleeeennnn ))))
  2345.  
  2346.  
  2347.        SvPVX   Returns a pointer to the string in the SV.  The SV
  2348.                must contain a string.
  2349.  
  2350.                        cccchhhhaaaarrrr **** SSSSvvvvPPPPVVVVXXXX ((((SSSSVVVV**** ssssvvvv))))
  2351.  
  2352.  
  2353.        SvREFCNT
  2354.                Returns the value of the object's refcount.
  2355.  
  2356.                        iiiinnnntttt SSSSvvvvRRRREEEEFFFFCCCCNNNNTTTT ((((SSSSVVVV**** ssssvvvv))));;;;
  2357.  
  2358.  
  2359.        SvREFCNT_dec
  2360.                Decrements the refcount of the given SV.
  2361.  
  2362.                        vvvvooooiiiidddd SSSSvvvvRRRREEEEFFFFCCCCNNNNTTTT____ddddeeeecccc ((((SSSSVVVV**** ssssvvvv))))
  2363.  
  2364.  
  2365.        SvREFCNT_inc
  2366.                Increments the refcount of the given SV.
  2367.  
  2368.                        vvvvooooiiiidddd SSSSvvvvRRRREEEEFFFFCCCCNNNNTTTT____iiiinnnncccc ((((SSSSVVVV**** ssssvvvv))))
  2369.  
  2370.  
  2371.  
  2372.  
  2373.  
  2374. 23/Jan/96                perl 5.002 with                       36
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  2381.  
  2382.  
  2383.        SvROK   Tests if the SV is an RV.
  2384.  
  2385.                        iiiinnnntttt SSSSvvvvRRRROOOOKKKK ((((SSSSVVVV**** ssssvvvv))))
  2386.  
  2387.  
  2388.        SvROK_off
  2389.                Unsets the RV status of an SV.
  2390.  
  2391.                        SSSSvvvvRRRROOOOKKKK____ooooffffffff ((((SSSSVVVV**** ssssvvvv))))
  2392.  
  2393.  
  2394.        SvROK_on
  2395.                Tells an SV that it is an RV.
  2396.  
  2397.                        SSSSvvvvRRRROOOOKKKK____oooonnnn ((((SSSSVVVV**** ssssvvvv))))
  2398.  
  2399.  
  2400.        SvRV    Dereferences an RV to return the SV.
  2401.  
  2402.                        SSSSVVVV****     SSSSvvvvRRRRVVVV ((((SSSSVVVV**** ssssvvvv))));;;;
  2403.  
  2404.  
  2405.        sv_setiv
  2406.                Copies an integer into the given SV.
  2407.  
  2408.                        vvvvooooiiiidddd    ssssvvvv____sssseeeettttiiiivvvv ____((((((((SSSSVVVV**** ssssvvvv,,,, IIIIVVVV nnnnuuuummmm))))))));;;;
  2409.  
  2410.  
  2411.        sv_setnv
  2412.                Copies a double into the given SV.
  2413.  
  2414.                        vvvvooooiiiidddd    ssssvvvv____sssseeeettttnnnnvvvv ____((((((((SSSSVVVV**** ssssvvvv,,,, ddddoooouuuubbbblllleeee nnnnuuuummmm))))))));;;;
  2415.  
  2416.  
  2417.        sv_setpv
  2418.                Copies a string into an SV.  The string must be
  2419.                null-terminated.
  2420.  
  2421.                        vvvvooooiiiidddd    ssssvvvv____sssseeeettttppppvvvv ____((((((((SSSSVVVV**** ssssvvvv,,,, cccchhhhaaaarrrr**** ppppttttrrrr))))))));;;;
  2422.  
  2423.  
  2424.        sv_setpvn
  2425.                Copies a string into an SV.  The lllleeeennnn parameter
  2426.                indicates the number of bytes to be copied.
  2427.  
  2428.                        vvvvooooiiiidddd    ssssvvvv____sssseeeettttppppvvvvnnnn ____((((((((SSSSVVVV**** ssssvvvv,,,, cccchhhhaaaarrrr**** ppppttttrrrr,,,, SSSSTTTTRRRRLLLLEEEENNNN lllleeeennnn))))))));;;;
  2429.  
  2430.  
  2431.        sv_setref_iv
  2432.                Copies an integer into an SV, optionally blessing
  2433.                the SV.  The SV must be an RV.  The ccccllllaaaassssssssnnnnaaaammmmeeee
  2434.                argument indicates the package for the blessing.
  2435.                Set ccccllllaaaassssssssnnnnaaaammmmeeee to NNNNuuuullllllllcccchhhh to avoid the blessing.
  2436.                The new SV will be returned and will have a
  2437.  
  2438.  
  2439.  
  2440. 23/Jan/96                perl 5.002 with                       37
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  2447.  
  2448.  
  2449.                refcount of 1.
  2450.  
  2451.                        SSSSVVVV****     ssssvvvv____sssseeeettttrrrreeeeffff____iiiivvvv ____((((((((SSSSVVVV ****rrrrvvvv,,,, cccchhhhaaaarrrr ****ccccllllaaaassssssssnnnnaaaammmmeeee,,,, IIIIVVVV iiiivvvv))))))));;;;
  2452.  
  2453.  
  2454.        sv_setref_nv
  2455.                Copies a double into an SV, optionally blessing
  2456.                the SV.  The SV must be an RV.  The ccccllllaaaassssssssnnnnaaaammmmeeee
  2457.                argument indicates the package for the blessing.
  2458.                Set ccccllllaaaassssssssnnnnaaaammmmeeee to NNNNuuuullllllllcccchhhh to avoid the blessing.
  2459.                The new SV will be returned and will have a
  2460.                refcount of 1.
  2461.  
  2462.                        SSSSVVVV****     ssssvvvv____sssseeeettttrrrreeeeffff____nnnnvvvv ____((((((((SSSSVVVV ****rrrrvvvv,,,, cccchhhhaaaarrrr ****ccccllllaaaassssssssnnnnaaaammmmeeee,,,, ddddoooouuuubbbblllleeee nnnnvvvv))))))));;;;
  2463.  
  2464.  
  2465.        sv_setref_pv
  2466.                Copies a pointer into an SV, optionally blessing
  2467.                the SV.  The SV must be an RV.  If the ppppvvvv argument
  2468.                is NULL then ssssvvvv____uuuunnnnddddeeeeffff will be placed into the SV.
  2469.                The ccccllllaaaassssssssnnnnaaaammmmeeee argument indicates the package for
  2470.                the blessing.  Set ccccllllaaaassssssssnnnnaaaammmmeeee to NNNNuuuullllllllcccchhhh to avoid
  2471.                the blessing.  The new SV will be returned and
  2472.                will have a refcount of 1.
  2473.  
  2474.                        SSSSVVVV****     ssssvvvv____sssseeeettttrrrreeeeffff____ppppvvvv ____((((((((SSSSVVVV ****rrrrvvvv,,,, cccchhhhaaaarrrr ****ccccllllaaaassssssssnnnnaaaammmmeeee,,,, vvvvooooiiiidddd**** ppppvvvv))))))));;;;
  2475.  
  2476.                Do not use with integral Perl types such as HV,
  2477.                AV, SV, CV, because those objects will become
  2478.                corrupted by the pointer copy process.
  2479.  
  2480.                Note that ssssvvvv____sssseeeettttrrrreeeeffff____ppppvvvvnnnn copies the string while
  2481.                this copies the pointer.
  2482.  
  2483.        sv_setref_pvn
  2484.                Copies a string into an SV, optionally blessing
  2485.                the SV.  The lenth of the string must be specified
  2486.                with nnnn.  The SV must be an RV.  The ccccllllaaaassssssssnnnnaaaammmmeeee
  2487.                argument indicates the package for the blessing.
  2488.                Set ccccllllaaaassssssssnnnnaaaammmmeeee to NNNNuuuullllllllcccchhhh to avoid the blessing.
  2489.                The new SV will be returned and will have a
  2490.                refcount of 1.
  2491.  
  2492.                        SSSSVVVV****     ssssvvvv____sssseeeettttrrrreeeeffff____ppppvvvvnnnn ____((((((((SSSSVVVV ****rrrrvvvv,,,, cccchhhhaaaarrrr ****ccccllllaaaassssssssnnnnaaaammmmeeee,,,, cccchhhhaaaarrrr**** ppppvvvv,,,, IIII33332222 nnnn))))))));;;;
  2493.  
  2494.                Note that ssssvvvv____sssseeeettttrrrreeeeffff____ppppvvvv copies the pointer while
  2495.                this copies the string.
  2496.  
  2497.        sv_setsv
  2498.                Copies the contents of the source SV ssssssssvvvv into the
  2499.                destination SV ddddssssvvvv.
  2500.  
  2501.                        vvvvooooiiiidddd    ssssvvvv____sssseeeettttssssvvvv ____((((((((SSSSVVVV**** ddddssssvvvv,,,, SSSSVVVV**** ssssssssvvvv))))))));;;;
  2502.  
  2503.  
  2504.  
  2505.  
  2506. 23/Jan/96                perl 5.002 with                       38
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  2513.  
  2514.  
  2515.        SvSTASH Returns the stash of the SV.
  2516.  
  2517.                        HHHHVVVV **** SSSSvvvvSSSSTTTTAAAASSSSHHHH ((((SSSSVVVV**** ssssvvvv))))
  2518.  
  2519.  
  2520.        SVt_IV  Integer type flag for scalars.  See ssssvvvvttttyyyyppppeeee.
  2521.  
  2522.        SVt_PV  Pointer type flag for scalars.  See ssssvvvvttttyyyyppppeeee.
  2523.  
  2524.        SVt_PVAV
  2525.                Type flag for arrays.  See ssssvvvvttttyyyyppppeeee.
  2526.  
  2527.        SVt_PVCV
  2528.                Type flag for code refs.  See ssssvvvvttttyyyyppppeeee.
  2529.  
  2530.        SVt_PVHV
  2531.                Type flag for hashes.  See ssssvvvvttttyyyyppppeeee.
  2532.  
  2533.        SVt_PVMG
  2534.                Type flag for blessed scalars.  See ssssvvvvttttyyyyppppeeee.
  2535.  
  2536.        SVt_NV  Double type flag for scalars.  See ssssvvvvttttyyyyppppeeee.
  2537.  
  2538.        SvTRUE  Returns a boolean indicating whether Perl would
  2539.                evaluate the SV as true or false, defined or
  2540.                undefined.
  2541.  
  2542.                        iiiinnnntttt SSSSvvvvTTTTRRRRUUUUEEEE ((((SSSSVVVV**** ssssvvvv))))
  2543.  
  2544.  
  2545.        SvTYPE  Returns the type of the SV.  See ssssvvvvttttyyyyppppeeee.
  2546.  
  2547.                        ssssvvvvttttyyyyppppeeee  SSSSvvvvTTTTYYYYPPPPEEEE ((((SSSSVVVV**** ssssvvvv))))
  2548.  
  2549.  
  2550.        svtype  An enum of flags for Perl types.  These are found
  2551.                in the file ssssvvvv....hhhh in the ssssvvvvttttyyyyppppeeee enum.  Test these
  2552.                flags with the SSSSvvvvTTTTYYYYPPPPEEEE macro.
  2553.  
  2554.        SvUPGRADE
  2555.                Used to upgrade an SV to a more complex form.  See
  2556.                ssssvvvvttttyyyyppppeeee.
  2557.  
  2558.        sv_undef
  2559.                This is the uuuunnnnddddeeeeffff SV.  Always refer to this as
  2560.                &&&&ssssvvvv____uuuunnnnddddeeeeffff.
  2561.  
  2562.        sv_usepvn
  2563.                Tells an SV to use ppppttttrrrr to find its string value.
  2564.                Normally the string is stored inside the SV; this
  2565.                allows the SV to use an outside string.  The
  2566.                string length, lllleeeennnn, must be supplied.  This
  2567.                function will realloc the memory pointed to by
  2568.                ppppttttrrrr, so that pointer should not be freed or used
  2569.  
  2570.  
  2571.  
  2572. 23/Jan/96                perl 5.002 with                       39
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  2579.  
  2580.  
  2581.                by the programmer after giving it to sv_usepvn.
  2582.  
  2583.                        vvvvooooiiiidddd    ssssvvvv____uuuusssseeeeppppvvvvnnnn ____((((((((SSSSVVVV**** ssssvvvv,,,, cccchhhhaaaarrrr**** ppppttttrrrr,,,, SSSSTTTTRRRRLLLLEEEENNNN lllleeeennnn))))))));;;;
  2584.  
  2585.  
  2586.        sv_yes  This is the ttttrrrruuuueeee SV.  See ssssvvvv____nnnnoooo.  Always refer to
  2587.                this as &&&&ssssvvvv____yyyyeeeessss.
  2588.  
  2589.        THIS    Variable which is setup by xxxxssssuuuubbbbpppppppp to designate the
  2590.                object in a C++ XSUB.  This is always the proper
  2591.                type for the C++ object.  See CCCCLLLLAAAASSSSSSSS and the _p_e_r_l_x_s
  2592.                manpage.
  2593.  
  2594.        toLOWER Converts the specified character to lowercase.
  2595.  
  2596.                        iiiinnnntttt ttttooooLLLLOOOOWWWWEEEERRRR ((((cccchhhhaaaarrrr cccc))))
  2597.  
  2598.  
  2599.        toUPPER Converts the specified character to uppercase.
  2600.  
  2601.                        iiiinnnntttt ttttooooUUUUPPPPPPPPEEEERRRR ((((cccchhhhaaaarrrr cccc))))
  2602.  
  2603.  
  2604.        warn    This is the XSUB-writer's interface to Perl's wwwwaaaarrrrnnnn
  2605.                function.  Use this function the same way you use
  2606.                the C pppprrrriiiinnnnttttffff function.  See ccccrrrrooooaaaakkkk(((()))).
  2607.  
  2608.        XPUSHi  Push an integer onto the stack, extending the
  2609.                stack if necessary.  See PPPPUUUUSSSSHHHHiiii.
  2610.  
  2611.                        XXXXPPPPUUUUSSSSHHHHiiii((((iiiinnnntttt dddd))))
  2612.  
  2613.  
  2614.        XPUSHn  Push a double onto the stack, extending the stack
  2615.                if necessary.  See PPPPUUUUSSSSHHHHnnnn.
  2616.  
  2617.                        XXXXPPPPUUUUSSSSHHHHnnnn((((ddddoooouuuubbbblllleeee dddd))))
  2618.  
  2619.  
  2620.        XPUSHp  Push a string onto the stack, extending the stack
  2621.                if necessary.  The lllleeeennnn indicates the length of the
  2622.                string.  See PPPPUUUUSSSSHHHHpppp.
  2623.  
  2624.                        XXXXPPPPUUUUSSSSHHHHpppp((((cccchhhhaaaarrrr ****cccc,,,, iiiinnnntttt lllleeeennnn))))
  2625.  
  2626.  
  2627.        XPUSHs  Push an SV onto the stack, extending the stack if
  2628.                necessary.  See PPPPUUUUSSSSHHHHssss.
  2629.  
  2630.                        XXXXPPPPUUUUSSSSHHHHssss((((ssssvvvv))))
  2631.  
  2632.  
  2633.        XSRETURN
  2634.                Return from XSUB, indicating number of items on
  2635.  
  2636.  
  2637.  
  2638. 23/Jan/96                perl 5.002 with                       40
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644. PERLGUTS(1)    User Contributed Perl Documentation    PERLGUTS(1)
  2645.  
  2646.  
  2647.                the stack.  This is usually handled by xxxxssssuuuubbbbpppppppp.
  2648.  
  2649.                        XXXXSSSSRRRREEEETTTTUUUURRRRNNNN((((xxxx))));;;;
  2650.  
  2651.  
  2652.        XSRETURN_EMPTY
  2653.                Return from an XSUB immediately.
  2654.  
  2655.                        XXXXSSSSRRRREEEETTTTUUUURRRRNNNN____EEEEMMMMPPPPTTTTYYYY;;;;
  2656.  
  2657.  
  2658.        XSRETURN_NO
  2659.                Return ffffaaaallllsssseeee from an XSUB immediately.
  2660.  
  2661.                        XXXXSSSSRRRREEEETTTTUUUURRRRNNNN____NNNNOOOO;;;;
  2662.  
  2663.  
  2664.        XSRETURN_UNDEF
  2665.                Return uuuunnnnddddeeeeffff from an XSUB immediately.
  2666.  
  2667.                        XXXXSSSSRRRREEEETTTTUUUURRRRNNNN____UUUUNNNNDDDDEEEEFFFF;;;;
  2668.  
  2669.  
  2670.        XSRETURN_YES
  2671.                Return ttttrrrruuuueeee from an XSUB immediately.
  2672.  
  2673.                        XXXXSSSSRRRREEEETTTTUUUURRRRNNNN____YYYYEEEESSSS;;;;
  2674.  
  2675.  
  2676.        Zero    The XSUB-writer's interface to the C mmmmeeeemmmmzzzzeeeerrrroooo
  2677.                function.  The dddd is the destination, nnnn is the
  2678.                number of items, and tttt is the type.
  2679.  
  2680.                        ((((vvvvooooiiiidddd)))) ZZZZeeeerrrroooo(((( dddd,,,, nnnn,,,, tttt ))));;;;
  2681.  
  2682.  
  2683. AAAAUUUUTTTTHHHHOOOORRRR
  2684.        Jeff Okamoto <okamoto@corp.hp.com>
  2685.  
  2686.        With lots of help and suggestions from Dean Roehrich,
  2687.        Malcolm Beattie, Andreas Koenig, Paul Hudson, Ilya
  2688.        Zakharevich, Paul Marquess, Neil Bowers, Matthew Green,
  2689.        Tim Bunce, and Spider Boardman.
  2690.  
  2691.        API Listing by Dean Roehrich <roehrich@cray.com>.
  2692.  
  2693. DDDDAAAATTTTEEEE
  2694.        Version 20: 1995/12/14
  2695.  
  2696.  
  2697.  
  2698.  
  2699.  
  2700.  
  2701.  
  2702.  
  2703.  
  2704. 23/Jan/96                perl 5.002 with                       41
  2705.  
  2706.  
  2707.