=for apidoc Amn|char*|CLASS
Variable which is setup by C<xsubpp> to indicate the
-class name for a C++ XS constructor. This is always a C<char*>. See C<THIS>.
+class name for a C++ XS constructor. This is always a C<char*>. See
+C<L</THIS>>.
=for apidoc Amn|(whatever)|RETVAL
Variable which is setup by C<xsubpp> to hold the return value for an
=for apidoc Amn|(whatever)|THIS
Variable which is setup by C<xsubpp> to designate the object in a C++
-XSUB. This is always the proper type for the C++ object. See C<CLASS> and
+XSUB. This is always the proper type for the C++ object. See C<L</CLASS>> and
L<perlxs/"Using XS With C++">.
=for apidoc Amn|I32|ax
=for apidoc AmU||XS_VERSION
The version identifier for an XS module. This is usually
-handled automatically by C<ExtUtils::MakeMaker>. See C<XS_VERSION_BOOTCHECK>.
+handled automatically by C<ExtUtils::MakeMaker>. See
+C<L</XS_VERSION_BOOTCHECK>>.
=for apidoc Ams||XS_VERSION_BOOTCHECK
Macro to verify that a PM module's $VERSION variable matches the XS
/*
=for apidoc AmU||G_SCALAR
-Used to indicate scalar context. See C<GIMME_V>, C<GIMME>, and
+Used to indicate scalar context. See C<L</GIMME_V>>, C<L</GIMME>>, and
L<perlcall>.
=for apidoc AmU||G_ARRAY
-Used to indicate list context. See C<GIMME_V>, C<GIMME> and
+Used to indicate list context. See C<L</GIMME_V>>, C<L</GIMME>> and
L<perlcall>.
=for apidoc AmU||G_VOID
-Used to indicate void context. See C<GIMME_V> and L<perlcall>.
+Used to indicate void context. See C<L</GIMME_V>> and L<perlcall>.
=for apidoc AmU||G_DISCARD
Indicates that arguments returned from a callback should be discarded. See
Requires one of either namesv or namepv to be non-null.
-See C<gv_stashpvn> for details on "flags".
+See C<L</gv_stashpvn>> for details on "flags".
Note the sv interface is strongly preferred for performance reasons.
/*
=for apidoc gv_stashsv
-Returns a pointer to the stash for a specified package. See C<gv_stashpvn>.
+Returns a pointer to the stash for a specified package. See
+C<L</gv_stashpvn>>.
-Note this interface is strongly preferred over C<gv_stashpvn> for performance reasons.
+Note this interface is strongly preferred over C<gv_stashpvn> for performance
+reasons.
=cut
*/
=for apidoc Am|void|Newxc|void* ptr|int nitems|type|cast
The XSUB-writer's interface to the C C<malloc> function, with
-cast. See also C<Newx>.
+cast. See also C<L</Newx>>.
Memory obtained by this should B<ONLY> be freed with L<"Safefree">.
=for apidoc Am|void|Newxz|void* ptr|int nitems|type
The XSUB-writer's interface to the C C<malloc> function. The allocated
-memory is zeroed with C<memzero>. See also C<Newx>.
+memory is zeroed with C<memzero>. See also C<L</Newx>>.
Memory obtained by this should B<ONLY> be freed with L<"Safefree">.
=for apidoc Am|void|Move|void* src|void* dest|int nitems|type
The XSUB-writer's interface to the C C<memmove> function. The C<src> is the
source, C<dest> is the destination, C<nitems> is the number of items, and
-C<type> is the type. Can do overlapping moves. See also C<Copy>.
+C<type> is the type. Can do overlapping moves. See also C<L</Copy>>.
=for apidoc Am|void *|MoveD|void* src|void* dest|int nitems|type
Like C<Move> but returns dest. Useful
=for apidoc Am|void|Copy|void* src|void* dest|int nitems|type
The XSUB-writer's interface to the C C<memcpy> function. The C<src> is the
source, C<dest> is the destination, C<nitems> is the number of items, and
-C<type> is the type. May fail on overlapping copies. See also C<Move>.
+C<type> is the type. May fail on overlapping copies. See also C<L</Move>>.
=for apidoc Am|void *|CopyD|void* src|void* dest|int nitems|type
=for apidoc hv_ename_add
Adds a name to a stash's internal list of effective names. See
-C<hv_ename_delete>.
+C<L</hv_ename_delete>>.
This is called when a stash is assigned to a new location in the symbol
table.
=for apidoc hv_iternext
-Returns entries from a hash iterator. See C<hv_iterinit>.
+Returns entries from a hash iterator. See C<L</hv_iterinit>>.
You may call C<hv_delete> or C<hv_delete_ent> on the hash entry that the
iterator currently points to, without losing your place or invalidating your
=for apidoc hv_iternext_flags
-Returns entries from a hash iterator. See C<hv_iterinit> and C<hv_iternext>.
+Returns entries from a hash iterator. See C<L</hv_iterinit>> and
+C<L</hv_iternext>>.
The C<flags> value will normally be zero; if HV_ITERNEXT_WANTPLACEHOLDERS is
set the placeholders keys (for restricted hashes) will be returned in addition
to normal keys. By default placeholders are automatically skipped over.
=for apidoc hv_iterkey
Returns the key from the current position of the hash iterator. See
-C<hv_iterinit>.
+C<L</hv_iterinit>>.
=cut
*/
Returns the key as an C<SV*> from the current position of the hash
iterator. The return value will always be a mortal copy of the key. Also
-see C<hv_iterinit>.
+see C<L</hv_iterinit>>.
=cut
*/
=for apidoc hv_iterval
Returns the value from the current position of the hash iterator. See
-C<hv_iterkey>.
+C<L</hv_iterkey>>.
=cut
*/
=for apidoc hv_magic
-Adds magic to a hash. See C<sv_magic>.
+Adds magic to a hash. See C<L</sv_magic>>.
=cut
*/
=for apidoc Am|char*|HvNAME|HV* stash
Returns the package name of a stash, or NULL if C<stash> isn't a stash.
-See C<SvSTASH>, C<CvSTASH>.
+See C<L</SvSTASH>>, C<L</CvSTASH>>.
=for apidoc Am|STRLEN|HvNAMELEN|HV *stash
Returns the length of the stash's name.
variable. Remember though, that hash keys in perl are free to contain
embedded nulls, so using C<strlen()> or similar is not a good way to find
the length of hash keys. This is very similar to the C<SvPV()> macro
-described elsewhere in this document. See also C<HeUTF8>.
+described elsewhere in this document. See also C<L</HeUTF8>>.
If you are using C<HePV> to get values to pass to C<newSVpvn()> to create a
new SV, you should consider using C<newSVhek(HeKEY_hek(he))> as it is more
This is the C<undef> SV. Always refer to this as C<&PL_sv_undef>.
=for apidoc Amn|SV|PL_sv_no
-This is the C<false> SV. See C<PL_sv_yes>. Always refer to this as
+This is the C<false> SV. See C<L</PL_sv_yes>>. Always refer to this as
C<&PL_sv_no>.
=for apidoc Amn|SV|PL_sv_yes
-This is the C<true> SV. See C<PL_sv_no>. Always refer to this as
+This is the C<true> SV. See C<L</PL_sv_no>>. Always refer to this as
C<&PL_sv_yes>.
=cut
When Perl is run in debugging mode, with the B<-d> switch, this GV contains
the SV which holds the name of the sub being debugged. This is the C
variable which corresponds to Perl's $DB::sub variable. See
-C<PL_DBsingle>.
+C<L</PL_DBsingle>>.
=for apidoc mn|SV *|PL_DBsingle
When Perl is run in debugging mode, with the B<-d> switch, this SV is a
boolean which indicates whether subs are being single-stepped.
Single-stepping is automatically turned on after every step. This is the C
variable which corresponds to Perl's $DB::single variable. See
-C<PL_DBsub>.
+C<L</PL_DBsub>>.
=for apidoc mn|SV *|PL_DBtrace
Trace variable used when Perl is run in debugging mode, with the B<-d>
switch. This is the C variable which corresponds to Perl's $DB::trace
-variable. See C<PL_DBsingle>.
+variable. See C<L</PL_DBsingle>>.
=cut
*/
Unsets the RV status of the SV, and decrements the reference count of
whatever was being referenced by the RV. This can almost be thought of
as a reversal of C<newSVrv>. This is C<sv_unref_flags> with the C<flag>
-being zero. See C<SvROK_off>.
+being zero. See C<L</SvROK_off>>.
=cut
*/
Undo various types of fakery on an SV: if the PV is a shared string, make
a private copy; if we're a ref, stop refing; if we're a glob, downgrade to
-an xpvmg. See also C<sv_force_normal_flags>.
+an xpvmg. See also C<L</sv_force_normal_flags>>.
=cut
*/
Tells an SV to use C<ptr> to find its string value. Implemented by
calling C<sv_usepvn_flags> with C<flags> of 0, hence does not handle 'set'
-magic. See C<sv_usepvn_flags>.
+magic. See C<L</sv_usepvn_flags>>.
=cut
*/
/*
=for apidoc mg_magical
-Turns on the magical status of an SV. See C<sv_magic>.
+Turns on the magical status of an SV. See C<L</sv_magic>>.
=cut
*/
=for apidoc mg_get
Do magic before a value is retrieved from the SV. The type of SV must
-be >= SVt_PVMG. See C<sv_magic>.
+be >= SVt_PVMG. See C<L</sv_magic>>.
=cut
*/
/*
=for apidoc mg_set
-Do magic after a value is assigned to the SV. See C<sv_magic>.
+Do magic after a value is assigned to the SV. See C<L</sv_magic>>.
=cut
*/
/*
=for apidoc mg_clear
-Clear something magical that the SV represents. See C<sv_magic>.
+Clear something magical that the SV represents. See C<L</sv_magic>>.
=cut
*/
/*
=for apidoc mg_find
-Finds the magic pointer for type matching the SV. See C<sv_magic>.
+Finds the magic pointer for type matching the SV. See C<L</sv_magic>>.
=cut
*/
=for apidoc mg_findext
Finds the magic pointer of C<type> with the given C<vtbl> for the C<SV>. See
-C<sv_magicext>.
+C<L</sv_magicext>>.
=cut
*/
/*
=for apidoc mg_copy
-Copies the magic from one SV to another. See C<sv_magic>.
+Copies the magic from one SV to another. See C<L</sv_magic>>.
=cut
*/
/*
=for apidoc mg_free
-Free any magic storage used by the SV. See C<sv_magic>.
+Free any magic storage used by the SV. See C<L</sv_magic>>.
=cut
*/
For lower-level direct manipulation of C<op_sibparent> and C<op_moresib>,
-see C<OpMORESIB_set>, C<OpLASTSIB_set>, C<OpMAYBESIB_set>.
+see C<L</OpMORESIB_set>>, C<L</OpLASTSIB_set>>, C<L</OpMAYBESIB_set>>.
=cut
*/
Returns the sibling of o, or NULL if there is no sibling
=for apidoc Am|void|OpMORESIB_set|OP *o|OP *sib
-Sets the sibling of o to the non-zero value sib. See also C<OpLASTSIB_set>
-and C<OpMAYBESIB_set>. For a higher-level interface, see
-C<op_sibling_splice>.
+Sets the sibling of o to the non-zero value sib. See also C<L</OpLASTSIB_set>>
+and C<L</OpMAYBESIB_set>>. For a higher-level interface, see
+C<L</op_sibling_splice>>.
=for apidoc Am|void|OpLASTSIB_set|OP *o|OP *parent
Marks o as having no further siblings. On C<PERL_OP_PARENT> builds, marks
-o as having the specified parent. See also C<OpMORESIB_set> and
+o as having the specified parent. See also C<L</OpMORESIB_set>> and
C<OpMAYBESIB_set>. For a higher-level interface, see
-C<op_sibling_splice>.
+C<L</op_sibling_splice>>.
=for apidoc Am|void|OpMAYBESIB_set|OP *o|OP *sib|OP *parent
Conditionally does C<OpMORESIB_set> or C<OpLASTSIB_set> depending on whether
-sib is non-null. For a higher-level interface, see C<op_sibling_splice>.
+sib is non-null. For a higher-level interface, see C<L</op_sibling_splice>>.
=cut
*/
Constructs and returns a new pad name. C<s> must be a UTF8 string. Do not
use this for pad names that point to outer lexicals. See
-L</newPADNAMEouter>.
+C<L</newPADNAMEouter>>.
=cut
*/
=head1 Stack Manipulation Macros
=for apidoc AmU||SP
-Stack pointer. This is usually handled by C<xsubpp>. See C<dSP> and
+Stack pointer. This is usually handled by C<xsubpp>. See C<L</dSP>> and
C<SPAGAIN>.
=for apidoc AmU||MARK
-Stack marker variable for the XSUB. See C<dMARK>.
+Stack marker variable for the XSUB. See C<L</dMARK>>.
=for apidoc Am|void|PUSHMARK|SP
-Opening bracket for arguments on a callback. See C<PUTBACK> and
+Opening bracket for arguments on a callback. See C<L</PUTBACK>> and
L<perlcall>.
=for apidoc Ams||dSP
Declares a local copy of perl's stack pointer for the XSUB, available via
-the C<SP> macro. See C<SP>.
+the C<SP> macro. See C<L</SP>>.
=for apidoc ms||djSP
Declare Just C<SP>. This is actually identical to C<dSP>, and declares
a local copy of perl's stack pointer, available via the C<SP> macro.
-See C<SP>. (Available for backward source code compatibility with the
-old (Perl 5.005) thread model.)
+See C<L<perlapi/SP>>. (Available for backward source code compatibility with
+the old (Perl 5.005) thread model.)
=for apidoc Ams||dMARK
-Declare a stack marker variable, C<mark>, for the XSUB. See C<MARK> and
-C<dORIGMARK>.
+Declare a stack marker variable, C<mark>, for the XSUB. See C<L</MARK>> and
+C<L</dORIGMARK>>.
=for apidoc Ams||dORIGMARK
-Saves the original stack mark for the XSUB. See C<ORIGMARK>.
+Saves the original stack mark for the XSUB. See C<L</ORIGMARK>>.
=for apidoc AmU||ORIGMARK
-The original stack mark for the XSUB. See C<dORIGMARK>.
+The original stack mark for the XSUB. See C<L</dORIGMARK>>.
=for apidoc Ams||SPAGAIN
Refetch the stack pointer. Used after a callback. See L<perlcall>.
/*
=for apidoc Ams||PUTBACK
Closing bracket for XSUB arguments. This is usually handled by C<xsubpp>.
-See C<PUSHMARK> and L<perlcall> for other uses.
+See C<L</PUSHMARK>> and L<perlcall> for other uses.
=for apidoc Amn|SV*|POPs
Pops an SV off the stack.
=for apidoc Am|void|PUSHs|SV* sv
Push an SV onto the stack. The stack must have room for this element.
-Does not handle 'set' magic. Does not use C<TARG>. See also C<PUSHmortal>,
-C<XPUSHs> and C<XPUSHmortal>.
+Does not handle 'set' magic. Does not use C<TARG>. See also
+C<L</PUSHmortal>>, C<L</XPUSHs>>, and C<L</XPUSHmortal>>.
=for apidoc Am|void|PUSHp|char* str|STRLEN len
Push a string onto the stack. The stack must have room for this element.
The C<len> indicates the length of the string. Handles 'set' magic. Uses
C<TARG>, so C<dTARGET> or C<dXSTARG> should be called to declare it. Do not
call multiple C<TARG>-oriented macros to return lists from XSUB's - see
-C<mPUSHp> instead. See also C<XPUSHp> and C<mXPUSHp>.
+C<L</mPUSHp>> instead. See also C<L</XPUSHp>> and C<L</mXPUSHp>>.
=for apidoc Am|void|PUSHn|NV nv
Push a double onto the stack. The stack must have room for this element.
Handles 'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> should be
called to declare it. Do not call multiple C<TARG>-oriented macros to
-return lists from XSUB's - see C<mPUSHn> instead. See also C<XPUSHn> and
-C<mXPUSHn>.
+return lists from XSUB's - see C<L</mPUSHn>> instead. See also C<L</XPUSHn>>
+and C<L</mXPUSHn>>.
=for apidoc Am|void|PUSHi|IV iv
Push an integer onto the stack. The stack must have room for this element.
Handles 'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> should be
called to declare it. Do not call multiple C<TARG>-oriented macros to
-return lists from XSUB's - see C<mPUSHi> instead. See also C<XPUSHi> and
-C<mXPUSHi>.
+return lists from XSUB's - see C<L</mPUSHi>> instead. See also C<L</XPUSHi>>
+and C<L</mXPUSHi>>.
=for apidoc Am|void|PUSHu|UV uv
Push an unsigned integer onto the stack. The stack must have room for this
element. Handles 'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG>
should be called to declare it. Do not call multiple C<TARG>-oriented
-macros to return lists from XSUB's - see C<mPUSHu> instead. See also
-C<XPUSHu> and C<mXPUSHu>.
+macros to return lists from XSUB's - see C<L</mPUSHu>> instead. See also
+C<L</XPUSHu>> and C<L</mXPUSHu>>.
=for apidoc Am|void|XPUSHs|SV* sv
Push an SV onto the stack, extending the stack if necessary. Does not
-handle 'set' magic. Does not use C<TARG>. See also C<XPUSHmortal>,
+handle 'set' magic. Does not use C<TARG>. See also C<L</XPUSHmortal>>,
C<PUSHs> and C<PUSHmortal>.
=for apidoc Am|void|XPUSHp|char* str|STRLEN len
indicates the length of the string. Handles 'set' magic. Uses C<TARG>, so
C<dTARGET> or C<dXSTARG> should be called to declare it. Do not call
multiple C<TARG>-oriented macros to return lists from XSUB's - see
-C<mXPUSHp> instead. See also C<PUSHp> and C<mPUSHp>.
+C<L</mXPUSHp>> instead. See also C<L</PUSHp>> and C<L</mPUSHp>>.
=for apidoc Am|void|XPUSHn|NV nv
Push a double onto the stack, extending the stack if necessary. Handles
'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> should be called to
declare it. Do not call multiple C<TARG>-oriented macros to return lists
-from XSUB's - see C<mXPUSHn> instead. See also C<PUSHn> and C<mPUSHn>.
+from XSUB's - see C<L</mXPUSHn>> instead. See also C<L</PUSHn>> and
+C<L</mPUSHn>>.
=for apidoc Am|void|XPUSHi|IV iv
Push an integer onto the stack, extending the stack if necessary. Handles
'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> should be called to
declare it. Do not call multiple C<TARG>-oriented macros to return lists
-from XSUB's - see C<mXPUSHi> instead. See also C<PUSHi> and C<mPUSHi>.
+from XSUB's - see C<L</mXPUSHi>> instead. See also C<L</PUSHi>> and
+C<L</mPUSHi>>.
=for apidoc Am|void|XPUSHu|UV uv
Push an unsigned integer onto the stack, extending the stack if necessary.
Handles 'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> should be
called to declare it. Do not call multiple C<TARG>-oriented macros to
-return lists from XSUB's - see C<mXPUSHu> instead. See also C<PUSHu> and
-C<mPUSHu>.
+return lists from XSUB's - see C<L</mXPUSHu>> instead. See also C<L</PUSHu>> and
+C<L</mPUSHu>>.
=for apidoc Am|void|mPUSHs|SV* sv
Push an SV onto the stack and mortalizes the SV. The stack must have room
-for this element. Does not use C<TARG>. See also C<PUSHs> and C<mXPUSHs>.
+for this element. Does not use C<TARG>. See also C<L</PUSHs>> and
+C<L</mXPUSHs>>.
=for apidoc Am|void|PUSHmortal
Push a new mortal SV onto the stack. The stack must have room for this
-element. Does not use C<TARG>. See also C<PUSHs>, C<XPUSHmortal> and C<XPUSHs>.
+element. Does not use C<TARG>. See also C<L</PUSHs>>, C<L</XPUSHmortal>> and
+C<L</XPUSHs>>.
=for apidoc Am|void|mPUSHp|char* str|STRLEN len
Push a string onto the stack. The stack must have room for this element.
The C<len> indicates the length of the string. Does not use C<TARG>.
-See also C<PUSHp>, C<mXPUSHp> and C<XPUSHp>.
+See also C<L</PUSHp>>, C<L</mXPUSHp>> and C<L</XPUSHp>>.
=for apidoc Am|void|mPUSHn|NV nv
Push a double onto the stack. The stack must have room for this element.
-Does not use C<TARG>. See also C<PUSHn>, C<mXPUSHn> and C<XPUSHn>.
+Does not use C<TARG>. See also C<L</PUSHn>>, C<L</mXPUSHn>> and C<L</XPUSHn>>.
=for apidoc Am|void|mPUSHi|IV iv
Push an integer onto the stack. The stack must have room for this element.
-Does not use C<TARG>. See also C<PUSHi>, C<mXPUSHi> and C<XPUSHi>.
+Does not use C<TARG>. See also C<L</PUSHi>>, C<L</mXPUSHi>> and C<L</XPUSHi>>.
=for apidoc Am|void|mPUSHu|UV uv
Push an unsigned integer onto the stack. The stack must have room for this
-element. Does not use C<TARG>. See also C<PUSHu>, C<mXPUSHu> and C<XPUSHu>.
+element. Does not use C<TARG>. See also C<L</PUSHu>>, C<L</mXPUSHu>> and
+C<L</XPUSHu>>.
=for apidoc Am|void|mXPUSHs|SV* sv
Push an SV onto the stack, extending the stack if necessary and mortalizes
-the SV. Does not use C<TARG>. See also C<XPUSHs> and C<mPUSHs>.
+the SV. Does not use C<TARG>. See also C<L</XPUSHs>> and C<L</mPUSHs>>.
=for apidoc Am|void|XPUSHmortal
Push a new mortal SV onto the stack, extending the stack if necessary.
-Does not use C<TARG>. See also C<XPUSHs>, C<PUSHmortal> and C<PUSHs>.
+Does not use C<TARG>. See also C<L</XPUSHs>>, C<L</PUSHmortal>> and
+C<L</PUSHs>>.
=for apidoc Am|void|mXPUSHp|char* str|STRLEN len
Push a string onto the stack, extending the stack if necessary. The C<len>
-indicates the length of the string. Does not use C<TARG>. See also C<XPUSHp>,
-C<mPUSHp> and C<PUSHp>.
+indicates the length of the string. Does not use C<TARG>. See also
+C<L</XPUSHp>>, C<mPUSHp> and C<PUSHp>.
=for apidoc Am|void|mXPUSHn|NV nv
Push a double onto the stack, extending the stack if necessary.
-Does not use C<TARG>. See also C<XPUSHn>, C<mPUSHn> and C<PUSHn>.
+Does not use C<TARG>. See also C<L</XPUSHn>>, C<L</mPUSHn>> and C<L</PUSHn>>.
=for apidoc Am|void|mXPUSHi|IV iv
Push an integer onto the stack, extending the stack if necessary.
-Does not use C<TARG>. See also C<XPUSHi>, C<mPUSHi> and C<PUSHi>.
+Does not use C<TARG>. See also C<L</XPUSHi>>, C<L</mPUSHi>> and C<L</PUSHi>>.
=for apidoc Am|void|mXPUSHu|UV uv
Push an unsigned integer onto the stack, extending the stack if necessary.
-Does not use C<TARG>. See also C<XPUSHu>, C<mPUSHu> and C<PUSHu>.
+Does not use C<TARG>. See also C<L</XPUSHu>>, C<L</mPUSHu>> and C<L</PUSHu>>.
=cut
*/
=head1 Callback Functions
=for apidoc Ams||SAVETMPS
-Opening bracket for temporaries on a callback. See C<FREETMPS> and
+Opening bracket for temporaries on a callback. See C<L</FREETMPS>> and
L<perlcall>.
=for apidoc Ams||FREETMPS
-Closing bracket for temporaries on a callback. See C<SAVETMPS> and
+Closing bracket for temporaries on a callback. See C<L</SAVETMPS>> and
L<perlcall>.
=for apidoc Ams||ENTER
-Opening bracket on a callback. See C<LEAVE> and L<perlcall>.
+Opening bracket on a callback. See C<L</LEAVE>> and L<perlcall>.
=for apidoc Ams||LEAVE
-Closing bracket on a callback. See C<ENTER> and L<perlcall>.
+Closing bracket on a callback. See C<L</ENTER>> and L<perlcall>.
=over
It croaks if the SV is already in a more complex form than requested. You
generally want to use the C<SvUPGRADE> macro wrapper, which checks the type
before calling C<sv_upgrade>, and hence does not croak. See also
-C<svtype>.
+C<L</svtype>>.
=cut
*/
=for apidoc sv_setiv
Copies an integer into the given SV, upgrading first if necessary.
-Does not handle 'set' magic. See also C<sv_setiv_mg>.
+Does not handle 'set' magic. See also C<L</sv_setiv_mg>>.
=cut
*/
=for apidoc sv_setuv
Copies an unsigned integer into the given SV, upgrading first if necessary.
-Does not handle 'set' magic. See also C<sv_setuv_mg>.
+Does not handle 'set' magic. See also C<L</sv_setuv_mg>>.
=cut
*/
=for apidoc sv_setnv
Copies a double into the given SV, upgrading first if necessary.
-Does not handle 'set' magic. See also C<sv_setnv_mg>.
+Does not handle 'set' magic. See also C<L</sv_setnv_mg>>.
=cut
*/
Copies a string (possibly containing embedded C<NUL> characters) into an SV.
The C<len> parameter indicates the number of
bytes to be copied. If the C<ptr> argument is NULL the SV will become
-undefined. Does not handle 'set' magic. See C<sv_setpvn_mg>.
+undefined. Does not handle 'set' magic. See C<L</sv_setpvn_mg>>.
=cut
*/
Copies a string into an SV. The string must be terminated with a C<NUL>
character.
-Does not handle 'set' magic. See C<sv_setpv_mg>.
+Does not handle 'set' magic. See C<L</sv_setpv_mg>>.
=cut
*/
Concatenates the string onto the end of the string which is in the SV. The
C<len> indicates number of bytes to copy. If the SV has the UTF-8
status set, then the bytes appended should be valid UTF-8.
-Handles 'get' magic, but not 'set' magic. See C<sv_catpvn_mg>.
+Handles 'get' magic, but not 'set' magic. See C<L</sv_catpvn_mg>>.
=for apidoc sv_catpvn_flags
Concatenates the string from SV C<ssv> onto the end of the string in SV
C<dsv>. If C<ssv> is null, does nothing; otherwise modifies only C<dsv>.
-Handles 'get' magic on both SVs, but no 'set' magic. See C<sv_catsv_mg> and
-C<sv_catsv_nomg>.
+Handles 'get' magic on both SVs, but no 'set' magic. See C<L</sv_catsv_mg>>
+and C<L</sv_catsv_nomg>>.
=for apidoc sv_catsv_flags
Concatenates the C<NUL>-terminated string onto the end of the string which is
in the SV.
If the SV has the UTF-8 status set, then the bytes appended should be
-valid UTF-8. Handles 'get' magic, but not 'set' magic. See C<sv_catpv_mg>.
+valid UTF-8. Handles 'get' magic, but not 'set' magic. See
+C<L</sv_catpv_mg>>.
=cut */
necessary, then adds a new magic item of type C<how> to the head of the
magic list.
-See C<sv_magicext> (which C<sv_magic> now calls) for a description of the
+See C<L</sv_magicext>> (which C<sv_magic> now calls) for a description of the
handling of the C<name> and C<namlen> arguments.
You need to use C<sv_magicext> to add magic to SvREADONLY SVs and also
=for apidoc sv_len
Returns the length of the string in the SV. Handles magic and type
-coercion and sets the UTF8 flag appropriately. See also C<SvCUR>, which
+coercion and sets the UTF8 flag appropriately. See also C<L</SvCUR>>, which
gives raw access to the xpv_cur slot.
=cut
Compares the strings in two SVs. Returns -1, 0, or 1 indicating whether the
string in C<sv1> is less than, equal to, or greater than the string in
C<sv2>. Is UTF-8 and 'use bytes' aware, handles get magic, and will
-coerce its args to strings if necessary. See also C<sv_cmp_locale>.
+coerce its args to strings if necessary. See also C<L</sv_cmp_locale>>.
=for apidoc sv_cmp_flags
string in C<sv1> is less than, equal to, or greater than the string in
C<sv2>. Is UTF-8 and 'use bytes' aware and will coerce its args to strings
if necessary. If the flags include SV_GMAGIC, it handles get magic. See
-also C<sv_cmp_locale_flags>.
+also C<L</sv_cmp_locale_flags>>.
=cut
*/
Compares the strings in two SVs in a locale-aware manner. Is UTF-8 and
'use bytes' aware, handles get magic, and will coerce its args to strings
-if necessary. See also C<sv_cmp>.
+if necessary. See also C<L</sv_cmp>>.
=for apidoc sv_cmp_locale_flags
Compares the strings in two SVs in a locale-aware manner. Is UTF-8 and
'use bytes' aware and will coerce its args to strings if necessary. If the
-flags contain SV_GMAGIC, it handles get magic. See also C<sv_cmp_flags>.
+flags contain SV_GMAGIC, it handles get magic. See also C<L</sv_cmp_flags>>.
=cut
*/
=for apidoc sv_collxfrm
This calls C<sv_collxfrm_flags> with the SV_GMAGIC flag. See
-C<sv_collxfrm_flags>.
+C<L</sv_collxfrm_flags>>.
=for apidoc sv_collxfrm_flags
Creates a new SV which is a copy of the original SV (using C<sv_setsv>).
The new SV is marked as mortal. It will be destroyed "soon", either by an
explicit call to FREETMPS, or by an implicit call at places such as
-statement boundaries. See also C<sv_newmortal> and C<sv_2mortal>.
+statement boundaries. See also C<L</sv_newmortal>> and C<L</sv_2mortal>>.
=cut
*/
Creates a new null SV which is mortal. The reference count of the SV is
set to 1. It will be destroyed "soon", either by an explicit call to
FREETMPS, or by an implicit call at places such as statement boundaries.
-See also C<sv_mortalcopy> and C<sv_2mortal>.
+See also C<L</sv_mortalcopy>> and C<L</sv_2mortal>>.
=cut
*/
Marks an existing SV as mortal. The SV will be destroyed "soon", either
by an explicit call to FREETMPS, or by an implicit call at places such as
statement boundaries. SvTEMP() is turned on which means that the SV's
-string buffer can be "stolen" if this SV is copied. See also C<sv_newmortal>
-and C<sv_mortalcopy>.
+string buffer can be "stolen" if this SV is copied. See also
+C<L</sv_newmortal>> and C<L</sv_mortalcopy>>.
=cut
*/
appropriate, else not. C<sv_pvn_force> and C<sv_pvn_force_nomg> are
implemented in terms of this function.
You normally want to use the various wrapper macros instead: see
-C<SvPV_force> and C<SvPV_force_nomg>
+C<L</SvPV_force>> and C<L</SvPV_force_nomg>>.
=cut
*/
=for apidoc sv_bless
Blesses an SV into a specified package. The SV must be an RV. The package
-must be designated by its stash (see C<gv_stashpv()>). The reference count
+must be designated by its stash (see C<L</gv_stashpv>>). The reference count
of the SV is unaffected.
=cut
C<SV_IMMEDIATE_UNREF> to force the reference count to be decremented
(otherwise the decrementing is conditional on the reference count being
different from one or the reference being a readonly SV).
-See C<SvROK_off>.
+See C<L</SvROK_off>>.
=cut
*/
=for apidoc sv_setpviv
Copies an integer into the given SV, also updating its string value.
-Does not handle 'set' magic. See C<sv_setpviv_mg>.
+Does not handle 'set' magic. See C<L</sv_setpviv_mg>>.
=cut
*/
=for apidoc sv_setpvf
Works like C<sv_catpvf> but copies the text into the SV instead of
-appending it. Does not handle 'set' magic. See C<sv_setpvf_mg>.
+appending it. Does not handle 'set' magic. See C<L</sv_setpvf_mg>>.
=cut
*/
=for apidoc sv_vsetpvf
Works like C<sv_vcatpvf> but copies the text into the SV instead of
-appending it. Does not handle 'set' magic. See C<sv_vsetpvf_mg>.
+appending it. Does not handle 'set' magic. See C<L</sv_vsetpvf_mg>>.
Usually used via its frontend C<sv_setpvf>.
(including, but not limited to, SVs with a UTF-8 PV formatted with %s,
and characters >255 formatted with %c), the original SV might get
upgraded to UTF-8. Handles 'get' magic, but not 'set' magic. See
-C<sv_catpvf_mg>. If the original SV was UTF-8, the pattern should be
+C<L</sv_catpvf_mg>>. If the original SV was UTF-8, the pattern should be
valid UTF-8; if the original SV was bytes, the pattern should be too.
=cut */
Processes its arguments like C<sv_catpvfn> called with a non-null C-style
variable argument list, and appends the formatted
-to an SV. Does not handle 'set' magic. See C<sv_vcatpvf_mg>.
+to an SV. Does not handle 'set' magic. See C<L</sv_vcatpvf_mg>>.
Usually used via its frontend C<sv_catpvf>.
and smaller.
=for apidoc Am|svtype|SvTYPE|SV* sv
-Returns the type of the SV. See C<svtype>.
+Returns the type of the SV. See C<L</svtype>>.
=for apidoc Am|void|SvUPGRADE|SV* sv|svtype type
Used to upgrade an SV to a more complex form. Uses C<sv_upgrade> to
-perform the upgrade if necessary. See C<svtype>.
+perform the upgrade if necessary. See C<L</svtype>>.
=cut
*/
=for apidoc Am|IV|SvIVX|SV* sv
Returns the raw value in the SV's IV slot, without checks or conversions.
-Only use when you are sure SvIOK is true. See also C<SvIV()>.
+Only use when you are sure SvIOK is true. See also C<L</SvIV>>.
=for apidoc Am|UV|SvUVX|SV* sv
Returns the raw value in the SV's UV slot, without checks or conversions.
-Only use when you are sure SvIOK is true. See also C<SvUV()>.
+Only use when you are sure SvIOK is true. See also C<L</SvUV>>.
=for apidoc Am|NV|SvNVX|SV* sv
Returns the raw value in the SV's NV slot, without checks or conversions.
-Only use when you are sure SvNOK is true. See also C<SvNV()>.
+Only use when you are sure SvNOK is true. See also C<L</SvNV>>.
=for apidoc Am|char*|SvPVX|SV* sv
Returns a pointer to the physical string in the SV. The SV must contain a
AUTOLOAD routine. See L<perlguts/Autoloading with XSUBs>.
=for apidoc Am|STRLEN|SvCUR|SV* sv
-Returns the length of the string which is in the SV. See C<SvLEN>.
+Returns the length of the string which is in the SV. See C<L</SvLEN>>.
=for apidoc Am|STRLEN|SvLEN|SV* sv
Returns the size of the string buffer in the SV, not including any part
-attributable to C<SvOOK>. See C<SvCUR>.
+attributable to C<SvOOK>. See C<L</SvCUR>>.
=for apidoc Am|char*|SvEND|SV* sv
Returns a pointer to the spot just after the last character in
the string which is in the SV, where there is usually a trailing
C<NUL> character (even though Perl scalars do not strictly require it).
-See C<SvCUR>. Access the character as *(SvEND(sv)).
+See C<L</SvCUR>>. Access the character as *(SvEND(sv)).
Warning: If C<SvCUR> is equal to C<SvLEN>, then C<SvEND> points to
unallocated memory.
C<SvIV_set> instead of the lvalue assignment to C<SvIVX>.
=for apidoc Am|void|SvNV_set|SV* sv|NV val
-Set the value of the NV pointer in sv to val. See C<SvIV_set>.
+Set the value of the NV pointer in sv to val. See C<L</SvIV_set>>.
=for apidoc Am|void|SvPV_set|SV* sv|char* val
This is probably not what you want to use, you probably wanted
L</sv_usepvn_flags> or L</sv_setpvn> or L</sv_setpvs>.
Set the value of the PV pointer in C<sv> to the Perl allocated
-C<NUL>-terminated string C<val>. See also C<SvIV_set>.
+C<NUL>-terminated string C<val>. See also C<L</SvIV_set>>.
Remember to free the previous PV buffer. There are many things to check.
Beware that the existing pointer may be involved in copy-on-write or other
free the previous PV buffer.
=for apidoc Am|void|SvUV_set|SV* sv|UV val
-Set the value of the UV pointer in sv to val. See C<SvIV_set>.
+Set the value of the UV pointer in sv to val. See C<L</SvIV_set>>.
=for apidoc Am|void|SvRV_set|SV* sv|SV* val
-Set the value of the RV pointer in sv to val. See C<SvIV_set>.
+Set the value of the RV pointer in sv to val. See C<L</SvIV_set>>.
=for apidoc Am|void|SvMAGIC_set|SV* sv|MAGIC* val
-Set the value of the MAGIC pointer in sv to val. See C<SvIV_set>.
+Set the value of the MAGIC pointer in sv to val. See C<L</SvIV_set>>.
=for apidoc Am|void|SvSTASH_set|SV* sv|HV* val
-Set the value of the STASH pointer in sv to val. See C<SvIV_set>.
+Set the value of the STASH pointer in sv to val. See C<L</SvIV_set>>.
=for apidoc Am|void|SvCUR_set|SV* sv|STRLEN len
-Set the current length of the string which is in the SV. See C<SvCUR>
-and C<SvIV_set>.
+Set the current length of the string which is in the SV. See C<L</SvCUR>>
+and C<SvIV_set>>.
=for apidoc Am|void|SvLEN_set|SV* sv|STRLEN len
-Set the actual length of the string which is in the SV. See C<SvIV_set>.
+Set the actual length of the string which is in the SV. See C<L</SvIV_set>>.
=cut
*/
the SV if the SV does not contain a string. The SV may cache the
stringified version becoming C<SvPOK>. Handles 'get' magic. The
C<len> variable will be set to the length of the string (this is a macro, so
-don't use C<&len>). See also C<SvPVx> for a version which guarantees to
+don't use C<&len>). See also C<L</SvPVx>> for a version which guarantees to
evaluate sv only once.
Note that there is no guarantee that the return value of C<SvPV()> is
Copy-On-Write are handled. In these cases, the return value may point to
a temporary buffer or similar. If you absolutely need the SvPVX field to
be valid (for example, if you intend to write to it), then see
-L</SvPV_force>.
+C<L</SvPV_force>>.
=for apidoc Am|char*|SvPVx|SV* sv|STRLEN len
A version of C<SvPV> which guarantees to evaluate C<sv> only once.
Like C<SvPV_nolen> but doesn't process magic.
=for apidoc Am|IV|SvIV|SV* sv
-Coerces the given SV to an integer and returns it. See C<SvIVx> for a
+Coerces the given SV to an integer and returns it. See C<L</SvIVx>> for a
version which guarantees to evaluate sv only once.
=for apidoc Am|IV|SvIV_nomg|SV* sv
otherwise use the more efficient C<SvIV>.
=for apidoc Am|NV|SvNV|SV* sv
-Coerce the given SV to a double and return it. See C<SvNVx> for a version
+Coerce the given SV to a double and return it. See C<L</SvNVx>> for a version
which guarantees to evaluate sv only once.
=for apidoc Am|NV|SvNV_nomg|SV* sv
otherwise use the more efficient C<SvNV>.
=for apidoc Am|UV|SvUV|SV* sv
-Coerces the given SV to an unsigned integer and returns it. See C<SvUVx>
+Coerces the given SV to an unsigned integer and returns it. See C<L</SvUVx>>
for a version which guarantees to evaluate sv only once.
=for apidoc Am|UV|SvUV_nomg|SV* sv
Returns a true SV if C<b> is a true value, or a false SV if C<b> is 0.
-See also C<PL_sv_yes> and C<PL_sv_no>.
+See also C<L</PL_sv_yes>> and C<L</PL_sv_no>>.
=cut
*/
pod/perl.pod Verbatim line length including indents exceeds 79 by 8
pod/perlaix.pod Verbatim line length including indents exceeds 79 by 11
pod/perlandroid.pod Verbatim line length including indents exceeds 79 by 2
-pod/perlapi.pod ? Should you be using L<...> instead of 80
pod/perlapio.pod Verbatim line length including indents exceeds 79 by 5
pod/perlbook.pod Verbatim line length including indents exceeds 79 by 1
pod/perlcall.pod Verbatim line length including indents exceeds 79 by 2
pod/perlhist.pod Verbatim line length including indents exceeds 79 by 1
pod/perlhpux.pod Verbatim line length including indents exceeds 79 by 7
pod/perlhurd.pod Verbatim line length including indents exceeds 79 by 2
-pod/perlintern.pod ? Should you be using L<...> instead of 5
pod/perlinterp.pod ? Should you be using L<...> instead of 1
pod/perliol.pod Verbatim line length including indents exceeds 79 by 8
pod/perlipc.pod Verbatim line length including indents exceeds 79 by 19