# $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
#
-# Generated on Wed May 31 23:34:04 EET DST 2000 [metaconfig 3.0 PL70]
+# Generated on Tue Jun 27 04:45:48 EET DST 2000 [metaconfig 3.0 PL70]
# (with additional metaconfig patches by perlbug@perl.com)
cat >/tmp/c1$$ <<EOF
d_bincompat5005=''
byteorder=''
cc=''
-gccversion=''
ccflags=''
cppflags=''
ldflags=''
fflushall=''
fpossize=''
fpostype=''
+gccversion=''
gidformat=''
gidsign=''
gidsize=''
#endif
}
EOP
- ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
+ case "$cc" in
+ '') modelcc="$cc" ;;
+ *) modelcc="cc" ;;
+ esac
+ ( $modelcc -o pdp11 pdp11.c ) >/dev/null 2>&1
if $test -f pdp11 && ./pdp11 2>/dev/null; then
dflt='unsplit split'
else
if $test -f cc.cbu; then
. ./cc.cbu
fi
+: Quick sanity check, we will do a fuller one later when we know
+: the various flags and libs
+$rm -f try try.*
+$cat >try.c <<EOM
+int main(int argc, char *argv[]) {
+ return 0;
+}
+EOM
+if $cc -o try try.c; then
+ :
+else
+ echo "Uh-oh, the C compiler "$cc" doesn't seem to be working..." >&4
+ despair=yes
+ trygcc=yes
+ case "$cc" in
+ *gcc) trygcc=no ;;
+ esac
+ case "`$cc -v 2>&1`" in
+ *gcc*) trygcc=no ;;
+ esac
+ if $test X"$trygcc" = Xyes; then
+ if gcc -o try try.c; then
+ echo " "
+ echo "You seem to have a working gcc, though."
+ rp="Do you want to use it?"
+ dflt=y
+ . ./myread
+ case "$ans" in
+ [yY]*) cc=gcc; despair=no ;;
+ esac
+ fi
+ fi
+ if $test X"$despair" = Xyes; then
+ echo "You need to find a working C compiler." >&4
+ echo "I cannot continue any further, aborting." >&4
+ exit 1
+ fi
+fi
+$rm -f try try.*
+
+
echo " "
echo "Checking for GNU cc in disguise and/or its version number..." >&4
$cat >gccvers.c <<EOM
1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
esac
+: see how we invoke the C preprocessor
+echo " "
+echo "Now, how can we feed standard input to your C preprocessor..." >&4
+cat <<'EOT' >testcpp.c
+#define ABC abc
+#define XYZ xyz
+ABC.XYZ
+EOT
+cd ..
+if test ! -f cppstdin; then
+ if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
+ # AIX cc -E doesn't show the absolute headerfile
+ # locations but we'll cheat by using the -M flag.
+ echo 'cat >.$$.c; rm -f .$$.u; '"$cc"' ${1+"$@"} -M -c .$$.c 2>/dev/null; test -s .$$.u && awk '"'"'$2 ~ /\.h$/ { print "# 0 \""$2"\"" }'"'"' .$$.u; rm -f .$$.o .$$.u; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' > cppstdin
+ else
+ echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
+ fi
+else
+ echo "Keeping your $hint cppstdin wrapper."
+fi
+chmod 755 cppstdin
+wrapper=`pwd`/cppstdin
+ok='false'
+cd UU
+
+if $test "X$cppstdin" != "X" && \
+ $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
+ $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
+then
+ echo "You used to use $cppstdin $cppminus so we'll use that again."
+ case "$cpprun" in
+ '') echo "But let's see if we can live without a wrapper..." ;;
+ *)
+ if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
+ $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
+ then
+ echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
+ ok='true'
+ else
+ echo "(However, $cpprun $cpplast does not work, let's see...)"
+ fi
+ ;;
+ esac
+else
+ case "$cppstdin" in
+ '') ;;
+ *)
+ echo "Good old $cppstdin $cppminus does not seem to be of any help..."
+ ;;
+ esac
+fi
+
+if $ok; then
+ : nothing
+elif echo 'Maybe "'"$cc"' -E" will work...'; \
+ $cc -E <testcpp.c >testcpp.out 2>&1; \
+ $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+ echo "Yup, it does."
+ x_cpp="$cc -E"
+ x_minus='';
+elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
+ $cc -E - <testcpp.c >testcpp.out 2>&1; \
+ $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+ echo "Yup, it does."
+ x_cpp="$cc -E"
+ x_minus='-';
+elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
+ $cc -P <testcpp.c >testcpp.out 2>&1; \
+ $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+ echo "Yipee, that works!"
+ x_cpp="$cc -P"
+ x_minus='';
+elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
+ $cc -P - <testcpp.c >testcpp.out 2>&1; \
+ $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+ echo "At long last!"
+ x_cpp="$cc -P"
+ x_minus='-';
+elif echo 'No such luck, maybe "'$cpp'" will work...'; \
+ $cpp <testcpp.c >testcpp.out 2>&1; \
+ $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+ echo "It works!"
+ x_cpp="$cpp"
+ x_minus='';
+elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
+ $cpp - <testcpp.c >testcpp.out 2>&1; \
+ $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+ echo "Hooray, it works! I was beginning to wonder."
+ x_cpp="$cpp"
+ x_minus='-';
+elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
+ $wrapper <testcpp.c >testcpp.out 2>&1; \
+ $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+ x_cpp="$wrapper"
+ x_minus=''
+ echo "Eureka!"
+else
+ dflt=''
+ rp="No dice. I can't find a C preprocessor. Name one:"
+ . ./myread
+ x_cpp="$ans"
+ x_minus=''
+ $x_cpp <testcpp.c >testcpp.out 2>&1
+ if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+ echo "OK, that will do." >&4
+ else
+echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
+ exit 1
+ fi
+fi
+
+case "$ok" in
+false)
+ cppstdin="$x_cpp"
+ cppminus="$x_minus"
+ cpprun="$x_cpp"
+ cpplast="$x_minus"
+ set X $x_cpp
+ shift
+ case "$1" in
+ "$cpp")
+ echo "Perhaps can we force $cc -E using a wrapper..."
+ if $wrapper <testcpp.c >testcpp.out 2>&1; \
+ $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
+ then
+ echo "Yup, we can."
+ cppstdin="$wrapper"
+ cppminus='';
+ else
+ echo "Nope, we'll have to live without it..."
+ fi
+ ;;
+ esac
+ case "$cpprun" in
+ "$wrapper")
+ cpprun=''
+ cpplast=''
+ ;;
+ esac
+ ;;
+esac
+
+case "$cppstdin" in
+"$wrapper"|'cppstdin') ;;
+*) $rm -f $wrapper;;
+esac
+$rm -f testcpp.c testcpp.out
+
: decide how portable to be. Allow command line overrides.
case "$d_portable" in
"$undef") ;;
/bsd43
#endif
EOCP
- if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
+ if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
dflt='/bsd43/usr/include'
incpath='/bsd43'
mips_type='BSD 4.3'
;;
esac
-: see how we invoke the C preprocessor
-echo " "
-echo "Now, how can we feed standard input to your C preprocessor..." >&4
-cat <<'EOT' >testcpp.c
-#define ABC abc
-#define XYZ xyz
-ABC.XYZ
-EOT
-cd ..
-if test ! -f cppstdin; then
- if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
- # AIX cc -E doesn't show the absolute headerfile
- # locations but we'll cheat by using the -M flag.
- echo 'cat >.$$.c; rm -f .$$.u; '"$cc"' ${1+"$@"} -M -c .$$.c 2>/dev/null; test -s .$$.u && awk '"'"'$2 ~ /\.h$/ { print "# 0 \""$2"\"" }'"'"' .$$.u; rm -f .$$.o .$$.u; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' > cppstdin
- else
- echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
- fi
-else
- echo "Keeping your $hint cppstdin wrapper."
-fi
-chmod 755 cppstdin
-wrapper=`pwd`/cppstdin
-ok='false'
-cd UU
-
-if $test "X$cppstdin" != "X" && \
- $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
- $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
-then
- echo "You used to use $cppstdin $cppminus so we'll use that again."
- case "$cpprun" in
- '') echo "But let's see if we can live without a wrapper..." ;;
- *)
- if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
- $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
- then
- echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
- ok='true'
- else
- echo "(However, $cpprun $cpplast does not work, let's see...)"
- fi
- ;;
- esac
-else
- case "$cppstdin" in
- '') ;;
- *)
- echo "Good old $cppstdin $cppminus does not seem to be of any help..."
- ;;
- esac
-fi
-
-if $ok; then
- : nothing
-elif echo 'Maybe "'"$cc"' -E" will work...'; \
- $cc -E <testcpp.c >testcpp.out 2>&1; \
- $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
- echo "Yup, it does."
- x_cpp="$cc -E"
- x_minus='';
-elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
- $cc -E - <testcpp.c >testcpp.out 2>&1; \
- $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
- echo "Yup, it does."
- x_cpp="$cc -E"
- x_minus='-';
-elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
- $cc -P <testcpp.c >testcpp.out 2>&1; \
- $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
- echo "Yipee, that works!"
- x_cpp="$cc -P"
- x_minus='';
-elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
- $cc -P - <testcpp.c >testcpp.out 2>&1; \
- $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
- echo "At long last!"
- x_cpp="$cc -P"
- x_minus='-';
-elif echo 'No such luck, maybe "'$cpp'" will work...'; \
- $cpp <testcpp.c >testcpp.out 2>&1; \
- $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
- echo "It works!"
- x_cpp="$cpp"
- x_minus='';
-elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
- $cpp - <testcpp.c >testcpp.out 2>&1; \
- $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
- echo "Hooray, it works! I was beginning to wonder."
- x_cpp="$cpp"
- x_minus='-';
-elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
- $wrapper <testcpp.c >testcpp.out 2>&1; \
- $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
- x_cpp="$wrapper"
- x_minus=''
- echo "Eureka!"
-else
- dflt=''
- rp="No dice. I can't find a C preprocessor. Name one:"
- . ./myread
- x_cpp="$ans"
- x_minus=''
- $x_cpp <testcpp.c >testcpp.out 2>&1
- if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
- echo "OK, that will do." >&4
- else
-echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
- exit 1
- fi
-fi
-
-case "$ok" in
-false)
- cppstdin="$x_cpp"
- cppminus="$x_minus"
- cpprun="$x_cpp"
- cpplast="$x_minus"
- set X $x_cpp
- shift
- case "$1" in
- "$cpp")
- echo "Perhaps can we force $cc -E using a wrapper..."
- if $wrapper <testcpp.c >testcpp.out 2>&1; \
- $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
- then
- echo "Yup, we can."
- cppstdin="$wrapper"
- cppminus='';
- else
- echo "Nope, we'll have to live without it..."
- fi
- ;;
- esac
- case "$cpprun" in
- "$wrapper")
- cpprun=''
- cpplast=''
- ;;
- esac
- ;;
-esac
-
-case "$cppstdin" in
-"$wrapper"|'cppstdin') ;;
-*) $rm -f $wrapper;;
-esac
-$rm -f testcpp.c testcpp.out
-
: Set private lib path
case "$plibpth" in
'') if ./mips; then
set getespwnam d_getespwnam
eval $inlibc
-: see if getespwnam exists
-set getespwnam d_getespwnam
-eval $inlibc
-
: see if getfsstat exists
set getfsstat d_getfsstat
set getprpwnam d_getprpwnam
eval $inlibc
-: see if getprpwnam exists
-set getprpwnam d_getprpwnam
-eval $inlibc
-
: see if getpwent exists
set getpwent d_getpwent
eval $inlibc
set prot.h i_prot
eval $inhdr
-: see if this is a prot.h system
-set prot.h i_prot
-eval $inhdr
-
echo " "
$echo "Guessing which symbols your C compiler and preprocessor define..." >&4
$cat <<'EOSH' > Cppsym.know
pod/perltootc.pod Tom's object-oriented tutorial (more on class data)
pod/perltrap.pod Trap info
pod/perlunicode.pod Unicode support info
+pod/perlutil.pod Accompanying utilities explained
pod/perlvar.pod Variable info
pod/perlxs.pod XS api info
pod/perlxstut.pod XS tutorial
A recent net or commercial release of Cygwin is required.
-At the time this document was written, Cygwin 1.1.1 was current.
+At the time this document was last updated, Cygwin 1.1.2 was current.
B<NOTE:> At this point, minimal effort has been made to provide
compatibility with old (beta) Cygwin releases. The focus has been to
ftp://ftp.franken.de/pub/win32/develop/gnuwin32/cygwin/porters/Okhapkin_Sergey/libcrypt.tgz
+There is also a Linux compatible 56 bit DES crypt port by Corinna
+Vinschen:
+
+ ftp://ftp.franken.de/pub/win32/develop/gnuwin32/cygwin/porters/Vinschen_Corinna/V1.1.1/crypt-1.0.tar.gz
+
=item * C<-lgdbm> (C<use GDBM_File>)
GDBM is available for Cygwin. GDBM's ndbm/dbm compatibility feature
=head2 Hard Links
FAT partitions do not support hard links (whereas NTFS does), in which
-case Cygwin implements link() by copying the file. These tests will fail:
+case Cygwin implements link() by copying the file. On remote (network)
+drives Cygwin's stat() always sets C<st_nlink> to 1, so the link count
+for remote directories and files is not available. In both cases,
+these tests will fail:
Failed Test List of failed
------------------------------------
: * ? " < > |
-File names are case insensitive, but case preserving.
+File names are case insensitive, but case preserving. A pathname
+that contains a backslash is a Win32 pathname (and not subject to the
+translations applied to POSIX style pathnames).
=item * Text/Binary
=item * F<.exe>
-The Cygwin stat() makes the F<.exe> extension transparent by looking for
-F<foo.exe> when you ask for F<foo> (unless a F<foo> also exists). Cygwin
-does not require a F<.exe> extension, but I<gcc> adds it automatically
-when building a program. However, when accessing an executable as a
-normal file (e.g., I<cp> in a makefile) the F<.exe> is not transparent.
-The I<install> included with Cygwin automatically appends a F<.exe>
-when necessary.
+The Cygwin stat(), lstat() and readlink() functions make the F<.exe>
+extension transparent by looking for F<foo.exe> when you ask for F<foo>
+(unless a F<foo> also exists). Cygwin does not require a F<.exe>
+extension, but I<gcc> adds it automatically when building a program.
+However, when accessing an executable as a normal file (e.g., I<cp>
+in a makefile) the F<.exe> is not transparent. The I<install> included
+with Cygwin automatically appends a F<.exe> when necessary.
=item * chown()
- require MM_Cygwin.pm
lib/ExtUtils/MM_Cygwin.pm
- canonpath, cflags, manifypods, perl_archive
+ lib/File/Find.pm - on remote drives stat() always sets st_nlink to 1
lib/File/Spec/Unix.pm - preserve //unc
lib/perl5db.pl - use stdin not /dev/tty
utils/perlcc.PL - DynaLoader.a in compile, -DUSEIMPORTLIB
=head1 HISTORY
-Last updated: 5 May 2000
+Last updated: 20 June 2000
API-space: complete the list of things that constitute public api
Configure
- fix the vicious cyclic multidependency of cc <-> libpth <-> loclibpth
- libswanted <-> usethreads <-> use64bitint <-> use64bitall <->
- uselargefiles <-> ...
make configuring+building away from source directory work (VPATH et al)
this is related to: cross-compilation configuring (see Todo)
_r support (see Todo for mode detailed description)
PREFERABLY AS AN EXTENSION
IPv6 support: see RFC2292, RFC2553
PREFERABLY AS AN EXTENSION
- there already is Socket6
+ there already is Socket6 in CPAN
Long doubles
figure out where the PV->NV->PV conversion gets it wrong at least
spot-check all new modules for completeness
better docs for pack()/unpack()
reorg tutorials vs. reference sections
+ make roffitall to be dynamical about its pods and libs
+
* This macro surrounds its token with double quotes.
*/
#if $cpp_stuff == 1
-# define CAT2(a,b) a/**/b
-# define STRINGIFY(a) "a"
+#define CAT2(a,b) a/**/b
+#define STRINGIFY(a) "a"
/* If you can get stringification with catify, tell me how! */
#endif
#if $cpp_stuff == 42
-# define PeRl_CaTiFy(a, b) a ## b
-# define PeRl_StGiFy(a) #a
+#define PeRl_CaTiFy(a, b) a ## b
+#define PeRl_StGiFy(a) #a
/* the additional level of indirection enables these macros to be
* used as arguments to other macros. See K&R 2nd ed., page 231. */
-# define CAT2(a,b) PeRl_CaTiFy(a,b)
-# define StGiFy(a) PeRl_StGiFy(a)
-# define STRINGIFY(a) PeRl_StGiFy(a)
+#define CAT2(a,b) PeRl_CaTiFy(a,b)
+#define StGiFy(a) PeRl_StGiFy(a)
+#define STRINGIFY(a) PeRl_StGiFy(a)
#endif
#if $cpp_stuff != 1 && $cpp_stuff != 42
# include "Bletch: How does this C preprocessor catenate tokens?"
#define utf16_to_utf8_reversed Perl_utf16_to_utf8_reversed
#define utf8_distance Perl_utf8_distance
#define utf8_hop Perl_utf8_hop
+#define utf8_to_bytes Perl_utf8_to_bytes
+#define bytes_to_utf8 Perl_bytes_to_utf8
#define utf8_to_uv Perl_utf8_to_uv
#define uv_to_utf8 Perl_uv_to_utf8
#define vivify_defelem Perl_vivify_defelem
#define do_trans_UU_simple S_do_trans_UU_simple
#define do_trans_UU_count S_do_trans_UU_count
#define do_trans_UU_complex S_do_trans_UU_complex
-#define do_trans_UC_simple S_do_trans_UC_simple
-#define do_trans_CU_simple S_do_trans_CU_simple
#define do_trans_UC_trivial S_do_trans_UC_trivial
#define do_trans_CU_trivial S_do_trans_CU_trivial
#endif
#define utf16_to_utf8_reversed(a,b,c) Perl_utf16_to_utf8_reversed(aTHX_ a,b,c)
#define utf8_distance(a,b) Perl_utf8_distance(aTHX_ a,b)
#define utf8_hop(a,b) Perl_utf8_hop(aTHX_ a,b)
+#define utf8_to_bytes(a,b) Perl_utf8_to_bytes(aTHX_ a,b)
+#define bytes_to_utf8(a,b) Perl_bytes_to_utf8(aTHX_ a,b)
#define utf8_to_uv(a,b) Perl_utf8_to_uv(aTHX_ a,b)
#define uv_to_utf8(a,b) Perl_uv_to_utf8(aTHX_ a,b)
#define vivify_defelem(a) Perl_vivify_defelem(aTHX_ a)
#define do_trans_UU_simple(a) S_do_trans_UU_simple(aTHX_ a)
#define do_trans_UU_count(a) S_do_trans_UU_count(aTHX_ a)
#define do_trans_UU_complex(a) S_do_trans_UU_complex(aTHX_ a)
-#define do_trans_UC_simple(a) S_do_trans_UC_simple(aTHX_ a)
-#define do_trans_CU_simple(a) S_do_trans_CU_simple(aTHX_ a)
#define do_trans_UC_trivial(a) S_do_trans_UC_trivial(aTHX_ a)
#define do_trans_CU_trivial(a) S_do_trans_CU_trivial(aTHX_ a)
#endif
#define utf8_distance Perl_utf8_distance
#define Perl_utf8_hop CPerlObj::Perl_utf8_hop
#define utf8_hop Perl_utf8_hop
+#define Perl_utf8_to_bytes CPerlObj::Perl_utf8_to_bytes
+#define utf8_to_bytes Perl_utf8_to_bytes
+#define Perl_bytes_to_utf8 CPerlObj::Perl_bytes_to_utf8
+#define bytes_to_utf8 Perl_bytes_to_utf8
#define Perl_utf8_to_uv CPerlObj::Perl_utf8_to_uv
#define utf8_to_uv Perl_utf8_to_uv
#define Perl_uv_to_utf8 CPerlObj::Perl_uv_to_utf8
#define do_trans_UU_count S_do_trans_UU_count
#define S_do_trans_UU_complex CPerlObj::S_do_trans_UU_complex
#define do_trans_UU_complex S_do_trans_UU_complex
-#define S_do_trans_UC_simple CPerlObj::S_do_trans_UC_simple
-#define do_trans_UC_simple S_do_trans_UC_simple
-#define S_do_trans_CU_simple CPerlObj::S_do_trans_CU_simple
-#define do_trans_CU_simple S_do_trans_CU_simple
#define S_do_trans_UC_trivial CPerlObj::S_do_trans_UC_trivial
#define do_trans_UC_trivial S_do_trans_UC_trivial
#define S_do_trans_CU_trivial CPerlObj::S_do_trans_CU_trivial
sub autodoc ($$) { # parse a file and extract documentation info
my($fh,$file) = @_;
- my($in, $doc);
-
+ my($in, $doc, $line);
FUNC:
while (defined($in = <$fh>)) {
+ $line++;
if ($in =~ /^=for\s+apidoc\s+(.*)\n/) {
my $proto = $1;
$proto = "||$proto" unless $proto =~ /\|/;
my $docs = "";
DOC:
while (defined($doc = <$fh>)) {
+ $line++;
last DOC if $doc =~ /^=\w+/;
+ if ($doc =~ m:^\*/$:) {
+ warn "=cut missing? $file:$line:$doc";;
+ last DOC;
+ }
$docs .= $doc;
}
$docs = "\n$docs" if $docs and $docs !~ /^\n/;
else {
$docfuncs{$name} = [$flags, $docs, $ret, $file, @args];
}
- if ($doc =~ /^=for/) {
- $in = $doc;
- redo FUNC;
+ if (defined $doc) {
+ if ($doc =~ /^=for/) {
+ $in = $doc;
+ redo FUNC;
+ }
+ } else {
+ warn "$file:$line:$in";
}
}
}
} \*DOC;
for (sort keys %docfuncs) {
+ # Have you used a full for apidoc or just a func name?
+ # Have you used Ap instead of Am in the for apidoc?
warn "Unable to place $_!\n";
}
case "$use64bitint" in
"$define"|true|[yY]*)
case "`uname -r`" in
- 2.[1-6])
+ 5.[1-6])
cat >&4 <<EOM
-Solaris `uname -r` does not support 64-bit integers.
-You should upgrade to at least Solaris 2.7.
+Solaris `uname -r|sed -e 's/^5\.\([789]\)$/\1/'` does not support 64-bit integers.
+You should upgrade to at least Solaris 7.
EOM
exit 1
;;
if ($self->has_link_code()) {
push @m,'
INST_STATIC = $(INST_ARCHAUTODIR)$(BASEEXT)$(LIB_EXT)
-INST_DYNAMIC = $(INST_ARCHAUTODIR)$(BASEEXT).$(DLEXT)
+INST_DYNAMIC = $(INST_ARCHAUTODIR)$(DLBASE).$(DLEXT)
INST_BOOT = $(INST_ARCHAUTODIR)$(BASEEXT).bs
';
} else {
}
$File::Find::dont_use_nlink = 1
- if $^O eq 'os2' || $^O eq 'dos' || $^O eq 'amigaos' || $^O eq 'MSWin32';
+ if $^O eq 'os2' || $^O eq 'dos' || $^O eq 'amigaos' || $^O eq 'MSWin32' ||
+ $^O eq 'cygwin';
# Set dont_use_nlink in your hint file if your system's stat doesn't
# report the number of links in a directory as an indication
#define Perl_utf8_hop pPerl->Perl_utf8_hop
#undef utf8_hop
#define utf8_hop Perl_utf8_hop
+#undef Perl_utf8_to_bytes
+#define Perl_utf8_to_bytes pPerl->Perl_utf8_to_bytes
+#undef utf8_to_bytes
+#define utf8_to_bytes Perl_utf8_to_bytes
+#undef Perl_bytes_to_utf8
+#define Perl_bytes_to_utf8 pPerl->Perl_bytes_to_utf8
+#undef bytes_to_utf8
+#define bytes_to_utf8 Perl_bytes_to_utf8
#undef Perl_utf8_to_uv
#define Perl_utf8_to_uv pPerl->Perl_utf8_to_uv
#undef utf8_to_uv
/* On OP_EXISTS, treat av as av, not avhv. */
/* On OP_(ENTER|LEAVE)EVAL, don't clear $@ */
/* On OP_ENTERITER, loop var is per-thread */
- /* On pushre, re is /\s+/ imp. by split " " */
+ /* On pushre, re is /\s+/ imp. by split " " */
+ /* On regcomp, "use re 'eval'" was in scope */
/* old names; don't use in new code, but don't break them, either */
#define OPf_LIST OPf_WANT_LIST
return ((CPerlObj*)pPerl)->Perl_utf8_hop(s, off);
}
+#undef Perl_utf8_to_bytes
+U8*
+Perl_utf8_to_bytes(pTHXo_ U8 *s, STRLEN len)
+{
+ return ((CPerlObj*)pPerl)->Perl_utf8_to_bytes(s, len);
+}
+
+#undef Perl_bytes_to_utf8
+U8*
+Perl_bytes_to_utf8(pTHXo_ U8 *s, STRLEN len)
+{
+ return ((CPerlObj*)pPerl)->Perl_bytes_to_utf8(s, len);
+}
+
#undef Perl_utf8_to_uv
UV
Perl_utf8_to_uv(pTHXo_ U8 *s, I32* retlen)
POD = \
perl.pod \
- perldelta.pod \
perl5004delta.pod \
perl5005delta.pod \
- perldata.pod \
- perlsyn.pod \
- perlop.pod \
- perlre.pod \
- perlrun.pod \
- perlfunc.pod \
- perlopentut.pod \
- perlvar.pod \
- perlsub.pod \
- perlmod.pod \
- perlmodlib.pod \
- perlmodinstall.pod \
- perlnewmod.pod \
- perlfork.pod \
- perlform.pod \
- perllocale.pod \
- perlref.pod \
- perlreftut.pod \
- perldsc.pod \
- perllol.pod \
+ perl56delta.pod \
+ perlapi.pod \
+ perlapio.pod \
+ perlbook.pod \
perlboot.pod \
- perltoot.pod \
- perltootc.pod \
- perlobj.pod \
- perltie.pod \
perlbot.pod \
- perlipc.pod \
- perlthrtut.pod \
+ perlcall.pod \
+ perlcompile.pod \
+ perldata.pod \
perldbmfilter.pod \
perldebguts.pod \
perldebug.pod \
- perlnumber.pod \
+ perldelta.pod \
perldiag.pod \
- perlsec.pod \
- perltrap.pod \
- perlport.pod \
- perlstyle.pod \
- perlpod.pod \
- perlbook.pod \
+ perldsc.pod \
perlembed.pod \
- perlapio.pod \
- perlxs.pod \
- perlxstut.pod \
- perlguts.pod \
- perlcall.pod \
- perlcompile.pod \
- perltodo.pod \
- perlapi.pod \
- perlintern.pod \
- perlhack.pod \
- perlhist.pod \
perlfaq.pod \
perlfaq1.pod \
perlfaq2.pod \
perlfaq7.pod \
perlfaq8.pod \
perlfaq9.pod \
- perltoc.pod
+ perlfilter.pod \
+ perlfork.pod \
+ perlform.pod \
+ perlfunc.pod \
+ perlguts.pod \
+ perlhack.pod \
+ perlhist.pod \
+ perlintern.pod \
+ perlipc.pod \
+ perllexwarn.pod \
+ perllocale.pod \
+ perllol.pod \
+ perlmod.pod \
+ perlmodinstall.pod \
+ perlmodlib.pod \
+ perlnewmod.pod \
+ perlnumber.pod \
+ perlobj.pod \
+ perlop.pod \
+ perlopentut.pod \
+ perlpod.pod \
+ perlport.pod \
+ perlre.pod \
+ perlref.pod \
+ perlreftut.pod \
+ perlrequick.pod \
+ perlretut.pod \
+ perlrun.pod \
+ perlsec.pod \
+ perlstyle.pod \
+ perlsub.pod \
+ perlsyn.pod \
+ perlthrtut.pod \
+ perltie.pod \
+ perltoc.pod \
+ perltodo.pod \
+ perltoot.pod \
+ perltootc.pod \
+ perltrap.pod \
+ perlunicode.pod \
+ perlutil.pod \
+ perlvar.pod \
+ perlxs.pod \
+ perlxstut.pod
MAN = \
perl.man \
- perldelta.man \
perl5004delta.man \
perl5005delta.man \
- perldata.man \
- perlsyn.man \
- perlop.man \
- perlre.man \
- perlrun.man \
- perlfunc.man \
- perlopentut.man \
- perlvar.man \
- perlsub.man \
- perlmod.man \
- perlmodlib.man \
- perlmodinstall.man \
- perlnewmod.man \
- perlfork.man \
- perlform.man \
- perllocale.man \
- perlref.man \
- perlreftut.man \
- perldsc.man \
- perllol.man \
+ perl56delta.man \
+ perlapi.man \
+ perlapio.man \
+ perlbook.man \
perlboot.man \
- perltoot.man \
- perltootc.man \
- perlobj.man \
- perltie.man \
perlbot.man \
- perlipc.man \
- perlthrtut.man \
+ perlcall.man \
+ perlcompile.man \
+ perldata.man \
perldbmfilter.man \
perldebguts.man \
perldebug.man \
- perlnumber.man \
+ perldelta.man \
perldiag.man \
- perlsec.man \
- perltrap.man \
- perlport.man \
- perlstyle.man \
- perlpod.man \
- perlbook.man \
+ perldsc.man \
perlembed.man \
- perlapio.man \
- perlxs.man \
- perlxstut.man \
- perlguts.man \
- perlcall.man \
- perlcompile.man \
- perltodo.man \
- perlapi.man \
- perlintern.man \
- perlhack.man \
- perlhist.man \
perlfaq.man \
perlfaq1.man \
perlfaq2.man \
perlfaq7.man \
perlfaq8.man \
perlfaq9.man \
- perltoc.man
+ perlfilter.man \
+ perlfork.man \
+ perlform.man \
+ perlfunc.man \
+ perlguts.man \
+ perlhack.man \
+ perlhist.man \
+ perlintern.man \
+ perlipc.man \
+ perllexwarn.man \
+ perllocale.man \
+ perllol.man \
+ perlmod.man \
+ perlmodinstall.man \
+ perlmodlib.man \
+ perlnewmod.man \
+ perlnumber.man \
+ perlobj.man \
+ perlop.man \
+ perlopentut.man \
+ perlpod.man \
+ perlport.man \
+ perlre.man \
+ perlref.man \
+ perlreftut.man \
+ perlrequick.man \
+ perlretut.man \
+ perlrun.man \
+ perlsec.man \
+ perlstyle.man \
+ perlsub.man \
+ perlsyn.man \
+ perlthrtut.man \
+ perltie.man \
+ perltoc.man \
+ perltodo.man \
+ perltoot.man \
+ perltootc.man \
+ perltrap.man \
+ perlunicode.man \
+ perlutil.man \
+ perlvar.man \
+ perlxs.man \
+ perlxstut.man
HTML = \
perl.html \
- perldelta.html \
perl5004delta.html \
perl5005delta.html \
- perldata.html \
- perlsyn.html \
- perlop.html \
- perlre.html \
- perlrun.html \
- perlfunc.html \
- perlopentut.html \
- perlvar.html \
- perlsub.html \
- perlmod.html \
- perlmodlib.html \
- perlmodinstall.html \
- perlnewmod.html \
- perlfork.html \
- perlform.html \
- perllocale.html \
- perlref.html \
- perlreftut.html \
- perldsc.html \
- perllol.html \
+ perl56delta.html \
+ perlapi.html \
+ perlapio.html \
+ perlbook.html \
perlboot.html \
- perltoot.html \
- perltootc.html \
- perlobj.html \
- perltie.html \
perlbot.html \
- perlipc.html \
- perlthrtut.html \
+ perlcall.html \
+ perlcompile.html \
+ perldata.html \
perldbmfilter.html \
perldebguts.html \
perldebug.html \
- perlnumber.html \
+ perldelta.html \
perldiag.html \
- perlsec.html \
- perltrap.html \
- perlport.html \
- perlstyle.html \
- perlpod.html \
- perlbook.html \
+ perldsc.html \
perlembed.html \
- perlapio.html \
- perlxs.html \
- perlxstut.html \
- perlguts.html \
- perlcall.html \
- perlcompile.html \
- perltodo.html \
- perlapi.html \
- perlintern.html \
- perlhack.html \
- perlhist.html \
perlfaq.html \
perlfaq1.html \
perlfaq2.html \
perlfaq6.html \
perlfaq7.html \
perlfaq8.html \
- perlfaq9.html
+ perlfaq9.html \
+ perlfilter.html \
+ perlfork.html \
+ perlform.html \
+ perlfunc.html \
+ perlguts.html \
+ perlhack.html \
+ perlhist.html \
+ perlintern.html \
+ perlipc.html \
+ perllexwarn.html \
+ perllocale.html \
+ perllol.html \
+ perlmod.html \
+ perlmodinstall.html \
+ perlmodlib.html \
+ perlnewmod.html \
+ perlnumber.html \
+ perlobj.html \
+ perlop.html \
+ perlopentut.html \
+ perlpod.html \
+ perlport.html \
+ perlre.html \
+ perlref.html \
+ perlreftut.html \
+ perlrequick.html \
+ perlretut.html \
+ perlrun.html \
+ perlsec.html \
+ perlstyle.html \
+ perlsub.html \
+ perlsyn.html \
+ perlthrtut.html \
+ perltie.html \
+ perltodo.html \
+ perltoot.html \
+ perltootc.html \
+ perltrap.html \
+ perlunicode.html \
+ perlutil.html \
+ perlvar.html \
+ perlxs.html \
+ perlxstut.html
+
# not perltoc.html
TEX = \
perl.tex \
- perldelta.tex \
perl5004delta.tex \
perl5005delta.tex \
- perldata.tex \
- perlsyn.tex \
- perlop.tex \
- perlre.tex \
- perlrun.tex \
- perlfunc.tex \
- perlopentut.tex \
- perlvar.tex \
- perlsub.tex \
- perlmod.tex \
- perlmodlib.tex \
- perlmodinstall.tex \
- perlnewmod.tex \
- perlfork.tex \
- perlform.tex \
- perllocale.tex \
- perlref.tex \
- perlreftut.tex \
- perldsc.tex \
- perllol.tex \
+ perl56delta.tex \
+ perlapi.tex \
+ perlapio.tex \
+ perlbook.tex \
perlboot.tex \
- perltoot.tex \
- perltootc.tex \
- perlobj.tex \
- perltie.tex \
perlbot.tex \
- perlipc.tex \
- perlthrtut.tex \
+ perlcall.tex \
+ perlcompile.tex \
+ perldata.tex \
perldbmfilter.tex \
perldebguts.tex \
perldebug.tex \
- perlnumber.tex \
+ perldelta.tex \
perldiag.tex \
- perlsec.tex \
- perltrap.tex \
- perlport.tex \
- perlstyle.tex \
- perlpod.tex \
- perlbook.tex \
+ perldsc.tex \
perlembed.tex \
- perlapio.tex \
- perlxs.tex \
- perlxstut.tex \
- perlguts.tex \
- perlcall.tex \
- perlcompile.tex \
- perltodo.tex \
- perlapi.tex \
- perlintern.tex \
- perlhack.tex \
- perlhist.tex \
perlfaq.tex \
perlfaq1.tex \
perlfaq2.tex \
perlfaq7.tex \
perlfaq8.tex \
perlfaq9.tex \
- perltoc.tex
+ perlfilter.tex \
+ perlfork.tex \
+ perlform.tex \
+ perlfunc.tex \
+ perlguts.tex \
+ perlhack.tex \
+ perlhist.tex \
+ perlintern.tex \
+ perlipc.tex \
+ perllexwarn.tex \
+ perllocale.tex \
+ perllol.tex \
+ perlmod.tex \
+ perlmodinstall.tex \
+ perlmodlib.tex \
+ perlnewmod.tex \
+ perlnumber.tex \
+ perlobj.tex \
+ perlop.tex \
+ perlopentut.tex \
+ perlpod.tex \
+ perlport.tex \
+ perlre.tex \
+ perlref.tex \
+ perlreftut.tex \
+ perlrequick.tex \
+ perlretut.tex \
+ perlrun.tex \
+ perlsec.tex \
+ perlstyle.tex \
+ perlsub.tex \
+ perlsyn.tex \
+ perlthrtut.tex \
+ perltie.tex \
+ perltoc.tex \
+ perltodo.tex \
+ perltoot.tex \
+ perltootc.tex \
+ perltrap.tex \
+ perlunicode.tex \
+ perlutil.tex \
+ perlvar.tex \
+ perlxs.tex \
+ perlxstut.tex
man: pod2man $(MAN)
int AvFILL(AV* av)
+=for hackers
+Found in file av.h
+
=item av_clear
Clears an array, making it empty. Does not free the memory used by the
void av_clear(AV* ar)
+=for hackers
+Found in file av.c
+
=item av_extend
Pre-extend an array. The C<key> is the index to which the array should be
void av_extend(AV* ar, I32 key)
+=for hackers
+Found in file av.c
+
=item av_fetch
Returns the SV at the specified index in the array. The C<key> is the
SV** av_fetch(AV* ar, I32 key, I32 lval)
+=for hackers
+Found in file av.c
+
=item av_len
Returns the highest index in the array. Returns -1 if the array is
I32 av_len(AV* ar)
+=for hackers
+Found in file av.c
+
=item av_make
Creates a new AV and populates it with a list of SVs. The SVs are copied
AV* av_make(I32 size, SV** svp)
+=for hackers
+Found in file av.c
+
=item av_pop
Pops an SV off the end of the array. Returns C<&PL_sv_undef> if the array
SV* av_pop(AV* ar)
+=for hackers
+Found in file av.c
+
=item av_push
Pushes an SV onto the end of the array. The array will grow automatically
void av_push(AV* ar, SV* val)
+=for hackers
+Found in file av.c
+
=item av_shift
Shifts an SV off the beginning of the array.
SV* av_shift(AV* ar)
+=for hackers
+Found in file av.c
+
=item av_store
Stores an SV in an array. The array index is specified as C<key>. The
SV** av_store(AV* ar, I32 key, SV* val)
+=for hackers
+Found in file av.c
+
=item av_undef
Undefines the array. Frees the memory used by the array itself.
void av_undef(AV* ar)
+=for hackers
+Found in file av.c
+
=item av_unshift
Unshift the given number of C<undef> values onto the beginning of the
void av_unshift(AV* ar, I32 num)
+=for hackers
+Found in file av.c
+
+=item bytes_to_utf8
+
+Converts a string C<s> of length C<len> from ASCII into UTF8 encoding.
+Returns a pointer to the newly-created string.
+
+ U8 * bytes_to_utf8(U8 *s, STRLEN len)
+
+=for hackers
+Found in file utf8.c
+
=item call_argv
Performs a callback to the specified Perl sub. See L<perlcall>.
I32 call_argv(const char* sub_name, I32 flags, char** argv)
+=for hackers
+Found in file perl.c
+
=item call_method
Performs a callback to the specified Perl method. The blessed object must
I32 call_method(const char* methname, I32 flags)
+=for hackers
+Found in file perl.c
+
=item call_pv
Performs a callback to the specified Perl sub. See L<perlcall>.
I32 call_pv(const char* sub_name, I32 flags)
+=for hackers
+Found in file perl.c
+
=item call_sv
Performs a callback to the Perl sub whose name is in the SV. See
I32 call_sv(SV* sv, I32 flags)
+=for hackers
+Found in file perl.c
+
=item CLASS
Variable which is setup by C<xsubpp> to indicate the
char* CLASS
+=for hackers
+Found in file XSUB.h
+
=item Copy
The XSUB-writer's interface to the C C<memcpy> function. The C<src> is the
void Copy(void* src, void* dest, int nitems, type)
+=for hackers
+Found in file handy.h
+
=item croak
This is the XSUB-writer's interface to Perl's C<die> function.
void croak(const char* pat, ...)
+=for hackers
+Found in file util.c
+
=item CvSTASH
Returns the stash of the CV.
HV* CvSTASH(CV* cv)
+=for hackers
+Found in file cv.h
+
=item dMARK
Declare a stack marker variable, C<mark>, for the XSUB. See C<MARK> and
dMARK;
+=for hackers
+Found in file pp.h
+
=item dORIGMARK
Saves the original stack mark for the XSUB. See C<ORIGMARK>.
dORIGMARK;
+=for hackers
+Found in file pp.h
+
=item dSP
Declares a local copy of perl's stack pointer for the XSUB, available via
dSP;
+=for hackers
+Found in file pp.h
+
=item dXSARGS
Sets up stack and mark pointers for an XSUB, calling dSP and dMARK. This
dXSARGS;
+=for hackers
+Found in file XSUB.h
+
=item dXSI32
Sets up the C<ix> variable for an XSUB which has aliases. This is usually
dXSI32;
+=for hackers
+Found in file XSUB.h
+
=item ENTER
Opening bracket on a callback. See C<LEAVE> and L<perlcall>.
ENTER;
+=for hackers
+Found in file scope.h
+
=item eval_pv
Tells Perl to C<eval> the given string and return an SV* result.
SV* eval_pv(const char* p, I32 croak_on_error)
+=for hackers
+Found in file perl.c
+
=item eval_sv
Tells Perl to C<eval> the string in the SV.
I32 eval_sv(SV* sv, I32 flags)
+=for hackers
+Found in file perl.c
+
=item EXTEND
Used to extend the argument stack for an XSUB's return values. Once
void EXTEND(SP, int nitems)
+=for hackers
+Found in file pp.h
+
=item fbm_compile
Analyses the string in order to make fast searches on it using fbm_instr()
void fbm_compile(SV* sv, U32 flags)
+=for hackers
+Found in file util.c
+
=item fbm_instr
Returns the location of the SV in the string delimited by C<str> and
char* fbm_instr(unsigned char* big, unsigned char* bigend, SV* littlesv, U32 flags)
+=for hackers
+Found in file util.c
+
=item FREETMPS
Closing bracket for temporaries on a callback. See C<SAVETMPS> and
FREETMPS;
+=for hackers
+Found in file scope.h
+
=item get_av
Returns the AV of the specified Perl array. If C<create> is set and the
AV* get_av(const char* name, I32 create)
+=for hackers
+Found in file perl.c
+
=item get_cv
Returns the CV of the specified Perl subroutine. If C<create> is set and
CV* get_cv(const char* name, I32 create)
+=for hackers
+Found in file perl.c
+
=item get_hv
Returns the HV of the specified Perl hash. If C<create> is set and the
HV* get_hv(const char* name, I32 create)
+=for hackers
+Found in file perl.c
+
=item get_sv
Returns the SV of the specified Perl scalar. If C<create> is set and the
SV* get_sv(const char* name, I32 create)
+=for hackers
+Found in file perl.c
+
=item GIMME
A backward-compatible version of C<GIMME_V> which can only return
U32 GIMME
+=for hackers
+Found in file op.h
+
=item GIMME_V
The XSUB-writer's equivalent to Perl's C<wantarray>. Returns C<G_VOID>,
U32 GIMME_V
+=for hackers
+Found in file op.h
+
=item GvSV
Return the SV from the GV.
SV* GvSV(GV* gv)
+=for hackers
+Found in file gv.h
+
=item gv_fetchmeth
Returns the glob with the given C<name> and a defined subroutine or
GV* gv_fetchmeth(HV* stash, const char* name, STRLEN len, I32 level)
+=for hackers
+Found in file gv.c
+
=item gv_fetchmethod
See L<gv_fetchmethod_autoload>.
GV* gv_fetchmethod(HV* stash, const char* name)
+=for hackers
+Found in file gv.c
+
=item gv_fetchmethod_autoload
Returns the glob which contains the subroutine to call to invoke the method
GV* gv_fetchmethod_autoload(HV* stash, const char* name, I32 autoload)
+=for hackers
+Found in file gv.c
+
=item gv_stashpv
Returns a pointer to the stash for a specified package. C<name> should
HV* gv_stashpv(const char* name, I32 create)
+=for hackers
+Found in file gv.c
+
=item gv_stashsv
Returns a pointer to the stash for a specified package, which must be a
HV* gv_stashsv(SV* sv, I32 create)
+=for hackers
+Found in file gv.c
+
=item G_ARRAY
Used to indicate array context. See C<GIMME_V>, C<GIMME> and
L<perlcall>.
+=for hackers
+Found in file cop.h
+
=item G_DISCARD
Indicates that arguments returned from a callback should be discarded. See
L<perlcall>.
+=for hackers
+Found in file cop.h
+
=item G_EVAL
Used to force a Perl C<eval> wrapper around a callback. See
L<perlcall>.
+=for hackers
+Found in file cop.h
+
=item G_NOARGS
Indicates that no arguments are being sent to a callback. See
L<perlcall>.
+=for hackers
+Found in file cop.h
+
=item G_SCALAR
Used to indicate scalar context. See C<GIMME_V>, C<GIMME>, and
L<perlcall>.
+=for hackers
+Found in file cop.h
+
=item G_VOID
Used to indicate void context. See C<GIMME_V> and L<perlcall>.
+=for hackers
+Found in file cop.h
+
=item HEf_SVKEY
This flag, used in the length slot of hash entries and magic structures,
specifies the structure contains a C<SV*> pointer where a C<char*> pointer
is to be expected. (For information only--not to be used).
+=for hackers
+Found in file hv.h
+
=item HeHASH
Returns the computed hash stored in the hash entry.
U32 HeHASH(HE* he)
+=for hackers
+Found in file hv.h
+
=item HeKEY
Returns the actual pointer stored in the key slot of the hash entry. The
void* HeKEY(HE* he)
+=for hackers
+Found in file hv.h
+
=item HeKLEN
If this is negative, and amounts to C<HEf_SVKEY>, it indicates the entry
STRLEN HeKLEN(HE* he)
+=for hackers
+Found in file hv.h
+
=item HePV
Returns the key slot of the hash entry as a C<char*> value, doing any
char* HePV(HE* he, STRLEN len)
+=for hackers
+Found in file hv.h
+
=item HeSVKEY
Returns the key as an C<SV*>, or C<Nullsv> if the hash entry does not
SV* HeSVKEY(HE* he)
+=for hackers
+Found in file hv.h
+
=item HeSVKEY_force
Returns the key as an C<SV*>. Will create and return a temporary mortal
SV* HeSVKEY_force(HE* he)
+=for hackers
+Found in file hv.h
+
=item HeSVKEY_set
Sets the key to a given C<SV*>, taking care to set the appropriate flags to
SV* HeSVKEY_set(HE* he, SV* sv)
+=for hackers
+Found in file hv.h
+
=item HeVAL
Returns the value slot (type C<SV*>) stored in the hash entry.
SV* HeVAL(HE* he)
+=for hackers
+Found in file hv.h
+
=item HvNAME
Returns the package name of a stash. See C<SvSTASH>, C<CvSTASH>.
char* HvNAME(HV* stash)
+=for hackers
+Found in file hv.h
+
=item hv_clear
Clears a hash, making it empty.
void hv_clear(HV* tb)
+=for hackers
+Found in file hv.c
+
=item hv_delete
Deletes a key/value pair in the hash. The value SV is removed from the
SV* hv_delete(HV* tb, const char* key, U32 klen, I32 flags)
+=for hackers
+Found in file hv.c
+
=item hv_delete_ent
Deletes a key/value pair in the hash. The value SV is removed from the
SV* hv_delete_ent(HV* tb, SV* key, I32 flags, U32 hash)
+=for hackers
+Found in file hv.c
+
=item hv_exists
Returns a boolean indicating whether the specified hash key exists. The
bool hv_exists(HV* tb, const char* key, U32 klen)
+=for hackers
+Found in file hv.c
+
=item hv_exists_ent
Returns a boolean indicating whether the specified hash key exists. C<hash>
bool hv_exists_ent(HV* tb, SV* key, U32 hash)
+=for hackers
+Found in file hv.c
+
=item hv_fetch
Returns the SV which corresponds to the specified key in the hash. The
SV** hv_fetch(HV* tb, const char* key, U32 klen, I32 lval)
+=for hackers
+Found in file hv.c
+
=item hv_fetch_ent
Returns the hash entry which corresponds to the specified key in the hash.
HE* hv_fetch_ent(HV* tb, SV* key, I32 lval, U32 hash)
+=for hackers
+Found in file hv.c
+
=item hv_iterinit
Prepares a starting point to traverse a hash table. Returns the number of
I32 hv_iterinit(HV* tb)
+=for hackers
+Found in file hv.c
+
=item hv_iterkey
Returns the key from the current position of the hash iterator. See
char* hv_iterkey(HE* entry, I32* retlen)
+=for hackers
+Found in file hv.c
+
=item hv_iterkeysv
Returns the key as an C<SV*> from the current position of the hash
SV* hv_iterkeysv(HE* entry)
+=for hackers
+Found in file hv.c
+
=item hv_iternext
Returns entries from a hash iterator. See C<hv_iterinit>.
HE* hv_iternext(HV* tb)
+=for hackers
+Found in file hv.c
+
=item hv_iternextsv
Performs an C<hv_iternext>, C<hv_iterkey>, and C<hv_iterval> in one
SV* hv_iternextsv(HV* hv, char** key, I32* retlen)
+=for hackers
+Found in file hv.c
+
=item hv_iterval
Returns the value from the current position of the hash iterator. See
SV* hv_iterval(HV* tb, HE* entry)
+=for hackers
+Found in file hv.c
+
=item hv_magic
Adds magic to a hash. See C<sv_magic>.
void hv_magic(HV* hv, GV* gv, int how)
+=for hackers
+Found in file hv.c
+
=item hv_store
Stores an SV in a hash. The hash key is specified as C<key> and C<klen> is
SV** hv_store(HV* tb, const char* key, U32 klen, SV* val, U32 hash)
+=for hackers
+Found in file hv.c
+
=item hv_store_ent
Stores C<val> in a hash. The hash key is specified as C<key>. The C<hash>
HE* hv_store_ent(HV* tb, SV* key, SV* val, U32 hash)
+=for hackers
+Found in file hv.c
+
=item hv_undef
Undefines the hash.
void hv_undef(HV* tb)
+=for hackers
+Found in file hv.c
+
=item isALNUM
Returns a boolean indicating whether the C C<char> is an ASCII alphanumeric
bool isALNUM(char ch)
+=for hackers
+Found in file handy.h
+
=item isALPHA
Returns a boolean indicating whether the C C<char> is an ASCII alphabetic
bool isALPHA(char ch)
+=for hackers
+Found in file handy.h
+
=item isDIGIT
Returns a boolean indicating whether the C C<char> is an ASCII
bool isDIGIT(char ch)
+=for hackers
+Found in file handy.h
+
=item isLOWER
Returns a boolean indicating whether the C C<char> is a lowercase
bool isLOWER(char ch)
+=for hackers
+Found in file handy.h
+
=item isSPACE
Returns a boolean indicating whether the C C<char> is whitespace.
bool isSPACE(char ch)
+=for hackers
+Found in file handy.h
+
=item isUPPER
Returns a boolean indicating whether the C C<char> is an uppercase
bool isUPPER(char ch)
+=for hackers
+Found in file handy.h
+
=item items
Variable which is setup by C<xsubpp> to indicate the number of
I32 items
+=for hackers
+Found in file XSUB.h
+
=item ix
Variable which is setup by C<xsubpp> to indicate which of an
I32 ix
+=for hackers
+Found in file XSUB.h
+
=item LEAVE
Closing bracket on a callback. See C<ENTER> and L<perlcall>.
LEAVE;
+=for hackers
+Found in file scope.h
+
=item looks_like_number
Test if an the content of an SV looks like a number (or is a
I32 looks_like_number(SV* sv)
+=for hackers
+Found in file sv.c
+
=item MARK
Stack marker variable for the XSUB. See C<dMARK>.
+=for hackers
+Found in file pp.h
+
=item mg_clear
Clear something magical that the SV represents. See C<sv_magic>.
int mg_clear(SV* sv)
+=for hackers
+Found in file mg.c
+
=item mg_copy
Copies the magic from one SV to another. See C<sv_magic>.
int mg_copy(SV* sv, SV* nsv, const char* key, I32 klen)
+=for hackers
+Found in file mg.c
+
=item mg_find
Finds the magic pointer for type matching the SV. See C<sv_magic>.
MAGIC* mg_find(SV* sv, int type)
+=for hackers
+Found in file mg.c
+
=item mg_free
Free any magic storage used by the SV. See C<sv_magic>.
int mg_free(SV* sv)
+=for hackers
+Found in file mg.c
+
=item mg_get
Do magic after a value is retrieved from the SV. See C<sv_magic>.
int mg_get(SV* sv)
+=for hackers
+Found in file mg.c
+
=item mg_length
Report on the SV's length. See C<sv_magic>.
U32 mg_length(SV* sv)
+=for hackers
+Found in file mg.c
+
=item mg_magical
Turns on the magical status of an SV. See C<sv_magic>.
void mg_magical(SV* sv)
+=for hackers
+Found in file mg.c
+
=item mg_set
Do magic after a value is assigned to the SV. See C<sv_magic>.
int mg_set(SV* sv)
+=for hackers
+Found in file mg.c
+
=item Move
The XSUB-writer's interface to the C C<memmove> function. The C<src> is the
void Move(void* src, void* dest, int nitems, type)
+=for hackers
+Found in file handy.h
+
=item New
The XSUB-writer's interface to the C C<malloc> function.
void New(int id, void* ptr, int nitems, type)
+=for hackers
+Found in file handy.h
+
=item newAV
Creates a new AV. The reference count is set to 1.
AV* newAV()
+=for hackers
+Found in file av.c
+
=item Newc
The XSUB-writer's interface to the C C<malloc> function, with
void Newc(int id, void* ptr, int nitems, type, cast)
+=for hackers
+Found in file handy.h
+
=item newCONSTSUB
Creates a constant sub equivalent to Perl C<sub FOO () { 123 }> which is
void newCONSTSUB(HV* stash, char* name, SV* sv)
+=for hackers
+Found in file op.c
+
=item newHV
Creates a new HV. The reference count is set to 1.
HV* newHV()
+=for hackers
+Found in file hv.c
+
=item newRV_inc
Creates an RV wrapper for an SV. The reference count for the original SV is
SV* newRV_inc(SV* sv)
+=for hackers
+Found in file sv.h
+
=item newRV_noinc
Creates an RV wrapper for an SV. The reference count for the original
SV* newRV_noinc(SV *sv)
+=for hackers
+Found in file sv.c
+
=item NEWSV
Creates a new SV. A non-zero C<len> parameter indicates the number of
SV* NEWSV(int id, STRLEN len)
+=for hackers
+Found in file handy.h
+
=item newSViv
Creates a new SV and copies an integer into it. The reference count for the
SV* newSViv(IV i)
+=for hackers
+Found in file sv.c
+
=item newSVnv
Creates a new SV and copies a floating point value into it.
SV* newSVnv(NV n)
+=for hackers
+Found in file sv.c
+
=item newSVpv
Creates a new SV and copies a string into it. The reference count for the
SV* newSVpv(const char* s, STRLEN len)
+=for hackers
+Found in file sv.c
+
=item newSVpvf
Creates a new SV an initialize it with the string formatted like
SV* newSVpvf(const char* pat, ...)
+=for hackers
+Found in file sv.c
+
=item newSVpvn
Creates a new SV and copies a string into it. The reference count for the
SV* newSVpvn(const char* s, STRLEN len)
+=for hackers
+Found in file sv.c
+
=item newSVrv
Creates a new SV for the RV, C<rv>, to point to. If C<rv> is not an RV then
SV* newSVrv(SV* rv, const char* classname)
+=for hackers
+Found in file sv.c
+
=item newSVsv
Creates a new SV which is an exact duplicate of the original SV.
SV* newSVsv(SV* old)
+=for hackers
+Found in file sv.c
+
=item newSVuv
Creates a new SV and copies an unsigned integer into it.
SV* newSVuv(UV u)
+=for hackers
+Found in file sv.c
+
=item newXS
Used by C<xsubpp> to hook up XSUBs as Perl subs.
+=for hackers
+Found in file op.c
+
=item newXSproto
Used by C<xsubpp> to hook up XSUBs as Perl subs. Adds Perl prototypes to
the subs.
+=for hackers
+Found in file XSUB.h
+
=item Newz
The XSUB-writer's interface to the C C<malloc> function. The allocated
void Newz(int id, void* ptr, int nitems, type)
+=for hackers
+Found in file handy.h
+
=item Nullav
Null AV pointer.
+=for hackers
+Found in file av.h
+
=item Nullch
Null character pointer.
+=for hackers
+Found in file handy.h
+
=item Nullcv
Null CV pointer.
+=for hackers
+Found in file cv.h
+
=item Nullhv
Null HV pointer.
+=for hackers
+Found in file hv.h
+
=item Nullsv
Null SV pointer.
+=for hackers
+Found in file handy.h
+
=item ORIGMARK
The original stack mark for the XSUB. See C<dORIGMARK>.
+=for hackers
+Found in file pp.h
+
=item perl_alloc
Allocates a new Perl interpreter. See L<perlembed>.
PerlInterpreter* perl_alloc()
+=for hackers
+Found in file perl.c
+
=item perl_construct
Initializes a new Perl interpreter. See L<perlembed>.
void perl_construct(PerlInterpreter* interp)
+=for hackers
+Found in file perl.c
+
=item perl_destruct
Shuts down a Perl interpreter. See L<perlembed>.
void perl_destruct(PerlInterpreter* interp)
+=for hackers
+Found in file perl.c
+
=item perl_free
Releases a Perl interpreter. See L<perlembed>.
void perl_free(PerlInterpreter* interp)
+=for hackers
+Found in file perl.c
+
=item perl_parse
Tells a Perl interpreter to parse a Perl script. See L<perlembed>.
int perl_parse(PerlInterpreter* interp, XSINIT_t xsinit, int argc, char** argv, char** env)
+=for hackers
+Found in file perl.c
+
=item perl_run
Tells a Perl interpreter to run. See L<perlembed>.
int perl_run(PerlInterpreter* interp)
+=for hackers
+Found in file perl.c
+
=item PL_DBsingle
When Perl is run in debugging mode, with the B<-d> switch, this SV is a
SV * PL_DBsingle
+=for hackers
+Found in file intrpvar.h
+
=item PL_DBsub
When Perl is run in debugging mode, with the B<-d> switch, this GV contains
GV * PL_DBsub
+=for hackers
+Found in file intrpvar.h
+
=item PL_DBtrace
Trace variable used when Perl is run in debugging mode, with the B<-d>
SV * PL_DBtrace
+=for hackers
+Found in file intrpvar.h
+
=item PL_dowarn
The C variable which corresponds to Perl's $^W warning variable.
bool PL_dowarn
+=for hackers
+Found in file intrpvar.h
+
=item PL_modglobal
C<PL_modglobal> is a general purpose, interpreter global HV for use by
HV* PL_modglobal
+=for hackers
+Found in file intrpvar.h
+
=item PL_na
A convenience variable which is typically used with C<SvPV> when one
STRLEN PL_na
+=for hackers
+Found in file thrdvar.h
+
=item PL_sv_no
This is the C<false> SV. See C<PL_sv_yes>. Always refer to this as
SV PL_sv_no
+=for hackers
+Found in file intrpvar.h
+
=item PL_sv_undef
This is the C<undef> SV. Always refer to this as C<&PL_sv_undef>.
SV PL_sv_undef
+=for hackers
+Found in file intrpvar.h
+
=item PL_sv_yes
This is the C<true> SV. See C<PL_sv_no>. Always refer to this as
SV PL_sv_yes
+=for hackers
+Found in file intrpvar.h
+
=item POPi
Pops an integer off the stack.
IV POPi
+=for hackers
+Found in file pp.h
+
=item POPl
Pops a long off the stack.
long POPl
+=for hackers
+Found in file pp.h
+
=item POPn
Pops a double off the stack.
NV POPn
+=for hackers
+Found in file pp.h
+
=item POPp
Pops a string off the stack.
char* POPp
+=for hackers
+Found in file pp.h
+
=item POPs
Pops an SV off the stack.
SV* POPs
+=for hackers
+Found in file pp.h
+
=item PUSHi
Push an integer onto the stack. The stack must have room for this element.
void PUSHi(IV iv)
+=for hackers
+Found in file pp.h
+
=item PUSHMARK
Opening bracket for arguments on a callback. See C<PUTBACK> and
PUSHMARK;
+=for hackers
+Found in file pp.h
+
=item PUSHn
Push a double onto the stack. The stack must have room for this element.
void PUSHn(NV nv)
+=for hackers
+Found in file pp.h
+
=item PUSHp
Push a string onto the stack. The stack must have room for this element.
void PUSHp(char* str, STRLEN len)
+=for hackers
+Found in file pp.h
+
=item PUSHs
Push an SV onto the stack. The stack must have room for this element.
void PUSHs(SV* sv)
+=for hackers
+Found in file pp.h
+
=item PUSHu
Push an unsigned integer onto the stack. The stack must have room for this
void PUSHu(UV uv)
+=for hackers
+Found in file pp.h
+
=item PUTBACK
Closing bracket for XSUB arguments. This is usually handled by C<xsubpp>.
PUTBACK;
+=for hackers
+Found in file pp.h
+
=item Renew
The XSUB-writer's interface to the C C<realloc> function.
void Renew(void* ptr, int nitems, type)
+=for hackers
+Found in file handy.h
+
=item Renewc
The XSUB-writer's interface to the C C<realloc> function, with
void Renewc(void* ptr, int nitems, type, cast)
+=for hackers
+Found in file handy.h
+
=item require_pv
Tells Perl to C<require> a module.
void require_pv(const char* pv)
+=for hackers
+Found in file perl.c
+
=item RETVAL
Variable which is setup by C<xsubpp> to hold the return value for an
(whatever) RETVAL
+=for hackers
+Found in file XSUB.h
+
=item Safefree
The XSUB-writer's interface to the C C<free> function.
void Safefree(void* src, void* dest, int nitems, type)
+=for hackers
+Found in file handy.h
+
=item savepv
Copy a string to a safe spot. This does not use an SV.
char* savepv(const char* sv)
+=for hackers
+Found in file util.c
+
=item savepvn
Copy a string to a safe spot. The C<len> indicates number of bytes to
char* savepvn(const char* sv, I32 len)
+=for hackers
+Found in file util.c
+
=item SAVETMPS
Opening bracket for temporaries on a callback. See C<FREETMPS> and
SAVETMPS;
+=for hackers
+Found in file scope.h
+
=item SP
Stack pointer. This is usually handled by C<xsubpp>. See C<dSP> and
C<SPAGAIN>.
+=for hackers
+Found in file pp.h
+
=item SPAGAIN
Refetch the stack pointer. Used after a callback. See L<perlcall>.
SPAGAIN;
+=for hackers
+Found in file pp.h
+
=item ST
Used to access elements on the XSUB's stack.
SV* ST(int ix)
+=for hackers
+Found in file XSUB.h
+
=item strEQ
Test two strings to see if they are equal. Returns true or false.
bool strEQ(char* s1, char* s2)
+=for hackers
+Found in file handy.h
+
=item strGE
Test two strings to see if the first, C<s1>, is greater than or equal to
bool strGE(char* s1, char* s2)
+=for hackers
+Found in file handy.h
+
=item strGT
Test two strings to see if the first, C<s1>, is greater than the second,
bool strGT(char* s1, char* s2)
+=for hackers
+Found in file handy.h
+
=item strLE
Test two strings to see if the first, C<s1>, is less than or equal to the
bool strLE(char* s1, char* s2)
+=for hackers
+Found in file handy.h
+
=item strLT
Test two strings to see if the first, C<s1>, is less than the second,
bool strLT(char* s1, char* s2)
+=for hackers
+Found in file handy.h
+
=item strNE
Test two strings to see if they are different. Returns true or
bool strNE(char* s1, char* s2)
+=for hackers
+Found in file handy.h
+
=item strnEQ
Test two strings to see if they are equal. The C<len> parameter indicates
bool strnEQ(char* s1, char* s2, STRLEN len)
+=for hackers
+Found in file handy.h
+
=item strnNE
Test two strings to see if they are different. The C<len> parameter
bool strnNE(char* s1, char* s2, STRLEN len)
+=for hackers
+Found in file handy.h
+
=item StructCopy
This is an architecture-independent macro to copy one structure to another.
void StructCopy(type src, type dest, type)
+=for hackers
+Found in file handy.h
+
=item SvCUR
Returns the length of the string which is in the SV. See C<SvLEN>.
STRLEN SvCUR(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvCUR_set
Set the length of the string which is in the SV. See C<SvCUR>.
void SvCUR_set(SV* sv, STRLEN len)
+=for hackers
+Found in file sv.h
+
=item SvEND
Returns a pointer to the last character in the string which is in the SV.
char* SvEND(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvGETMAGIC
Invokes C<mg_get> on an SV if it has 'get' magic. This macro evaluates its
void SvGETMAGIC(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvGROW
Expands the character buffer in the SV so that it has room for the
void SvGROW(SV* sv, STRLEN len)
+=for hackers
+Found in file sv.h
+
=item SvIOK
Returns a boolean indicating whether the SV contains an integer.
bool SvIOK(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvIOKp
Returns a boolean indicating whether the SV contains an integer. Checks
bool SvIOKp(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvIOK_off
Unsets the IV status of an SV.
void SvIOK_off(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvIOK_on
Tells an SV that it is an integer.
void SvIOK_on(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvIOK_only
Tells an SV that it is an integer and disables all other OK bits.
void SvIOK_only(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvIV
Coerces the given SV to an integer and returns it.
IV SvIV(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvIVX
Returns the integer which is stored in the SV, assuming SvIOK is
IV SvIVX(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvLEN
Returns the size of the string buffer in the SV. See C<SvCUR>.
STRLEN SvLEN(SV* sv)
+=for hackers
+Found in file sv.h
+
+=item SvLOCK
+
+Aquires an internal mutex for a SV. Used to make sure multiple threads
+don't stomp on the guts of an SV at the same time
+
+ void SvLOCK(SV* sv)
+
+=for hackers
+Found in file sv.h
+
=item SvNIOK
Returns a boolean indicating whether the SV contains a number, integer or
bool SvNIOK(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvNIOKp
Returns a boolean indicating whether the SV contains a number, integer or
bool SvNIOKp(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvNIOK_off
Unsets the NV/IV status of an SV.
void SvNIOK_off(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvNOK
Returns a boolean indicating whether the SV contains a double.
bool SvNOK(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvNOKp
Returns a boolean indicating whether the SV contains a double. Checks the
bool SvNOKp(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvNOK_off
Unsets the NV status of an SV.
void SvNOK_off(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvNOK_on
Tells an SV that it is a double.
void SvNOK_on(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvNOK_only
Tells an SV that it is a double and disables all other OK bits.
void SvNOK_only(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvNV
Coerce the given SV to a double and return it.
NV SvNV(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvNVX
Returns the double which is stored in the SV, assuming SvNOK is
NV SvNVX(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvOK
Returns a boolean indicating whether the value is an SV.
bool SvOK(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvOOK
Returns a boolean indicating whether the SvIVX is a valid offset value for
bool SvOOK(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvPOK
Returns a boolean indicating whether the SV contains a character
bool SvPOK(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvPOKp
Returns a boolean indicating whether the SV contains a character string.
bool SvPOKp(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvPOK_off
Unsets the PV status of an SV.
void SvPOK_off(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvPOK_on
Tells an SV that it is a string.
void SvPOK_on(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvPOK_only
Tells an SV that it is a string and disables all other OK bits.
void SvPOK_only(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvPV
Returns a pointer to the string in the SV, or a stringified form of the SV
char* SvPV(SV* sv, STRLEN len)
+=for hackers
+Found in file sv.h
+
=item SvPVX
Returns a pointer to the string in the SV. The SV must contain a
char* SvPVX(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvPV_force
Like <SvPV> but will force the SV into becoming a string (SvPOK). You want
char* SvPV_force(SV* sv, STRLEN len)
+=for hackers
+Found in file sv.h
+
=item SvPV_nolen
Returns a pointer to the string in the SV, or a stringified form of the SV
char* SvPV_nolen(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvREFCNT
Returns the value of the object's reference count.
U32 SvREFCNT(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvREFCNT_dec
Decrements the reference count of the given SV.
void SvREFCNT_dec(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvREFCNT_inc
Increments the reference count of the given SV.
SV* SvREFCNT_inc(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvROK
Tests if the SV is an RV.
bool SvROK(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvROK_off
Unsets the RV status of an SV.
void SvROK_off(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvROK_on
Tells an SV that it is an RV.
void SvROK_on(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvRV
Dereferences an RV to return the SV.
SV* SvRV(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvSETMAGIC
Invokes C<mg_set> on an SV if it has 'set' magic. This macro evaluates its
void SvSETMAGIC(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvSetSV
Calls C<sv_setsv> if dsv is not the same as ssv. May evaluate arguments
void SvSetSV(SV* dsb, SV* ssv)
+=for hackers
+Found in file sv.h
+
=item SvSetSV_nosteal
Calls a non-destructive version of C<sv_setsv> if dsv is not the same as
void SvSetSV_nosteal(SV* dsv, SV* ssv)
+=for hackers
+Found in file sv.h
+
=item SvSTASH
Returns the stash of the SV.
HV* SvSTASH(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvTAINT
Taints an SV if tainting is enabled
void SvTAINT(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvTAINTED
Checks to see if an SV is tainted. Returns TRUE if it is, FALSE if
bool SvTAINTED(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvTAINTED_off
Untaints an SV. Be I<very> careful with this routine, as it short-circuits
void SvTAINTED_off(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvTAINTED_on
Marks an SV as tainted.
void SvTAINTED_on(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvTRUE
Returns a boolean indicating whether Perl would evaluate the SV as true or
bool SvTRUE(SV* sv)
+=for hackers
+Found in file sv.h
+
=item svtype
An enum of flags for Perl types. These are found in the file B<sv.h>
in the C<svtype> enum. Test these flags with the C<SvTYPE> macro.
+=for hackers
+Found in file sv.h
+
=item SvTYPE
Returns the type of the SV. See C<svtype>.
svtype SvTYPE(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SVt_IV
Integer type flag for scalars. See C<svtype>.
+=for hackers
+Found in file sv.h
+
=item SVt_NV
Double type flag for scalars. See C<svtype>.
+=for hackers
+Found in file sv.h
+
=item SVt_PV
Pointer type flag for scalars. See C<svtype>.
+=for hackers
+Found in file sv.h
+
=item SVt_PVAV
Type flag for arrays. See C<svtype>.
+=for hackers
+Found in file sv.h
+
=item SVt_PVCV
Type flag for code refs. See C<svtype>.
+=for hackers
+Found in file sv.h
+
=item SVt_PVHV
Type flag for hashes. See C<svtype>.
+=for hackers
+Found in file sv.h
+
=item SVt_PVMG
Type flag for blessed scalars. See C<svtype>.
+=for hackers
+Found in file sv.h
+
+=item SvUNLOCK
+
+Release the internal mutex for an SV.
+
+ void SvUNLOCK(SV* sv)
+
+=for hackers
+Found in file sv.h
+
=item SvUPGRADE
Used to upgrade an SV to a more complex form. Uses C<sv_upgrade> to
void SvUPGRADE(SV* sv, svtype type)
+=for hackers
+Found in file sv.h
+
=item SvUV
Coerces the given SV to an unsigned integer and returns it.
UV SvUV(SV* sv)
+=for hackers
+Found in file sv.h
+
=item SvUVX
Returns the unsigned integer which is stored in the SV, assuming SvIOK is
UV SvUVX(SV* sv)
+=for hackers
+Found in file sv.h
+
=item sv_2mortal
Marks an SV as mortal. The SV will be destroyed when the current context
SV* sv_2mortal(SV* sv)
+=for hackers
+Found in file sv.c
+
=item sv_bless
Blesses an SV into a specified package. The SV must be an RV. The package
SV* sv_bless(SV* sv, HV* stash)
+=for hackers
+Found in file sv.c
+
=item sv_catpv
Concatenates the string onto the end of the string which is in the SV.
void sv_catpv(SV* sv, const char* ptr)
+=for hackers
+Found in file sv.c
+
=item sv_catpvf
Processes its arguments like C<sprintf> and appends the formatted output
void sv_catpvf(SV* sv, const char* pat, ...)
+=for hackers
+Found in file sv.c
+
=item sv_catpvf_mg
Like C<sv_catpvf>, but also handles 'set' magic.
void sv_catpvf_mg(SV *sv, const char* pat, ...)
+=for hackers
+Found in file sv.c
+
=item sv_catpvn
Concatenates the string onto the end of the string which is in the SV. The
void sv_catpvn(SV* sv, const char* ptr, STRLEN len)
+=for hackers
+Found in file sv.c
+
=item sv_catpvn_mg
Like C<sv_catpvn>, but also handles 'set' magic.
void sv_catpvn_mg(SV *sv, const char *ptr, STRLEN len)
+=for hackers
+Found in file sv.c
+
=item sv_catpv_mg
Like C<sv_catpv>, but also handles 'set' magic.
void sv_catpv_mg(SV *sv, const char *ptr)
+=for hackers
+Found in file sv.c
+
=item sv_catsv
Concatenates the string from SV C<ssv> onto the end of the string in SV
void sv_catsv(SV* dsv, SV* ssv)
+=for hackers
+Found in file sv.c
+
=item sv_catsv_mg
Like C<sv_catsv>, but also handles 'set' magic.
void sv_catsv_mg(SV *dstr, SV *sstr)
+=for hackers
+Found in file sv.c
+
=item sv_chop
Efficient removal of characters from the beginning of the string buffer.
void sv_chop(SV* sv, char* ptr)
+=for hackers
+Found in file sv.c
+
=item sv_cmp
Compares the strings in two SVs. Returns -1, 0, or 1 indicating whether the
I32 sv_cmp(SV* sv1, SV* sv2)
+=for hackers
+Found in file sv.c
+
=item sv_dec
Auto-decrement of the value in the SV.
void sv_dec(SV* sv)
+=for hackers
+Found in file sv.c
+
=item sv_derived_from
Returns a boolean indicating whether the SV is derived from the specified
bool sv_derived_from(SV* sv, const char* name)
+=for hackers
+Found in file universal.c
+
=item sv_eq
Returns a boolean indicating whether the strings in the two SVs are
I32 sv_eq(SV* sv1, SV* sv2)
+=for hackers
+Found in file sv.c
+
=item sv_grow
Expands the character buffer in the SV. This will use C<sv_unref> and will
char* sv_grow(SV* sv, STRLEN newlen)
+=for hackers
+Found in file sv.c
+
=item sv_inc
Auto-increment of the value in the SV.
void sv_inc(SV* sv)
+=for hackers
+Found in file sv.c
+
=item sv_insert
Inserts a string at the specified offset/length within the SV. Similar to
void sv_insert(SV* bigsv, STRLEN offset, STRLEN len, char* little, STRLEN littlelen)
+=for hackers
+Found in file sv.c
+
=item sv_isa
Returns a boolean indicating whether the SV is blessed into the specified
int sv_isa(SV* sv, const char* name)
+=for hackers
+Found in file sv.c
+
=item sv_isobject
Returns a boolean indicating whether the SV is an RV pointing to a blessed
int sv_isobject(SV* sv)
+=for hackers
+Found in file sv.c
+
=item sv_len
Returns the length of the string in the SV. See also C<SvCUR>.
STRLEN sv_len(SV* sv)
+=for hackers
+Found in file sv.c
+
=item sv_magic
Adds magic to an SV.
void sv_magic(SV* sv, SV* obj, int how, const char* name, I32 namlen)
+=for hackers
+Found in file sv.c
+
=item sv_mortalcopy
Creates a new SV which is a copy of the original SV. The new SV is marked
SV* sv_mortalcopy(SV* oldsv)
+=for hackers
+Found in file sv.c
+
=item sv_newmortal
Creates a new SV which is mortal. The reference count of the SV is set to 1.
SV* sv_newmortal()
+=for hackers
+Found in file sv.c
+
=item sv_setiv
Copies an integer into the given SV. Does not handle 'set' magic. See
void sv_setiv(SV* sv, IV num)
+=for hackers
+Found in file sv.c
+
=item sv_setiv_mg
Like C<sv_setiv>, but also handles 'set' magic.
void sv_setiv_mg(SV *sv, IV i)
+=for hackers
+Found in file sv.c
+
=item sv_setnv
Copies a double into the given SV. Does not handle 'set' magic. See
void sv_setnv(SV* sv, NV num)
+=for hackers
+Found in file sv.c
+
=item sv_setnv_mg
Like C<sv_setnv>, but also handles 'set' magic.
void sv_setnv_mg(SV *sv, NV num)
+=for hackers
+Found in file sv.c
+
=item sv_setpv
Copies a string into an SV. The string must be null-terminated. Does not
void sv_setpv(SV* sv, const char* ptr)
+=for hackers
+Found in file sv.c
+
=item sv_setpvf
Processes its arguments like C<sprintf> and sets an SV to the formatted
void sv_setpvf(SV* sv, const char* pat, ...)
+=for hackers
+Found in file sv.c
+
=item sv_setpvf_mg
Like C<sv_setpvf>, but also handles 'set' magic.
void sv_setpvf_mg(SV *sv, const char* pat, ...)
+=for hackers
+Found in file sv.c
+
=item sv_setpviv
Copies an integer into the given SV, also updating its string value.
void sv_setpviv(SV* sv, IV num)
+=for hackers
+Found in file sv.c
+
=item sv_setpviv_mg
Like C<sv_setpviv>, but also handles 'set' magic.
void sv_setpviv_mg(SV *sv, IV iv)
+=for hackers
+Found in file sv.c
+
=item sv_setpvn
Copies a string into an SV. The C<len> parameter indicates the number of
void sv_setpvn(SV* sv, const char* ptr, STRLEN len)
+=for hackers
+Found in file sv.c
+
=item sv_setpvn_mg
Like C<sv_setpvn>, but also handles 'set' magic.
void sv_setpvn_mg(SV *sv, const char *ptr, STRLEN len)
+=for hackers
+Found in file sv.c
+
=item sv_setpv_mg
Like C<sv_setpv>, but also handles 'set' magic.
void sv_setpv_mg(SV *sv, const char *ptr)
+=for hackers
+Found in file sv.c
+
=item sv_setref_iv
Copies an integer into a new SV, optionally blessing the SV. The C<rv>
SV* sv_setref_iv(SV* rv, const char* classname, IV iv)
+=for hackers
+Found in file sv.c
+
=item sv_setref_nv
Copies a double into a new SV, optionally blessing the SV. The C<rv>
SV* sv_setref_nv(SV* rv, const char* classname, NV nv)
+=for hackers
+Found in file sv.c
+
=item sv_setref_pv
Copies a pointer into a new SV, optionally blessing the SV. The C<rv>
SV* sv_setref_pv(SV* rv, const char* classname, void* pv)
+=for hackers
+Found in file sv.c
+
=item sv_setref_pvn
Copies a string into a new SV, optionally blessing the SV. The length of the
SV* sv_setref_pvn(SV* rv, const char* classname, char* pv, STRLEN n)
+=for hackers
+Found in file sv.c
+
=item sv_setsv
Copies the contents of the source SV C<ssv> into the destination SV C<dsv>.
void sv_setsv(SV* dsv, SV* ssv)
+=for hackers
+Found in file sv.c
+
=item sv_setsv_mg
Like C<sv_setsv>, but also handles 'set' magic.
void sv_setsv_mg(SV *dstr, SV *sstr)
+=for hackers
+Found in file sv.c
+
=item sv_setuv
Copies an unsigned integer into the given SV. Does not handle 'set' magic.
void sv_setuv(SV* sv, UV num)
+=for hackers
+Found in file sv.c
+
=item sv_setuv_mg
Like C<sv_setuv>, but also handles 'set' magic.
void sv_setuv_mg(SV *sv, UV u)
+=for hackers
+Found in file sv.c
+
=item sv_unref
Unsets the RV status of the SV, and decrements the reference count of
void sv_unref(SV* sv)
+=for hackers
+Found in file sv.c
+
=item sv_upgrade
Upgrade an SV to a more complex form. Use C<SvUPGRADE>. See
bool sv_upgrade(SV* sv, U32 mt)
+=for hackers
+Found in file sv.c
+
=item sv_usepvn
Tells an SV to use C<ptr> to find its string value. Normally the string is
void sv_usepvn(SV* sv, char* ptr, STRLEN len)
+=for hackers
+Found in file sv.c
+
=item sv_usepvn_mg
Like C<sv_usepvn>, but also handles 'set' magic.
void sv_usepvn_mg(SV *sv, char *ptr, STRLEN len)
+=for hackers
+Found in file sv.c
+
=item sv_vcatpvfn
Processes its arguments like C<vsprintf> and appends the formatted output
void sv_vcatpvfn(SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted)
+=for hackers
+Found in file sv.c
+
=item sv_vsetpvfn
Works like C<vcatpvfn> but copies the text into the SV instead of
void sv_vsetpvfn(SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted)
+=for hackers
+Found in file sv.c
+
=item THIS
Variable which is setup by C<xsubpp> to designate the object in a C++
(whatever) THIS
+=for hackers
+Found in file XSUB.h
+
=item toLOWER
Converts the specified character to lowercase.
char toLOWER(char ch)
+=for hackers
+Found in file handy.h
+
=item toUPPER
Converts the specified character to uppercase.
char toUPPER(char ch)
+=for hackers
+Found in file handy.h
+
+=item utf8_to_bytes
+
+Converts a string C<s> of length C<len> from UTF8 into ASCII encoding.
+Unlike C<bytes_to_utf8>, this over-writes the original string.
+
+ U8 * utf8_to_bytes(U8 *s, STRLEN len)
+
+=for hackers
+Found in file utf8.c
+
=item warn
This is the XSUB-writer's interface to Perl's C<warn> function. Use this
void warn(const char* pat, ...)
+=for hackers
+Found in file util.c
+
=item XPUSHi
Push an integer onto the stack, extending the stack if necessary. Handles
void XPUSHi(IV iv)
+=for hackers
+Found in file pp.h
+
=item XPUSHn
Push a double onto the stack, extending the stack if necessary. Handles
void XPUSHn(NV nv)
+=for hackers
+Found in file pp.h
+
=item XPUSHp
Push a string onto the stack, extending the stack if necessary. The C<len>
void XPUSHp(char* str, STRLEN len)
+=for hackers
+Found in file pp.h
+
=item XPUSHs
Push an SV onto the stack, extending the stack if necessary. Does not
void XPUSHs(SV* sv)
+=for hackers
+Found in file pp.h
+
=item XPUSHu
Push an unsigned integer onto the stack, extending the stack if necessary.
void XPUSHu(UV uv)
+=for hackers
+Found in file pp.h
+
=item XS
Macro to declare an XSUB and its C parameter list. This is handled by
C<xsubpp>.
+=for hackers
+Found in file XSUB.h
+
=item XSRETURN
Return from XSUB, indicating number of items on the stack. This is usually
void XSRETURN(int nitems)
+=for hackers
+Found in file XSUB.h
+
=item XSRETURN_EMPTY
Return an empty list from an XSUB immediately.
XSRETURN_EMPTY;
+=for hackers
+Found in file XSUB.h
+
=item XSRETURN_IV
Return an integer from an XSUB immediately. Uses C<XST_mIV>.
void XSRETURN_IV(IV iv)
+=for hackers
+Found in file XSUB.h
+
=item XSRETURN_NO
Return C<&PL_sv_no> from an XSUB immediately. Uses C<XST_mNO>.
XSRETURN_NO;
+=for hackers
+Found in file XSUB.h
+
=item XSRETURN_NV
Return an double from an XSUB immediately. Uses C<XST_mNV>.
void XSRETURN_NV(NV nv)
+=for hackers
+Found in file XSUB.h
+
=item XSRETURN_PV
Return a copy of a string from an XSUB immediately. Uses C<XST_mPV>.
void XSRETURN_PV(char* str)
+=for hackers
+Found in file XSUB.h
+
=item XSRETURN_UNDEF
Return C<&PL_sv_undef> from an XSUB immediately. Uses C<XST_mUNDEF>.
XSRETURN_UNDEF;
+=for hackers
+Found in file XSUB.h
+
=item XSRETURN_YES
Return C<&PL_sv_yes> from an XSUB immediately. Uses C<XST_mYES>.
XSRETURN_YES;
+=for hackers
+Found in file XSUB.h
+
=item XST_mIV
Place an integer into the specified position C<pos> on the stack. The
void XST_mIV(int pos, IV iv)
+=for hackers
+Found in file XSUB.h
+
=item XST_mNO
Place C<&PL_sv_no> into the specified position C<pos> on the
void XST_mNO(int pos)
+=for hackers
+Found in file XSUB.h
+
=item XST_mNV
Place a double into the specified position C<pos> on the stack. The value
void XST_mNV(int pos, NV nv)
+=for hackers
+Found in file XSUB.h
+
=item XST_mPV
Place a copy of a string into the specified position C<pos> on the stack.
void XST_mPV(int pos, char* str)
+=for hackers
+Found in file XSUB.h
+
=item XST_mUNDEF
Place C<&PL_sv_undef> into the specified position C<pos> on the
void XST_mUNDEF(int pos)
+=for hackers
+Found in file XSUB.h
+
=item XST_mYES
Place C<&PL_sv_yes> into the specified position C<pos> on the
void XST_mYES(int pos)
+=for hackers
+Found in file XSUB.h
+
=item XS_VERSION
The version identifier for an XS module. This is usually
handled automatically by C<ExtUtils::MakeMaker>. See C<XS_VERSION_BOOTCHECK>.
+=for hackers
+Found in file XSUB.h
+
=item XS_VERSION_BOOTCHECK
Macro to verify that a PM module's $VERSION variable matches the XS
XS_VERSION_BOOTCHECK;
+=for hackers
+Found in file XSUB.h
+
=item Zero
The XSUB-writer's interface to the C C<memzero> function. The C<dest> is the
void Zero(void* dest, int nitems, type)
+=for hackers
+Found in file handy.h
+
=back
=head1 AUTHORS
bool is_gv_magical(char *name, STRLEN len, U32 flags)
+=for hackers
+Found in file gv.c
+
=back
=head1 AUTHORS
?PATTERN?, m/PATTERN/cgimosx, /PATTERN/cgimosx, q/STRING/, C<'STRING'>,
qq/STRING/, "STRING", qr/STRING/imosx, qx/STRING/, `STRING`, qw/STRING/,
-s/PATTERN/REPLACEMENT/egimosx, tr/SEARCHLIST/REPLACEMENTLIST/cdsUC,
-y/SEARCHLIST/REPLACEMENTLIST/cdsUC
+s/PATTERN/REPLACEMENT/egimosx, tr/SEARCHLIST/REPLACEMENTLIST/cds,
+y/SEARCHLIST/REPLACEMENTLIST/cds
=item Gory details of parsing quoted constructs
=item INSTANCE VARIABLES
-=item SCALAR INSTANCE VARIABLES
-
=item INSTANCE VARIABLE INHERITANCE
=item OBJECT RELATIONSHIPS
Discontinuance, Deprecation, BugFix, Discontinuance, Discontinuance,
Discontinuance, BugFix, Discontinuance, Discontinuance, BugFix,
-Discontinuance, Deprecation, Discontinuance
+Discontinuance, Deprecation, Discontinuance, Discontinuance
=item Parsing Traps
require_pv, RETVAL, Safefree, savepv, savepvn, SAVETMPS, SP, SPAGAIN, ST,
strEQ, strGE, strGT, strLE, strLT, strNE, strnEQ, strnNE, StructCopy,
SvCUR, SvCUR_set, SvEND, SvGETMAGIC, SvGROW, SvIOK, SvIOKp, SvIOK_off,
-SvIOK_on, SvIOK_only, SvIV, SvIVX, SvLEN, SvNIOK, SvNIOKp, SvNIOK_off,
-SvNOK, SvNOKp, SvNOK_off, SvNOK_on, SvNOK_only, SvNV, SvNVX, SvOK, SvOOK,
-SvPOK, SvPOKp, SvPOK_off, SvPOK_on, SvPOK_only, SvPV, SvPVX, SvPV_force,
-SvPV_nolen, SvREFCNT, SvREFCNT_dec, SvREFCNT_inc, SvROK, SvROK_off,
-SvROK_on, SvRV, SvSETMAGIC, SvSetSV, SvSetSV_nosteal, SvSTASH, SvTAINT,
-SvTAINTED, SvTAINTED_off, SvTAINTED_on, SvTRUE, SvTYPE, svtype, SVt_IV,
-SVt_NV, SVt_PV, SVt_PVAV, SVt_PVCV, SVt_PVHV, SVt_PVMG, SvUPGRADE, SvUV,
-SvUVX, sv_2mortal, sv_bless, sv_catpv, sv_catpvf, sv_catpvf_mg, sv_catpvn,
-sv_catpvn_mg, sv_catpv_mg, sv_catsv, sv_catsv_mg, sv_chop, sv_cmp, sv_dec,
-sv_derived_from, sv_eq, sv_grow, sv_inc, sv_insert, sv_isa, sv_isobject,
-sv_len, sv_magic, sv_mortalcopy, sv_newmortal, sv_setiv, sv_setiv_mg,
-sv_setnv, sv_setnv_mg, sv_setpv, sv_setpvf, sv_setpvf_mg, sv_setpviv,
-sv_setpviv_mg, sv_setpvn, sv_setpvn_mg, sv_setpv_mg, sv_setref_iv,
-sv_setref_nv, sv_setref_pv, sv_setref_pvn, sv_setsv, sv_setsv_mg, sv_setuv,
-sv_setuv_mg, sv_unref, sv_upgrade, sv_usepvn, sv_usepvn_mg, sv_vcatpvfn,
-sv_vsetpvfn, THIS, toLOWER, toUPPER, warn, XPUSHi, XPUSHn, XPUSHp, XPUSHs,
-XPUSHu, XS, XSRETURN, XSRETURN_EMPTY, XSRETURN_IV, XSRETURN_NO,
-XSRETURN_NV, XSRETURN_PV, XSRETURN_UNDEF, XSRETURN_YES, XST_mIV, XST_mNO,
-XST_mNV, XST_mPV, XST_mUNDEF, XST_mYES, XS_VERSION, XS_VERSION_BOOTCHECK,
-Zero
+SvIOK_on, SvIOK_only, SvIV, SvIVX, SvLEN, SvLOCK, SvNIOK, SvNIOKp,
+SvNIOK_off, SvNOK, SvNOKp, SvNOK_off, SvNOK_on, SvNOK_only, SvNV, SvNVX,
+SvOK, SvOOK, SvPOK, SvPOKp, SvPOK_off, SvPOK_on, SvPOK_only, SvPV, SvPVX,
+SvPV_force, SvPV_nolen, SvREFCNT, SvREFCNT_dec, SvREFCNT_inc, SvROK,
+SvROK_off, SvROK_on, SvRV, SvSETMAGIC, SvSetSV, SvSetSV_nosteal, SvSTASH,
+SvTAINT, SvTAINTED, SvTAINTED_off, SvTAINTED_on, SvTRUE, SvTYPE, svtype,
+SVt_IV, SVt_NV, SVt_PV, SVt_PVAV, SVt_PVCV, SVt_PVHV, SVt_PVMG, SvUNLOCK,
+SvUPGRADE, SvUV, SvUVX, sv_2mortal, sv_bless, sv_catpv, sv_catpvf,
+sv_catpvf_mg, sv_catpvn, sv_catpvn_mg, sv_catpv_mg, sv_catsv, sv_catsv_mg,
+sv_chop, sv_cmp, sv_dec, sv_derived_from, sv_eq, sv_grow, sv_inc,
+sv_insert, sv_isa, sv_isobject, sv_len, sv_magic, sv_mortalcopy,
+sv_newmortal, sv_setiv, sv_setiv_mg, sv_setnv, sv_setnv_mg, sv_setpv,
+sv_setpvf, sv_setpvf_mg, sv_setpviv, sv_setpviv_mg, sv_setpvn,
+sv_setpvn_mg, sv_setpv_mg, sv_setref_iv, sv_setref_nv, sv_setref_pv,
+sv_setref_pvn, sv_setsv, sv_setsv_mg, sv_setuv, sv_setuv_mg, sv_unref,
+sv_upgrade, sv_usepvn, sv_usepvn_mg, sv_vcatpvfn, sv_vsetpvfn, THIS,
+toLOWER, toUPPER, warn, XPUSHi, XPUSHn, XPUSHp, XPUSHs, XPUSHu, XS,
+XSRETURN, XSRETURN_EMPTY, XSRETURN_IV, XSRETURN_NO, XSRETURN_NV,
+XSRETURN_PV, XSRETURN_UNDEF, XSRETURN_YES, XST_mIV, XST_mNO, XST_mNV,
+XST_mPV, XST_mUNDEF, XST_mYES, XS_VERSION, XS_VERSION_BOOTCHECK, Zero
=item AUTHORS
=back
-=head2 attrs - set/get attributes of a subroutine (deprecated)
-
-=over
-
-=item SYNOPSIS
-
-=item DESCRIPTION
-
-method, locked
-
-=back
-
=head2 autouse - postpone load of modules until a function is used
=over
=back
-=head2 ops - Perl pragma to restrict unsafe operations when compiling
-
-=over
-
-=item SYNOPSIS
-
-=item DESCRIPTION
-
-=item SEE ALSO
-
-=back
-
=head2 overload - Package for overloading perl operations
=over
=back
+=head2 pwent - Perl pragma to control the pwent functions
+
+=over
+
+=item SYNOPSIS
+
+=item DESCRIPTION
+
+=over
+
+=item subpragma shadow_password
+
+=back
+
+=back
+
=head2 re - Perl pragma to alter regular expression behaviour
=over
=item DESCRIPTION
-=item AUTHOR
+=item AUTHORS
=back
=item OPTIONS
B<-ofilename>, B<-afilename>, B<-->, B<-f>, B<-fcompress-nullops>,
-B<-fomit-sequence-numbers>, B<-fbypass-nullops>, B<-fstrip-syntax-tree>,
-B<-On>, B<-D>, B<-Do>, B<-Db>, B<-Da>, B<-DC>, B<-S>, B<-m>
+B<-fomit-sequence-numbers>, B<-fbypass-nullops>, B<-On>, B<-D>, B<-Do>,
+B<-Db>, B<-Da>, B<-DC>, B<-S>, B<-Ppackage> Stores package in the
+output. =back
=item EXAMPLES
=item BUGS
-=item AUTHOR
+=item AUTHORS
=back
=item OPTIONS
B<-ofilename>, B<-afilename>, B<-->, B<-f>, B<-fcompress-nullops>,
-B<-fomit-sequence-numbers>, B<-fbypass-nullops>, B<-fstrip-syntax-tree>,
-B<-On>, B<-D>, B<-Do>, B<-Db>, B<-Da>, B<-DC>, B<-S>, B<-m>
+B<-fomit-sequence-numbers>, B<-fbypass-nullops>, B<-On>, B<-D>, B<-Do>,
+B<-Db>, B<-Da>, B<-DC>, B<-S>, B<-Ppackage> Stores package in the
+output. =back
=item EXAMPLES
=item BUGS
-=item AUTHOR
+=item AUTHORS
=back
C<d_flexfnam>, C<d_flock>, C<d_fork>, C<d_fpathconf>, C<d_fpos64_t>,
C<d_frexpl>, C<d_fs_data_s>, C<d_fseeko>, C<d_fsetpos>, C<d_fstatfs>,
C<d_fstatvfs>, C<d_ftello>, C<d_ftime>, C<d_Gconvert>, C<d_getcwd>,
-C<d_getfsstat>, C<d_getgrent>, C<d_getgrps>, C<d_gethbyaddr>,
-C<d_gethbyname>, C<d_gethent>, C<d_gethname>, C<d_gethostprotos>,
-C<d_getlogin>, C<d_getmnt>, C<d_getmntent>, C<d_getnbyaddr>,
-C<d_getnbyname>, C<d_getnent>, C<d_getnetprotos>, C<d_getpbyname>,
-C<d_getpbynumber>, C<d_getpent>, C<d_getpgid>, C<d_getpgrp2>, C<d_getpgrp>,
-C<d_getppid>, C<d_getprior>, C<d_getprotoprotos>, C<d_getpwent>,
-C<d_getsbyname>, C<d_getsbyport>, C<d_getsent>, C<d_getservprotos>,
-C<d_getspnam>, C<d_gettimeod>, C<d_gnulibc>, C<d_grpasswd>, C<d_hasmntopt>,
-C<d_htonl>, C<d_iconv>, C<d_index>, C<d_inetaton>, C<d_int64_t>,
-C<d_isascii>, C<d_isnan>, C<d_isnanl>, C<d_killpg>, C<d_lchown>,
-C<d_ldbl_dig>, C<d_link>, C<d_locconv>, C<d_lockf>, C<d_longdbl>,
-C<d_longlong>, C<d_lseekproto>, C<d_lstat>, C<d_madvise>, C<d_mblen>,
-C<d_mbstowcs>, C<d_mbtowc>, C<d_memchr>, C<d_memcmp>, C<d_memcpy>,
-C<d_memmove>, C<d_memset>, C<d_mkdir>, C<d_mkdtemp>, C<d_mkfifo>,
-C<d_mkstemp>, C<d_mkstemps>, C<d_mktime>, C<d_mmap>, C<d_modfl>,
-C<d_mprotect>, C<d_msg>, C<d_msg_ctrunc>, C<d_msg_dontroute>, C<d_msg_oob>,
-C<d_msg_peek>, C<d_msg_proxy>, C<d_msgctl>, C<d_msgget>, C<d_msgrcv>,
-C<d_msgsnd>, C<d_msync>, C<d_munmap>, C<d_mymalloc>, C<d_nice>,
-C<d_nv_preserved_bits>, C<d_nv_preserves_uv>, C<d_off64_t>,
-C<d_old_pthread_create_joinable>, C<d_oldpthreads>, C<d_oldsock>,
-C<d_open3>, C<d_pathconf>, C<d_pause>, C<d_perl_otherlibdirs>,
-C<d_phostname>, C<d_pipe>, C<d_poll>, C<d_portable>, C<d_PRId64>,
-C<d_PRIeldbl>, C<d_PRIEldbl>, C<d_PRIfldbl>, C<d_PRIFldbl>, C<d_PRIgldbl>,
-C<d_PRIGldbl>, C<d_PRIi64>, C<d_PRIo64>, C<d_PRIu64>, C<d_PRIx64>,
-C<d_PRIX64>, C<d_pthread_yield>, C<d_pwage>, C<d_pwchange>, C<d_pwclass>,
-C<d_pwcomment>, C<d_pwexpire>, C<d_pwgecos>, C<d_pwpasswd>, C<d_pwquota>,
-C<d_qgcvt>, C<d_quad>, C<d_readdir>, C<d_readlink>, C<d_rename>,
-C<d_rewinddir>, C<d_rmdir>, C<d_safebcpy>, C<d_safemcpy>, C<d_sanemcmp>,
-C<d_sched_yield>, C<d_scm_rights>, C<d_seekdir>, C<d_select>, C<d_sem>,
-C<d_semctl>, C<d_semctl_semid_ds>, C<d_semctl_semun>, C<d_semget>,
-C<d_semop>, C<d_setegid>, C<d_seteuid>, C<d_setgrent>, C<d_setgrps>,
-C<d_sethent>, C<d_setlinebuf>, C<d_setlocale>, C<d_setnent>, C<d_setpent>,
-C<d_setpgid>, C<d_setpgrp2>, C<d_setpgrp>, C<d_setprior>, C<d_setpwent>,
-C<d_setregid>, C<d_setresgid>, C<d_setresuid>, C<d_setreuid>, C<d_setrgid>,
-C<d_setruid>, C<d_setsent>, C<d_setsid>, C<d_setvbuf>, C<d_sfio>, C<d_shm>,
-C<d_shmat>, C<d_shmatprototype>, C<d_shmctl>, C<d_shmdt>, C<d_shmget>,
-C<d_sigaction>, C<d_sigsetjmp>, C<d_socket>, C<d_socklen_t>, C<d_sockpair>,
-C<d_sqrtl>, C<d_statblks>, C<d_statfs_f_flags>, C<d_statfs_s>,
-C<d_statvfs>, C<d_stdio_cnt_lval>, C<d_stdio_ptr_lval>,
-C<d_stdio_stream_array>, C<d_stdiobase>, C<d_stdstdio>, C<d_strchr>,
-C<d_strcoll>, C<d_strctcpy>, C<d_strerrm>, C<d_strerror>, C<d_strtod>,
-C<d_strtol>, C<d_strtold>, C<d_strtoll>, C<d_strtoul>, C<d_strtoull>,
-C<d_strtouq>, C<d_strxfrm>, C<d_suidsafe>, C<d_symlink>, C<d_syscall>,
-C<d_sysconf>, C<d_sysernlst>, C<d_syserrlst>, C<d_system>, C<d_tcgetpgrp>,
-C<d_tcsetpgrp>, C<d_telldir>, C<d_telldirproto>, C<d_time>, C<d_times>,
-C<d_truncate>, C<d_tzname>, C<d_umask>, C<d_uname>, C<d_union_semun>,
-C<d_ustat>, C<d_vendorarch>, C<d_vendorbin>, C<d_vendorlib>, C<d_vfork>,
-C<d_void_closedir>, C<d_voidsig>, C<d_voidtty>, C<d_volatile>,
-C<d_vprintf>, C<d_wait4>, C<d_waitpid>, C<d_wcstombs>, C<d_wctomb>,
-C<d_xenix>, C<date>, C<db_hashtype>, C<db_prefixtype>, C<defvoidused>,
-C<direntrytype>, C<dlext>, C<dlsrc>, C<doublesize>, C<drand01>,
-C<dynamic_ext>
+C<d_getespwnam>, C<d_getfsstat>, C<d_getgrent>, C<d_getgrps>,
+C<d_gethbyaddr>, C<d_gethbyname>, C<d_gethent>, C<d_gethname>,
+C<d_gethostprotos>, C<d_getlogin>, C<d_getmnt>, C<d_getmntent>,
+C<d_getnbyaddr>, C<d_getnbyname>, C<d_getnent>, C<d_getnetprotos>,
+C<d_getpbyname>, C<d_getpbynumber>, C<d_getpent>, C<d_getpgid>,
+C<d_getpgrp2>, C<d_getpgrp>, C<d_getppid>, C<d_getprior>,
+C<d_getprotoprotos>, C<d_getprpwnam>, C<d_getpwent>, C<d_getsbyname>,
+C<d_getsbyport>, C<d_getsent>, C<d_getservprotos>, C<d_getspnam>,
+C<d_gettimeod>, C<d_gnulibc>, C<d_grpasswd>, C<d_hasmntopt>, C<d_htonl>,
+C<d_iconv>, C<d_index>, C<d_inetaton>, C<d_int64_t>, C<d_isascii>,
+C<d_isnan>, C<d_isnanl>, C<d_killpg>, C<d_lchown>, C<d_ldbl_dig>,
+C<d_link>, C<d_locconv>, C<d_lockf>, C<d_longdbl>, C<d_longlong>,
+C<d_lseekproto>, C<d_lstat>, C<d_madvise>, C<d_mblen>, C<d_mbstowcs>,
+C<d_mbtowc>, C<d_memchr>, C<d_memcmp>, C<d_memcpy>, C<d_memmove>,
+C<d_memset>, C<d_mkdir>, C<d_mkdtemp>, C<d_mkfifo>, C<d_mkstemp>,
+C<d_mkstemps>, C<d_mktime>, C<d_mmap>, C<d_modfl>, C<d_mprotect>, C<d_msg>,
+C<d_msg_ctrunc>, C<d_msg_dontroute>, C<d_msg_oob>, C<d_msg_peek>,
+C<d_msg_proxy>, C<d_msgctl>, C<d_msgget>, C<d_msgrcv>, C<d_msgsnd>,
+C<d_msync>, C<d_munmap>, C<d_mymalloc>, C<d_nice>, C<d_nv_preserves_uv>,
+C<d_nv_preserves_uv_bits>, C<d_off64_t>, C<d_old_pthread_create_joinable>,
+C<d_oldpthreads>, C<d_oldsock>, C<d_open3>, C<d_pathconf>, C<d_pause>,
+C<d_perl_otherlibdirs>, C<d_phostname>, C<d_pipe>, C<d_poll>,
+C<d_portable>, C<d_PRId64>, C<d_PRIeldbl>, C<d_PRIEldbl>, C<d_PRIfldbl>,
+C<d_PRIFldbl>, C<d_PRIgldbl>, C<d_PRIGldbl>, C<d_PRIi64>, C<d_PRIo64>,
+C<d_PRIu64>, C<d_PRIx64>, C<d_PRIX64>, C<d_pthread_yield>, C<d_pwage>,
+C<d_pwchange>, C<d_pwclass>, C<d_pwcomment>, C<d_pwexpire>, C<d_pwgecos>,
+C<d_pwpasswd>, C<d_pwquota>, C<d_qgcvt>, C<d_quad>, C<d_readdir>,
+C<d_readlink>, C<d_rename>, C<d_rewinddir>, C<d_rmdir>, C<d_safebcpy>,
+C<d_safemcpy>, C<d_sanemcmp>, C<d_sched_yield>, C<d_scm_rights>,
+C<d_seekdir>, C<d_select>, C<d_sem>, C<d_semctl>, C<d_semctl_semid_ds>,
+C<d_semctl_semun>, C<d_semget>, C<d_semop>, C<d_setegid>, C<d_seteuid>,
+C<d_setgrent>, C<d_setgrps>, C<d_sethent>, C<d_setlinebuf>, C<d_setlocale>,
+C<d_setnent>, C<d_setpent>, C<d_setpgid>, C<d_setpgrp2>, C<d_setpgrp>,
+C<d_setprior>, C<d_setpwent>, C<d_setregid>, C<d_setresgid>,
+C<d_setresuid>, C<d_setreuid>, C<d_setrgid>, C<d_setruid>, C<d_setsent>,
+C<d_setsid>, C<d_setvbuf>, C<d_sfio>, C<d_shm>, C<d_shmat>,
+C<d_shmatprototype>, C<d_shmctl>, C<d_shmdt>, C<d_shmget>, C<d_sigaction>,
+C<d_sigsetjmp>, C<d_socket>, C<d_socklen_t>, C<d_sockpair>, C<d_sqrtl>,
+C<d_statblks>, C<d_statfs_f_flags>, C<d_statfs_s>, C<d_statvfs>,
+C<d_stdio_cnt_lval>, C<d_stdio_ptr_lval>, C<d_stdio_stream_array>,
+C<d_stdiobase>, C<d_stdstdio>, C<d_strchr>, C<d_strcoll>, C<d_strctcpy>,
+C<d_strerrm>, C<d_strerror>, C<d_strtod>, C<d_strtol>, C<d_strtold>,
+C<d_strtoll>, C<d_strtoul>, C<d_strtoull>, C<d_strtouq>, C<d_strxfrm>,
+C<d_suidsafe>, C<d_symlink>, C<d_syscall>, C<d_sysconf>, C<d_sysernlst>,
+C<d_syserrlst>, C<d_system>, C<d_tcgetpgrp>, C<d_tcsetpgrp>, C<d_telldir>,
+C<d_telldirproto>, C<d_time>, C<d_times>, C<d_truncate>, C<d_tzname>,
+C<d_umask>, C<d_uname>, C<d_union_semun>, C<d_ustat>, C<d_vendorarch>,
+C<d_vendorbin>, C<d_vendorlib>, C<d_vfork>, C<d_void_closedir>,
+C<d_voidsig>, C<d_voidtty>, C<d_volatile>, C<d_vprintf>, C<d_wait4>,
+C<d_waitpid>, C<d_wcstombs>, C<d_wctomb>, C<d_xenix>, C<date>,
+C<db_hashtype>, C<db_prefixtype>, C<defvoidused>, C<direntrytype>,
+C<dlext>, C<dlsrc>, C<doublesize>, C<drand01>, C<dynamic_ext>
=item e
C<i_grp>, C<i_iconv>, C<i_ieeefp>, C<i_inttypes>, C<i_limits>, C<i_locale>,
C<i_machcthr>, C<i_malloc>, C<i_math>, C<i_memory>, C<i_mntent>, C<i_ndbm>,
C<i_netdb>, C<i_neterrno>, C<i_netinettcp>, C<i_niin>, C<i_poll>,
-C<i_pthread>, C<i_pwd>, C<i_rpcsvcdbm>, C<i_sfio>, C<i_sgtty>, C<i_shadow>,
-C<i_socks>, C<i_stdarg>, C<i_stddef>, C<i_stdlib>, C<i_string>,
-C<i_sunmath>, C<i_sysaccess>, C<i_sysdir>, C<i_sysfile>, C<i_sysfilio>,
-C<i_sysin>, C<i_sysioctl>, C<i_syslog>, C<i_sysmman>, C<i_sysmode>,
-C<i_sysmount>, C<i_sysndir>, C<i_sysparam>, C<i_sysresrc>, C<i_syssecrt>,
-C<i_sysselct>, C<i_syssockio>, C<i_sysstat>, C<i_sysstatfs>,
+C<i_prot>, C<i_pthread>, C<i_pwd>, C<i_rpcsvcdbm>, C<i_sfio>, C<i_sgtty>,
+C<i_shadow>, C<i_socks>, C<i_stdarg>, C<i_stddef>, C<i_stdlib>,
+C<i_string>, C<i_sunmath>, C<i_sysaccess>, C<i_sysdir>, C<i_sysfile>,
+C<i_sysfilio>, C<i_sysin>, C<i_sysioctl>, C<i_syslog>, C<i_sysmman>,
+C<i_sysmode>, C<i_sysmount>, C<i_sysndir>, C<i_sysparam>, C<i_sysresrc>,
+C<i_syssecrt>, C<i_sysselct>, C<i_syssockio>, C<i_sysstat>, C<i_sysstatfs>,
C<i_sysstatvfs>, C<i_systime>, C<i_systimek>, C<i_systimes>, C<i_systypes>,
C<i_sysuio>, C<i_sysun>, C<i_sysutsname>, C<i_sysvfs>, C<i_syswait>,
C<i_termio>, C<i_termios>, C<i_time>, C<i_unistd>, C<i_ustat>, C<i_utime>,
=item DESCRIPTION
-=item BUGS
+=item PERFORMANCE
=back
=back
-=head2 Errno - System errno constants
-
-=over
-
-=item SYNOPSIS
-
-=item DESCRIPTION
-
-=item CAVEATS
-
-=item AUTHOR
-
-=item COPYRIGHT
-
-=back
-
=head2 Exporter - Implements default import method for modules
=over
=back
-=head2 IO::Dir - supply object methods for directory handles
-
-=over
-
-=item SYNOPSIS
-
-=item DESCRIPTION
-
-new ( [ DIRNAME ] ), open ( DIRNAME ), read (), seek ( POS ), tell (),
-rewind (), close (), tie %hash, IO::Dir, DIRNAME [, OPTIONS ]
-
-=item SEE ALSO
-
-=item AUTHOR
-
-=item COPYRIGHT
-
-=back
-
-=head2 IO::File - supply object methods for filehandles
-
-=over
-
-=item SYNOPSIS
-
-=item DESCRIPTION
-
-=item CONSTRUCTOR
-
-new ( FILENAME [,MODE [,PERMS]] ), new_tmpfile
-
-=item METHODS
-
-open( FILENAME [,MODE [,PERMS]] )
-
-=item SEE ALSO
-
-=item HISTORY
-
-=back
-
-=head2 IO::Handle - supply object methods for I/O handles
-
-=over
-
-=item SYNOPSIS
-
-=item DESCRIPTION
-
-=item CONSTRUCTOR
-
-new (), new_from_fd ( FD, MODE )
-
-=item METHODS
-
-$io->fdopen ( FD, MODE ), $io->opened, $io->getline, $io->getlines,
-$io->ungetc ( ORD ), $io->write ( BUF, LEN [, OFFSET ] ), $io->error,
-$io->clearerr, $io->sync, $io->flush, $io->printflush ( ARGS ),
-$io->blocking ( [ BOOL ] ), $io->untaint
-
-=item NOTE
-
-=item SEE ALSO
-
-=item BUGS
-
-=item HISTORY
-
-=back
-
-=head2 IO::Pipe - supply object methods for pipes
-
-=over
-
-=item SYNOPSIS
-
-=item DESCRIPTION
-
-=item CONSTRUCTOR
-
-new ( [READER, WRITER] )
-
-=item METHODS
-
-reader ([ARGS]), writer ([ARGS]), handles ()
-
-=item SEE ALSO
-
-=item AUTHOR
-
-=item COPYRIGHT
-
-=back
-
-=head2 IO::Poll - Object interface to system poll call
-
-=over
-
-=item SYNOPSIS
-
-=item DESCRIPTION
-
-=item METHODS
-
-mask ( IO [, EVENT_MASK ] ), poll ( [ TIMEOUT ] ), events ( IO ), remove (
-IO ), handles( [ EVENT_MASK ] )
-
-=item SEE ALSO
-
-=item AUTHOR
-
-=item COPYRIGHT
-
-=back
-
-=head2 IO::Seekable - supply seek based methods for I/O objects
-
-=over
-
-=item SYNOPSIS
-
-=item DESCRIPTION
-
-=item SEE ALSO
-
-=item HISTORY
-
-=back
-
-=head2 IO::Select - OO interface to the select system call
-
-=over
-
-=item SYNOPSIS
-
-=item DESCRIPTION
-
-=item CONSTRUCTOR
-
-new ( [ HANDLES ] )
-
-=item METHODS
-
-add ( HANDLES ), remove ( HANDLES ), exists ( HANDLE ), handles, can_read (
-[ TIMEOUT ] ), can_write ( [ TIMEOUT ] ), has_exception ( [ TIMEOUT ] ),
-count (), bits(), select ( READ, WRITE, ERROR [, TIMEOUT ] )
-
-=item EXAMPLE
-
-=item AUTHOR
-
-=item COPYRIGHT
-
-=back
-
-=head2 IO::Socket - Object interface to socket communications
-
-=over
-
-=item SYNOPSIS
-
-=item DESCRIPTION
-
-=item CONSTRUCTOR
-
-new ( [ARGS] )
-
-=item METHODS
-
-accept([PKG]), socketpair(DOMAIN, TYPE, PROTOCOL), timeout([VAL]),
-sockopt(OPT [, VAL]), sockdomain, socktype, protocol, connected
-
-=item SEE ALSO
-
-=item AUTHOR
-
-=item COPYRIGHT
-
-=back
-
-=head2 IO::Socket::INET - Object interface for AF_INET domain sockets
-
-=over
-
-=item SYNOPSIS
-
-=item DESCRIPTION
-
-=item CONSTRUCTOR
-
-new ( [ARGS] )
-
-=over
-
-=item METHODS
-
-sockaddr (), sockport (), sockhost (), peeraddr (), peerport (), peerhost
-()
-
-=back
-
-=item SEE ALSO
-
-=item AUTHOR
-
-=item COPYRIGHT
-
-=back
-
-=head2 IO::Socket::UNIX - Object interface for AF_UNIX domain sockets
-
-=over
-
-=item SYNOPSIS
-
-=item DESCRIPTION
-
-=item CONSTRUCTOR
-
-new ( [ARGS] )
-
-=item METHODS
-
-hostpath(), peerpath()
-
-=item SEE ALSO
-
-=item AUTHOR
-
-=item COPYRIGHT
-
-=back
-
=head2 IO::lib::IO::Dir, IO::Dir - supply object methods for directory
handles
=back
-=head2 IPC::Msg - SysV Msg IPC object class
-
-=over
-
-=item SYNOPSIS
-
-=item DESCRIPTION
-
-=item METHODS
-
-new ( KEY , FLAGS ), id, rcv ( BUF, LEN [, TYPE [, FLAGS ]] ), remove, set
-( STAT ), set ( NAME => VALUE [, NAME => VALUE ...] ), snd ( TYPE, MSG [,
-FLAGS ] ), stat
-
-=item SEE ALSO
-
-=item AUTHOR
-
-=item COPYRIGHT
-
-=back
-
=head2 IPC::Open2, open2 - open a process for both reading and writing
=over
=back
-=head2 IPC::Semaphore - SysV Semaphore IPC object class
-
-=over
-
-=item SYNOPSIS
-
-=item DESCRIPTION
-
-=item METHODS
-
-new ( KEY , NSEMS , FLAGS ), getall, getncnt ( SEM ), getpid ( SEM ),
-getval ( SEM ), getzcnt ( SEM ), id, op ( OPLIST ), remove, set ( STAT ),
-set ( NAME => VALUE [, NAME => VALUE ...] ), setall ( VALUES ), setval ( N
-, VALUE ), stat
-
-=item SEE ALSO
-
-=item AUTHOR
-
-=item COPYRIGHT
-
-=back
-
=head2 IPC::SysV - SysV IPC constants
=over
=back
+=head2 Pod::LaTeX - Convert Pod data to formatted Latex
+
+=over
+
+=item SYNOPSIS
+
+=item DESCRIPTION
+
+=back
+
+=over
+
+=item OBJECT METHODS
+
+C<initialize>
+
+=back
+
+=over
+
+=item Data Accessors
+
+B<AddPreamble>
+
+=back
+
+B<AddPostamble>
+
+B<Head1Level>
+
+B<Label>
+
+B<LevelNoNum>
+
+B<MakeIndex>
+
+B<ReplaceNAMEwithSection>
+
+B<StartWithNewPage>
+
+B<TableOfContents>
+
+B<UniqueLabels>
+
+B<UserPreamble>
+
+B<UserPostamble>
+
+B<Lists>
+
+=over
+
+=item Subclassed methods
+
+=back
+
+B<begin_pod>
+
+B<end_pod>
+
+B<command>
+
+B<verbatim>
+
+B<textblock>
+
+B<interior_sequence>
+
+=over
+
+=item List Methods
+
+B<begin_list>
+
+=back
+
+B<end_list>
+
+B<add_item>
+
+=over
+
+=item Methods for headings
+
+B<head>
+
+=back
+
+=over
+
+=item Internal methods
+
+B<_output>
+
+=back
+
+B<_replace_special_chars>
+
+B<_create_label>
+
+B<_create_index>
+
+B<_clean_latex_commands>
+
+=over
+
+=item NOTES
+
+=item SEE ALSO
+
+=item AUTHORS
+
+=item COPYRIGHT
+
+=item REVISION
+
+=back
+
=head2 Pod::Man - Convert POD data to formatted *roff input
=over
=back
-=head2 Safe - Compile and execute code in restricted compartments
-
-=over
-
-=item SYNOPSIS
-
-=item DESCRIPTION
-
-a new namespace, an operator mask
-
-=item WARNING
-
-=over
-
-=item RECENT CHANGES
-
-=item Methods in class Safe
-
-permit (OP, ...), permit_only (OP, ...), deny (OP, ...), deny_only (OP,
-...), trap (OP, ...), untrap (OP, ...), share (NAME, ...), share_from
-(PACKAGE, ARRAYREF), varglob (VARNAME), reval (STRING), rdo (FILENAME),
-root (NAMESPACE), mask (MASK)
-
-=item Some Safety Issues
-
-Memory, CPU, Snooping, Signals, State Changes
-
-=item AUTHOR
-
-=back
-
-=back
-
=head2 Search::Dict, look - search for key in dictionary file
=over
=back
-=head2 Syslog, Sys::Syslog, openlog, closelog, setlogmask, syslog - Perl
-interface to the UNIX syslog(3) calls
-
-=over
-
-=item SYNOPSIS
-
-=item DESCRIPTION
-
-openlog $ident, $logopt, $facility, syslog $priority, $format, @args,
-setlogmask $mask_priority, setlogsock $sock_type (added in 5.004_02),
-closelog
-
-=item EXAMPLES
-
-=item SEE ALSO
-
-=item AUTHOR
-
-=back
-
=head2 Syslog::Syslog, Sys::Syslog, openlog, closelog, setlogmask, syslog -
Perl interface to the UNIX syslog(3) calls
--- /dev/null
+=head1 NAME
+
+perlutil - utilities packaged with the Perl distribution
+
+=head1 DESCRIPTION
+
+Along with the Perl interpreter itself, the Perl distribution installs a
+range of utilities on your system. There are also several utilities
+which are used by the Perl distribution itself as part of the install
+process. This document exists to list all of these utilities, explain
+what they are for and provide pointers to each module's documentation,
+if appropriate.
+
+=head2 DOCUMENTATION
+
+=over 3
+
+=item L<perldoc|perldoc>
+
+The main interface to Perl's documentation is C<perldoc>, although
+if you're reading this, it's more than likely that you've already found
+it. F<perldoc> will extract and format the documentation from any file
+in the current directory, any Perl module installed on the system, or
+any of the standard documentation pages, such as this one. Use
+C<perldoc E<lt>nameE<gt>> to get information on any of the utilities
+described in this document.
+
+=item L<pod2man|pod2man> and L<pod2text|pod2text>
+
+If it's run from a terminal, F<perldoc> will usually call F<pod2man> to
+translate POD (Plain Old Documentation - see L<perlpod> for an
+explanation) into a man page, and then run F<man> to display it; if
+F<man> isn't available, F<pod2text> will be used instead and the output
+piped through your favourite pager.
+
+=item L<pod2html|pod2html> and L<pod2latex|pod2latex>
+
+As well as these two, there are two other convertors: F<pod2html> will
+produce HTML pages from POD, and F<pod2latex>, which produces LaTeX
+files.
+
+=item L<pod2usage|pod2usage>
+
+If you just want to know how to use the utilities described here,
+F<pod2usage> will just extract the "USAGE" section; some of
+the utilities will automatically call F<pod2usage> on themselves when
+you call them with C<-help>.
+
+=item L<podselect|podselect>
+
+F<pod2usage> is a special case of F<podselect>, a utility to extract
+named sections from documents written in POD. For instance, while
+utilities have "USAGE" sections, Perl modules usually have "SYNOPSIS"
+sections: C<podselect -s "SYNOPSIS" ...> will extract this section for
+a given file.
+
+=item L<podchecker|podchecker>
+
+If you're writing your own documentation in POD, the F<podchecker>
+utility will look for errors in your markup.
+
+=item L<splain|splain>
+
+F<splain> is an interface to L<perldiag> - paste in your error message
+to it, and it'll explain it for you.
+
+=item L<roffitall|roffitall>
+
+The C<roffitall> utility is not installed on your system but lives in
+the F<pod/> directory of your Perl source kit; it converts all the
+documentation from the distribution to F<*roff> format, and produces a
+typeset PostScript or text file of the whole lot.
+
+=back
+
+=head2 CONVERTORS
+
+To help you convert legacy programs to Perl, we've included three
+conversion filters:
+
+=over 3
+
+=item L<a2p|a2p>
+
+F<a2p> converts F<awk> scripts to Perl programs; for example, C<a2p -F:>
+on the simple F<awk> script C<{print $2}> will produce a Perl program
+based around this code:
+
+ while (<>) {
+ ($Fld1,$Fld2) = split(/[:\n]/, $_, 9999);
+ print $Fld2;
+ }
+
+=item L<s2p|s2p>
+
+Similarly, F<s2p> converts F<sed> scripts to Perl programs. F<s2p> run
+on C<s/foo/bar> will produce a Perl program based around this:
+
+ while (<>) {
+ chop;
+ s/foo/bar/g;
+ print if $printit;
+ }
+
+=item L<find2perl|find2perl>
+
+Finally, F<find2perl> translates C<find> commands to Perl equivalents which
+use the L<File::Find|File::Find> module. As an example,
+C<find2perl . -user root -perm 4000 -print> produces the following callback
+subroutine for C<File::Find>:
+
+ sub wanted {
+ my ($dev,$ino,$mode,$nlink,$uid,$gid);
+ (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &&
+ $uid == $uid{'root'}) &&
+ (($mode & 0777) == 04000);
+ print("$name\n");
+ }
+
+=back
+
+As well as these filters for converting other languages, the
+L<pl2pm|pl2pm> utility will help you convert old-style Perl 4 libraries to
+new-style Perl5 modules.
+
+=head2 Development
+
+There are a set of utilities which help you in developing Perl programs,
+and in particular, extending Perl with C.
+
+=over 3
+
+=item L<perlbug|perlbug>
+
+F<perlbug> is the recommended way to report bugs in the perl interpreter
+itself or any of the standard library modules back to the developers;
+please read through the documentation for F<perlbug> thoroughly before
+using it to submit a bug report.
+
+=item L<h2ph|h2ph>
+
+Back before Perl had the XS system for connecting with C libraries,
+programmers used to get library constants by reading through the C
+header files. You may still see C<require 'syscall.ph'> or similar
+around - the F<.ph> file should be created by running F<h2ph> on the
+corresponding F<.h> file. See the F<h2ph> documentation for more on how
+to convert a whole bunch of header files at ones.
+
+=item L<c2ph|c2ph> and L<pstruct|pstruct>
+
+F<c2ph> and F<pstruct>, which are actually the same program but behave
+differently depending on how they are called, provide another way of
+getting at C with Perl - they'll convert C structures and union declarations
+to Perl code. This is deprecated in favour of F<h2xs> these days.
+
+=item L<h2xs|h2xs>
+
+F<h2xs> converts C header files into XS modules, and will try and write
+as much glue between C libraries and Perl modules as it can. It's also
+very useful for creating skeletons of pure Perl modules.
+
+=item L<dprofpp|dprofpp>
+
+Perl comes with a profiler, the F<Devel::Dprof> module. The
+F<dprofpp> utility analyzes the output of this profiler and tells you
+which subroutines are taking up the most run time. See L<Devel::Dprof>
+for more information.
+
+=item L<perlcc|perlcc>
+
+F<perlcc> is the interface to the experimental Perl compiler suite.
+
+=back
+
+=head2 SEE ALSO
+
+L<perldoc|perldoc>, L<pod2man|pod2man>, L<perlpod>,
+L<pod2html|pod2html>, L<pod2usage|pod2usage>, L<podselect|podselect>,
+L<podchecker|podchecker>, L<splain|splain>, L<perldiag>,
+L<roffitall|roffitall>, L<a2p|a2p>, L<s2p|s2p>, L<find2perl|find2perl>,
+L<File::Find|File::Find>, L<pl2pm|pl2pm>, L<perlbug|perlbug>,
+L<h2ph|h2ph>, L<c2ph|c2ph>, L<h2xs|h2xs>, L<dprofpp|dprofpp>,
+L<Devel::Dprof>, L<perlcc|perlcc>
+
+=cut
;;
esac
+# NEEDS TO BE BUILT BASED ON Makefile (or Makefile.SH, should such happen)
toroff=`
echo \
- $mandir/perl.1 \
- $mandir/perldata.1 \
- $mandir/perlsyn.1 \
- $mandir/perlop.1 \
- $mandir/perlre.1 \
- $mandir/perlrun.1 \
- $mandir/perlfunc.1 \
- $mandir/perlvar.1 \
- $mandir/perlsub.1 \
- $mandir/perlopentut.1 \
- $mandir/perlmod.1 \
- $mandir/perlmodlib.1 \
- $mandir/perlmodinstall.1 \
- $mandir/perlfork.1 \
- $mandir/perlform.1 \
- $mandir/perllocale.1 \
- $mandir/perlref.1 \
- $mandir/perlreftut.1 \
- $mandir/perldsc.1 \
- $mandir/perllol.1 \
- $mandir/perlboot.1 \
- $mandir/perltoot.1 \
- $mandir/perlobj.1 \
- $mandir/perltie.1 \
- $mandir/perlbot.1 \
- $mandir/perlipc.1 \
- $mandir/perlthrtut.1 \
- $mandir/perldebguts.1 \
- $mandir/perldebug.1 \
- $mandir/perlnumber.1 \
- $mandir/perldiag.1 \
- $mandir/perlsec.1 \
- $mandir/perltrap.1 \
- $mandir/perlport.1 \
- $mandir/perlstyle.1 \
- $mandir/perlpod.1 \
- $mandir/perlbook.1 \
- $mandir/perlembed.1 \
- $mandir/perlapio.1 \
- $mandir/perlxs.1 \
- $mandir/perlxstut.1 \
- $mandir/perlguts.1 \
- $mandir/perlcall.1 \
- $mandir/perlcompile.1 \
- $mandir/perltodo.1 \
- $mandir/perlapi.1 \
- $mandir/perlintern.1 \
- $mandir/perlhack.1 \
- $mandir/perlhist.1 \
- $mandir/perldelta.1 \
- $mandir/perl5004delta.1 \
- $mandir/perl5005delta.1 \
- $mandir/perlfaq.1 \
- $mandir/perlfaq1.1 \
- $mandir/perlfaq2.1 \
- $mandir/perlfaq3.1 \
- $mandir/perlfaq4.1 \
- $mandir/perlfaq5.1 \
- $mandir/perlfaq6.1 \
- $mandir/perlfaq7.1 \
- $mandir/perlfaq8.1 \
- $mandir/perlfaq9.1 \
+ $mandir/perl.1 \
+ $mandir/perl5004delta.1 \
+ $mandir/perl5005delta.1 \
+ $mandir/perl56delta.1 \
+ $mandir/perlapi.1 \
+ $mandir/perlapio.1 \
+ $mandir/perlbook.1 \
+ $mandir/perlboot.1 \
+ $mandir/perlbot.1 \
+ $mandir/perlcall.1 \
+ $mandir/perlcompile.1 \
+ $mandir/perldata.1 \
+ $mandir/perldbmfilter.1 \
+ $mandir/perldebguts.1 \
+ $mandir/perldebug.1 \
+ $mandir/perldelta.1 \
+ $mandir/perldiag.1 \
+ $mandir/perldsc.1 \
+ $mandir/perlembed.1 \
+ $mandir/perlfaq.1 \
+ $mandir/perlfaq1.1 \
+ $mandir/perlfaq2.1 \
+ $mandir/perlfaq3.1 \
+ $mandir/perlfaq4.1 \
+ $mandir/perlfaq5.1 \
+ $mandir/perlfaq6.1 \
+ $mandir/perlfaq7.1 \
+ $mandir/perlfaq8.1 \
+ $mandir/perlfaq9.1 \
+ $mandir/perlfilter.1 \
+ $mandir/perlfork.1 \
+ $mandir/perlform.1 \
+ $mandir/perlfunc.1 \
+ $mandir/perlguts.1 \
+ $mandir/perlhack.1 \
+ $mandir/perlhist.1 \
+ $mandir/perlintern.1 \
+ $mandir/perlipc.1 \
+ $mandir/perllexwarn.1 \
+ $mandir/perllocale.1 \
+ $mandir/perllol.1 \
+ $mandir/perlmod.1 \
+ $mandir/perlmodinstall.1 \
+ $mandir/perlmodlib.1 \
+ $mandir/perlnewmod.1 \
+ $mandir/perlnumber.1 \
+ $mandir/perlobj.1 \
+ $mandir/perlop.1 \
+ $mandir/perlopentut.1 \
+ $mandir/perlpod.1 \
+ $mandir/perlport.1 \
+ $mandir/perlre.1 \
+ $mandir/perlref.1 \
+ $mandir/perlreftut.1 \
+ $mandir/perlrequick.1 \
+ $mandir/perlretut.1 \
+ $mandir/perlrun.1 \
+ $mandir/perlsec.1 \
+ $mandir/perlstyle.1 \
+ $mandir/perlsub.1 \
+ $mandir/perlsyn.1 \
+ $mandir/perlthrtut.1 \
+ $mandir/perltie.1 \
+ $mandir/perltoc.1 \
+ $mandir/perltodo.1 \
+ $mandir/perltoot.1 \
+ $mandir/perltootc.1 \
+ $mandir/perltrap.1 \
+ $mandir/perlunicode.1 \
+ $mandir/perlutil.1 \
+ $mandir/perlvar.1 \
+ $mandir/perlxs.1 \
+ $mandir/perlxstut.1 \
\
$mandir/a2p.1 \
$mandir/c2ph.1 \
PERL_CALLCONV U8* Perl_utf16_to_utf8_reversed(pTHX_ U16* p, U8 *d, I32 bytelen);
PERL_CALLCONV I32 Perl_utf8_distance(pTHX_ U8 *a, U8 *b);
PERL_CALLCONV U8* Perl_utf8_hop(pTHX_ U8 *s, I32 off);
+PERL_CALLCONV U8* Perl_utf8_to_bytes(pTHX_ U8 *s, STRLEN len);
+PERL_CALLCONV U8* Perl_bytes_to_utf8(pTHX_ U8 *s, STRLEN len);
PERL_CALLCONV UV Perl_utf8_to_uv(pTHX_ U8 *s, I32* retlen);
PERL_CALLCONV U8* Perl_uv_to_utf8(pTHX_ U8 *d, UV uv);
PERL_CALLCONV void Perl_vivify_defelem(pTHX_ SV* sv);
STATIC I32 S_do_trans_UU_simple(pTHX_ SV *sv);
STATIC I32 S_do_trans_UU_count(pTHX_ SV *sv);
STATIC I32 S_do_trans_UU_complex(pTHX_ SV *sv);
-STATIC I32 S_do_trans_UC_simple(pTHX_ SV *sv);
-STATIC I32 S_do_trans_CU_simple(pTHX_ SV *sv);
STATIC I32 S_do_trans_UC_trivial(pTHX_ SV *sv);
STATIC I32 S_do_trans_CU_trivial(pTHX_ SV *sv);
#endif
}
/*
-=for apidoc utf8_to_bytes
+=for apidoc Am|U8 *|utf8_to_bytes|U8 *s|STRLEN len
Converts a string C<s> of length C<len> from UTF8 into ASCII encoding.
Unlike C<bytes_to_utf8>, this over-writes the original string.
}
/*
-=for apidoc bytes_to_utf8
+=for apidoc Am|U8 *|bytes_to_utf8|U8 *s|STRLEN len
Converts a string C<s> of length C<len> from ASCII into UTF8 encoding.
Returns a pointer to the newly-created string.
+=cut
*/
U8*
my $revhist = '';
$revhist = <<EOT if $opt_C;
-
-=head1 HISTORY
-
-=over 8
-
-=item $TEMPLATE_VERSION
-
-Original version; created by h2xs $H2XS_VERSION with options
-
- @ARGS
-
-=back
-
+#
+#=head1 HISTORY
+#
+#=over 8
+#
+#=item $TEMPLATE_VERSION
+#
+#Original version; created by h2xs $H2XS_VERSION with options
+#
+# @ARGS
+#
+#=back
+#
EOT
my $exp_doc = <<EOD;
-
-=head2 EXPORT
-
-None by default.
-
+#
+#=head2 EXPORT
+#
+#None by default.
+#
EOD
if (@const_names and not $opt_P) {
$exp_doc .= <<EOD;
-=head2 Exportable constants
-
- @{[join "\n ", @const_names]}
-
+#=head2 Exportable constants
+#
+# @{[join "\n ", @const_names]}
+#
EOD
}
if (defined $fdecls and @$fdecls and not $opt_P) {
$exp_doc .= <<EOD;
-=head2 Exportable functions
-
+#=head2 Exportable functions
+#
EOD
- $exp_doc .= <<EOD if $opt_p;
-When accessing these functions from Perl, prefix C<$opt_p> should be removed.
-
+# $exp_doc .= <<EOD if $opt_p;
+#When accessing these functions from Perl, prefix C<$opt_p> should be removed.
+#
EOD
$exp_doc .= <<EOD;
- @{[join "\n ", @known_fnames{@fnames}]}
-
+# @{[join "\n ", @known_fnames{@fnames}]}
+#
EOD
}
#unedited.
#
#Blah blah blah.
-#$exp_doc$revhist
+$exp_doc$revhist
#=head1 AUTHOR
#
#$author, $email
XSRETURN(1);
}
+
+void
+mod2fname(CV *cv)
+{
+ dXSARGS;
+ char ultimate_name[NAM$C_MAXRSS+1], work_name[NAM$C_MAXRSS*8 + 1],
+ workbuff[NAM$C_MAXRSS*1 + 1];
+ int total_namelen = 3, counter, num_entries;
+ /* ODS-5 ups this, but we want to be consistent, so... */
+ int max_name_len = 39;
+ AV *in_array = (AV *)SvRV(ST(0));
+
+ num_entries = av_len(in_array);
+
+ /* All the names start with PL_. */
+ strcpy(ultimate_name, "PL_");
+
+ /* Clean up our working buffer */
+ Zero(work_name, sizeof(work_name), char);
+
+ /* Run through the entries and build up a working name */
+ for(counter = 0; counter <= num_entries; counter++) {
+ /* If it's not the first name then tack on a __ */
+ if (counter) {
+ strcat(work_name, "__");
+ }
+ strcat(work_name, SvPV(*av_fetch(in_array, counter, FALSE),
+ PL_na));
+ }
+
+ /* Check to see if we actually have to bother...*/
+ if (strlen(work_name) + 3 <= max_name_len) {
+ strcat(ultimate_name, work_name);
+ } else {
+ /* It's too darned big, so we need to go strip. We use the same */
+ /* algorithm as xsubpp does. First, strip out doubled __ */
+ char *source, *dest, last;
+ dest = workbuff;
+ last = 0;
+ for (source = work_name; *source; source++) {
+ if (last == *source && last == '_') {
+ continue;
+ }
+ *dest++ = *source;
+ last = *source;
+ }
+ /* Go put it back */
+ strcpy(work_name, workbuff);
+ /* Is it still too big? */
+ if (strlen(work_name) + 3 > max_name_len) {
+ /* Strip duplicate letters */
+ last = 0;
+ dest = workbuff;
+ for (source = work_name; *source; source++) {
+ if (last == toupper(*source)) {
+ continue;
+ }
+ *dest++ = *source;
+ last = toupper(*source);
+ }
+ strcpy(work_name, workbuff);
+ }
+
+ /* Is it *still* too big? */
+ if (strlen(work_name) + 3 > max_name_len) {
+ /* Too bad, we truncate */
+ work_name[max_name_len - 2] = 0;
+ }
+ strcat(ultimate_name, work_name);
+ }
+
+ /* Okay, return it */
+ ST(0) = sv_2mortal(newSVpv(ultimate_name, 0));
+ XSRETURN(1);
+}
+
void
init_os_extras()
{
newXSproto("VMS::Filespec::vmspath",vmspath_fromperl,file,"$");
newXSproto("VMS::Filespec::unixpath",unixpath_fromperl,file,"$");
newXSproto("VMS::Filespec::candelete",candelete_fromperl,file,"$");
+ newXSproto("DynaLoader::mod2fname", mod2fname, file, "$");
newXS("File::Copy::rmscopy",rmscopy_fromperl,file);
return;