diff options
author | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2009-05-05 12:09:48 +0200 |
---|---|---|
committer | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2009-05-05 12:18:11 +0200 |
commit | 9de654f174a7c7ca88031e2ac4a33add560d0c8c (patch) | |
tree | 7763181344f0e6240e96c5a444c8a5b57c986dc8 /pod | |
parent | f1bef09e9115ebdc1c8818193d6c4cbb8bc050e6 (diff) | |
parent | 216e7dec1076aa94d5b8331c187c135e4952955a (diff) | |
download | perl-9de654f174a7c7ca88031e2ac4a33add560d0c8c.tar.gz |
Merge branch 'blead' into smartmatch
Conflicts:
t/op/switch.t
Diffstat (limited to 'pod')
-rw-r--r-- | pod/.gitignore | 7 | ||||
-rw-r--r-- | pod/buildtoc | 112 | ||||
-rw-r--r-- | pod/perl.pod | 3 | ||||
-rw-r--r-- | pod/perlapi.pod | 7382 | ||||
-rw-r--r-- | pod/perlboot.pod | 407 | ||||
-rw-r--r-- | pod/perldiag.pod | 37 | ||||
-rw-r--r-- | pod/perldoc.pod | 3 | ||||
-rw-r--r-- | pod/perlembed.pod | 19 | ||||
-rw-r--r-- | pod/perlfaq9.pod | 3 | ||||
-rw-r--r-- | pod/perlfunc.pod | 4 | ||||
-rw-r--r-- | pod/perlintern.pod | 1100 | ||||
-rw-r--r-- | pod/perlobj.pod | 9 | ||||
-rw-r--r-- | pod/perlothrtut.pod | 1067 | ||||
-rw-r--r-- | pod/perlpod.pod | 4 | ||||
-rw-r--r-- | pod/perlport.pod | 4 | ||||
-rw-r--r-- | pod/perlrecharclass.pod | 2 | ||||
-rw-r--r-- | pod/perlreftut.pod | 4 | ||||
-rw-r--r-- | pod/perlretut.pod | 10 | ||||
-rw-r--r-- | pod/perlrun.pod | 4 | ||||
-rw-r--r-- | pod/perlsyn.pod | 23 | ||||
-rw-r--r-- | pod/perltoc.pod | 36909 | ||||
-rw-r--r-- | pod/perltodo.pod | 14 | ||||
-rw-r--r-- | pod/perlvar.pod | 7 | ||||
-rw-r--r-- | pod/perlvms.pod | 1223 | ||||
-rw-r--r-- | pod/perlxs.pod | 6 | ||||
-rw-r--r-- | pod/perlxstut.pod | 4 | ||||
-rw-r--r-- | pod/roffitall | 1 |
27 files changed, 1649 insertions, 46719 deletions
diff --git a/pod/.gitignore b/pod/.gitignore index 2e2f9c931a..9ab103cc5c 100644 --- a/pod/.gitignore +++ b/pod/.gitignore @@ -7,7 +7,6 @@ /perlce.pod /perlcn.pod /perlcygwin.pod -/perldelta.pod /perldgux.pod /perldos.pod /perlepoc.pod @@ -34,6 +33,7 @@ /perlriscos.pod /perlsolaris.pod /perlsymbian.pod +/perltoc.pod /perltru64.pod /perltw.pod /perluts.pod @@ -57,3 +57,8 @@ /podchecker.bat /podselect /podselect.bat + +# generated +/perldelta.pod +/perlapi.pod +/perlintern.pod diff --git a/pod/buildtoc b/pod/buildtoc index 4054fdac43..7b770f2427 100644 --- a/pod/buildtoc +++ b/pod/buildtoc @@ -1,23 +1,25 @@ #!/usr/bin/perl -w use strict; -use vars qw($masterpodfile %Build %Targets $Verbose $Up %Ignore +use vars qw($masterpodfile %Build %Targets $Verbose $Quiet $Up %Ignore @Master %Readmes %Pods %Aux %Readmepods %Pragmata %Modules - %Copies); + %Copies %Generated); use File::Spec; use File::Find; use FindBin; use Text::Tabs; use Text::Wrap; use Getopt::Long; +use Carp; no locale; $Up = File::Spec->updir; -$masterpodfile = File::Spec->catdir($Up, "pod.lst"); +$masterpodfile = File::Spec->catfile($Up, "pod.lst"); # Generate any/all of these files # --verbose gives slightly more output +# --quiet suppresses routine warnings # --build-all tries to build everything # --build-foo updates foo as follows # --showfiles shows the files to be changed @@ -27,12 +29,12 @@ $masterpodfile = File::Spec->catdir($Up, "pod.lst"); toc => "perltoc.pod", manifest => File::Spec->catdir($Up, "MANIFEST"), perlpod => "perl.pod", - vms => File::Spec->catdir($Up, "vms", "descrip_mms.template"), - nmake => File::Spec->catdir($Up, "win32", "Makefile"), - dmake => File::Spec->catdir($Up, "win32", "makefile.mk"), - podmak => File::Spec->catdir($Up, "win32", "pod.mak"), + vms => File::Spec->catfile($Up, "vms", "descrip_mms.template"), + nmake => File::Spec->catfile($Up, "win32", "Makefile"), + dmake => File::Spec->catfile($Up, "win32", "makefile.mk"), + podmak => File::Spec->catfile($Up, "win32", "pod.mak"), # plan9 => File::Spec->catdir($Up, "plan9", "mkfile"), - unix => File::Spec->catdir($Up, "Makefile.SH"), + unix => File::Spec->catfile($Up, "Makefile.SH"), # TODO: add roffitall ); @@ -45,6 +47,7 @@ $0: Usage: $0 [--verbose] [--showfiles] $filesopts __USAGE__ unless @ARGV && GetOptions (verbose => \$Verbose, + quiet => \$Quiet, showfiles => \$showfiles, map {+"build-$_", \$Build{$_}} @files, 'all'); # Set them all to true @@ -115,6 +118,7 @@ foreach (<MASTER>) { $flags{manifest_omit} = 1; $delta_target = "$filename.pod"; } + $Generated{"$filename.pod"}++ if $flags =~ tr/g//d; if ($flags =~ tr/r//d) { my $readme = $filename; @@ -138,8 +142,7 @@ if (defined $delta_source) { if (defined $delta_target) { # This way round so that keys can act as a MANIFEST skip list # Targets will aways be in the pod directory. Currently we can only cope - # with sources being in the same directory. Fix this and do perlvms.pod - # with this? + # with sources being in the same directory. $Copies{$delta_target} = $delta_source; } else { die "$0: delta source defined but not target"; @@ -202,7 +205,7 @@ close MASTER; warn "$0: $i exists but is unknown by buildtoc\n" unless $our_pods{$i}; warn "$0: $i exists but is unknown by ../MANIFEST\n" - if !$manipods{$i} && !$manireadmes{$i} && !$Copies{$i}; + if !$manipods{$i} && !$manireadmes{$i} && !$Copies{$i} && !$Generated{$i}; warn "$0: $i exists but is unknown by perl.pod\n" if !$perlpods{$i} && !exists $sources{$i}; } @@ -213,6 +216,8 @@ close MASTER; foreach my $i (sort keys %manipods) { warn "$0: $i is known by ../MANIFEST but does not exist\n" unless $disk_pods{$i}; + warn "$0: $i is known by ../MANIFEST but is marked as generated\n" + if $Generated{$i}; } foreach my $i (sort keys %perlpods) { warn "$0: $i is known by perl.pod but does not exist\n" @@ -220,7 +225,7 @@ close MASTER; } } -# Find all the mdoules +# Find all the modules { my @modpods; find \&getpods => qw(../lib ../ext); @@ -248,10 +253,12 @@ close MASTER; if ($line =~ /^=head1\s+NAME\b/) { push @modpods, $file; #warn "GOOD $file\n"; + close F; return; } } - warn "$0: $file: cannot find =head1 NAME\n"; + close F; + warn "$0: $file: cannot find =head1 NAME\n" unless $Quiet; } } } @@ -366,6 +373,7 @@ EOPOD2B s/^\t//gm; output $_; output "\n"; # flush $LINE + close OUT; } # Below are all the auxiliary routines for generating perltoc.pod @@ -376,6 +384,8 @@ sub podset { local @ARGV = @_; my $pod; + return unless scalar(@ARGV); + while(<>) { tr/\015//d; if (s/^=head1 (NAME)\s*/=head2 /) { @@ -522,10 +532,12 @@ sub generate_manifest { } sub generate_manifest_pod { generate_manifest map {["pod/$_.pod", $Pods{$_}]} - grep {!$Copies{"$_.pod"}} sort keys %Pods; + sort grep {!$Copies{"$_.pod"}} grep {!$Generated{"$_.pod"}} keys %Pods; } sub generate_manifest_readme { - generate_manifest map {["README.$_", $Readmes{$_}]} sort keys %Readmes; + generate_manifest sort {$a->[0] cmp $b->[0]} + ["README.vms", "Notes about installing the VMS port"], + map {["README.$_", $Readmes{$_}]} keys %Readmes; } sub generate_roffitall { @@ -549,14 +561,19 @@ sub generate_descrip_mms_1 { } sub generate_descrip_mms_2 { - map {sprintf <<'SNIP', $_, $_ eq 'perlvms' ? 'vms' : 'pod', $_} -[.lib.pods]%s.pod : [.%s]%s.pod - @ If F$Search("[.lib]pods.dir").eqs."" Then Create/Directory [.lib.pods] - Copy/NoConfirm/Log $(MMS$SOURCE) [.lib.pods] + map {<<"SNIP"} +[.lib.pods]$_.pod : [.pod]$_.pod + \@ If F\$Search("[.lib]pods.dir").eqs."" Then Create/Directory [.lib.pods] + Copy/NoConfirm/Log \$(MMS\$SOURCE) [.lib.pods] SNIP sort keys %Pods, keys %Readmepods; } +sub generate_descrip_mms_3 { + map qq{\t- If F\$Search("[.pod]$_").nes."" Then Delete/NoConfirm/Log [.pod]$_;*}, + sort keys %Generated, keys %Copies; +} + sub generate_nmake_1 { # XXX Fix this with File::Spec (map {sprintf "\tcopy ..\\README.%-8s ..\\pod\\perl$_.pod\n", $_} @@ -569,8 +586,8 @@ sub generate_nmake_2 { # Spot the special case local $Text::Wrap::columns = 76; my $line = wrap ("\t ", "\t ", - join " ", sort keys %Copies, - map {"perl$_.pod"} "vms", keys %Readmes); + join " ", sort keys %Copies, keys %Generated, + map {"perl$_.pod"} keys %Readmes); $line =~ s/$/ \\/mg; $line; } @@ -585,6 +602,13 @@ sub generate_pod_mak { $line; } +sub verify_contiguous { + my ($name, $content, $what) = @_; + my $sections = () = $content =~ m/\0+/g; + croak("$0: $name contains no $what") if $sections < 1; + croak("$0: $name contains discontiguous $what") if $sections > 1; +} + sub do_manifest { my $name = shift; my @manifest = @@ -604,9 +628,7 @@ sub do_nmake { my $makefile = join '', @_; die "$0: $name contains NUL bytes" if $makefile =~ /\0/; $makefile =~ s/^\tcopy \.\.\\README.*\n/\0/gm; - my $sections = () = $makefile =~ m/\0+/g; - die "$0: $name contains no README copies" if $sections < 1; - die "$0: $name contains discontiguous README copies" if $sections > 1; + verify_contiguous($name, $makefile, 'README copies'); # Now remove the other copies that follow 1 while $makefile =~ s/\0\tcopy .*\n/\0/gm; $makefile =~ s/\0+/join ("", &generate_nmake_1)/se; @@ -651,10 +673,7 @@ sub do_vms { my $makefile = join '', @_; die "$0: $name contains NUL bytes" if $makefile =~ /\0/; $makefile =~ s/\npod\d* =[^\n]*/\0/gs; - my $sections = () = $makefile =~ m/\0+/g; - die "$0: $name contains no pod assignments" if $sections < 1; - die "$0: $name contains $sections discontigous pod assignments" - if $sections > 1; + verify_contiguous($name, $makefile, 'pod assignments'); $makefile =~ s/\0+/join "\n", '', &generate_descrip_mms_1/se; die "$0: $name contains NUL bytes" if $makefile =~ /\0/; @@ -668,11 +687,15 @@ sub do_vms { [^\n]+\n # Another line [^\n]+\Q[.lib.pods]\E\n # ends [.lib.pods] /\0/gsx; - $sections = () = $makefile =~ m/\0+/g; - die "$0: $name contains no copy rules" if $sections < 1; - die "$0: $name contains $sections discontigous copy rules" - if $sections > 1; + verify_contiguous($name, $makefile, 'copy rules'); $makefile =~ s/\0+/join "\n", '', &generate_descrip_mms_2/se; + +# Looking for rules like this: +# - If F$Search("[.pod]perldelta.pod").nes."" Then Delete/NoConfirm/Log [.pod]perldelta.pod;* + $makefile =~ s!(?:\t- If F\$Search\("\[\.pod\]perl[a-z]+\Q.pod").nes."" Then Delete/NoConfirm/Log [.pod]perl\E[a-z]+\.pod;\*\n)+!\0!sg; + verify_contiguous($name, $makefile, 'delete rules'); + $makefile =~ s/\0+/join "\n", &generate_descrip_mms_3, ''/se; + $makefile; } @@ -681,18 +704,27 @@ sub do_unix { my $makefile_SH = join '', @_; die "$0: $name contains NUL bytes" if $makefile_SH =~ /\0/; - $makefile_SH =~ s/\n\s+-\@test -f \S+ && cd pod && \$\(LNS\) \S+ \S+ && cd \.\. && echo "\S+" >> extra.pods \# See buildtoc\n/\0/gm; + $makefile_SH =~ s{^(perltoc_pod_prereqs = extra.pods).*} + {join ' ', $1, map "pod/$_", + sort keys %Copies, grep {!/perltoc/} keys %Generated + }mge; + +# pod/perldelta.pod: pod/perl511delta.pod +# cd pod && $(LNS) perl511delta.pod perldelta.pod - my $sections = () = $makefile_SH =~ m/\0+/g; + $makefile_SH =~ s!( +pod/perl[a-z0-9_]+\.pod: pod/perl[a-z0-9_]+\.pod + \$\(LNS\) perl[a-z0-9_]+\.pod pod/perl[a-z0-9_]+\.pod +)+!\0!gm; - die "$0: $name contains no copy rules" if $sections < 1; - die "$0: $name contains $sections discontigous copy rules" - if $sections > 1; + verify_contiguous($name, $makefile_SH, 'copy rules'); - my @copy_rules = map "\t-\@test -f pod/$Copies{$_} && cd pod && \$(LNS) $Copies{$_} $_ && cd .. && echo \"pod/$_\" >> extra.pods # See buildtoc", - keys %Copies; + my @copy_rules = map " +pod/$_: pod/$Copies{$_} + \$(LNS) $Copies{$_} pod/$_ +", keys %Copies; - $makefile_SH =~ s/\0+/join "\n", '', @copy_rules, ''/se; + $makefile_SH =~ s/\0+/join '', @copy_rules/se; $makefile_SH; } diff --git a/pod/perl.pod b/pod/perl.pod index 3a10eaa957..7470e99e03 100644 --- a/pod/perl.pod +++ b/pod/perl.pod @@ -13,7 +13,7 @@ B<perl> S<[ B<-sTtuUWX> ]> S<[ B<-S> ]> S<[ B<-x>[I<dir>] ]> S<[ B<-i>[I<extension>] ]> - S<[ B<-e> I<'command'> ] [ B<--> ] [ I<programfile> ] [ I<argument> ]...> + S<[ [B<-e>|B<-E>] I<'command'> ] [ B<--> ] [ I<programfile> ] [ I<argument> ]...> If you're new to Perl, you should start with L<perlintro>, which is a general intro for beginners and provides some background to help you @@ -91,7 +91,6 @@ For ease of access, the Perl manual has been split up into several sections. perlnumber Perl number semantics perlthrtut Perl threads tutorial - perlothrtut Old Perl threads tutorial perlport Perl portability guide perllocale Perl locale support diff --git a/pod/perlapi.pod b/pod/perlapi.pod deleted file mode 100644 index fc51e14034..0000000000 --- a/pod/perlapi.pod +++ /dev/null @@ -1,7382 +0,0 @@ --*- buffer-read-only: t -*- - -!!!!!!! DO NOT EDIT THIS FILE !!!!!!! -This file is built by autodoc.pl extracting documentation from the C source -files. - -=head1 NAME - -perlapi - autogenerated documentation for the perl public API - -=head1 DESCRIPTION -X<Perl API> X<API> X<api> - -This file contains the documentation of the perl public API generated by -embed.pl, specifically a listing of functions, macros, flags, and variables -that may be used by extension writers. The interfaces of any functions that -are not listed here are subject to change without notice. For this reason, -blindly using functions listed in proto.h is to be avoided when writing -extensions. - -Note that all Perl API global variables must be referenced with the C<PL_> -prefix. Some macros are provided for compatibility with the older, -unadorned names, but this support may be disabled in a future release. - -Perl was originally written to handle US-ASCII only (that is characters -whose ordinal numbers are in the range 0 - 127). -And documentation and comments may still use the term ASCII, when -sometimes in fact the entire range from 0 - 255 is meant. - -Note that Perl can be compiled and run under EBCDIC (See L<perlebcdic>) -or ASCII. Most of the documentation (and even comments in the code) -ignore the EBCDIC possibility. -For almost all purposes the differences are transparent. -As an example, under EBCDIC, -instead of UTF-8, UTF-EBCDIC is used to encode Unicode strings, and so -whenever this documentation refers to C<utf8> -(and variants of that name, including in function names), -it also (essentially transparently) means C<UTF-EBCDIC>. -But the ordinals of characters differ between ASCII, EBCDIC, and -the UTF- encodings, and a string encoded in UTF-EBCDIC may occupy more bytes -than in UTF-8. - -Also, on some EBCDIC machines, functions that are documented as operating on -US-ASCII (or Basic Latin in Unicode terminology) may in fact operate on all -256 characters in the EBCDIC range, not just the subset corresponding to -US-ASCII. - -The listing below is alphabetical, case insensitive. - - -=head1 "Gimme" Values - -=over 8 - -=item GIMME -X<GIMME> - -A backward-compatible version of C<GIMME_V> which can only return -C<G_SCALAR> or C<G_ARRAY>; in a void context, it returns C<G_SCALAR>. -Deprecated. Use C<GIMME_V> instead. - - U32 GIMME - -=for hackers -Found in file op.h - -=item GIMME_V -X<GIMME_V> - -The XSUB-writer's equivalent to Perl's C<wantarray>. Returns C<G_VOID>, -C<G_SCALAR> or C<G_ARRAY> for void, scalar or list context, -respectively. - - U32 GIMME_V - -=for hackers -Found in file op.h - -=item G_ARRAY -X<G_ARRAY> - -Used to indicate list context. See C<GIMME_V>, C<GIMME> and -L<perlcall>. - -=for hackers -Found in file cop.h - -=item G_DISCARD -X<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 -X<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 -X<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 -X<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 -X<G_VOID> - -Used to indicate void context. See C<GIMME_V> and L<perlcall>. - -=for hackers -Found in file cop.h - - -=back - -=head1 Array Manipulation Functions - -=over 8 - -=item AvFILL -X<AvFILL> - -Same as C<av_len()>. Deprecated, use C<av_len()> instead. - - int AvFILL(AV* av) - -=for hackers -Found in file av.h - -=item av_clear -X<av_clear> - -Clears an array, making it empty. Does not free the memory used by the -array itself. - - void av_clear(AV *av) - -=for hackers -Found in file av.c - -=item av_create_and_push -X<av_create_and_push> - -Push an SV onto the end of the array, creating the array if necessary. -A small internal helper function to remove a commonly duplicated idiom. - -NOTE: this function is experimental and may change or be -removed without notice. - - void av_create_and_push(AV **const avp, SV *const val) - -=for hackers -Found in file av.c - -=item av_create_and_unshift_one -X<av_create_and_unshift_one> - -Unshifts an SV onto the beginning of the array, creating the array if -necessary. -A small internal helper function to remove a commonly duplicated idiom. - -NOTE: this function is experimental and may change or be -removed without notice. - - SV** av_create_and_unshift_one(AV **const avp, SV *const val) - -=for hackers -Found in file av.c - -=item av_delete -X<av_delete> - -Deletes the element indexed by C<key> from the array. Returns the -deleted element. If C<flags> equals C<G_DISCARD>, the element is freed -and null is returned. - - SV* av_delete(AV *av, I32 key, I32 flags) - -=for hackers -Found in file av.c - -=item av_exists -X<av_exists> - -Returns true if the element indexed by C<key> has been initialized. - -This relies on the fact that uninitialized array elements are set to -C<&PL_sv_undef>. - - bool av_exists(AV *av, I32 key) - -=for hackers -Found in file av.c - -=item av_extend -X<av_extend> - -Pre-extend an array. The C<key> is the index to which the array should be -extended. - - void av_extend(AV *av, I32 key) - -=for hackers -Found in file av.c - -=item av_fetch -X<av_fetch> - -Returns the SV at the specified index in the array. The C<key> is the -index. If C<lval> is set then the fetch will be part of a store. Check -that the return value is non-null before dereferencing it to a C<SV*>. - -See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for -more information on how to use this function on tied arrays. - - SV** av_fetch(AV *av, I32 key, I32 lval) - -=for hackers -Found in file av.c - -=item av_fill -X<av_fill> - -Set the highest index in the array to the given number, equivalent to -Perl's C<$#array = $fill;>. - -The number of elements in the an array will be C<fill + 1> after -av_fill() returns. If the array was previously shorter then the -additional elements appended are set to C<PL_sv_undef>. If the array -was longer, then the excess elements are freed. C<av_fill(av, -1)> is -the same as C<av_clear(av)>. - - void av_fill(AV *av, I32 fill) - -=for hackers -Found in file av.c - -=item av_len -X<av_len> - -Returns the highest index in the array. The number of elements in the -array is C<av_len(av) + 1>. Returns -1 if the array is empty. - - I32 av_len(AV *av) - -=for hackers -Found in file av.c - -=item av_make -X<av_make> - -Creates a new AV and populates it with a list of SVs. The SVs are copied -into the array, so they may be freed after the call to av_make. The new AV -will have a reference count of 1. - - AV* av_make(I32 size, SV **strp) - -=for hackers -Found in file av.c - -=item av_pop -X<av_pop> - -Pops an SV off the end of the array. Returns C<&PL_sv_undef> if the array -is empty. - - SV* av_pop(AV *av) - -=for hackers -Found in file av.c - -=item av_push -X<av_push> - -Pushes an SV onto the end of the array. The array will grow automatically -to accommodate the addition. - - void av_push(AV *av, SV *val) - -=for hackers -Found in file av.c - -=item av_shift -X<av_shift> - -Shifts an SV off the beginning of the array. Returns C<&PL_sv_undef> if the -array is empty. - - SV* av_shift(AV *av) - -=for hackers -Found in file av.c - -=item av_store -X<av_store> - -Stores an SV in an array. The array index is specified as C<key>. The -return value will be NULL if the operation failed or if the value did not -need to be actually stored within the array (as in the case of tied -arrays). Otherwise it can be dereferenced to get the original C<SV*>. Note -that the caller is responsible for suitably incrementing the reference -count of C<val> before the call, and decrementing it if the function -returned NULL. - -See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for -more information on how to use this function on tied arrays. - - SV** av_store(AV *av, I32 key, SV *val) - -=for hackers -Found in file av.c - -=item av_undef -X<av_undef> - -Undefines the array. Frees the memory used by the array itself. - - void av_undef(AV *av) - -=for hackers -Found in file av.c - -=item av_unshift -X<av_unshift> - -Unshift the given number of C<undef> values onto the beginning of the -array. The array will grow automatically to accommodate the addition. You -must then use C<av_store> to assign values to these new elements. - - void av_unshift(AV *av, I32 num) - -=for hackers -Found in file av.c - -=item get_av -X<get_av> - -Returns the AV of the specified Perl array. C<flags> are passed to -C<gv_fetchpv>. If C<GV_ADD> is set and the -Perl variable does not exist then it will be created. If C<flags> is zero -and the variable does not exist then NULL is returned. - -NOTE: the perl_ form of this function is deprecated. - - AV* get_av(const char *name, I32 flags) - -=for hackers -Found in file perl.c - -=item newAV -X<newAV> - -Creates a new AV. The reference count is set to 1. - - AV* newAV() - -=for hackers -Found in file av.h - -=item sortsv -X<sortsv> - -Sort an array. Here is an example: - - sortsv(AvARRAY(av), av_len(av)+1, Perl_sv_cmp_locale); - -Currently this always uses mergesort. See sortsv_flags for a more -flexible routine. - - void sortsv(SV** array, size_t num_elts, SVCOMPARE_t cmp) - -=for hackers -Found in file pp_sort.c - -=item sortsv_flags -X<sortsv_flags> - -Sort an array, with various options. - - void sortsv_flags(SV** array, size_t num_elts, SVCOMPARE_t cmp, U32 flags) - -=for hackers -Found in file pp_sort.c - - -=back - -=head1 Callback Functions - -=over 8 - -=item call_argv -X<call_argv> - -Performs a callback to the specified Perl sub. See L<perlcall>. - -NOTE: the perl_ form of this function is deprecated. - - I32 call_argv(const char* sub_name, I32 flags, char** argv) - -=for hackers -Found in file perl.c - -=item call_method -X<call_method> - -Performs a callback to the specified Perl method. The blessed object must -be on the stack. See L<perlcall>. - -NOTE: the perl_ form of this function is deprecated. - - I32 call_method(const char* methname, I32 flags) - -=for hackers -Found in file perl.c - -=item call_pv -X<call_pv> - -Performs a callback to the specified Perl sub. See L<perlcall>. - -NOTE: the perl_ form of this function is deprecated. - - I32 call_pv(const char* sub_name, I32 flags) - -=for hackers -Found in file perl.c - -=item call_sv -X<call_sv> - -Performs a callback to the Perl sub whose name is in the SV. See -L<perlcall>. - -NOTE: the perl_ form of this function is deprecated. - - I32 call_sv(SV* sv, VOL I32 flags) - -=for hackers -Found in file perl.c - -=item ENTER -X<ENTER> - -Opening bracket on a callback. See C<LEAVE> and L<perlcall>. - - ENTER; - -=for hackers -Found in file scope.h - -=item eval_pv -X<eval_pv> - -Tells Perl to C<eval> the given string and return an SV* result. - -NOTE: the perl_ form of this function is deprecated. - - SV* eval_pv(const char* p, I32 croak_on_error) - -=for hackers -Found in file perl.c - -=item eval_sv -X<eval_sv> - -Tells Perl to C<eval> the string in the SV. - -NOTE: the perl_ form of this function is deprecated. - - I32 eval_sv(SV* sv, I32 flags) - -=for hackers -Found in file perl.c - -=item FREETMPS -X<FREETMPS> - -Closing bracket for temporaries on a callback. See C<SAVETMPS> and -L<perlcall>. - - FREETMPS; - -=for hackers -Found in file scope.h - -=item LEAVE -X<LEAVE> - -Closing bracket on a callback. See C<ENTER> and L<perlcall>. - - LEAVE; - -=for hackers -Found in file scope.h - -=item SAVETMPS -X<SAVETMPS> - -Opening bracket for temporaries on a callback. See C<FREETMPS> and -L<perlcall>. - - SAVETMPS; - -=for hackers -Found in file scope.h - - -=back - -=head1 Character classes - -=over 8 - -=item isALNUM -X<isALNUM> - -Returns a boolean indicating whether the C C<char> is a US-ASCII (Basic Latin) -alphanumeric character (including underscore) or digit. - - bool isALNUM(char ch) - -=for hackers -Found in file handy.h - -=item isALPHA -X<isALPHA> - -Returns a boolean indicating whether the C C<char> is a US-ASCII (Basic Latin) -alphabetic character. - - bool isALPHA(char ch) - -=for hackers -Found in file handy.h - -=item isDIGIT -X<isDIGIT> - -Returns a boolean indicating whether the C C<char> is a US-ASCII (Basic Latin) -digit. - - bool isDIGIT(char ch) - -=for hackers -Found in file handy.h - -=item isLOWER -X<isLOWER> - -Returns a boolean indicating whether the C C<char> is a US-ASCII (Basic Latin) -lowercase character. - - bool isLOWER(char ch) - -=for hackers -Found in file handy.h - -=item isSPACE -X<isSPACE> - -Returns a boolean indicating whether the C C<char> is a US-ASCII (Basic Latin) -whitespace. - - bool isSPACE(char ch) - -=for hackers -Found in file handy.h - -=item isUPPER -X<isUPPER> - -Returns a boolean indicating whether the C C<char> is a US-ASCII (Basic Latin) -uppercase character. - - bool isUPPER(char ch) - -=for hackers -Found in file handy.h - -=item toLOWER -X<toLOWER> - -Converts the specified character to lowercase. Characters outside the -US-ASCII (Basic Latin) range are viewed as not having any case. - - char toLOWER(char ch) - -=for hackers -Found in file handy.h - -=item toUPPER -X<toUPPER> - -Converts the specified character to uppercase. Characters outside the -US-ASCII (Basic Latin) range are viewed as not having any case. - - char toUPPER(char ch) - -=for hackers -Found in file handy.h - - -=back - -=head1 Cloning an interpreter - -=over 8 - -=item perl_clone -X<perl_clone> - -Create and return a new interpreter by cloning the current one. - -perl_clone takes these flags as parameters: - -CLONEf_COPY_STACKS - is used to, well, copy the stacks also, -without it we only clone the data and zero the stacks, -with it we copy the stacks and the new perl interpreter is -ready to run at the exact same point as the previous one. -The pseudo-fork code uses COPY_STACKS while the -threads->create doesn't. - -CLONEf_KEEP_PTR_TABLE -perl_clone keeps a ptr_table with the pointer of the old -variable as a key and the new variable as a value, -this allows it to check if something has been cloned and not -clone it again but rather just use the value and increase the -refcount. If KEEP_PTR_TABLE is not set then perl_clone will kill -the ptr_table using the function -C<ptr_table_free(PL_ptr_table); PL_ptr_table = NULL;>, -reason to keep it around is if you want to dup some of your own -variable who are outside the graph perl scans, example of this -code is in threads.xs create - -CLONEf_CLONE_HOST -This is a win32 thing, it is ignored on unix, it tells perls -win32host code (which is c++) to clone itself, this is needed on -win32 if you want to run two threads at the same time, -if you just want to do some stuff in a separate perl interpreter -and then throw it away and return to the original one, -you don't need to do anything. - - PerlInterpreter* perl_clone(PerlInterpreter *proto_perl, UV flags) - -=for hackers -Found in file sv.c - - -=back - -=head1 CV Manipulation Functions - -=over 8 - -=item CvSTASH -X<CvSTASH> - -Returns the stash of the CV. - - HV* CvSTASH(CV* cv) - -=for hackers -Found in file cv.h - -=item get_cv -X<get_cv> - -Uses C<strlen> to get the length of C<name>, then calls C<get_cvn_flags>. - -NOTE: the perl_ form of this function is deprecated. - - CV* get_cv(const char* name, I32 flags) - -=for hackers -Found in file perl.c - -=item get_cvn_flags -X<get_cvn_flags> - -Returns the CV of the specified Perl subroutine. C<flags> are passed to -C<gv_fetchpvn_flags>. If C<GV_ADD> is set and the Perl subroutine does not -exist then it will be declared (which has the same effect as saying -C<sub name;>). If C<GV_ADD> is not set and the subroutine does not exist -then NULL is returned. - -NOTE: the perl_ form of this function is deprecated. - - CV* get_cvn_flags(const char* name, STRLEN len, I32 flags) - -=for hackers -Found in file perl.c - - -=back - -=head1 Embedding Functions - -=over 8 - -=item cv_undef -X<cv_undef> - -Clear out all the active components of a CV. This can happen either -by an explicit C<undef &foo>, or by the reference count going to zero. -In the former case, we keep the CvOUTSIDE pointer, so that any anonymous -children can still follow the full lexical scope chain. - - void cv_undef(CV* cv) - -=for hackers -Found in file op.c - -=item load_module -X<load_module> - -Loads the module whose name is pointed to by the string part of name. -Note that the actual module name, not its filename, should be given. -Eg, "Foo::Bar" instead of "Foo/Bar.pm". flags can be any of -PERL_LOADMOD_DENY, PERL_LOADMOD_NOIMPORT, or PERL_LOADMOD_IMPORT_OPS -(or 0 for no flags). ver, if specified, provides version semantics -similar to C<use Foo::Bar VERSION>. The optional trailing SV* -arguments can be used to specify arguments to the module's import() -method, similar to C<use Foo::Bar VERSION LIST>. - - void load_module(U32 flags, SV* name, SV* ver, ...) - -=for hackers -Found in file op.c - -=item nothreadhook -X<nothreadhook> - -Stub that provides thread hook for perl_destruct when there are -no threads. - - int nothreadhook() - -=for hackers -Found in file perl.c - -=item perl_alloc -X<perl_alloc> - -Allocates a new Perl interpreter. See L<perlembed>. - - PerlInterpreter* perl_alloc() - -=for hackers -Found in file perl.c - -=item perl_construct -X<perl_construct> - -Initializes a new Perl interpreter. See L<perlembed>. - - void perl_construct(PerlInterpreter *my_perl) - -=for hackers -Found in file perl.c - -=item perl_destruct -X<perl_destruct> - -Shuts down a Perl interpreter. See L<perlembed>. - - int perl_destruct(PerlInterpreter *my_perl) - -=for hackers -Found in file perl.c - -=item perl_free -X<perl_free> - -Releases a Perl interpreter. See L<perlembed>. - - void perl_free(PerlInterpreter *my_perl) - -=for hackers -Found in file perl.c - -=item perl_parse -X<perl_parse> - -Tells a Perl interpreter to parse a Perl script. See L<perlembed>. - - int perl_parse(PerlInterpreter *my_perl, XSINIT_t xsinit, int argc, char** argv, char** env) - -=for hackers -Found in file perl.c - -=item perl_run -X<perl_run> - -Tells a Perl interpreter to run. See L<perlembed>. - - int perl_run(PerlInterpreter *my_perl) - -=for hackers -Found in file perl.c - -=item require_pv -X<require_pv> - -Tells Perl to C<require> the file named by the string argument. It is -analogous to the Perl code C<eval "require '$file'">. It's even -implemented that way; consider using load_module instead. - -NOTE: the perl_ form of this function is deprecated. - - void require_pv(const char* pv) - -=for hackers -Found in file perl.c - - -=back - -=head1 Functions in file dump.c - - -=over 8 - -=item pv_display -X<pv_display> - -Similar to - - pv_escape(dsv,pv,cur,pvlim,PERL_PV_ESCAPE_QUOTE); - -except that an additional "\0" will be appended to the string when -len > cur and pv[cur] is "\0". - -Note that the final string may be up to 7 chars longer than pvlim. - - char* pv_display(SV *dsv, const char *pv, STRLEN cur, STRLEN len, STRLEN pvlim) - -=for hackers -Found in file dump.c - -=item pv_escape -X<pv_escape> - -Escapes at most the first "count" chars of pv and puts the results into -dsv such that the size of the escaped string will not exceed "max" chars -and will not contain any incomplete escape sequences. - -If flags contains PERL_PV_ESCAPE_QUOTE then any double quotes in the string -will also be escaped. - -Normally the SV will be cleared before the escaped string is prepared, -but when PERL_PV_ESCAPE_NOCLEAR is set this will not occur. - -If PERL_PV_ESCAPE_UNI is set then the input string is treated as Unicode, -if PERL_PV_ESCAPE_UNI_DETECT is set then the input string is scanned -using C<is_utf8_string()> to determine if it is Unicode. - -If PERL_PV_ESCAPE_ALL is set then all input chars will be output -using C<\x01F1> style escapes, otherwise only chars above 255 will be -escaped using this style, other non printable chars will use octal or -common escaped patterns like C<\n>. If PERL_PV_ESCAPE_NOBACKSLASH -then all chars below 255 will be treated as printable and -will be output as literals. - -If PERL_PV_ESCAPE_FIRSTCHAR is set then only the first char of the -string will be escaped, regardles of max. If the string is utf8 and -the chars value is >255 then it will be returned as a plain hex -sequence. Thus the output will either be a single char, -an octal escape sequence, a special escape like C<\n> or a 3 or -more digit hex value. - -If PERL_PV_ESCAPE_RE is set then the escape char used will be a '%' and -not a '\\'. This is because regexes very often contain backslashed -sequences, whereas '%' is not a particularly common character in patterns. - -Returns a pointer to the escaped text as held by dsv. - - char* pv_escape(SV *dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags) - -=for hackers -Found in file dump.c - -=item pv_pretty -X<pv_pretty> - -Converts a string into something presentable, handling escaping via -pv_escape() and supporting quoting and ellipses. - -If the PERL_PV_PRETTY_QUOTE flag is set then the result will be -double quoted with any double quotes in the string escaped. Otherwise -if the PERL_PV_PRETTY_LTGT flag is set then the result be wrapped in -angle brackets. - -If the PERL_PV_PRETTY_ELLIPSES flag is set and not all characters in -string were output then an ellipsis C<...> will be appended to the -string. Note that this happens AFTER it has been quoted. - -If start_color is non-null then it will be inserted after the opening -quote (if there is one) but before the escaped text. If end_color -is non-null then it will be inserted after the escaped text but before -any quotes or ellipses. - -Returns a pointer to the prettified text as held by dsv. - - char* pv_pretty(SV *dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags) - -=for hackers -Found in file dump.c - - -=back - -=head1 Functions in file mathoms.c - - -=over 8 - -=item gv_fetchmethod -X<gv_fetchmethod> - -See L<gv_fetchmethod_autoload>. - - GV* gv_fetchmethod(HV* stash, const char* name) - -=for hackers -Found in file mathoms.c - -=item pack_cat -X<pack_cat> - -The engine implementing pack() Perl function. Note: parameters next_in_list and -flags are not used. This call should not be used; use packlist instead. - - void pack_cat(SV *cat, const char *pat, const char *patend, SV **beglist, SV **endlist, SV ***next_in_list, U32 flags) - -=for hackers -Found in file mathoms.c - -=item sv_2pvbyte_nolen -X<sv_2pvbyte_nolen> - -Return a pointer to the byte-encoded representation of the SV. -May cause the SV to be downgraded from UTF-8 as a side-effect. - -Usually accessed via the C<SvPVbyte_nolen> macro. - - char* sv_2pvbyte_nolen(SV* sv) - -=for hackers -Found in file mathoms.c - -=item sv_2pvutf8_nolen -X<sv_2pvutf8_nolen> - -Return a pointer to the UTF-8-encoded representation of the SV. -May cause the SV to be upgraded to UTF-8 as a side-effect. - -Usually accessed via the C<SvPVutf8_nolen> macro. - - char* sv_2pvutf8_nolen(SV* sv) - -=for hackers -Found in file mathoms.c - -=item sv_2pv_nolen -X<sv_2pv_nolen> - -Like C<sv_2pv()>, but doesn't return the length too. You should usually -use the macro wrapper C<SvPV_nolen(sv)> instead. - char* sv_2pv_nolen(SV* sv) - -=for hackers -Found in file mathoms.c - -=item sv_catpvn_mg -X<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 mathoms.c - -=item sv_catsv_mg -X<sv_catsv_mg> - -Like C<sv_catsv>, but also handles 'set' magic. - - void sv_catsv_mg(SV *dsv, SV *ssv) - -=for hackers -Found in file mathoms.c - -=item sv_force_normal -X<sv_force_normal> - -Undo various types of fakery on an SV: if the PV is a shared string, make -a private copy; if we're a ref, stop refing; if we're a glob, downgrade to -an xpvmg. See also C<sv_force_normal_flags>. - - void sv_force_normal(SV *sv) - -=for hackers -Found in file mathoms.c - -=item sv_iv -X<sv_iv> - -A private implementation of the C<SvIVx> macro for compilers which can't -cope with complex macro expressions. Always use the macro instead. - - IV sv_iv(SV* sv) - -=for hackers -Found in file mathoms.c - -=item sv_nolocking -X<sv_nolocking> - -Dummy routine which "locks" an SV when there is no locking module present. -Exists to avoid test for a NULL function pointer and because it could -potentially warn under some level of strict-ness. - -"Superseded" by sv_nosharing(). - - void sv_nolocking(SV *sv) - -=for hackers -Found in file mathoms.c - -=item sv_nounlocking -X<sv_nounlocking> - -Dummy routine which "unlocks" an SV when there is no locking module present. -Exists to avoid test for a NULL function pointer and because it could -potentially warn under some level of strict-ness. - -"Superseded" by sv_nosharing(). - - void sv_nounlocking(SV *sv) - -=for hackers -Found in file mathoms.c - -=item sv_nv -X<sv_nv> - -A private implementation of the C<SvNVx> macro for compilers which can't -cope with complex macro expressions. Always use the macro instead. - - NV sv_nv(SV* sv) - -=for hackers -Found in file mathoms.c - -=item sv_pv -X<sv_pv> - -Use the C<SvPV_nolen> macro instead - - char* sv_pv(SV *sv) - -=for hackers -Found in file mathoms.c - -=item sv_pvbyte -X<sv_pvbyte> - -Use C<SvPVbyte_nolen> instead. - - char* sv_pvbyte(SV *sv) - -=for hackers -Found in file mathoms.c - -=item sv_pvbyten -X<sv_pvbyten> - -A private implementation of the C<SvPVbyte> macro for compilers -which can't cope with complex macro expressions. Always use the macro -instead. - - char* sv_pvbyten(SV *sv, STRLEN *lp) - -=for hackers -Found in file mathoms.c - -=item sv_pvn -X<sv_pvn> - -A private implementation of the C<SvPV> macro for compilers which can't -cope with complex macro expressions. Always use the macro instead. - - char* sv_pvn(SV *sv, STRLEN *lp) - -=for hackers -Found in file mathoms.c - -=item sv_pvutf8 -X<sv_pvutf8> - -Use the C<SvPVutf8_nolen> macro instead - - char* sv_pvutf8(SV *sv) - -=for hackers -Found in file mathoms.c - -=item sv_pvutf8n -X<sv_pvutf8n> - -A private implementation of the C<SvPVutf8> macro for compilers -which can't cope with complex macro expressions. Always use the macro -instead. - - char* sv_pvutf8n(SV *sv, STRLEN *lp) - -=for hackers -Found in file mathoms.c - -=item sv_taint -X<sv_taint> - -Taint an SV. Use C<SvTAINTED_on> instead. - void sv_taint(SV* sv) - -=for hackers -Found in file mathoms.c - -=item sv_unref -X<sv_unref> - -Unsets the RV status of the SV, and decrements the reference count of -whatever was being referenced by the RV. This can almost be thought of -as a reversal of C<newSVrv>. This is C<sv_unref_flags> with the C<flag> -being zero. See C<SvROK_off>. - - void sv_unref(SV* sv) - -=for hackers -Found in file mathoms.c - -=item sv_usepvn -X<sv_usepvn> - -Tells an SV to use C<ptr> to find its string value. Implemented by -calling C<sv_usepvn_flags> with C<flags> of 0, hence does not handle 'set' -magic. See C<sv_usepvn_flags>. - - void sv_usepvn(SV* sv, char* ptr, STRLEN len) - -=for hackers -Found in file mathoms.c - -=item sv_usepvn_mg -X<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 mathoms.c - -=item sv_uv -X<sv_uv> - -A private implementation of the C<SvUVx> macro for compilers which can't -cope with complex macro expressions. Always use the macro instead. - - UV sv_uv(SV* sv) - -=for hackers -Found in file mathoms.c - -=item unpack_str -X<unpack_str> - -The engine implementing unpack() Perl function. Note: parameters strbeg, new_s -and ocnt are not used. This call should not be used, use unpackstring instead. - - I32 unpack_str(const char *pat, const char *patend, const char *s, const char *strbeg, const char *strend, char **new_s, I32 ocnt, U32 flags) - -=for hackers -Found in file mathoms.c - - -=back - -=head1 Functions in file pp_ctl.c - - -=over 8 - -=item find_runcv -X<find_runcv> - -Locate the CV corresponding to the currently executing sub or eval. -If db_seqp is non_null, skip CVs that are in the DB package and populate -*db_seqp with the cop sequence number at the point that the DB:: code was -entered. (allows debuggers to eval in the scope of the breakpoint rather -than in the scope of the debugger itself). - - CV* find_runcv(U32 *db_seqp) - -=for hackers -Found in file pp_ctl.c - - -=back - -=head1 Functions in file pp_pack.c - - -=over 8 - -=item packlist -X<packlist> - -The engine implementing pack() Perl function. - - void packlist(SV *cat, const char *pat, const char *patend, SV **beglist, SV **endlist) - -=for hackers -Found in file pp_pack.c - -=item unpackstring -X<unpackstring> - -The engine implementing unpack() Perl function. C<unpackstring> puts the -extracted list items on the stack and returns the number of elements. -Issue C<PUTBACK> before and C<SPAGAIN> after the call to this function. - - I32 unpackstring(const char *pat, const char *patend, const char *s, const char *strend, U32 flags) - -=for hackers -Found in file pp_pack.c - - -=back - -=head1 Functions in file pp_sys.c - - -=over 8 - -=item setdefout -X<setdefout> - -Sets PL_defoutgv, the default file handle for output, to the passed in -typeglob. As PL_defoutgv "owns" a reference on its typeglob, the reference -count of the passed in typeglob is increased by one, and the reference count -of the typeglob that PL_defoutgv points to is decreased by one. - - void setdefout(GV* gv) - -=for hackers -Found in file pp_sys.c - - -=back - -=head1 GV Functions - -=over 8 - -=item GvSV -X<GvSV> - -Return the SV from the GV. - - SV* GvSV(GV* gv) - -=for hackers -Found in file gv.h - -=item gv_const_sv -X<gv_const_sv> - -If C<gv> is a typeglob whose subroutine entry is a constant sub eligible for -inlining, or C<gv> is a placeholder reference that would be promoted to such -a typeglob, then returns the value returned by the sub. Otherwise, returns -NULL. - - SV* gv_const_sv(GV* gv) - -=for hackers -Found in file gv.c - -=item gv_fetchmeth -X<gv_fetchmeth> - -Returns the glob with the given C<name> and a defined subroutine or -C<NULL>. The glob lives in the given C<stash>, or in the stashes -accessible via @ISA and UNIVERSAL::. - -The argument C<level> should be either 0 or -1. If C<level==0>, as a -side-effect creates a glob with the given C<name> in the given C<stash> -which in the case of success contains an alias for the subroutine, and sets -up caching info for this glob. - -This function grants C<"SUPER"> token as a postfix of the stash name. The -GV returned from C<gv_fetchmeth> may be a method cache entry, which is not -visible to Perl code. So when calling C<call_sv>, you should not use -the GV directly; instead, you should use the method's CV, which can be -obtained from the GV with the C<GvCV> macro. - - GV* gv_fetchmeth(HV* stash, const char* name, STRLEN len, I32 level) - -=for hackers -Found in file gv.c - -=item gv_fetchmethod_autoload -X<gv_fetchmethod_autoload> - -Returns the glob which contains the subroutine to call to invoke the method -on the C<stash>. In fact in the presence of autoloading this may be the -glob for "AUTOLOAD". In this case the corresponding variable $AUTOLOAD is -already setup. - -The third parameter of C<gv_fetchmethod_autoload> determines whether -AUTOLOAD lookup is performed if the given method is not present: non-zero -means yes, look for AUTOLOAD; zero means no, don't look for AUTOLOAD. -Calling C<gv_fetchmethod> is equivalent to calling C<gv_fetchmethod_autoload> -with a non-zero C<autoload> parameter. - -These functions grant C<"SUPER"> token as a prefix of the method name. Note -that if you want to keep the returned glob for a long time, you need to -check for it being "AUTOLOAD", since at the later time the call may load a -different subroutine due to $AUTOLOAD changing its value. Use the glob -created via a side effect to do this. - -These functions have the same side-effects and as C<gv_fetchmeth> with -C<level==0>. C<name> should be writable if contains C<':'> or C<' -''>. The warning against passing the GV returned by C<gv_fetchmeth> to -C<call_sv> apply equally to these functions. - - GV* gv_fetchmethod_autoload(HV* stash, const char* name, I32 autoload) - -=for hackers -Found in file gv.c - -=item gv_fetchmeth_autoload -X<gv_fetchmeth_autoload> - -Same as gv_fetchmeth(), but looks for autoloaded subroutines too. -Returns a glob for the subroutine. - -For an autoloaded subroutine without a GV, will create a GV even -if C<level < 0>. For an autoloaded subroutine without a stub, GvCV() -of the result may be zero. - - GV* gv_fetchmeth_autoload(HV* stash, const char* name, STRLEN len, I32 level) - -=for hackers -Found in file gv.c - -=item gv_stashpv -X<gv_stashpv> - -Returns a pointer to the stash for a specified package. Uses C<strlen> to -determine the length of C<name>, then calls C<gv_stashpvn()>. - - HV* gv_stashpv(const char* name, I32 flags) - -=for hackers -Found in file gv.c - -=item gv_stashpvn -X<gv_stashpvn> - -Returns a pointer to the stash for a specified package. The C<namelen> -parameter indicates the length of the C<name>, in bytes. C<flags> is passed -to C<gv_fetchpvn_flags()>, so if set to C<GV_ADD> then the package will be -created if it does not already exist. If the package does not exist and -C<flags> is 0 (or any other setting that does not create packages) then NULL -is returned. - - - HV* gv_stashpvn(const char* name, U32 namelen, I32 flags) - -=for hackers -Found in file gv.c - -=item gv_stashpvs -X<gv_stashpvs> - -Like C<gv_stashpvn>, but takes a literal string instead of a string/length pair. - - HV* gv_stashpvs(const char* name, I32 create) - -=for hackers -Found in file handy.h - -=item gv_stashsv -X<gv_stashsv> - -Returns a pointer to the stash for a specified package. See C<gv_stashpvn>. - - HV* gv_stashsv(SV* sv, I32 flags) - -=for hackers -Found in file gv.c - - -=back - -=head1 Handy Values - -=over 8 - -=item Nullav -X<Nullav> - -Null AV pointer. - -(deprecated - use C<(AV *)NULL> instead) - -=for hackers -Found in file av.h - -=item Nullch -X<Nullch> - -Null character pointer. (No longer available when C<PERL_CORE> is defined.) - -=for hackers -Found in file handy.h - -=item Nullcv -X<Nullcv> - -Null CV pointer. - -(deprecated - use C<(CV *)NULL> instead) - -=for hackers -Found in file cv.h - -=item Nullhv -X<Nullhv> - -Null HV pointer. - -(deprecated - use C<(HV *)NULL> instead) - -=for hackers -Found in file hv.h - -=item Nullsv -X<Nullsv> - -Null SV pointer. (No longer available when C<PERL_CORE> is defined.) - -=for hackers -Found in file handy.h - - -=back - -=head1 Hash Manipulation Functions - -=over 8 - -=item get_hv -X<get_hv> - -Returns the HV of the specified Perl hash. C<flags> are passed to -C<gv_fetchpv>. If C<GV_ADD> is set and the -Perl variable does not exist then it will be created. If C<flags> is zero -and the variable does not exist then NULL is returned. - -NOTE: the perl_ form of this function is deprecated. - - HV* get_hv(const char *name, I32 flags) - -=for hackers -Found in file perl.c - -=item HEf_SVKEY -X<HEf_SVKEY> - -This flag, used in the length slot of hash entries and magic structures, -specifies the structure contains an 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 -X<HeHASH> - -Returns the computed hash stored in the hash entry. - - U32 HeHASH(HE* he) - -=for hackers -Found in file hv.h - -=item HeKEY -X<HeKEY> - -Returns the actual pointer stored in the key slot of the hash entry. The -pointer may be either C<char*> or C<SV*>, depending on the value of -C<HeKLEN()>. Can be assigned to. The C<HePV()> or C<HeSVKEY()> macros are -usually preferable for finding the value of a key. - - void* HeKEY(HE* he) - -=for hackers -Found in file hv.h - -=item HeKLEN -X<HeKLEN> - -If this is negative, and amounts to C<HEf_SVKEY>, it indicates the entry -holds an C<SV*> key. Otherwise, holds the actual length of the key. Can -be assigned to. The C<HePV()> macro is usually preferable for finding key -lengths. - - STRLEN HeKLEN(HE* he) - -=for hackers -Found in file hv.h - -=item HePV -X<HePV> - -Returns the key slot of the hash entry as a C<char*> value, doing any -necessary dereferencing of possibly C<SV*> keys. The length of the string -is placed in C<len> (this is a macro, so do I<not> use C<&len>). If you do -not care about what the length of the key is, you may use the global -variable C<PL_na>, though this is rather less efficient than using a local -variable. Remember though, that hash keys in perl are free to contain -embedded nulls, so using C<strlen()> or similar is not a good way to find -the length of hash keys. This is very similar to the C<SvPV()> macro -described elsewhere in this document. See also C<HeUTF8>. - -If you are using C<HePV> to get values to pass to C<newSVpvn()> to create a -new SV, you should consider using C<newSVhek(HeKEY_hek(he))> as it is more -efficient. - - char* HePV(HE* he, STRLEN len) - -=for hackers -Found in file hv.h - -=item HeSVKEY -X<HeSVKEY> - -Returns the key as an C<SV*>, or C<NULL> if the hash entry does not -contain an C<SV*> key. - - SV* HeSVKEY(HE* he) - -=for hackers -Found in file hv.h - -=item HeSVKEY_force -X<HeSVKEY_force> - -Returns the key as an C<SV*>. Will create and return a temporary mortal -C<SV*> if the hash entry contains only a C<char*> key. - - SV* HeSVKEY_force(HE* he) - -=for hackers -Found in file hv.h - -=item HeSVKEY_set -X<HeSVKEY_set> - -Sets the key to a given C<SV*>, taking care to set the appropriate flags to -indicate the presence of an C<SV*> key, and returns the same -C<SV*>. - - SV* HeSVKEY_set(HE* he, SV* sv) - -=for hackers -Found in file hv.h - -=item HeUTF8 -X<HeUTF8> - -Returns whether the C<char *> value returned by C<HePV> is encoded in UTF-8, -doing any necessary dereferencing of possibly C<SV*> keys. The value returned -will be 0 or non-0, not necessarily 1 (or even a value with any low bits set), -so B<do not> blindly assign this to a C<bool> variable, as C<bool> may be a -typedef for C<char>. - - char* HeUTF8(HE* he, STRLEN len) - -=for hackers -Found in file hv.h - -=item HeVAL -X<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 -X<HvNAME> - -Returns the package name of a stash, or NULL if C<stash> isn't a stash. -See C<SvSTASH>, C<CvSTASH>. - - char* HvNAME(HV* stash) - -=for hackers -Found in file hv.h - -=item hv_assert -X<hv_assert> - -Check that a hash is in an internally consistent state. - - void hv_assert(HV *hv) - -=for hackers -Found in file hv.c - -=item hv_clear -X<hv_clear> - -Clears a hash, making it empty. - - void hv_clear(HV *hv) - -=for hackers -Found in file hv.c - -=item hv_clear_placeholders -X<hv_clear_placeholders> - -Clears any placeholders from a hash. If a restricted hash has any of its keys -marked as readonly and the key is subsequently deleted, the key is not actually -deleted but is marked by assigning it a value of &PL_sv_placeholder. This tags -it so it will be ignored by future operations such as iterating over the hash, -but will still allow the hash to have a value reassigned to the key at some -future point. This function clears any such placeholder keys from the hash. -See Hash::Util::lock_keys() for an example of its use. - - void hv_clear_placeholders(HV *hv) - -=for hackers -Found in file hv.c - -=item hv_delete -X<hv_delete> - -Deletes a key/value pair in the hash. The value SV is removed from the -hash and returned to the caller. The C<klen> is the length of the key. -The C<flags> value will normally be zero; if set to G_DISCARD then NULL -will be returned. - - SV* hv_delete(HV *hv, const char *key, I32 klen, I32 flags) - -=for hackers -Found in file hv.c - -=item hv_delete_ent -X<hv_delete_ent> - -Deletes a key/value pair in the hash. The value SV is removed from the -hash and returned to the caller. The C<flags> value will normally be zero; -if set to G_DISCARD then NULL will be returned. C<hash> can be a valid -precomputed hash value, or 0 to ask for it to be computed. - - SV* hv_delete_ent(HV *hv, SV *keysv, I32 flags, U32 hash) - -=for hackers -Found in file hv.c - -=item hv_exists -X<hv_exists> - -Returns a boolean indicating whether the specified hash key exists. The -C<klen> is the length of the key. - - bool hv_exists(HV *hv, const char *key, I32 klen) - -=for hackers -Found in file hv.c - -=item hv_exists_ent -X<hv_exists_ent> - -Returns a boolean indicating whether the specified hash key exists. C<hash> -can be a valid precomputed hash value, or 0 to ask for it to be -computed. - - bool hv_exists_ent(HV *hv, SV *keysv, U32 hash) - -=for hackers -Found in file hv.c - -=item hv_fetch -X<hv_fetch> - -Returns the SV which corresponds to the specified key in the hash. The -C<klen> is the length of the key. If C<lval> is set then the fetch will be -part of a store. Check that the return value is non-null before -dereferencing it to an C<SV*>. - -See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for more -information on how to use this function on tied hashes. - - SV** hv_fetch(HV *hv, const char *key, I32 klen, I32 lval) - -=for hackers -Found in file hv.c - -=item hv_fetchs -X<hv_fetchs> - -Like C<hv_fetch>, but takes a literal string instead of a string/length pair. - - SV** hv_fetchs(HV* tb, const char* key, I32 lval) - -=for hackers -Found in file handy.h - -=item hv_fetch_ent -X<hv_fetch_ent> - -Returns the hash entry which corresponds to the specified key in the hash. -C<hash> must be a valid precomputed hash number for the given C<key>, or 0 -if you want the function to compute it. IF C<lval> is set then the fetch -will be part of a store. Make sure the return value is non-null before -accessing it. The return value when C<tb> is a tied hash is a pointer to a -static location, so be sure to make a copy of the structure if you need to -store it somewhere. - -See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for more -information on how to use this function on tied hashes. - - HE* hv_fetch_ent(HV *hv, SV *keysv, I32 lval, U32 hash) - -=for hackers -Found in file hv.c - -=item hv_iterinit -X<hv_iterinit> - -Prepares a starting point to traverse a hash table. Returns the number of -keys in the hash (i.e. the same as C<HvKEYS(tb)>). The return value is -currently only meaningful for hashes without tie magic. - -NOTE: Before version 5.004_65, C<hv_iterinit> used to return the number of -hash buckets that happen to be in use. If you still need that esoteric -value, you can get it through the macro C<HvFILL(tb)>. - - - I32 hv_iterinit(HV *hv) - -=for hackers -Found in file hv.c - -=item hv_iterkey -X<hv_iterkey> - -Returns the key from the current position of the hash iterator. See -C<hv_iterinit>. - - char* hv_iterkey(HE* entry, I32* retlen) - -=for hackers -Found in file hv.c - -=item hv_iterkeysv -X<hv_iterkeysv> - -Returns the key as an C<SV*> from the current position of the hash -iterator. The return value will always be a mortal copy of the key. Also -see C<hv_iterinit>. - - SV* hv_iterkeysv(HE* entry) - -=for hackers -Found in file hv.c - -=item hv_iternext -X<hv_iternext> - -Returns entries from a hash iterator. See C<hv_iterinit>. - -You may call C<hv_delete> or C<hv_delete_ent> on the hash entry that the -iterator currently points to, without losing your place or invalidating your -iterator. Note that in this case the current entry is deleted from the hash -with your iterator holding the last reference to it. Your iterator is flagged -to free the entry on the next call to C<hv_iternext>, so you must not discard -your iterator immediately else the entry will leak - call C<hv_iternext> to -trigger the resource deallocation. - - HE* hv_iternext(HV *hv) - -=for hackers -Found in file hv.c - -=item hv_iternextsv -X<hv_iternextsv> - -Performs an C<hv_iternext>, C<hv_iterkey>, and C<hv_iterval> in one -operation. - - SV* hv_iternextsv(HV *hv, char **key, I32 *retlen) - -=for hackers -Found in file hv.c - -=item hv_iternext_flags -X<hv_iternext_flags> - -Returns entries from a hash iterator. See C<hv_iterinit> and C<hv_iternext>. -The C<flags> value will normally be zero; if HV_ITERNEXT_WANTPLACEHOLDERS is -set the placeholders keys (for restricted hashes) will be returned in addition -to normal keys. By default placeholders are automatically skipped over. -Currently a placeholder is implemented with a value that is -C<&Perl_sv_placeholder>. Note that the implementation of placeholders and -restricted hashes may change, and the implementation currently is -insufficiently abstracted for any change to be tidy. - -NOTE: this function is experimental and may change or be -removed without notice. - - HE* hv_iternext_flags(HV *hv, I32 flags) - -=for hackers -Found in file hv.c - -=item hv_iterval -X<hv_iterval> - -Returns the value from the current position of the hash iterator. See -C<hv_iterkey>. - - SV* hv_iterval(HV *hv, HE *entry) - -=for hackers -Found in file hv.c - -=item hv_magic -X<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_scalar -X<hv_scalar> - -Evaluates the hash in scalar context and returns the result. Handles magic when the hash is tied. - - SV* hv_scalar(HV *hv) - -=for hackers -Found in file hv.c - -=item hv_store -X<hv_store> - -Stores an SV in a hash. The hash key is specified as C<key> and C<klen> is -the length of the key. The C<hash> parameter is the precomputed hash -value; if it is zero then Perl will compute it. The return value will be -NULL if the operation failed or if the value did not need to be actually -stored within the hash (as in the case of tied hashes). Otherwise it can -be dereferenced to get the original C<SV*>. Note that the caller is -responsible for suitably incrementing the reference count of C<val> before -the call, and decrementing it if the function returned NULL. Effectively -a successful hv_store takes ownership of one reference to C<val>. This is -usually what you want; a newly created SV has a reference count of one, so -if all your code does is create SVs then store them in a hash, hv_store -will own the only reference to the new SV, and your code doesn't need to do -anything further to tidy up. hv_store is not implemented as a call to -hv_store_ent, and does not create a temporary SV for the key, so if your -key data is not already in SV form then use hv_store in preference to -hv_store_ent. - -See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for more -information on how to use this function on tied hashes. - - SV** hv_store(HV *hv, const char *key, I32 klen, SV *val, U32 hash) - -=for hackers -Found in file hv.c - -=item hv_stores -X<hv_stores> - -Like C<hv_store>, but takes a literal string instead of a string/length pair -and omits the hash parameter. - - SV** hv_stores(HV* tb, const char* key, NULLOK SV* val) - -=for hackers -Found in file handy.h - -=item hv_store_ent -X<hv_store_ent> - -Stores C<val> in a hash. The hash key is specified as C<key>. The C<hash> -parameter is the precomputed hash value; if it is zero then Perl will -compute it. The return value is the new hash entry so created. It will be -NULL if the operation failed or if the value did not need to be actually -stored within the hash (as in the case of tied hashes). Otherwise the -contents of the return value can be accessed using the C<He?> macros -described here. Note that the caller is responsible for suitably -incrementing the reference count of C<val> before the call, and -decrementing it if the function returned NULL. Effectively a successful -hv_store_ent takes ownership of one reference to C<val>. This is -usually what you want; a newly created SV has a reference count of one, so -if all your code does is create SVs then store them in a hash, hv_store -will own the only reference to the new SV, and your code doesn't need to do -anything further to tidy up. Note that hv_store_ent only reads the C<key>; -unlike C<val> it does not take ownership of it, so maintaining the correct -reference count on C<key> is entirely the caller's responsibility. hv_store -is not implemented as a call to hv_store_ent, and does not create a temporary -SV for the key, so if your key data is not already in SV form then use -hv_store in preference to hv_store_ent. - -See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for more -information on how to use this function on tied hashes. - - HE* hv_store_ent(HV *hv, SV *key, SV *val, U32 hash) - -=for hackers -Found in file hv.c - -=item hv_undef -X<hv_undef> - -Undefines the hash. - - void hv_undef(HV *hv) - -=for hackers -Found in file hv.c - -=item newHV -X<newHV> - -Creates a new HV. The reference count is set to 1. - - HV* newHV() - -=for hackers -Found in file hv.h - - -=back - -=head1 Magical Functions - -=over 8 - -=item mg_clear -X<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 -X<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 -X<mg_find> - -Finds the magic pointer for type matching the SV. See C<sv_magic>. - - MAGIC* mg_find(const SV* sv, int type) - -=for hackers -Found in file mg.c - -=item mg_free -X<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 -X<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 -X<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 -X<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 -X<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 SvGETMAGIC -X<SvGETMAGIC> - -Invokes C<mg_get> on an SV if it has 'get' magic. This macro evaluates its -argument more than once. - - void SvGETMAGIC(SV* sv) - -=for hackers -Found in file sv.h - -=item SvLOCK -X<SvLOCK> - -Arranges for a mutual exclusion lock to be obtained on sv if a suitable module -has been loaded. - - void SvLOCK(SV* sv) - -=for hackers -Found in file sv.h - -=item SvSETMAGIC -X<SvSETMAGIC> - -Invokes C<mg_set> on an SV if it has 'set' magic. This macro evaluates its -argument more than once. - - void SvSETMAGIC(SV* sv) - -=for hackers -Found in file sv.h - -=item SvSetMagicSV -X<SvSetMagicSV> - -Like C<SvSetSV>, but does any set magic required afterwards. - - void SvSetMagicSV(SV* dsb, SV* ssv) - -=for hackers -Found in file sv.h - -=item SvSetMagicSV_nosteal -X<SvSetMagicSV_nosteal> - -Like C<SvSetSV_nosteal>, but does any set magic required afterwards. - - void SvSetMagicSV_nosteal(SV* dsv, SV* ssv) - -=for hackers -Found in file sv.h - -=item SvSetSV -X<SvSetSV> - -Calls C<sv_setsv> if dsv is not the same as ssv. May evaluate arguments -more than once. - - void SvSetSV(SV* dsb, SV* ssv) - -=for hackers -Found in file sv.h - -=item SvSetSV_nosteal -X<SvSetSV_nosteal> - -Calls a non-destructive version of C<sv_setsv> if dsv is not the same as -ssv. May evaluate arguments more than once. - - void SvSetSV_nosteal(SV* dsv, SV* ssv) - -=for hackers -Found in file sv.h - -=item SvSHARE -X<SvSHARE> - -Arranges for sv to be shared between threads if a suitable module -has been loaded. - - void SvSHARE(SV* sv) - -=for hackers -Found in file sv.h - -=item SvUNLOCK -X<SvUNLOCK> - -Releases a mutual exclusion lock on sv if a suitable module -has been loaded. - - void SvUNLOCK(SV* sv) - -=for hackers -Found in file sv.h - - -=back - -=head1 Memory Management - -=over 8 - -=item Copy -X<Copy> - -The XSUB-writer's interface to the C C<memcpy> function. The C<src> is the -source, C<dest> is the destination, C<nitems> is the number of items, and C<type> is -the type. May fail on overlapping copies. See also C<Move>. - - void Copy(void* src, void* dest, int nitems, type) - -=for hackers -Found in file handy.h - -=item CopyD -X<CopyD> - -Like C<Copy> but returns dest. Useful for encouraging compilers to tail-call -optimise. - - void * CopyD(void* src, void* dest, int nitems, type) - -=for hackers -Found in file handy.h - -=item Move -X<Move> - -The XSUB-writer's interface to the C C<memmove> function. The C<src> is the -source, C<dest> is the destination, C<nitems> is the number of items, and C<type> is -the type. Can do overlapping moves. See also C<Copy>. - - void Move(void* src, void* dest, int nitems, type) - -=for hackers -Found in file handy.h - -=item MoveD -X<MoveD> - -Like C<Move> but returns dest. Useful for encouraging compilers to tail-call -optimise. - - void * MoveD(void* src, void* dest, int nitems, type) - -=for hackers -Found in file handy.h - -=item Newx -X<Newx> - -The XSUB-writer's interface to the C C<malloc> function. - -In 5.9.3, Newx() and friends replace the older New() API, and drops -the first parameter, I<x>, a debug aid which allowed callers to identify -themselves. This aid has been superseded by a new build option, -PERL_MEM_LOG (see L<perlhack/PERL_MEM_LOG>). The older API is still -there for use in XS modules supporting older perls. - - void Newx(void* ptr, int nitems, type) - -=for hackers -Found in file handy.h - -=item Newxc -X<Newxc> - -The XSUB-writer's interface to the C C<malloc> function, with -cast. See also C<Newx>. - - void Newxc(void* ptr, int nitems, type, cast) - -=for hackers -Found in file handy.h - -=item Newxz -X<Newxz> - -The XSUB-writer's interface to the C C<malloc> function. The allocated -memory is zeroed with C<memzero>. See also C<Newx>. - - void Newxz(void* ptr, int nitems, type) - -=for hackers -Found in file handy.h - -=item Poison -X<Poison> - -PoisonWith(0xEF) for catching access to freed memory. - - void Poison(void* dest, int nitems, type) - -=for hackers -Found in file handy.h - -=item PoisonFree -X<PoisonFree> - -PoisonWith(0xEF) for catching access to freed memory. - - void PoisonFree(void* dest, int nitems, type) - -=for hackers -Found in file handy.h - -=item PoisonNew -X<PoisonNew> - -PoisonWith(0xAB) for catching access to allocated but uninitialized memory. - - void PoisonNew(void* dest, int nitems, type) - -=for hackers -Found in file handy.h - -=item PoisonWith -X<PoisonWith> - -Fill up memory with a byte pattern (a byte repeated over and over -again) that hopefully catches attempts to access uninitialized memory. - - void PoisonWith(void* dest, int nitems, type, U8 byte) - -=for hackers -Found in file handy.h - -=item Renew -X<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 -X<Renewc> - -The XSUB-writer's interface to the C C<realloc> function, with -cast. - - void Renewc(void* ptr, int nitems, type, cast) - -=for hackers -Found in file handy.h - -=item Safefree -X<Safefree> - -The XSUB-writer's interface to the C C<free> function. - - void Safefree(void* ptr) - -=for hackers -Found in file handy.h - -=item savepv -X<savepv> - -Perl's version of C<strdup()>. Returns a pointer to a newly allocated -string which is a duplicate of C<pv>. The size of the string is -determined by C<strlen()>. The memory allocated for the new string can -be freed with the C<Safefree()> function. - - char* savepv(const char* pv) - -=for hackers -Found in file util.c - -=item savepvn -X<savepvn> - -Perl's version of what C<strndup()> would be if it existed. Returns a -pointer to a newly allocated string which is a duplicate of the first -C<len> bytes from C<pv>, plus a trailing NUL byte. The memory allocated for -the new string can be freed with the C<Safefree()> function. - - char* savepvn(const char* pv, I32 len) - -=for hackers -Found in file util.c - -=item savepvs -X<savepvs> - -Like C<savepvn>, but takes a literal string instead of a string/length pair. - - char* savepvs(const char* s) - -=for hackers -Found in file handy.h - -=item savesharedpv -X<savesharedpv> - -A version of C<savepv()> which allocates the duplicate string in memory -which is shared between threads. - - char* savesharedpv(const char* pv) - -=for hackers -Found in file util.c - -=item savesharedpvn -X<savesharedpvn> - -A version of C<savepvn()> which allocates the duplicate string in memory -which is shared between threads. (With the specific difference that a NULL -pointer is not acceptable) - - char* savesharedpvn(const char *const pv, const STRLEN len) - -=for hackers -Found in file util.c - -=item savesvpv -X<savesvpv> - -A version of C<savepv()>/C<savepvn()> which gets the string to duplicate from -the passed in SV using C<SvPV()> - - char* savesvpv(SV* sv) - -=for hackers -Found in file util.c - -=item StructCopy -X<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 Zero -X<Zero> - -The XSUB-writer's interface to the C C<memzero> function. The C<dest> is the -destination, C<nitems> is the number of items, and C<type> is the type. - - void Zero(void* dest, int nitems, type) - -=for hackers -Found in file handy.h - -=item ZeroD -X<ZeroD> - -Like C<Zero> but returns dest. Useful for encouraging compilers to tail-call -optimise. - - void * ZeroD(void* dest, int nitems, type) - -=for hackers -Found in file handy.h - - -=back - -=head1 Miscellaneous Functions - -=over 8 - -=item fbm_compile -X<fbm_compile> - -Analyses the string in order to make fast searches on it using fbm_instr() --- the Boyer-Moore algorithm. - - void fbm_compile(SV* sv, U32 flags) - -=for hackers -Found in file util.c - -=item fbm_instr -X<fbm_instr> - -Returns the location of the SV in the string delimited by C<str> and -C<strend>. It returns C<NULL> if the string can't be found. The C<sv> -does not have to be fbm_compiled, but the search will not be as fast -then. - - char* fbm_instr(unsigned char* big, unsigned char* bigend, SV* littlestr, U32 flags) - -=for hackers -Found in file util.c - -=item form -X<form> - -Takes a sprintf-style format pattern and conventional -(non-SV) arguments and returns the formatted string. - - (char *) Perl_form(pTHX_ const char* pat, ...) - -can be used any place a string (char *) is required: - - char * s = Perl_form("%d.%d",major,minor); - -Uses a single private buffer so if you want to format several strings you -must explicitly copy the earlier strings away (and free the copies when you -are done). - - char* form(const char* pat, ...) - -=for hackers -Found in file util.c - -=item getcwd_sv -X<getcwd_sv> - -Fill the sv with current working directory - - int getcwd_sv(SV* sv) - -=for hackers -Found in file util.c - -=item my_snprintf -X<my_snprintf> - -The C library C<snprintf> functionality, if available and -standards-compliant (uses C<vsnprintf>, actually). However, if the -C<vsnprintf> is not available, will unfortunately use the unsafe -C<vsprintf> which can overrun the buffer (there is an overrun check, -but that may be too late). Consider using C<sv_vcatpvf> instead, or -getting C<vsnprintf>. - - int my_snprintf(char *buffer, const Size_t len, const char *format, ...) - -=for hackers -Found in file util.c - -=item my_sprintf -X<my_sprintf> - -The C library C<sprintf>, wrapped if necessary, to ensure that it will return -the length of the string written to the buffer. Only rare pre-ANSI systems -need the wrapper function - usually this is a direct call to C<sprintf>. - - int my_sprintf(char *buffer, const char *pat, ...) - -=for hackers -Found in file util.c - -=item my_vsnprintf -X<my_vsnprintf> - -The C library C<vsnprintf> if available and standards-compliant. -However, if if the C<vsnprintf> is not available, will unfortunately -use the unsafe C<vsprintf> which can overrun the buffer (there is an -overrun check, but that may be too late). Consider using -C<sv_vcatpvf> instead, or getting C<vsnprintf>. - - int my_vsnprintf(char *buffer, const Size_t len, const char *format, va_list ap) - -=for hackers -Found in file util.c - -=item new_version -X<new_version> - -Returns a new version object based on the passed in SV: - - SV *sv = new_version(SV *ver); - -Does not alter the passed in ver SV. See "upg_version" if you -want to upgrade the SV. - - SV* new_version(SV *ver) - -=for hackers -Found in file util.c - -=item scan_version -X<scan_version> - -Returns a pointer to the next character after the parsed -version string, as well as upgrading the passed in SV to -an RV. - -Function must be called with an already existing SV like - - sv = newSV(0); - s = scan_version(s, SV *sv, bool qv); - -Performs some preprocessing to the string to ensure that -it has the correct characteristics of a version. Flags the -object if it contains an underscore (which denotes this -is an alpha version). The boolean qv denotes that the version -should be interpreted as if it had multiple decimals, even if -it doesn't. - - const char* scan_version(const char *s, SV *rv, bool qv) - -=for hackers -Found in file util.c - -=item strEQ -X<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 -X<strGE> - -Test two strings to see if the first, C<s1>, is greater than or equal to -the second, C<s2>. Returns true or false. - - bool strGE(char* s1, char* s2) - -=for hackers -Found in file handy.h - -=item strGT -X<strGT> - -Test two strings to see if the first, C<s1>, is greater than the second, -C<s2>. Returns true or false. - - bool strGT(char* s1, char* s2) - -=for hackers -Found in file handy.h - -=item strLE -X<strLE> - -Test two strings to see if the first, C<s1>, is less than or equal to the -second, C<s2>. Returns true or false. - - bool strLE(char* s1, char* s2) - -=for hackers -Found in file handy.h - -=item strLT -X<strLT> - -Test two strings to see if the first, C<s1>, is less than the second, -C<s2>. Returns true or false. - - bool strLT(char* s1, char* s2) - -=for hackers -Found in file handy.h - -=item strNE -X<strNE> - -Test two strings to see if they are different. Returns true or -false. - - bool strNE(char* s1, char* s2) - -=for hackers -Found in file handy.h - -=item strnEQ -X<strnEQ> - -Test two strings to see if they are equal. The C<len> parameter indicates -the number of bytes to compare. Returns true or false. (A wrapper for -C<strncmp>). - - bool strnEQ(char* s1, char* s2, STRLEN len) - -=for hackers -Found in file handy.h - -=item strnNE -X<strnNE> - -Test two strings to see if they are different. The C<len> parameter -indicates the number of bytes to compare. Returns true or false. (A -wrapper for C<strncmp>). - - bool strnNE(char* s1, char* s2, STRLEN len) - -=for hackers -Found in file handy.h - -=item sv_destroyable -X<sv_destroyable> - -Dummy routine which reports that object can be destroyed when there is no -sharing module present. It ignores its single SV argument, and returns -'true'. Exists to avoid test for a NULL function pointer and because it -could potentially warn under some level of strict-ness. - - bool sv_destroyable(SV *sv) - -=for hackers -Found in file util.c - -=item sv_nosharing -X<sv_nosharing> - -Dummy routine which "shares" an SV when there is no sharing module present. -Or "locks" it. Or "unlocks" it. In other words, ignores its single SV argument. -Exists to avoid test for a NULL function pointer and because it could -potentially warn under some level of strict-ness. - - void sv_nosharing(SV *sv) - -=for hackers -Found in file util.c - -=item upg_version -X<upg_version> - -In-place upgrade of the supplied SV to a version object. - - SV *sv = upg_version(SV *sv, bool qv); - -Returns a pointer to the upgraded SV. Set the boolean qv if you want -to force this SV to be interpreted as an "extended" version. - - SV* upg_version(SV *ver, bool qv) - -=for hackers -Found in file util.c - -=item vcmp -X<vcmp> - -Version object aware cmp. Both operands must already have been -converted into version objects. - - int vcmp(SV *lhv, SV *rhv) - -=for hackers -Found in file util.c - -=item vnormal -X<vnormal> - -Accepts a version object and returns the normalized string -representation. Call like: - - sv = vnormal(rv); - -NOTE: you can pass either the object directly or the SV -contained within the RV. - - SV* vnormal(SV *vs) - -=for hackers -Found in file util.c - -=item vnumify -X<vnumify> - -Accepts a version object and returns the normalized floating -point representation. Call like: - - sv = vnumify(rv); - -NOTE: you can pass either the object directly or the SV -contained within the RV. - - SV* vnumify(SV *vs) - -=for hackers -Found in file util.c - -=item vstringify -X<vstringify> - -In order to maintain maximum compatibility with earlier versions -of Perl, this function will return either the floating point -notation or the multiple dotted notation, depending on whether -the original version contained 1 or more dots, respectively - - SV* vstringify(SV *vs) - -=for hackers -Found in file util.c - -=item vverify -X<vverify> - -Validates that the SV contains a valid version object. - - bool vverify(SV *vobj); - -Note that it only confirms the bare minimum structure (so as not to get -confused by derived classes which may contain additional hash entries): - - bool vverify(SV *vs) - -=for hackers -Found in file util.c - - -=back - -=head1 MRO Functions - -=over 8 - -=item mro_get_linear_isa -X<mro_get_linear_isa> - -Returns either C<mro_get_linear_isa_c3> or -C<mro_get_linear_isa_dfs> for the given stash, -dependant upon which MRO is in effect -for that stash. The return value is a -read-only AV*. - -You are responsible for C<SvREFCNT_inc()> on the -return value if you plan to store it anywhere -semi-permanently (otherwise it might be deleted -out from under you the next time the cache is -invalidated). - - AV* mro_get_linear_isa(HV* stash) - -=for hackers -Found in file mro.c - -=item mro_method_changed_in -X<mro_method_changed_in> - -Invalidates method caching on any child classes -of the given stash, so that they might notice -the changes in this one. - -Ideally, all instances of C<PL_sub_generation++> in -perl source outside of C<mro.c> should be -replaced by calls to this. - -Perl automatically handles most of the common -ways a method might be redefined. However, there -are a few ways you could change a method in a stash -without the cache code noticing, in which case you -need to call this method afterwards: - -1) Directly manipulating the stash HV entries from -XS code. - -2) Assigning a reference to a readonly scalar -constant into a stash entry in order to create -a constant subroutine (like constant.pm -does). - -This same method is available from pure perl -via, C<mro::method_changed_in(classname)>. - - void mro_method_changed_in(HV* stash) - -=for hackers -Found in file mro.c - - -=back - -=head1 Multicall Functions - -=over 8 - -=item dMULTICALL -X<dMULTICALL> - -Declare local variables for a multicall. See L<perlcall/Lightweight Callbacks>. - - dMULTICALL; - -=for hackers -Found in file cop.h - -=item MULTICALL -X<MULTICALL> - -Make a lightweight callback. See L<perlcall/Lightweight Callbacks>. - - MULTICALL; - -=for hackers -Found in file cop.h - -=item POP_MULTICALL -X<POP_MULTICALL> - -Closing bracket for a lightweight callback. -See L<perlcall/Lightweight Callbacks>. - - POP_MULTICALL; - -=for hackers -Found in file cop.h - -=item PUSH_MULTICALL -X<PUSH_MULTICALL> - -Opening bracket for a lightweight callback. -See L<perlcall/Lightweight Callbacks>. - - PUSH_MULTICALL; - -=for hackers -Found in file cop.h - - -=back - -=head1 Numeric functions - -=over 8 - -=item grok_bin -X<grok_bin> - -converts a string representing a binary number to numeric form. - -On entry I<start> and I<*len> give the string to scan, I<*flags> gives -conversion flags, and I<result> should be NULL or a pointer to an NV. -The scan stops at the end of the string, or the first invalid character. -Unless C<PERL_SCAN_SILENT_ILLDIGIT> is set in I<*flags>, encountering an -invalid character will also trigger a warning. -On return I<*len> is set to the length of the scanned string, -and I<*flags> gives output flags. - -If the value is <= C<UV_MAX> it is returned as a UV, the output flags are clear, -and nothing is written to I<*result>. If the value is > UV_MAX C<grok_bin> -returns UV_MAX, sets C<PERL_SCAN_GREATER_THAN_UV_MAX> in the output flags, -and writes the value to I<*result> (or the value is discarded if I<result> -is NULL). - -The binary number may optionally be prefixed with "0b" or "b" unless -C<PERL_SCAN_DISALLOW_PREFIX> is set in I<*flags> on entry. If -C<PERL_SCAN_ALLOW_UNDERSCORES> is set in I<*flags> then the binary -number may use '_' characters to separate digits. - - UV grok_bin(const char* start, STRLEN* len_p, I32* flags, NV *result) - -=for hackers -Found in file numeric.c - -=item grok_hex -X<grok_hex> - -converts a string representing a hex number to numeric form. - -On entry I<start> and I<*len> give the string to scan, I<*flags> gives -conversion flags, and I<result> should be NULL or a pointer to an NV. -The scan stops at the end of the string, or the first invalid character. -Unless C<PERL_SCAN_SILENT_ILLDIGIT> is set in I<*flags>, encountering an -invalid character will also trigger a warning. -On return I<*len> is set to the length of the scanned string, -and I<*flags> gives output flags. - -If the value is <= UV_MAX it is returned as a UV, the output flags are clear, -and nothing is written to I<*result>. If the value is > UV_MAX C<grok_hex> -returns UV_MAX, sets C<PERL_SCAN_GREATER_THAN_UV_MAX> in the output flags, -and writes the value to I<*result> (or the value is discarded if I<result> -is NULL). - -The hex number may optionally be prefixed with "0x" or "x" unless -C<PERL_SCAN_DISALLOW_PREFIX> is set in I<*flags> on entry. If -C<PERL_SCAN_ALLOW_UNDERSCORES> is set in I<*flags> then the hex -number may use '_' characters to separate digits. - - UV grok_hex(const char* start, STRLEN* len_p, I32* flags, NV *result) - -=for hackers -Found in file numeric.c - -=item grok_number -X<grok_number> - -Recognise (or not) a number. The type of the number is returned -(0 if unrecognised), otherwise it is a bit-ORed combination of -IS_NUMBER_IN_UV, IS_NUMBER_GREATER_THAN_UV_MAX, IS_NUMBER_NOT_INT, -IS_NUMBER_NEG, IS_NUMBER_INFINITY, IS_NUMBER_NAN (defined in perl.h). - -If the value of the number can fit an in UV, it is returned in the *valuep -IS_NUMBER_IN_UV will be set to indicate that *valuep is valid, IS_NUMBER_IN_UV -will never be set unless *valuep is valid, but *valuep may have been assigned -to during processing even though IS_NUMBER_IN_UV is not set on return. -If valuep is NULL, IS_NUMBER_IN_UV will be set for the same cases as when -valuep is non-NULL, but no actual assignment (or SEGV) will occur. - -IS_NUMBER_NOT_INT will be set with IS_NUMBER_IN_UV if trailing decimals were -seen (in which case *valuep gives the true value truncated to an integer), and -IS_NUMBER_NEG if the number is negative (in which case *valuep holds the -absolute value). IS_NUMBER_IN_UV is not set if e notation was used or the -number is larger than a UV. - - int grok_number(const char *pv, STRLEN len, UV *valuep) - -=for hackers -Found in file numeric.c - -=item grok_numeric_radix -X<grok_numeric_radix> - -Scan and skip for a numeric decimal separator (radix). - - bool grok_numeric_radix(const char **sp, const char *send) - -=for hackers -Found in file numeric.c - -=item grok_oct -X<grok_oct> - -converts a string representing an octal number to numeric form. - -On entry I<start> and I<*len> give the string to scan, I<*flags> gives -conversion flags, and I<result> should be NULL or a pointer to an NV. -The scan stops at the end of the string, or the first invalid character. -Unless C<PERL_SCAN_SILENT_ILLDIGIT> is set in I<*flags>, encountering an -invalid character will also trigger a warning. -On return I<*len> is set to the length of the scanned string, -and I<*flags> gives output flags. - -If the value is <= UV_MAX it is returned as a UV, the output flags are clear, -and nothing is written to I<*result>. If the value is > UV_MAX C<grok_oct> -returns UV_MAX, sets C<PERL_SCAN_GREATER_THAN_UV_MAX> in the output flags, -and writes the value to I<*result> (or the value is discarded if I<result> -is NULL). - -If C<PERL_SCAN_ALLOW_UNDERSCORES> is set in I<*flags> then the octal -number may use '_' characters to separate digits. - - UV grok_oct(const char* start, STRLEN* len_p, I32* flags, NV *result) - -=for hackers -Found in file numeric.c - -=item Perl_signbit -X<Perl_signbit> - -Return a non-zero integer if the sign bit on an NV is set, and 0 if -it is not. - -If Configure detects this system has a signbit() that will work with -our NVs, then we just use it via the #define in perl.h. Otherwise, -fall back on this implementation. As a first pass, this gets everything -right except -0.0. Alas, catching -0.0 is the main use for this function, -so this is not too helpful yet. Still, at least we have the scaffolding -in place to support other systems, should that prove useful. - - -Configure notes: This function is called 'Perl_signbit' instead of a -plain 'signbit' because it is easy to imagine a system having a signbit() -function or macro that doesn't happen to work with our particular choice -of NVs. We shouldn't just re-#define signbit as Perl_signbit and expect -the standard system headers to be happy. Also, this is a no-context -function (no pTHX_) because Perl_signbit() is usually re-#defined in -perl.h as a simple macro call to the system's signbit(). -Users should just always call Perl_signbit(). - -NOTE: this function is experimental and may change or be -removed without notice. - - int Perl_signbit(NV f) - -=for hackers -Found in file numeric.c - -=item scan_bin -X<scan_bin> - -For backwards compatibility. Use C<grok_bin> instead. - - NV scan_bin(const char* start, STRLEN len, STRLEN* retlen) - -=for hackers -Found in file numeric.c - -=item scan_hex -X<scan_hex> - -For backwards compatibility. Use C<grok_hex> instead. - - NV scan_hex(const char* start, STRLEN len, STRLEN* retlen) - -=for hackers -Found in file numeric.c - -=item scan_oct -X<scan_oct> - -For backwards compatibility. Use C<grok_oct> instead. - - NV scan_oct(const char* start, STRLEN len, STRLEN* retlen) - -=for hackers -Found in file numeric.c - - -=back - -=head1 Optree Manipulation Functions - -=over 8 - -=item cv_const_sv -X<cv_const_sv> - -If C<cv> is a constant sub eligible for inlining. returns the constant -value returned by the sub. Otherwise, returns NULL. - -Constant subs can be created with C<newCONSTSUB> or as described in -L<perlsub/"Constant Functions">. - - SV* cv_const_sv(const CV *const cv) - -=for hackers -Found in file op.c - -=item newCONSTSUB -X<newCONSTSUB> - -Creates a constant sub equivalent to Perl C<sub FOO () { 123 }> which is -eligible for inlining at compile-time. - - CV* newCONSTSUB(HV* stash, const char* name, SV* sv) - -=for hackers -Found in file op.c - -=item newXS -X<newXS> - -Used by C<xsubpp> to hook up XSUBs as Perl subs. I<filename> needs to be -static storage, as it is used directly as CvFILE(), without a copy being made. - -=for hackers -Found in file op.c - - -=back - -=head1 Pad Data Structures - -=over 8 - -=item pad_sv -X<pad_sv> - -Get the value at offset po in the current pad. -Use macro PAD_SV instead of calling this function directly. - - SV* pad_sv(PADOFFSET po) - -=for hackers -Found in file pad.c - - -=back - -=head1 Per-Interpreter Variables - -=over 8 - -=item PL_modglobal -X<PL_modglobal> - -C<PL_modglobal> is a general purpose, interpreter global HV for use by -extensions that need to keep information on a per-interpreter basis. -In a pinch, it can also be used as a symbol table for extensions -to share data among each other. It is a good idea to use keys -prefixed by the package name of the extension that owns the data. - - HV* PL_modglobal - -=for hackers -Found in file intrpvar.h - -=item PL_na -X<PL_na> - -A convenience variable which is typically used with C<SvPV> when one -doesn't care about the length of the string. It is usually more efficient -to either declare a local variable and use that instead or to use the -C<SvPV_nolen> macro. - - STRLEN PL_na - -=for hackers -Found in file intrpvar.h - -=item PL_sv_no -X<PL_sv_no> - -This is the C<false> SV. See C<PL_sv_yes>. Always refer to this as -C<&PL_sv_no>. - - SV PL_sv_no - -=for hackers -Found in file intrpvar.h - -=item PL_sv_undef -X<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 -X<PL_sv_yes> - -This is the C<true> SV. See C<PL_sv_no>. Always refer to this as -C<&PL_sv_yes>. - - SV PL_sv_yes - -=for hackers -Found in file intrpvar.h - - -=back - -=head1 REGEXP Functions - -=over 8 - -=item SvRX -X<SvRX> - -Convenience macro to get the REGEXP from a SV. This is approximately -equivalent to the following snippet: - - if (SvMAGICAL(sv)) - mg_get(sv); - if (SvROK(sv) && - (tmpsv = (SV*)SvRV(sv)) && - SvTYPE(tmpsv) == SVt_PVMG && - (tmpmg = mg_find(tmpsv, PERL_MAGIC_qr))) - { - return (REGEXP *)tmpmg->mg_obj; - } - -NULL will be returned if a REGEXP* is not found. - - REGEXP * SvRX(SV *sv) - -=for hackers -Found in file regexp.h - -=item SvRXOK -X<SvRXOK> - -Returns a boolean indicating whether the SV contains qr magic -(PERL_MAGIC_qr). - -If you want to do something with the REGEXP* later use SvRX instead -and check for NULL. - - bool SvRXOK(SV* sv) - -=for hackers -Found in file regexp.h - - -=back - -=head1 Simple Exception Handling Macros - -=over 8 - -=item dXCPT -X<dXCPT> - -Set up necessary local variables for exception handling. -See L<perlguts/"Exception Handling">. - - dXCPT; - -=for hackers -Found in file XSUB.h - -=item XCPT_CATCH -X<XCPT_CATCH> - -Introduces a catch block. See L<perlguts/"Exception Handling">. - -=for hackers -Found in file XSUB.h - -=item XCPT_RETHROW -X<XCPT_RETHROW> - -Rethrows a previously caught exception. See L<perlguts/"Exception Handling">. - - XCPT_RETHROW; - -=for hackers -Found in file XSUB.h - -=item XCPT_TRY_END -X<XCPT_TRY_END> - -Ends a try block. See L<perlguts/"Exception Handling">. - -=for hackers -Found in file XSUB.h - -=item XCPT_TRY_START -X<XCPT_TRY_START> - -Starts a try block. See L<perlguts/"Exception Handling">. - -=for hackers -Found in file XSUB.h - - -=back - -=head1 Stack Manipulation Macros - -=over 8 - -=item dMARK -X<dMARK> - -Declare a stack marker variable, C<mark>, for the XSUB. See C<MARK> and -C<dORIGMARK>. - - dMARK; - -=for hackers -Found in file pp.h - -=item dORIGMARK -X<dORIGMARK> - -Saves the original stack mark for the XSUB. See C<ORIGMARK>. - - dORIGMARK; - -=for hackers -Found in file pp.h - -=item dSP -X<dSP> - -Declares a local copy of perl's stack pointer for the XSUB, available via -the C<SP> macro. See C<SP>. - - dSP; - -=for hackers -Found in file pp.h - -=item EXTEND -X<EXTEND> - -Used to extend the argument stack for an XSUB's return values. Once -used, guarantees that there is room for at least C<nitems> to be pushed -onto the stack. - - void EXTEND(SP, int nitems) - -=for hackers -Found in file pp.h - -=item MARK -X<MARK> - -Stack marker variable for the XSUB. See C<dMARK>. - -=for hackers -Found in file pp.h - -=item mPUSHi -X<mPUSHi> - -Push an integer onto the stack. The stack must have room for this element. -Does not use C<TARG>. See also C<PUSHi>, C<mXPUSHi> and C<XPUSHi>. - - void mPUSHi(IV iv) - -=for hackers -Found in file pp.h - -=item mPUSHn -X<mPUSHn> - -Push a double onto the stack. The stack must have room for this element. -Does not use C<TARG>. See also C<PUSHn>, C<mXPUSHn> and C<XPUSHn>. - - void mPUSHn(NV nv) - -=for hackers -Found in file pp.h - -=item mPUSHp -X<mPUSHp> - -Push a string onto the stack. The stack must have room for this element. -The C<len> indicates the length of the string. Does not use C<TARG>. -See also C<PUSHp>, C<mXPUSHp> and C<XPUSHp>. - - void mPUSHp(char* str, STRLEN len) - -=for hackers -Found in file pp.h - -=item mPUSHs -X<mPUSHs> - -Push an SV onto the stack and mortalizes the SV. The stack must have room -for this element. Does not use C<TARG>. See also C<PUSHs> and C<mXPUSHs>. - - void mPUSHs(SV* sv) - -=for hackers -Found in file pp.h - -=item mPUSHu -X<mPUSHu> - -Push an unsigned integer onto the stack. The stack must have room for this -element. Does not use C<TARG>. See also C<PUSHu>, C<mXPUSHu> and C<XPUSHu>. - - void mPUSHu(UV uv) - -=for hackers -Found in file pp.h - -=item mXPUSHi -X<mXPUSHi> - -Push an integer onto the stack, extending the stack if necessary. -Does not use C<TARG>. See also C<XPUSHi>, C<mPUSHi> and C<PUSHi>. - - void mXPUSHi(IV iv) - -=for hackers -Found in file pp.h - -=item mXPUSHn -X<mXPUSHn> - -Push a double onto the stack, extending the stack if necessary. -Does not use C<TARG>. See also C<XPUSHn>, C<mPUSHn> and C<PUSHn>. - - void mXPUSHn(NV nv) - -=for hackers -Found in file pp.h - -=item mXPUSHp -X<mXPUSHp> - -Push a string onto the stack, extending the stack if necessary. The C<len> -indicates the length of the string. Does not use C<TARG>. See also C<XPUSHp>, -C<mPUSHp> and C<PUSHp>. - - void mXPUSHp(char* str, STRLEN len) - -=for hackers -Found in file pp.h - -=item mXPUSHs -X<mXPUSHs> - -Push an SV onto the stack, extending the stack if necessary and mortalizes -the SV. Does not use C<TARG>. See also C<XPUSHs> and C<mPUSHs>. - - void mXPUSHs(SV* sv) - -=for hackers -Found in file pp.h - -=item mXPUSHu -X<mXPUSHu> - -Push an unsigned integer onto the stack, extending the stack if necessary. -Does not use C<TARG>. See also C<XPUSHu>, C<mPUSHu> and C<PUSHu>. - - void mXPUSHu(UV uv) - -=for hackers -Found in file pp.h - -=item ORIGMARK -X<ORIGMARK> - -The original stack mark for the XSUB. See C<dORIGMARK>. - -=for hackers -Found in file pp.h - -=item POPi -X<POPi> - -Pops an integer off the stack. - - IV POPi - -=for hackers -Found in file pp.h - -=item POPl -X<POPl> - -Pops a long off the stack. - - long POPl - -=for hackers -Found in file pp.h - -=item POPn -X<POPn> - -Pops a double off the stack. - - NV POPn - -=for hackers -Found in file pp.h - -=item POPp -X<POPp> - -Pops a string off the stack. Deprecated. New code should use POPpx. - - char* POPp - -=for hackers -Found in file pp.h - -=item POPpbytex -X<POPpbytex> - -Pops a string off the stack which must consist of bytes i.e. characters < 256. - - char* POPpbytex - -=for hackers -Found in file pp.h - -=item POPpx -X<POPpx> - -Pops a string off the stack. - - char* POPpx - -=for hackers -Found in file pp.h - -=item POPs -X<POPs> - -Pops an SV off the stack. - - SV* POPs - -=for hackers -Found in file pp.h - -=item PUSHi -X<PUSHi> - -Push an integer onto the stack. The stack must have room for this element. -Handles 'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> should be -called to declare it. Do not call multiple C<TARG>-oriented macros to -return lists from XSUB's - see C<mPUSHi> instead. See also C<XPUSHi> and -C<mXPUSHi>. - - void PUSHi(IV iv) - -=for hackers -Found in file pp.h - -=item PUSHMARK -X<PUSHMARK> - -Opening bracket for arguments on a callback. See C<PUTBACK> and -L<perlcall>. - - void PUSHMARK(SP) - -=for hackers -Found in file pp.h - -=item PUSHmortal -X<PUSHmortal> - -Push a new mortal SV onto the stack. The stack must have room for this -element. Does not use C<TARG>. See also C<PUSHs>, C<XPUSHmortal> and C<XPUSHs>. - - void PUSHmortal() - -=for hackers -Found in file pp.h - -=item PUSHn -X<PUSHn> - -Push a double onto the stack. The stack must have room for this element. -Handles 'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> should be -called to declare it. Do not call multiple C<TARG>-oriented macros to -return lists from XSUB's - see C<mPUSHn> instead. See also C<XPUSHn> and -C<mXPUSHn>. - - void PUSHn(NV nv) - -=for hackers -Found in file pp.h - -=item PUSHp -X<PUSHp> - -Push a string onto the stack. The stack must have room for this element. -The C<len> indicates the length of the string. Handles 'set' magic. Uses -C<TARG>, so C<dTARGET> or C<dXSTARG> should be called to declare it. Do not -call multiple C<TARG>-oriented macros to return lists from XSUB's - see -C<mPUSHp> instead. See also C<XPUSHp> and C<mXPUSHp>. - - void PUSHp(char* str, STRLEN len) - -=for hackers -Found in file pp.h - -=item PUSHs -X<PUSHs> - -Push an SV onto the stack. The stack must have room for this element. -Does not handle 'set' magic. Does not use C<TARG>. See also C<PUSHmortal>, -C<XPUSHs> and C<XPUSHmortal>. - - void PUSHs(SV* sv) - -=for hackers -Found in file pp.h - -=item PUSHu -X<PUSHu> - -Push an unsigned integer onto the stack. The stack must have room for this -element. Handles 'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> -should be called to declare it. Do not call multiple C<TARG>-oriented -macros to return lists from XSUB's - see C<mPUSHu> instead. See also -C<XPUSHu> and C<mXPUSHu>. - - void PUSHu(UV uv) - -=for hackers -Found in file pp.h - -=item PUTBACK -X<PUTBACK> - -Closing bracket for XSUB arguments. This is usually handled by C<xsubpp>. -See C<PUSHMARK> and L<perlcall> for other uses. - - PUTBACK; - -=for hackers -Found in file pp.h - -=item SP -X<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 -X<SPAGAIN> - -Refetch the stack pointer. Used after a callback. See L<perlcall>. - - SPAGAIN; - -=for hackers -Found in file pp.h - -=item XPUSHi -X<XPUSHi> - -Push an integer onto the stack, extending the stack if necessary. Handles -'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> should be called to -declare it. Do not call multiple C<TARG>-oriented macros to return lists -from XSUB's - see C<mXPUSHi> instead. See also C<PUSHi> and C<mPUSHi>. - - void XPUSHi(IV iv) - -=for hackers -Found in file pp.h - -=item XPUSHmortal -X<XPUSHmortal> - -Push a new mortal SV onto the stack, extending the stack if necessary. -Does not use C<TARG>. See also C<XPUSHs>, C<PUSHmortal> and C<PUSHs>. - - void XPUSHmortal() - -=for hackers -Found in file pp.h - -=item XPUSHn -X<XPUSHn> - -Push a double onto the stack, extending the stack if necessary. Handles -'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> should be called to -declare it. Do not call multiple C<TARG>-oriented macros to return lists -from XSUB's - see C<mXPUSHn> instead. See also C<PUSHn> and C<mPUSHn>. - - void XPUSHn(NV nv) - -=for hackers -Found in file pp.h - -=item XPUSHp -X<XPUSHp> - -Push a string onto the stack, extending the stack if necessary. The C<len> -indicates the length of the string. Handles 'set' magic. Uses C<TARG>, so -C<dTARGET> or C<dXSTARG> should be called to declare it. Do not call -multiple C<TARG>-oriented macros to return lists from XSUB's - see -C<mXPUSHp> instead. See also C<PUSHp> and C<mPUSHp>. - - void XPUSHp(char* str, STRLEN len) - -=for hackers -Found in file pp.h - -=item XPUSHs -X<XPUSHs> - -Push an SV onto the stack, extending the stack if necessary. Does not -handle 'set' magic. Does not use C<TARG>. See also C<XPUSHmortal>, -C<PUSHs> and C<PUSHmortal>. - - void XPUSHs(SV* sv) - -=for hackers -Found in file pp.h - -=item XPUSHu -X<XPUSHu> - -Push an unsigned integer onto the stack, extending the stack if necessary. -Handles 'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> should be -called to declare it. Do not call multiple C<TARG>-oriented macros to -return lists from XSUB's - see C<mXPUSHu> instead. See also C<PUSHu> and -C<mPUSHu>. - - void XPUSHu(UV uv) - -=for hackers -Found in file pp.h - -=item XSRETURN -X<XSRETURN> - -Return from XSUB, indicating number of items on the stack. This is usually -handled by C<xsubpp>. - - void XSRETURN(int nitems) - -=for hackers -Found in file XSUB.h - -=item XSRETURN_EMPTY -X<XSRETURN_EMPTY> - -Return an empty list from an XSUB immediately. - - XSRETURN_EMPTY; - -=for hackers -Found in file XSUB.h - -=item XSRETURN_IV -X<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 -X<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 -X<XSRETURN_NV> - -Return a double from an XSUB immediately. Uses C<XST_mNV>. - - void XSRETURN_NV(NV nv) - -=for hackers -Found in file XSUB.h - -=item XSRETURN_PV -X<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 -X<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_UV -X<XSRETURN_UV> - -Return an integer from an XSUB immediately. Uses C<XST_mUV>. - - void XSRETURN_UV(IV uv) - -=for hackers -Found in file XSUB.h - -=item XSRETURN_YES -X<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 -X<XST_mIV> - -Place an integer into the specified position C<pos> on the stack. The -value is stored in a new mortal SV. - - void XST_mIV(int pos, IV iv) - -=for hackers -Found in file XSUB.h - -=item XST_mNO -X<XST_mNO> - -Place C<&PL_sv_no> into the specified position C<pos> on the -stack. - - void XST_mNO(int pos) - -=for hackers -Found in file XSUB.h - -=item XST_mNV -X<XST_mNV> - -Place a double into the specified position C<pos> on the stack. The value -is stored in a new mortal SV. - - void XST_mNV(int pos, NV nv) - -=for hackers -Found in file XSUB.h - -=item XST_mPV -X<XST_mPV> - -Place a copy of a string into the specified position C<pos> on the stack. -The value is stored in a new mortal SV. - - void XST_mPV(int pos, char* str) - -=for hackers -Found in file XSUB.h - -=item XST_mUNDEF -X<XST_mUNDEF> - -Place C<&PL_sv_undef> into the specified position C<pos> on the -stack. - - void XST_mUNDEF(int pos) - -=for hackers -Found in file XSUB.h - -=item XST_mYES -X<XST_mYES> - -Place C<&PL_sv_yes> into the specified position C<pos> on the -stack. - - void XST_mYES(int pos) - -=for hackers -Found in file XSUB.h - - -=back - -=head1 SV Flags - -=over 8 - -=item svtype -X<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 SVt_IV -X<SVt_IV> - -Integer type flag for scalars. See C<svtype>. - -=for hackers -Found in file sv.h - -=item SVt_NV -X<SVt_NV> - -Double type flag for scalars. See C<svtype>. - -=for hackers -Found in file sv.h - -=item SVt_PV -X<SVt_PV> - -Pointer type flag for scalars. See C<svtype>. - -=for hackers -Found in file sv.h - -=item SVt_PVAV -X<SVt_PVAV> - -Type flag for arrays. See C<svtype>. - -=for hackers -Found in file sv.h - -=item SVt_PVCV -X<SVt_PVCV> - -Type flag for code refs. See C<svtype>. - -=for hackers -Found in file sv.h - -=item SVt_PVHV -X<SVt_PVHV> - -Type flag for hashes. See C<svtype>. - -=for hackers -Found in file sv.h - -=item SVt_PVMG -X<SVt_PVMG> - -Type flag for blessed scalars. See C<svtype>. - -=for hackers -Found in file sv.h - - -=back - -=head1 SV Manipulation Functions - -=over 8 - -=item croak_xs_usage -X<croak_xs_usage> - -A specialised variant of C<croak()> for emitting the usage message for xsubs - - croak_xs_usage(cv, "eee_yow"); - -works out the package name and subroutine name from C<cv>, and then calls -C<croak()>. Hence if C<cv> is C<&ouch::awk>, it would call C<croak> as: - - Perl_croak(aTHX_ "Usage %s::%s(%s)", "ouch" "awk", "eee_yow"); - - void croak_xs_usage(const CV *const cv, const char *const params) - -=for hackers -Found in file universal.c - -=item get_sv -X<get_sv> - -Returns the SV of the specified Perl scalar. C<flags> are passed to -C<gv_fetchpv>. If C<GV_ADD> is set and the -Perl variable does not exist then it will be created. If C<flags> is zero -and the variable does not exist then NULL is returned. - -NOTE: the perl_ form of this function is deprecated. - - SV* get_sv(const char *name, I32 flags) - -=for hackers -Found in file perl.c - -=item newRV_inc -X<newRV_inc> - -Creates an RV wrapper for an SV. The reference count for the original SV is -incremented. - - SV* newRV_inc(SV* sv) - -=for hackers -Found in file sv.h - -=item newSVpvn_utf8 -X<newSVpvn_utf8> - -Creates a new SV and copies a string into it. If utf8 is true, calls -C<SvUTF8_on> on the new SV. Implemented as a wrapper around C<newSVpvn_flags>. - - SV* newSVpvn_utf8(NULLOK const char* s, STRLEN len, U32 utf8) - -=for hackers -Found in file sv.h - -=item SvCUR -X<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 -X<SvCUR_set> - -Set the current length of the string which is in the SV. See C<SvCUR> -and C<SvIV_set>. - - void SvCUR_set(SV* sv, STRLEN len) - -=for hackers -Found in file sv.h - -=item SvEND -X<SvEND> - -Returns a pointer to the last character in the string which is in the SV. -See C<SvCUR>. Access the character as *(SvEND(sv)). - - char* SvEND(SV* sv) - -=for hackers -Found in file sv.h - -=item SvGAMAGIC -X<SvGAMAGIC> - -Returns true if the SV has get magic or overloading. If either is true then -the scalar is active data, and has the potential to return a new value every -time it is accessed. Hence you must be careful to only read it once per user -logical operation and work with that returned value. If neither is true then -the scalar's value cannot change unless written to. - - char* SvGAMAGIC(SV* sv) - -=for hackers -Found in file sv.h - -=item SvGROW -X<SvGROW> - -Expands the character buffer in the SV so that it has room for the -indicated number of bytes (remember to reserve space for an extra trailing -NUL character). Calls C<sv_grow> to perform the expansion if necessary. -Returns a pointer to the character buffer. - - char * SvGROW(SV* sv, STRLEN len) - -=for hackers -Found in file sv.h - -=item SvIOK -X<SvIOK> - -Returns a U32 value indicating whether the SV contains an integer. - - U32 SvIOK(SV* sv) - -=for hackers -Found in file sv.h - -=item SvIOKp -X<SvIOKp> - -Returns a U32 value indicating whether the SV contains an integer. Checks -the B<private> setting. Use C<SvIOK> instead. - - U32 SvIOKp(SV* sv) - -=for hackers -Found in file sv.h - -=item SvIOK_notUV -X<SvIOK_notUV> - -Returns a boolean indicating whether the SV contains a signed integer. - - bool SvIOK_notUV(SV* sv) - -=for hackers -Found in file sv.h - -=item SvIOK_off -X<SvIOK_off> - -Unsets the IV status of an SV. - - void SvIOK_off(SV* sv) - -=for hackers -Found in file sv.h - -=item SvIOK_on -X<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 -X<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 SvIOK_only_UV -X<SvIOK_only_UV> - -Tells and SV that it is an unsigned integer and disables all other OK bits. - - void SvIOK_only_UV(SV* sv) - -=for hackers -Found in file sv.h - -=item SvIOK_UV -X<SvIOK_UV> - -Returns a boolean indicating whether the SV contains an unsigned integer. - - bool SvIOK_UV(SV* sv) - -=for hackers -Found in file sv.h - -=item SvIsCOW -X<SvIsCOW> - -Returns a boolean indicating whether the SV is Copy-On-Write. (either shared -hash key scalars, or full Copy On Write scalars if 5.9.0 is configured for -COW) - - bool SvIsCOW(SV* sv) - -=for hackers -Found in file sv.h - -=item SvIsCOW_shared_hash -X<SvIsCOW_shared_hash> - -Returns a boolean indicating whether the SV is Copy-On-Write shared hash key -scalar. - - bool SvIsCOW_shared_hash(SV* sv) - -=for hackers -Found in file sv.h - -=item SvIV -X<SvIV> - -Coerces the given SV to an integer and returns it. See C<SvIVx> for a -version which guarantees to evaluate sv only once. - - IV SvIV(SV* sv) - -=for hackers -Found in file sv.h - -=item SvIVX -X<SvIVX> - -Returns the raw value in the SV's IV slot, without checks or conversions. -Only use when you are sure SvIOK is true. See also C<SvIV()>. - - IV SvIVX(SV* sv) - -=for hackers -Found in file sv.h - -=item SvIVx -X<SvIVx> - -Coerces the given SV to an integer and returns it. Guarantees to evaluate -C<sv> only once. Only use this if C<sv> is an expression with side effects, -otherwise use the more efficient C<SvIV>. - - IV SvIVx(SV* sv) - -=for hackers -Found in file sv.h - -=item SvIV_nomg -X<SvIV_nomg> - -Like C<SvIV> but doesn't process magic. - - IV SvIV_nomg(SV* sv) - -=for hackers -Found in file sv.h - -=item SvIV_set -X<SvIV_set> - -Set the value of the IV pointer in sv to val. It is possible to perform -the same function of this macro with an lvalue assignment to C<SvIVX>. -With future Perls, however, it will be more efficient to use -C<SvIV_set> instead of the lvalue assignment to C<SvIVX>. - - void SvIV_set(SV* sv, IV val) - -=for hackers -Found in file sv.h - -=item SvLEN -X<SvLEN> - -Returns the size of the string buffer in the SV, not including any part -attributable to C<SvOOK>. See C<SvCUR>. - - STRLEN SvLEN(SV* sv) - -=for hackers -Found in file sv.h - -=item SvLEN_set -X<SvLEN_set> - -Set the actual length of the string which is in the SV. See C<SvIV_set>. - - void SvLEN_set(SV* sv, STRLEN len) - -=for hackers -Found in file sv.h - -=item SvMAGIC_set -X<SvMAGIC_set> - -Set the value of the MAGIC pointer in sv to val. See C<SvIV_set>. - - void SvMAGIC_set(SV* sv, MAGIC* val) - -=for hackers -Found in file sv.h - -=item SvNIOK -X<SvNIOK> - -Returns a U32 value indicating whether the SV contains a number, integer or -double. - - U32 SvNIOK(SV* sv) - -=for hackers -Found in file sv.h - -=item SvNIOKp -X<SvNIOKp> - -Returns a U32 value indicating whether the SV contains a number, integer or -double. Checks the B<private> setting. Use C<SvNIOK> instead. - - U32 SvNIOKp(SV* sv) - -=for hackers -Found in file sv.h - -=item SvNIOK_off -X<SvNIOK_off> - -Unsets the NV/IV status of an SV. - - void SvNIOK_off(SV* sv) - -=for hackers -Found in file sv.h - -=item SvNOK -X<SvNOK> - -Returns a U32 value indicating whether the SV contains a double. - - U32 SvNOK(SV* sv) - -=for hackers -Found in file sv.h - -=item SvNOKp -X<SvNOKp> - -Returns a U32 value indicating whether the SV contains a double. Checks the -B<private> setting. Use C<SvNOK> instead. - - U32 SvNOKp(SV* sv) - -=for hackers -Found in file sv.h - -=item SvNOK_off -X<SvNOK_off> - -Unsets the NV status of an SV. - - void SvNOK_off(SV* sv) - -=for hackers -Found in file sv.h - -=item SvNOK_on -X<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 -X<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 -X<SvNV> - -Coerce the given SV to a double and return it. See C<SvNVx> for a version -which guarantees to evaluate sv only once. - - NV SvNV(SV* sv) - -=for hackers -Found in file sv.h - -=item SvNVX -X<SvNVX> - -Returns the raw value in the SV's NV slot, without checks or conversions. -Only use when you are sure SvNOK is true. See also C<SvNV()>. - - NV SvNVX(SV* sv) - -=for hackers -Found in file sv.h - -=item SvNVx -X<SvNVx> - -Coerces the given SV to a double and returns it. Guarantees to evaluate -C<sv> only once. Only use this if C<sv> is an expression with side effects, -otherwise use the more efficient C<SvNV>. - - NV SvNVx(SV* sv) - -=for hackers -Found in file sv.h - -=item SvNV_set -X<SvNV_set> - -Set the value of the NV pointer in sv to val. See C<SvIV_set>. - - void SvNV_set(SV* sv, NV val) - -=for hackers -Found in file sv.h - -=item SvOK -X<SvOK> - -Returns a U32 value indicating whether the value is an SV. It also tells -whether the value is defined or not. - - U32 SvOK(SV* sv) - -=for hackers -Found in file sv.h - -=item SvOOK -X<SvOOK> - -Returns a U32 indicating whether the pointer to the string buffer is offset. -This hack is used internally to speed up removal of characters from the -beginning of a SvPV. When SvOOK is true, then the start of the -allocated string buffer is actually C<SvOOK_offset()> bytes before SvPVX. -This offset used to be stored in SvIVX, but is now stored within the spare -part of the buffer. - - U32 SvOOK(SV* sv) - -=for hackers -Found in file sv.h - -=item SvOOK_offset -X<SvOOK_offset> - -Reads into I<len> the offset from SvPVX back to the true start of the -allocated buffer, which will be non-zero if C<sv_chop> has been used to -efficiently remove characters from start of the buffer. Implemented as a -macro, which takes the address of I<len>, which must be of type C<STRLEN>. -Evaluates I<sv> more than once. Sets I<len> to 0 if C<SvOOK(sv)> is false. - - void SvOOK_offset(NN SV*sv, STRLEN len) - -=for hackers -Found in file sv.h - -=item SvPOK -X<SvPOK> - -Returns a U32 value indicating whether the SV contains a character -string. - - U32 SvPOK(SV* sv) - -=for hackers -Found in file sv.h - -=item SvPOKp -X<SvPOKp> - -Returns a U32 value indicating whether the SV contains a character string. -Checks the B<private> setting. Use C<SvPOK> instead. - - U32 SvPOKp(SV* sv) - -=for hackers -Found in file sv.h - -=item SvPOK_off -X<SvPOK_off> - -Unsets the PV status of an SV. - - void SvPOK_off(SV* sv) - -=for hackers -Found in file sv.h - -=item SvPOK_on -X<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 -X<SvPOK_only> - -Tells an SV that it is a string and disables all other OK bits. -Will also turn off the UTF-8 status. - - void SvPOK_only(SV* sv) - -=for hackers -Found in file sv.h - -=item SvPOK_only_UTF8 -X<SvPOK_only_UTF8> - -Tells an SV that it is a string and disables all other OK bits, -and leaves the UTF-8 status as it was. - - void SvPOK_only_UTF8(SV* sv) - -=for hackers -Found in file sv.h - -=item SvPV -X<SvPV> - -Returns a pointer to the string in the SV, or a stringified form of -the SV if the SV does not contain a string. The SV may cache the -stringified version becoming C<SvPOK>. Handles 'get' magic. See also -C<SvPVx> for a version which guarantees to evaluate sv only once. - - char* SvPV(SV* sv, STRLEN len) - -=for hackers -Found in file sv.h - -=item SvPVbyte -X<SvPVbyte> - -Like C<SvPV>, but converts sv to byte representation first if necessary. - - char* SvPVbyte(SV* sv, STRLEN len) - -=for hackers -Found in file sv.h - -=item SvPVbytex -X<SvPVbytex> - -Like C<SvPV>, but converts sv to byte representation first if necessary. -Guarantees to evaluate sv only once; use the more efficient C<SvPVbyte> -otherwise. - - char* SvPVbytex(SV* sv, STRLEN len) - -=for hackers -Found in file sv.h - -=item SvPVbytex_force -X<SvPVbytex_force> - -Like C<SvPV_force>, but converts sv to byte representation first if necessary. -Guarantees to evaluate sv only once; use the more efficient C<SvPVbyte_force> -otherwise. - - char* SvPVbytex_force(SV* sv, STRLEN len) - -=for hackers -Found in file sv.h - -=item SvPVbyte_force -X<SvPVbyte_force> - -Like C<SvPV_force>, but converts sv to byte representation first if necessary. - - char* SvPVbyte_force(SV* sv, STRLEN len) - -=for hackers -Found in file sv.h - -=item SvPVbyte_nolen -X<SvPVbyte_nolen> - -Like C<SvPV_nolen>, but converts sv to byte representation first if necessary. - - char* SvPVbyte_nolen(SV* sv) - -=for hackers -Found in file sv.h - -=item SvPVutf8 -X<SvPVutf8> - -Like C<SvPV>, but converts sv to utf8 first if necessary. - - char* SvPVutf8(SV* sv, STRLEN len) - -=for hackers -Found in file sv.h - -=item SvPVutf8x -X<SvPVutf8x> - -Like C<SvPV>, but converts sv to utf8 first if necessary. -Guarantees to evaluate sv only once; use the more efficient C<SvPVutf8> -otherwise. - - char* SvPVutf8x(SV* sv, STRLEN len) - -=for hackers -Found in file sv.h - -=item SvPVutf8x_force -X<SvPVutf8x_force> - -Like C<SvPV_force>, but converts sv to utf8 first if necessary. -Guarantees to evaluate sv only once; use the more efficient C<SvPVutf8_force> -otherwise. - - char* SvPVutf8x_force(SV* sv, STRLEN len) - -=for hackers -Found in file sv.h - -=item SvPVutf8_force -X<SvPVutf8_force> - -Like C<SvPV_force>, but converts sv to utf8 first if necessary. - - char* SvPVutf8_force(SV* sv, STRLEN len) - -=for hackers -Found in file sv.h - -=item SvPVutf8_nolen -X<SvPVutf8_nolen> - -Like C<SvPV_nolen>, but converts sv to utf8 first if necessary. - - char* SvPVutf8_nolen(SV* sv) - -=for hackers -Found in file sv.h - -=item SvPVX -X<SvPVX> - -Returns a pointer to the physical string in the SV. The SV must contain a -string. - - char* SvPVX(SV* sv) - -=for hackers -Found in file sv.h - -=item SvPVx -X<SvPVx> - -A version of C<SvPV> which guarantees to evaluate C<sv> only once. -Only use this if C<sv> is an expression with side effects, otherwise use the -more efficient C<SvPVX>. - - char* SvPVx(SV* sv, STRLEN len) - -=for hackers -Found in file sv.h - -=item SvPV_force -X<SvPV_force> - -Like C<SvPV> but will force the SV into containing just a string -(C<SvPOK_only>). You want force if you are going to update the C<SvPVX> -directly. - - char* SvPV_force(SV* sv, STRLEN len) - -=for hackers -Found in file sv.h - -=item SvPV_force_nomg -X<SvPV_force_nomg> - -Like C<SvPV> but will force the SV into containing just a string -(C<SvPOK_only>). You want force if you are going to update the C<SvPVX> -directly. Doesn't process magic. - - char* SvPV_force_nomg(SV* sv, STRLEN len) - -=for hackers -Found in file sv.h - -=item SvPV_nolen -X<SvPV_nolen> - -Returns a pointer to the string in the SV, or a stringified form of -the SV if the SV does not contain a string. The SV may cache the -stringified form becoming C<SvPOK>. Handles 'get' magic. - - char* SvPV_nolen(SV* sv) - -=for hackers -Found in file sv.h - -=item SvPV_nomg -X<SvPV_nomg> - -Like C<SvPV> but doesn't process magic. - - char* SvPV_nomg(SV* sv, STRLEN len) - -=for hackers -Found in file sv.h - -=item SvPV_set -X<SvPV_set> - -Set the value of the PV pointer in sv to val. See C<SvIV_set>. - - void SvPV_set(SV* sv, char* val) - -=for hackers -Found in file sv.h - -=item SvREFCNT -X<SvREFCNT> - -Returns the value of the object's reference count. - - U32 SvREFCNT(SV* sv) - -=for hackers -Found in file sv.h - -=item SvREFCNT_dec -X<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 -X<SvREFCNT_inc> - -Increments the reference count of the given SV. - -All of the following SvREFCNT_inc* macros are optimized versions of -SvREFCNT_inc, and can be replaced with SvREFCNT_inc. - - SV* SvREFCNT_inc(SV* sv) - -=for hackers -Found in file sv.h - -=item SvREFCNT_inc_NN -X<SvREFCNT_inc_NN> - -Same as SvREFCNT_inc, but can only be used if you know I<sv> -is not NULL. Since we don't have to check the NULLness, it's faster -and smaller. - - SV* SvREFCNT_inc_NN(SV* sv) - -=for hackers -Found in file sv.h - -=item SvREFCNT_inc_simple -X<SvREFCNT_inc_simple> - -Same as SvREFCNT_inc, but can only be used with expressions without side -effects. Since we don't have to store a temporary value, it's faster. - - SV* SvREFCNT_inc_simple(SV* sv) - -=for hackers -Found in file sv.h - -=item SvREFCNT_inc_simple_NN -X<SvREFCNT_inc_simple_NN> - -Same as SvREFCNT_inc_simple, but can only be used if you know I<sv> -is not NULL. Since we don't have to check the NULLness, it's faster -and smaller. - - SV* SvREFCNT_inc_simple_NN(SV* sv) - -=for hackers -Found in file sv.h - -=item SvREFCNT_inc_simple_void -X<SvREFCNT_inc_simple_void> - -Same as SvREFCNT_inc_simple, but can only be used if you don't need the -return value. The macro doesn't need to return a meaningful value. - - void SvREFCNT_inc_simple_void(SV* sv) - -=for hackers -Found in file sv.h - -=item SvREFCNT_inc_simple_void_NN -X<SvREFCNT_inc_simple_void_NN> - -Same as SvREFCNT_inc, but can only be used if you don't need the return -value, and you know that I<sv> is not NULL. The macro doesn't need -to return a meaningful value, or check for NULLness, so it's smaller -and faster. - - void SvREFCNT_inc_simple_void_NN(SV* sv) - -=for hackers -Found in file sv.h - -=item SvREFCNT_inc_void -X<SvREFCNT_inc_void> - -Same as SvREFCNT_inc, but can only be used if you don't need the -return value. The macro doesn't need to return a meaningful value. - - void SvREFCNT_inc_void(SV* sv) - -=for hackers -Found in file sv.h - -=item SvREFCNT_inc_void_NN -X<SvREFCNT_inc_void_NN> - -Same as SvREFCNT_inc, but can only be used if you don't need the return -value, and you know that I<sv> is not NULL. The macro doesn't need -to return a meaningful value, or check for NULLness, so it's smaller -and faster. - - void SvREFCNT_inc_void_NN(SV* sv) - -=for hackers -Found in file sv.h - -=item SvROK -X<SvROK> - -Tests if the SV is an RV. - - U32 SvROK(SV* sv) - -=for hackers -Found in file sv.h - -=item SvROK_off -X<SvROK_off> - -Unsets the RV status of an SV. - - void SvROK_off(SV* sv) - -=for hackers -Found in file sv.h - -=item SvROK_on -X<SvROK_on> - -Tells an SV that it is an RV. - - void SvROK_on(SV* sv) - -=for hackers -Found in file sv.h - -=item SvRV -X<SvRV> - -Dereferences an RV to return the SV. - - SV* SvRV(SV* sv) - -=for hackers -Found in file sv.h - -=item SvRV_set -X<SvRV_set> - -Set the value of the RV pointer in sv to val. See C<SvIV_set>. - - void SvRV_set(SV* sv, SV* val) - -=for hackers -Found in file sv.h - -=item SvSTASH -X<SvSTASH> - -Returns the stash of the SV. - - HV* SvSTASH(SV* sv) - -=for hackers -Found in file sv.h - -=item SvSTASH_set -X<SvSTASH_set> - -Set the value of the STASH pointer in sv to val. See C<SvIV_set>. - - void SvSTASH_set(SV* sv, HV* val) - -=for hackers -Found in file sv.h - -=item SvTAINT -X<SvTAINT> - -Taints an SV if tainting is enabled. - - void SvTAINT(SV* sv) - -=for hackers -Found in file sv.h - -=item SvTAINTED -X<SvTAINTED> - -Checks to see if an SV is tainted. Returns TRUE if it is, FALSE if -not. - - bool SvTAINTED(SV* sv) - -=for hackers -Found in file sv.h - -=item SvTAINTED_off -X<SvTAINTED_off> - -Untaints an SV. Be I<very> careful with this routine, as it short-circuits -some of Perl's fundamental security features. XS module authors should not -use this function unless they fully understand all the implications of -unconditionally untainting the value. Untainting should be done in the -standard perl fashion, via a carefully crafted regexp, rather than directly -untainting variables. - - void SvTAINTED_off(SV* sv) - -=for hackers -Found in file sv.h - -=item SvTAINTED_on -X<SvTAINTED_on> - -Marks an SV as tainted if tainting is enabled. - - void SvTAINTED_on(SV* sv) - -=for hackers -Found in file sv.h - -=item SvTRUE -X<SvTRUE> - -Returns a boolean indicating whether Perl would evaluate the SV as true or -false, defined or undefined. Does not handle 'get' magic. - - bool SvTRUE(SV* sv) - -=for hackers -Found in file sv.h - -=item SvTYPE -X<SvTYPE> - -Returns the type of the SV. See C<svtype>. - - svtype SvTYPE(SV* sv) - -=for hackers -Found in file sv.h - -=item SvUOK -X<SvUOK> - -Returns a boolean indicating whether the SV contains an unsigned integer. - - bool SvUOK(SV* sv) - -=for hackers -Found in file sv.h - -=item SvUPGRADE -X<SvUPGRADE> - -Used to upgrade an SV to a more complex form. Uses C<sv_upgrade> to -perform the upgrade if necessary. See C<svtype>. - - void SvUPGRADE(SV* sv, svtype type) - -=for hackers -Found in file sv.h - -=item SvUTF8 -X<SvUTF8> - -Returns a U32 value indicating whether the SV contains UTF-8 encoded data. -Call this after SvPV() in case any call to string overloading updates the -internal flag. - - U32 SvUTF8(SV* sv) - -=for hackers -Found in file sv.h - -=item SvUTF8_off -X<SvUTF8_off> - -Unsets the UTF-8 status of an SV. - - void SvUTF8_off(SV *sv) - -=for hackers -Found in file sv.h - -=item SvUTF8_on -X<SvUTF8_on> - -Turn on the UTF-8 status of an SV (the data is not changed, just the flag). -Do not use frivolously. - - void SvUTF8_on(SV *sv) - -=for hackers -Found in file sv.h - -=item SvUV -X<SvUV> - -Coerces the given SV to an unsigned integer and returns it. See C<SvUVx> -for a version which guarantees to evaluate sv only once. - - UV SvUV(SV* sv) - -=for hackers -Found in file sv.h - -=item SvUVX -X<SvUVX> - -Returns the raw value in the SV's UV slot, without checks or conversions. -Only use when you are sure SvIOK is true. See also C<SvUV()>. - - UV SvUVX(SV* sv) - -=for hackers -Found in file sv.h - -=item SvUVx -X<SvUVx> - -Coerces the given SV to an unsigned integer and returns it. Guarantees to -C<sv> only once. Only use this if C<sv> is an expression with side effects, -otherwise use the more efficient C<SvUV>. - - UV SvUVx(SV* sv) - -=for hackers -Found in file sv.h - -=item SvUV_nomg -X<SvUV_nomg> - -Like C<SvUV> but doesn't process magic. - - UV SvUV_nomg(SV* sv) - -=for hackers -Found in file sv.h - -=item SvUV_set -X<SvUV_set> - -Set the value of the UV pointer in sv to val. See C<SvIV_set>. - - void SvUV_set(SV* sv, UV val) - -=for hackers -Found in file sv.h - -=item SvVOK -X<SvVOK> - -Returns a boolean indicating whether the SV contains a v-string. - - bool SvVOK(SV* sv) - -=for hackers -Found in file sv.h - -=item sv_catpvn_nomg -X<sv_catpvn_nomg> - -Like C<sv_catpvn> but doesn't process magic. - - void sv_catpvn_nomg(SV* sv, const char* ptr, STRLEN len) - -=for hackers -Found in file sv.h - -=item sv_catsv_nomg -X<sv_catsv_nomg> - -Like C<sv_catsv> but doesn't process magic. - - void sv_catsv_nomg(SV* dsv, SV* ssv) - -=for hackers -Found in file sv.h - -=item sv_derived_from -X<sv_derived_from> - -Returns a boolean indicating whether the SV is derived from the specified class -I<at the C level>. To check derivation at the Perl level, call C<isa()> as a -normal Perl method. - - bool sv_derived_from(SV* sv, const char *const name) - -=for hackers -Found in file universal.c - -=item sv_does -X<sv_does> - -Returns a boolean indicating whether the SV performs a specific, named role. -The SV can be a Perl object or the name of a Perl class. - - bool sv_does(SV* sv, const char *const name) - -=for hackers -Found in file universal.c - -=item sv_report_used -X<sv_report_used> - -Dump the contents of all SVs not yet freed. (Debugging aid). - - void sv_report_used() - -=for hackers -Found in file sv.c - -=item sv_setsv_nomg -X<sv_setsv_nomg> - -Like C<sv_setsv> but doesn't process magic. - - void sv_setsv_nomg(SV* dsv, SV* ssv) - -=for hackers -Found in file sv.h - -=item sv_utf8_upgrade_nomg -X<sv_utf8_upgrade_nomg> - -Like sv_utf8_upgrade, but doesn't do magic on C<sv> - - STRLEN sv_utf8_upgrade_nomg(NN SV *sv) - -=for hackers -Found in file sv.h - - -=back - -=head1 SV-Body Allocation - -=over 8 - -=item looks_like_number -X<looks_like_number> - -Test if the content of an SV looks like a number (or is a number). -C<Inf> and C<Infinity> are treated as numbers (so will not issue a -non-numeric warning), even if your atof() doesn't grok them. - - I32 looks_like_number(SV *const sv) - -=for hackers -Found in file sv.c - -=item newRV_noinc -X<newRV_noinc> - -Creates an RV wrapper for an SV. The reference count for the original -SV is B<not> incremented. - - SV* newRV_noinc(SV *const sv) - -=for hackers -Found in file sv.c - -=item newSV -X<newSV> - -Creates a new SV. A non-zero C<len> parameter indicates the number of -bytes of preallocated string space the SV should have. An extra byte for a -trailing NUL is also reserved. (SvPOK is not set for the SV even if string -space is allocated.) The reference count for the new SV is set to 1. - -In 5.9.3, newSV() replaces the older NEWSV() API, and drops the first -parameter, I<x>, a debug aid which allowed callers to identify themselves. -This aid has been superseded by a new build option, PERL_MEM_LOG (see -L<perlhack/PERL_MEM_LOG>). The older API is still there for use in XS -modules supporting older perls. - - SV* newSV(const STRLEN len) - -=for hackers -Found in file sv.c - -=item newSVhek -X<newSVhek> - -Creates a new SV from the hash key structure. It will generate scalars that -point to the shared string table where possible. Returns a new (undefined) -SV if the hek is NULL. - - SV* newSVhek(const HEK *const hek) - -=for hackers -Found in file sv.c - -=item newSViv -X<newSViv> - -Creates a new SV and copies an integer into it. The reference count for the -SV is set to 1. - - SV* newSViv(const IV i) - -=for hackers -Found in file sv.c - -=item newSVnv -X<newSVnv> - -Creates a new SV and copies a floating point value into it. -The reference count for the SV is set to 1. - - SV* newSVnv(const NV n) - -=for hackers -Found in file sv.c - -=item newSVpv -X<newSVpv> - -Creates a new SV and copies a string into it. The reference count for the -SV is set to 1. If C<len> is zero, Perl will compute the length using -strlen(). For efficiency, consider using C<newSVpvn> instead. - - SV* newSVpv(const char *const s, const STRLEN len) - -=for hackers -Found in file sv.c - -=item newSVpvf -X<newSVpvf> - -Creates a new SV and initializes it with the string formatted like -C<sprintf>. - - SV* newSVpvf(const char *const pat, ...) - -=for hackers -Found in file sv.c - -=item newSVpvn -X<newSVpvn> - -Creates a new SV and copies a string into it. The reference count for the -SV is set to 1. Note that if C<len> is zero, Perl will create a zero length -string. You are responsible for ensuring that the source string is at least -C<len> bytes long. If the C<s> argument is NULL the new SV will be undefined. - - SV* newSVpvn(const char *const s, const STRLEN len) - -=for hackers -Found in file sv.c - -=item newSVpvn_flags -X<newSVpvn_flags> - -Creates a new SV and copies a string into it. The reference count for the -SV is set to 1. Note that if C<len> is zero, Perl will create a zero length -string. You are responsible for ensuring that the source string is at least -C<len> bytes long. If the C<s> argument is NULL the new SV will be undefined. -Currently the only flag bits accepted are C<SVf_UTF8> and C<SVs_TEMP>. -If C<SVs_TEMP> is set, then C<sv2mortal()> is called on the result before -returning. If C<SVf_UTF8> is set, then it will be set on the new SV. -C<newSVpvn_utf8()> is a convenience wrapper for this function, defined as - - #define newSVpvn_utf8(s, len, u) \ - newSVpvn_flags((s), (len), (u) ? SVf_UTF8 : 0) - - SV* newSVpvn_flags(const char *const s, const STRLEN len, const U32 flags) - -=for hackers -Found in file sv.c - -=item newSVpvn_share -X<newSVpvn_share> - -Creates a new SV with its SvPVX_const pointing to a shared string in the string -table. If the string does not already exist in the table, it is created -first. Turns on READONLY and FAKE. If the C<hash> parameter is non-zero, that -value is used; otherwise the hash is computed. The string's hash can be later -be retrieved from the SV with the C<SvSHARED_HASH()> macro. The idea here is -that as the string table is used for shared hash keys these strings will have -SvPVX_const == HeKEY and hash lookup will avoid string compare. - - SV* newSVpvn_share(const char* s, I32 len, U32 hash) - -=for hackers -Found in file sv.c - -=item newSVpvs -X<newSVpvs> - -Like C<newSVpvn>, but takes a literal string instead of a string/length pair. - - SV* newSVpvs(const char* s) - -=for hackers -Found in file handy.h - -=item newSVpvs_flags -X<newSVpvs_flags> - -Like C<newSVpvn_flags>, but takes a literal string instead of a string/length -pair. - - SV* newSVpvs_flags(const char* s, U32 flags) - -=for hackers -Found in file handy.h - -=item newSVpvs_share -X<newSVpvs_share> - -Like C<newSVpvn_share>, but takes a literal string instead of a string/length -pair and omits the hash parameter. - - SV* newSVpvs_share(const char* s) - -=for hackers -Found in file handy.h - -=item newSVrv -X<newSVrv> - -Creates a new SV for the RV, C<rv>, to point to. If C<rv> is not an RV then -it will be upgraded to one. If C<classname> is non-null then the new SV will -be blessed in the specified package. The new SV is returned and its -reference count is 1. - - SV* newSVrv(SV *const rv, const char *const classname) - -=for hackers -Found in file sv.c - -=item newSVsv -X<newSVsv> - -Creates a new SV which is an exact duplicate of the original SV. -(Uses C<sv_setsv>). - - SV* newSVsv(SV *const old) - -=for hackers -Found in file sv.c - -=item newSVuv -X<newSVuv> - -Creates a new SV and copies an unsigned integer into it. -The reference count for the SV is set to 1. - - SV* newSVuv(const UV u) - -=for hackers -Found in file sv.c - -=item newSV_type -X<newSV_type> - -Creates a new SV, of the type specified. The reference count for the new SV -is set to 1. - - SV* newSV_type(const svtype type) - -=for hackers -Found in file sv.c - -=item sv_2bool -X<sv_2bool> - -This function is only called on magical items, and is only used by -sv_true() or its macro equivalent. - - bool sv_2bool(SV *const sv) - -=for hackers -Found in file sv.c - -=item sv_2cv -X<sv_2cv> - -Using various gambits, try to get a CV from an SV; in addition, try if -possible to set C<*st> and C<*gvp> to the stash and GV associated with it. -The flags in C<lref> are passed to sv_fetchsv. - - CV* sv_2cv(SV* sv, HV **const st, GV **const gvp, const I32 lref) - -=for hackers -Found in file sv.c - -=item sv_2io -X<sv_2io> - -Using various gambits, try to get an IO from an SV: the IO slot if its a -GV; or the recursive result if we're an RV; or the IO slot of the symbol -named after the PV if we're a string. - - IO* sv_2io(SV *const sv) - -=for hackers -Found in file sv.c - -=item sv_2iv_flags -X<sv_2iv_flags> - -Return the integer value of an SV, doing any necessary string -conversion. If flags includes SV_GMAGIC, does an mg_get() first. -Normally used via the C<SvIV(sv)> and C<SvIVx(sv)> macros. - - IV sv_2iv_flags(SV *const sv, const I32 flags) - -=for hackers -Found in file sv.c - -=item sv_2mortal -X<sv_2mortal> - -Marks an existing SV as mortal. The SV will be destroyed "soon", either -by an explicit call to FREETMPS, or by an implicit call at places such as -statement boundaries. SvTEMP() is turned on which means that the SV's -string buffer can be "stolen" if this SV is copied. See also C<sv_newmortal> -and C<sv_mortalcopy>. - - SV* sv_2mortal(SV *const sv) - -=for hackers -Found in file sv.c - -=item sv_2nv -X<sv_2nv> - -Return the num value of an SV, doing any necessary string or integer -conversion, magic etc. Normally used via the C<SvNV(sv)> and C<SvNVx(sv)> -macros. - - NV sv_2nv(SV *const sv) - -=for hackers -Found in file sv.c - -=item sv_2pvbyte -X<sv_2pvbyte> - -Return a pointer to the byte-encoded representation of the SV, and set *lp -to its length. May cause the SV to be downgraded from UTF-8 as a -side-effect. - -Usually accessed via the C<SvPVbyte> macro. - - char* sv_2pvbyte(SV *const sv, STRLEN *const lp) - -=for hackers -Found in file sv.c - -=item sv_2pvutf8 -X<sv_2pvutf8> - -Return a pointer to the UTF-8-encoded representation of the SV, and set *lp -to its length. May cause the SV to be upgraded to UTF-8 as a side-effect. - -Usually accessed via the C<SvPVutf8> macro. - - char* sv_2pvutf8(SV *const sv, STRLEN *const lp) - -=for hackers -Found in file sv.c - -=item sv_2pv_flags -X<sv_2pv_flags> - -Returns a pointer to the string value of an SV, and sets *lp to its length. -If flags includes SV_GMAGIC, does an mg_get() first. Coerces sv to a string -if necessary. -Normally invoked via the C<SvPV_flags> macro. C<sv_2pv()> and C<sv_2pv_nomg> -usually end up here too. - - char* sv_2pv_flags(SV *const sv, STRLEN *const lp, const I32 flags) - -=for hackers -Found in file sv.c - -=item sv_2uv_flags -X<sv_2uv_flags> - -Return the unsigned integer value of an SV, doing any necessary string -conversion. If flags includes SV_GMAGIC, does an mg_get() first. -Normally used via the C<SvUV(sv)> and C<SvUVx(sv)> macros. - - UV sv_2uv_flags(SV *const sv, const I32 flags) - -=for hackers -Found in file sv.c - -=item sv_backoff -X<sv_backoff> - -Remove any string offset. You should normally use the C<SvOOK_off> macro -wrapper instead. - - int sv_backoff(SV *const sv) - -=for hackers -Found in file sv.c - -=item sv_bless -X<sv_bless> - -Blesses an SV into a specified package. The SV must be an RV. The package -must be designated by its stash (see C<gv_stashpv()>). The reference count -of the SV is unaffected. - - SV* sv_bless(SV *const sv, HV *const stash) - -=for hackers -Found in file sv.c - -=item sv_catpv -X<sv_catpv> - -Concatenates the string onto the end of the string which is in the SV. -If the SV has the UTF-8 status set, then the bytes appended should be -valid UTF-8. Handles 'get' magic, but not 'set' magic. See C<sv_catpv_mg>. - - void sv_catpv(SV *const sv, const char* ptr) - -=for hackers -Found in file sv.c - -=item sv_catpvf -X<sv_catpvf> - -Processes its arguments like C<sprintf> and appends the formatted -output to an SV. If the appended data contains "wide" characters -(including, but not limited to, SVs with a UTF-8 PV formatted with %s, -and characters >255 formatted with %c), the original SV might get -upgraded to UTF-8. Handles 'get' magic, but not 'set' magic. See -C<sv_catpvf_mg>. If the original SV was UTF-8, the pattern should be -valid UTF-8; if the original SV was bytes, the pattern should be too. - - void sv_catpvf(SV *const sv, const char *const pat, ...) - -=for hackers -Found in file sv.c - -=item sv_catpvf_mg -X<sv_catpvf_mg> - -Like C<sv_catpvf>, but also handles 'set' magic. - - void sv_catpvf_mg(SV *const sv, const char *const pat, ...) - -=for hackers -Found in file sv.c - -=item sv_catpvn -X<sv_catpvn> - -Concatenates the string onto the end of the string which is in the SV. The -C<len> indicates number of bytes to copy. If the SV has the UTF-8 -status set, then the bytes appended should be valid UTF-8. -Handles 'get' magic, but not 'set' magic. See C<sv_catpvn_mg>. - - void sv_catpvn(SV *dsv, const char *sstr, STRLEN len) - -=for hackers -Found in file sv.c - -=item sv_catpvn_flags -X<sv_catpvn_flags> - -Concatenates the string onto the end of the string which is in the SV. The -C<len> indicates number of bytes to copy. If the SV has the UTF-8 -status set, then the bytes appended should be valid UTF-8. -If C<flags> has C<SV_GMAGIC> bit set, will C<mg_get> on C<dsv> if -appropriate, else not. C<sv_catpvn> and C<sv_catpvn_nomg> are implemented -in terms of this function. - - void sv_catpvn_flags(SV *const dstr, const char *sstr, const STRLEN len, const I32 flags) - -=for hackers -Found in file sv.c - -=item sv_catpvs -X<sv_catpvs> - -Like C<sv_catpvn>, but takes a literal string instead of a string/length pair. - - void sv_catpvs(SV* sv, const char* s) - -=for hackers -Found in file handy.h - -=item sv_catpv_mg -X<sv_catpv_mg> - -Like C<sv_catpv>, but also handles 'set' magic. - - void sv_catpv_mg(SV *const sv, const char *const ptr) - -=for hackers -Found in file sv.c - -=item sv_catsv -X<sv_catsv> - -Concatenates the string from SV C<ssv> onto the end of the string in -SV C<dsv>. Modifies C<dsv> but not C<ssv>. Handles 'get' magic, but -not 'set' magic. See C<sv_catsv_mg>. - - void sv_catsv(SV *dstr, SV *sstr) - -=for hackers -Found in file sv.c - -=item sv_catsv_flags -X<sv_catsv_flags> - -Concatenates the string from SV C<ssv> onto the end of the string in -SV C<dsv>. Modifies C<dsv> but not C<ssv>. If C<flags> has C<SV_GMAGIC> -bit set, will C<mg_get> on the SVs if appropriate, else not. C<sv_catsv> -and C<sv_catsv_nomg> are implemented in terms of this function. - - void sv_catsv_flags(SV *const dsv, SV *const ssv, const I32 flags) - -=for hackers -Found in file sv.c - -=item sv_chop -X<sv_chop> - -Efficient removal of characters from the beginning of the string buffer. -SvPOK(sv) must be true and the C<ptr> must be a pointer to somewhere inside -the string buffer. The C<ptr> becomes the first character of the adjusted -string. Uses the "OOK hack". -Beware: after this function returns, C<ptr> and SvPVX_const(sv) may no longer -refer to the same chunk of data. - - void sv_chop(SV *const sv, const char *const ptr) - -=for hackers -Found in file sv.c - -=item sv_clear -X<sv_clear> - -Clear an SV: call any destructors, free up any memory used by the body, -and free the body itself. The SV's head is I<not> freed, although -its type is set to all 1's so that it won't inadvertently be assumed -to be live during global destruction etc. -This function should only be called when REFCNT is zero. Most of the time -you'll want to call C<sv_free()> (or its macro wrapper C<SvREFCNT_dec>) -instead. - - void sv_clear(SV *const sv) - -=for hackers -Found in file sv.c - -=item sv_cmp -X<sv_cmp> - -Compares the strings in two SVs. Returns -1, 0, or 1 indicating whether the -string in C<sv1> is less than, equal to, or greater than the string in -C<sv2>. Is UTF-8 and 'use bytes' aware, handles get magic, and will -coerce its args to strings if necessary. See also C<sv_cmp_locale>. - - I32 sv_cmp(SV *const sv1, SV *const sv2) - -=for hackers -Found in file sv.c - -=item sv_cmp_locale -X<sv_cmp_locale> - -Compares the strings in two SVs in a locale-aware manner. Is UTF-8 and -'use bytes' aware, handles get magic, and will coerce its args to strings -if necessary. See also C<sv_cmp>. - - I32 sv_cmp_locale(SV *const sv1, SV *const sv2) - -=for hackers -Found in file sv.c - -=item sv_collxfrm -X<sv_collxfrm> - -Add Collate Transform magic to an SV if it doesn't already have it. - -Any scalar variable may carry PERL_MAGIC_collxfrm magic that contains the -scalar data of the variable, but transformed to such a format that a normal -memory comparison can be used to compare the data according to the locale -settings. - - char* sv_collxfrm(SV *const sv, STRLEN *const nxp) - -=for hackers -Found in file sv.c - -=item sv_copypv -X<sv_copypv> - -Copies a stringified representation of the source SV into the -destination SV. Automatically performs any necessary mg_get and -coercion of numeric values into strings. Guaranteed to preserve -UTF8 flag even from overloaded objects. Similar in nature to -sv_2pv[_flags] but operates directly on an SV instead of just the -string. Mostly uses sv_2pv_flags to do its work, except when that -would lose the UTF-8'ness of the PV. - - void sv_copypv(SV *const dsv, SV *const ssv) - -=for hackers -Found in file sv.c - -=item sv_dec -X<sv_dec> - -Auto-decrement of the value in the SV, doing string to numeric conversion -if necessary. Handles 'get' magic. - - void sv_dec(SV *const sv) - -=for hackers -Found in file sv.c - -=item sv_eq -X<sv_eq> - -Returns a boolean indicating whether the strings in the two SVs are -identical. Is UTF-8 and 'use bytes' aware, handles get magic, and will -coerce its args to strings if necessary. - - I32 sv_eq(SV* sv1, SV* sv2) - -=for hackers -Found in file sv.c - -=item sv_force_normal_flags -X<sv_force_normal_flags> - -Undo various types of fakery on an SV: if the PV is a shared string, make -a private copy; if we're a ref, stop refing; if we're a glob, downgrade to -an xpvmg; if we're a copy-on-write scalar, this is the on-write time when -we do the copy, and is also used locally. If C<SV_COW_DROP_PV> is set -then a copy-on-write scalar drops its PV buffer (if any) and becomes -SvPOK_off rather than making a copy. (Used where this scalar is about to be -set to some other value.) In addition, the C<flags> parameter gets passed to -C<sv_unref_flags()> when unrefing. C<sv_force_normal> calls this function -with flags set to 0. - - void sv_force_normal_flags(SV *const sv, const U32 flags) - -=for hackers -Found in file sv.c - -=item sv_free -X<sv_free> - -Decrement an SV's reference count, and if it drops to zero, call -C<sv_clear> to invoke destructors and free up any memory used by -the body; finally, deallocate the SV's head itself. -Normally called via a wrapper macro C<SvREFCNT_dec>. - - void sv_free(SV *const sv) - -=for hackers -Found in file sv.c - -=item sv_gets -X<sv_gets> - -Get a line from the filehandle and store it into the SV, optionally -appending to the currently-stored string. - - char* sv_gets(SV *const sv, PerlIO *const fp, I32 append) - -=for hackers -Found in file sv.c - -=item sv_grow -X<sv_grow> - -Expands the character buffer in the SV. If necessary, uses C<sv_unref> and -upgrades the SV to C<SVt_PV>. Returns a pointer to the character buffer. -Use the C<SvGROW> wrapper instead. - - char* sv_grow(SV *const sv, STRLEN newlen) - -=for hackers -Found in file sv.c - -=item sv_inc -X<sv_inc> - -Auto-increment of the value in the SV, doing string to numeric conversion -if necessary. Handles 'get' magic. - - void sv_inc(SV *const sv) - -=for hackers -Found in file sv.c - -=item sv_insert -X<sv_insert> - -Inserts a string at the specified offset/length within the SV. Similar to -the Perl substr() function. Handles get magic. - - void sv_insert(SV *const bigstr, const STRLEN offset, const STRLEN len, const char *const little, const STRLEN littlelen) - -=for hackers -Found in file sv.c - -=item sv_insert_flags -X<sv_insert_flags> - -Same as C<sv_insert>, but the extra C<flags> are passed the C<SvPV_force_flags> that applies to C<bigstr>. - - void sv_insert_flags(SV *const bigstr, const STRLEN offset, const STRLEN len, const char *const little, const STRLEN littlelen, const U32 flags) - -=for hackers -Found in file sv.c - -=item sv_isa -X<sv_isa> - -Returns a boolean indicating whether the SV is blessed into the specified -class. This does not check for subtypes; use C<sv_derived_from> to verify -an inheritance relationship. - - int sv_isa(SV* sv, const char *const name) - -=for hackers -Found in file sv.c - -=item sv_isobject -X<sv_isobject> - -Returns a boolean indicating whether the SV is an RV pointing to a blessed -object. If the SV is not an RV, or if the object is not blessed, then this -will return false. - - int sv_isobject(SV* sv) - -=for hackers -Found in file sv.c - -=item sv_len -X<sv_len> - -Returns the length of the string in the SV. Handles magic and type -coercion. See also C<SvCUR>, which gives raw access to the xpv_cur slot. - - STRLEN sv_len(SV *const sv) - -=for hackers -Found in file sv.c - -=item sv_len_utf8 -X<sv_len_utf8> - -Returns the number of characters in the string in an SV, counting wide -UTF-8 bytes as a single character. Handles magic and type coercion. - - STRLEN sv_len_utf8(SV *const sv) - -=for hackers -Found in file sv.c - -=item sv_magic -X<sv_magic> - -Adds magic to an SV. First upgrades C<sv> to type C<SVt_PVMG> if necessary, -then adds a new magic item of type C<how> to the head of the magic list. - -See C<sv_magicext> (which C<sv_magic> now calls) for a description of the -handling of the C<name> and C<namlen> arguments. - -You need to use C<sv_magicext> to add magic to SvREADONLY SVs and also -to add more than one instance of the same 'how'. - - void sv_magic(SV *const sv, SV *const obj, const int how, const char *const name, const I32 namlen) - -=for hackers -Found in file sv.c - -=item sv_magicext -X<sv_magicext> - -Adds magic to an SV, upgrading it if necessary. Applies the -supplied vtable and returns a pointer to the magic added. - -Note that C<sv_magicext> will allow things that C<sv_magic> will not. -In particular, you can add magic to SvREADONLY SVs, and add more than -one instance of the same 'how'. - -If C<namlen> is greater than zero then a C<savepvn> I<copy> of C<name> is -stored, if C<namlen> is zero then C<name> is stored as-is and - as another -special case - if C<(name && namlen == HEf_SVKEY)> then C<name> is assumed -to contain an C<SV*> and is stored as-is with its REFCNT incremented. - -(This is now used as a subroutine by C<sv_magic>.) - - MAGIC * sv_magicext(SV *const sv, SV *const obj, const int how, const MGVTBL *const vtbl, const char *const name, const I32 namlen) - -=for hackers -Found in file sv.c - -=item sv_mortalcopy -X<sv_mortalcopy> - -Creates a new SV which is a copy of the original SV (using C<sv_setsv>). -The new SV is marked as mortal. It will be destroyed "soon", either by an -explicit call to FREETMPS, or by an implicit call at places such as -statement boundaries. See also C<sv_newmortal> and C<sv_2mortal>. - - SV* sv_mortalcopy(SV *const oldsv) - -=for hackers -Found in file sv.c - -=item sv_newmortal -X<sv_newmortal> - -Creates a new null SV which is mortal. The reference count of the SV is -set to 1. It will be destroyed "soon", either by an explicit call to -FREETMPS, or by an implicit call at places such as statement boundaries. -See also C<sv_mortalcopy> and C<sv_2mortal>. - - SV* sv_newmortal() - -=for hackers -Found in file sv.c - -=item sv_newref -X<sv_newref> - -Increment an SV's reference count. Use the C<SvREFCNT_inc()> wrapper -instead. - - SV* sv_newref(SV *const sv) - -=for hackers -Found in file sv.c - -=item sv_pos_b2u -X<sv_pos_b2u> - -Converts the value pointed to by offsetp from a count of bytes from the -start of the string, to a count of the equivalent number of UTF-8 chars. -Handles magic and type coercion. - - void sv_pos_b2u(SV *const sv, I32 *const offsetp) - -=for hackers -Found in file sv.c - -=item sv_pos_u2b -X<sv_pos_u2b> - -Converts the value pointed to by offsetp from a count of UTF-8 chars from -the start of the string, to a count of the equivalent number of bytes; if -lenp is non-zero, it does the same to lenp, but this time starting from -the offset, rather than from the start of the string. Handles magic and -type coercion. - - void sv_pos_u2b(SV *const sv, I32 *const offsetp, I32 *const lenp) - -=for hackers -Found in file sv.c - -=item sv_pvbyten_force -X<sv_pvbyten_force> - -The backend for the C<SvPVbytex_force> macro. Always use the macro instead. - - char* sv_pvbyten_force(SV *const sv, STRLEN *const lp) - -=for hackers -Found in file sv.c - -=item sv_pvn_force -X<sv_pvn_force> - -Get a sensible string out of the SV somehow. -A private implementation of the C<SvPV_force> macro for compilers which -can't cope with complex macro expressions. Always use the macro instead. - - char* sv_pvn_force(SV* sv, STRLEN* lp) - -=for hackers -Found in file sv.c - -=item sv_pvn_force_flags -X<sv_pvn_force_flags> - -Get a sensible string out of the SV somehow. -If C<flags> has C<SV_GMAGIC> bit set, will C<mg_get> on C<sv> if -appropriate, else not. C<sv_pvn_force> and C<sv_pvn_force_nomg> are -implemented in terms of this function. -You normally want to use the various wrapper macros instead: see -C<SvPV_force> and C<SvPV_force_nomg> - - char* sv_pvn_force_flags(SV *const sv, STRLEN *const lp, const I32 flags) - -=for hackers -Found in file sv.c - -=item sv_pvutf8n_force -X<sv_pvutf8n_force> - -The backend for the C<SvPVutf8x_force> macro. Always use the macro instead. - - char* sv_pvutf8n_force(SV *const sv, STRLEN *const lp) - -=for hackers -Found in file sv.c - -=item sv_reftype -X<sv_reftype> - -Returns a string describing what the SV is a reference to. - - const char* sv_reftype(const SV *const sv, const int ob) - -=for hackers -Found in file sv.c - -=item sv_replace -X<sv_replace> - -Make the first argument a copy of the second, then delete the original. -The target SV physically takes over ownership of the body of the source SV -and inherits its flags; however, the target keeps any magic it owns, -and any magic in the source is discarded. -Note that this is a rather specialist SV copying operation; most of the -time you'll want to use C<sv_setsv> or one of its many macro front-ends. - - void sv_replace(SV *const sv, SV *const nsv) - -=for hackers -Found in file sv.c - -=item sv_reset -X<sv_reset> - -Underlying implementation for the C<reset> Perl function. -Note that the perl-level function is vaguely deprecated. - - void sv_reset(const char* s, HV *const stash) - -=for hackers -Found in file sv.c - -=item sv_rvweaken -X<sv_rvweaken> - -Weaken a reference: set the C<SvWEAKREF> flag on this RV; give the -referred-to SV C<PERL_MAGIC_backref> magic if it hasn't already; and -push a back-reference to this RV onto the array of backreferences -associated with that magic. If the RV is magical, set magic will be -called after the RV is cleared. - - SV* sv_rvweaken(SV *const sv) - -=for hackers -Found in file sv.c - -=item sv_setiv -X<sv_setiv> - -Copies an integer into the given SV, upgrading first if necessary. -Does not handle 'set' magic. See also C<sv_setiv_mg>. - - void sv_setiv(SV *const sv, const IV num) - -=for hackers -Found in file sv.c - -=item sv_setiv_mg -X<sv_setiv_mg> - -Like C<sv_setiv>, but also handles 'set' magic. - - void sv_setiv_mg(SV *const sv, const IV i) - -=for hackers -Found in file sv.c - -=item sv_setnv -X<sv_setnv> - -Copies a double into the given SV, upgrading first if necessary. -Does not handle 'set' magic. See also C<sv_setnv_mg>. - - void sv_setnv(SV *const sv, const NV num) - -=for hackers -Found in file sv.c - -=item sv_setnv_mg -X<sv_setnv_mg> - -Like C<sv_setnv>, but also handles 'set' magic. - - void sv_setnv_mg(SV *const sv, const NV num) - -=for hackers -Found in file sv.c - -=item sv_setpv -X<sv_setpv> - -Copies a string into an SV. The string must be null-terminated. Does not -handle 'set' magic. See C<sv_setpv_mg>. - - void sv_setpv(SV *const sv, const char *const ptr) - -=for hackers -Found in file sv.c - -=item sv_setpvf -X<sv_setpvf> - -Works like C<sv_catpvf> but copies the text into the SV instead of -appending it. Does not handle 'set' magic. See C<sv_setpvf_mg>. - - void sv_setpvf(SV *const sv, const char *const pat, ...) - -=for hackers -Found in file sv.c - -=item sv_setpvf_mg -X<sv_setpvf_mg> - -Like C<sv_setpvf>, but also handles 'set' magic. - - void sv_setpvf_mg(SV *const sv, const char *const pat, ...) - -=for hackers -Found in file sv.c - -=item sv_setpviv -X<sv_setpviv> - -Copies an integer into the given SV, also updating its string value. -Does not handle 'set' magic. See C<sv_setpviv_mg>. - - void sv_setpviv(SV *const sv, const IV num) - -=for hackers -Found in file sv.c - -=item sv_setpviv_mg -X<sv_setpviv_mg> - -Like C<sv_setpviv>, but also handles 'set' magic. - - void sv_setpviv_mg(SV *const sv, const IV iv) - -=for hackers -Found in file sv.c - -=item sv_setpvn -X<sv_setpvn> - -Copies a string into an SV. The C<len> parameter indicates the number of -bytes to be copied. If the C<ptr> argument is NULL the SV will become -undefined. Does not handle 'set' magic. See C<sv_setpvn_mg>. - - void sv_setpvn(SV *const sv, const char *const ptr, const STRLEN len) - -=for hackers -Found in file sv.c - -=item sv_setpvn_mg -X<sv_setpvn_mg> - -Like C<sv_setpvn>, but also handles 'set' magic. - - void sv_setpvn_mg(SV *const sv, const char *const ptr, const STRLEN len) - -=for hackers -Found in file sv.c - -=item sv_setpvs -X<sv_setpvs> - -Like C<sv_setpvn>, but takes a literal string instead of a string/length pair. - - void sv_setpvs(SV* sv, const char* s) - -=for hackers -Found in file handy.h - -=item sv_setpv_mg -X<sv_setpv_mg> - -Like C<sv_setpv>, but also handles 'set' magic. - - void sv_setpv_mg(SV *const sv, const char *const ptr) - -=for hackers -Found in file sv.c - -=item sv_setref_iv -X<sv_setref_iv> - -Copies an integer into a new SV, optionally blessing the SV. The C<rv> -argument will be upgraded to an RV. That RV will be modified to point to -the new SV. The C<classname> argument indicates the package for the -blessing. Set C<classname> to C<NULL> to avoid the blessing. The new SV -will have a reference count of 1, and the RV will be returned. - - SV* sv_setref_iv(SV *const rv, const char *const classname, const IV iv) - -=for hackers -Found in file sv.c - -=item sv_setref_nv -X<sv_setref_nv> - -Copies a double into a new SV, optionally blessing the SV. The C<rv> -argument will be upgraded to an RV. That RV will be modified to point to -the new SV. The C<classname> argument indicates the package for the -blessing. Set C<classname> to C<NULL> to avoid the blessing. The new SV -will have a reference count of 1, and the RV will be returned. - - SV* sv_setref_nv(SV *const rv, const char *const classname, const NV nv) - -=for hackers -Found in file sv.c - -=item sv_setref_pv -X<sv_setref_pv> - -Copies a pointer into a new SV, optionally blessing the SV. The C<rv> -argument will be upgraded to an RV. That RV will be modified to point to -the new SV. If the C<pv> argument is NULL then C<PL_sv_undef> will be placed -into the SV. The C<classname> argument indicates the package for the -blessing. Set C<classname> to C<NULL> to avoid the blessing. The new SV -will have a reference count of 1, and the RV will be returned. - -Do not use with other Perl types such as HV, AV, SV, CV, because those -objects will become corrupted by the pointer copy process. - -Note that C<sv_setref_pvn> copies the string while this copies the pointer. - - SV* sv_setref_pv(SV *const rv, const char *const classname, void *const pv) - -=for hackers -Found in file sv.c - -=item sv_setref_pvn -X<sv_setref_pvn> - -Copies a string into a new SV, optionally blessing the SV. The length of the -string must be specified with C<n>. The C<rv> argument will be upgraded to -an RV. That RV will be modified to point to the new SV. The C<classname> -argument indicates the package for the blessing. Set C<classname> to -C<NULL> to avoid the blessing. The new SV will have a reference count -of 1, and the RV will be returned. - -Note that C<sv_setref_pv> copies the pointer while this copies the string. - - SV* sv_setref_pvn(SV *const rv, const char *const classname, const char *const pv, const STRLEN n) - -=for hackers -Found in file sv.c - -=item sv_setref_uv -X<sv_setref_uv> - -Copies an unsigned integer into a new SV, optionally blessing the SV. The C<rv> -argument will be upgraded to an RV. That RV will be modified to point to -the new SV. The C<classname> argument indicates the package for the -blessing. Set C<classname> to C<NULL> to avoid the blessing. The new SV -will have a reference count of 1, and the RV will be returned. - - SV* sv_setref_uv(SV *const rv, const char *const classname, const UV uv) - -=for hackers -Found in file sv.c - -=item sv_setsv -X<sv_setsv> - -Copies the contents of the source SV C<ssv> into the destination SV -C<dsv>. The source SV may be destroyed if it is mortal, so don't use this -function if the source SV needs to be reused. Does not handle 'set' magic. -Loosely speaking, it performs a copy-by-value, obliterating any previous -content of the destination. - -You probably want to use one of the assortment of wrappers, such as -C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and -C<SvSetMagicSV_nosteal>. - - void sv_setsv(SV *dstr, SV *sstr) - -=for hackers -Found in file sv.c - -=item sv_setsv_flags -X<sv_setsv_flags> - -Copies the contents of the source SV C<ssv> into the destination SV -C<dsv>. The source SV may be destroyed if it is mortal, so don't use this -function if the source SV needs to be reused. Does not handle 'set' magic. -Loosely speaking, it performs a copy-by-value, obliterating any previous -content of the destination. -If the C<flags> parameter has the C<SV_GMAGIC> bit set, will C<mg_get> on -C<ssv> if appropriate, else not. If the C<flags> parameter has the -C<NOSTEAL> bit set then the buffers of temps will not be stolen. <sv_setsv> -and C<sv_setsv_nomg> are implemented in terms of this function. - -You probably want to use one of the assortment of wrappers, such as -C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and -C<SvSetMagicSV_nosteal>. - -This is the primary function for copying scalars, and most other -copy-ish functions and macros use this underneath. - - void sv_setsv_flags(SV *dstr, SV *sstr, const I32 flags) - -=for hackers -Found in file sv.c - -=item sv_setsv_mg -X<sv_setsv_mg> - -Like C<sv_setsv>, but also handles 'set' magic. - - void sv_setsv_mg(SV *const dstr, SV *const sstr) - -=for hackers -Found in file sv.c - -=item sv_setuv -X<sv_setuv> - -Copies an unsigned integer into the given SV, upgrading first if necessary. -Does not handle 'set' magic. See also C<sv_setuv_mg>. - - void sv_setuv(SV *const sv, const UV num) - -=for hackers -Found in file sv.c - -=item sv_setuv_mg -X<sv_setuv_mg> - -Like C<sv_setuv>, but also handles 'set' magic. - - void sv_setuv_mg(SV *const sv, const UV u) - -=for hackers -Found in file sv.c - -=item sv_tainted -X<sv_tainted> - -Test an SV for taintedness. Use C<SvTAINTED> instead. - bool sv_tainted(SV *const sv) - -=for hackers -Found in file sv.c - -=item sv_true -X<sv_true> - -Returns true if the SV has a true value by Perl's rules. -Use the C<SvTRUE> macro instead, which may call C<sv_true()> or may -instead use an in-line version. - - I32 sv_true(SV *const sv) - -=for hackers -Found in file sv.c - -=item sv_unmagic -X<sv_unmagic> - -Removes all magic of type C<type> from an SV. - - int sv_unmagic(SV *const sv, const int type) - -=for hackers -Found in file sv.c - -=item sv_unref_flags -X<sv_unref_flags> - -Unsets the RV status of the SV, and decrements the reference count of -whatever was being referenced by the RV. This can almost be thought of -as a reversal of C<newSVrv>. The C<cflags> argument can contain -C<SV_IMMEDIATE_UNREF> to force the reference count to be decremented -(otherwise the decrementing is conditional on the reference count being -different from one or the reference being a readonly SV). -See C<SvROK_off>. - - void sv_unref_flags(SV *const ref, const U32 flags) - -=for hackers -Found in file sv.c - -=item sv_untaint -X<sv_untaint> - -Untaint an SV. Use C<SvTAINTED_off> instead. - void sv_untaint(SV *const sv) - -=for hackers -Found in file sv.c - -=item sv_upgrade -X<sv_upgrade> - -Upgrade an SV to a more complex form. Generally adds a new body type to the -SV, then copies across as much information as possible from the old body. -You generally want to use the C<SvUPGRADE> macro wrapper. See also C<svtype>. - - void sv_upgrade(SV *const sv, svtype new_type) - -=for hackers -Found in file sv.c - -=item sv_usepvn_flags -X<sv_usepvn_flags> - -Tells an SV to use C<ptr> to find its string value. Normally the -string is stored inside the SV but sv_usepvn allows the SV to use an -outside string. The C<ptr> should point to memory that was allocated -by C<malloc>. The string length, C<len>, must be supplied. By default -this function will realloc (i.e. move) the memory pointed to by C<ptr>, -so that pointer should not be freed or used by the programmer after -giving it to sv_usepvn, and neither should any pointers from "behind" -that pointer (e.g. ptr + 1) be used. - -If C<flags> & SV_SMAGIC is true, will call SvSETMAGIC. If C<flags> & -SV_HAS_TRAILING_NUL is true, then C<ptr[len]> must be NUL, and the realloc -will be skipped. (i.e. the buffer is actually at least 1 byte longer than -C<len>, and already meets the requirements for storing in C<SvPVX>) - - void sv_usepvn_flags(SV *const sv, char* ptr, const STRLEN len, const U32 flags) - -=for hackers -Found in file sv.c - -=item sv_utf8_decode -X<sv_utf8_decode> - -If the PV of the SV is an octet sequence in UTF-8 -and contains a multiple-byte character, the C<SvUTF8> flag is turned on -so that it looks like a character. If the PV contains only single-byte -characters, the C<SvUTF8> flag stays being off. -Scans PV for validity and returns false if the PV is invalid UTF-8. - -NOTE: this function is experimental and may change or be -removed without notice. - - bool sv_utf8_decode(SV *const sv) - -=for hackers -Found in file sv.c - -=item sv_utf8_downgrade -X<sv_utf8_downgrade> - -Attempts to convert the PV of an SV from characters to bytes. -If the PV contains a character that cannot fit -in a byte, this conversion will fail; -in this case, either returns false or, if C<fail_ok> is not -true, croaks. - -This is not as a general purpose Unicode to byte encoding interface: -use the Encode extension for that. - -NOTE: this function is experimental and may change or be -removed without notice. - - bool sv_utf8_downgrade(SV *const sv, const bool fail_ok) - -=for hackers -Found in file sv.c - -=item sv_utf8_encode -X<sv_utf8_encode> - -Converts the PV of an SV to UTF-8, but then turns the C<SvUTF8> -flag off so that it looks like octets again. - - void sv_utf8_encode(SV *const sv) - -=for hackers -Found in file sv.c - -=item sv_utf8_upgrade -X<sv_utf8_upgrade> - -Converts the PV of an SV to its UTF-8-encoded form. -Forces the SV to string form if it is not already. -Will C<mg_get> on C<sv> if appropriate. -Always sets the SvUTF8 flag to avoid future validity checks even -if the whole string is the same in UTF-8 as not. -Returns the number of bytes in the converted string - -This is not as a general purpose byte encoding to Unicode interface: -use the Encode extension for that. - - STRLEN sv_utf8_upgrade(SV *sv) - -=for hackers -Found in file sv.c - -=item sv_utf8_upgrade_flags -X<sv_utf8_upgrade_flags> - -Converts the PV of an SV to its UTF-8-encoded form. -Forces the SV to string form if it is not already. -Always sets the SvUTF8 flag to avoid future validity checks even -if all the bytes are invariant in UTF-8. If C<flags> has C<SV_GMAGIC> bit set, -will C<mg_get> on C<sv> if appropriate, else not. -Returns the number of bytes in the converted string -C<sv_utf8_upgrade> and -C<sv_utf8_upgrade_nomg> are implemented in terms of this function. - -This is not as a general purpose byte encoding to Unicode interface: -use the Encode extension for that. - - STRLEN sv_utf8_upgrade_flags(SV *const sv, const I32 flags) - -=for hackers -Found in file sv.c - -=item sv_utf8_upgrade_nomg -X<sv_utf8_upgrade_nomg> - -Like sv_utf8_upgrade, but doesn't do magic on C<sv> - - STRLEN sv_utf8_upgrade_nomg(SV *sv) - -=for hackers -Found in file sv.c - -=item sv_vcatpvf -X<sv_vcatpvf> - -Processes its arguments like C<vsprintf> and appends the formatted output -to an SV. Does not handle 'set' magic. See C<sv_vcatpvf_mg>. - -Usually used via its frontend C<sv_catpvf>. - - void sv_vcatpvf(SV *const sv, const char *const pat, va_list *const args) - -=for hackers -Found in file sv.c - -=item sv_vcatpvfn -X<sv_vcatpvfn> - -Processes its arguments like C<vsprintf> and appends the formatted output -to an SV. Uses an array of SVs if the C style variable argument list is -missing (NULL). When running with taint checks enabled, indicates via -C<maybe_tainted> if results are untrustworthy (often due to the use of -locales). - -Usually used via one of its frontends C<sv_vcatpvf> and C<sv_vcatpvf_mg>. - - void sv_vcatpvfn(SV *const sv, const char *const pat, const STRLEN patlen, va_list *const args, SV **const svargs, const I32 svmax, bool *const maybe_tainted) - -=for hackers -Found in file sv.c - -=item sv_vcatpvf_mg -X<sv_vcatpvf_mg> - -Like C<sv_vcatpvf>, but also handles 'set' magic. - -Usually used via its frontend C<sv_catpvf_mg>. - - void sv_vcatpvf_mg(SV *const sv, const char *const pat, va_list *const args) - -=for hackers -Found in file sv.c - -=item sv_vsetpvf -X<sv_vsetpvf> - -Works like C<sv_vcatpvf> but copies the text into the SV instead of -appending it. Does not handle 'set' magic. See C<sv_vsetpvf_mg>. - -Usually used via its frontend C<sv_setpvf>. - - void sv_vsetpvf(SV *const sv, const char *const pat, va_list *const args) - -=for hackers -Found in file sv.c - -=item sv_vsetpvfn -X<sv_vsetpvfn> - -Works like C<sv_vcatpvfn> but copies the text into the SV instead of -appending it. - -Usually used via one of its frontends C<sv_vsetpvf> and C<sv_vsetpvf_mg>. - - void sv_vsetpvfn(SV *const sv, const char *const pat, const STRLEN patlen, va_list *const args, SV **const svargs, const I32 svmax, bool *const maybe_tainted) - -=for hackers -Found in file sv.c - -=item sv_vsetpvf_mg -X<sv_vsetpvf_mg> - -Like C<sv_vsetpvf>, but also handles 'set' magic. - -Usually used via its frontend C<sv_setpvf_mg>. - - void sv_vsetpvf_mg(SV *const sv, const char *const pat, va_list *const args) - -=for hackers -Found in file sv.c - - -=back - -=head1 Unicode Support - -=over 8 - -=item bytes_from_utf8 -X<bytes_from_utf8> - -Converts a string C<s> of length C<len> from UTF-8 into native byte encoding. -Unlike C<utf8_to_bytes> but like C<bytes_to_utf8>, returns a pointer to -the newly-created string, and updates C<len> to contain the new -length. Returns the original string if no conversion occurs, C<len> -is unchanged. Do nothing if C<is_utf8> points to 0. Sets C<is_utf8> to -0 if C<s> is converted or consisted entirely of characters that are invariant -in utf8 (i.e., US-ASCII on non-EBCDIC machines). - -NOTE: this function is experimental and may change or be -removed without notice. - - U8* bytes_from_utf8(const U8 *s, STRLEN *len, bool *is_utf8) - -=for hackers -Found in file utf8.c - -=item bytes_to_utf8 -X<bytes_to_utf8> - -Converts a string C<s> of length C<len> from the native encoding into UTF-8. -Returns a pointer to the newly-created string, and sets C<len> to -reflect the new length. - -A NUL character will be written after the end of the string. - -If you want to convert to UTF-8 from encodings other than -the native (Latin1 or EBCDIC), -see sv_recode_to_utf8(). - -NOTE: this function is experimental and may change or be -removed without notice. - - U8* bytes_to_utf8(const U8 *s, STRLEN *len) - -=for hackers -Found in file utf8.c - -=item ibcmp_utf8 -X<ibcmp_utf8> - -Return true if the strings s1 and s2 differ case-insensitively, false -if not (if they are equal case-insensitively). If u1 is true, the -string s1 is assumed to be in UTF-8-encoded Unicode. If u2 is true, -the string s2 is assumed to be in UTF-8-encoded Unicode. If u1 or u2 -are false, the respective string is assumed to be in native 8-bit -encoding. - -If the pe1 and pe2 are non-NULL, the scanning pointers will be copied -in there (they will point at the beginning of the I<next> character). -If the pointers behind pe1 or pe2 are non-NULL, they are the end -pointers beyond which scanning will not continue under any -circumstances. If the byte lengths l1 and l2 are non-zero, s1+l1 and -s2+l2 will be used as goal end pointers that will also stop the scan, -and which qualify towards defining a successful match: all the scans -that define an explicit length must reach their goal pointers for -a match to succeed). - -For case-insensitiveness, the "casefolding" of Unicode is used -instead of upper/lowercasing both the characters, see -http://www.unicode.org/unicode/reports/tr21/ (Case Mappings). - - I32 ibcmp_utf8(const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2) - -=for hackers -Found in file utf8.c - -=item is_utf8_char -X<is_utf8_char> - -Tests if some arbitrary number of bytes begins in a valid UTF-8 -character. Note that an INVARIANT (i.e. ASCII on non-EBCDIC machines) -character is a valid UTF-8 character. The actual number of bytes in the UTF-8 -character will be returned if it is valid, otherwise 0. - - STRLEN is_utf8_char(const U8 *s) - -=for hackers -Found in file utf8.c - -=item is_utf8_string -X<is_utf8_string> - -Returns true if first C<len> bytes of the given string form a valid -UTF-8 string, false otherwise. Note that 'a valid UTF-8 string' does -not mean 'a string that contains code points above 0x7F encoded in UTF-8' -because a valid ASCII string is a valid UTF-8 string. - -See also is_utf8_string_loclen() and is_utf8_string_loc(). - - bool is_utf8_string(const U8 *s, STRLEN len) - -=for hackers -Found in file utf8.c - -=item is_utf8_string_loc -X<is_utf8_string_loc> - -Like is_utf8_string() but stores the location of the failure (in the -case of "utf8ness failure") or the location s+len (in the case of -"utf8ness success") in the C<ep>. - -See also is_utf8_string_loclen() and is_utf8_string(). - - bool is_utf8_string_loc(const U8 *s, STRLEN len, const U8 **p) - -=for hackers -Found in file utf8.c - -=item is_utf8_string_loclen -X<is_utf8_string_loclen> - -Like is_utf8_string() but stores the location of the failure (in the -case of "utf8ness failure") or the location s+len (in the case of -"utf8ness success") in the C<ep>, and the number of UTF-8 -encoded characters in the C<el>. - -See also is_utf8_string_loc() and is_utf8_string(). - - bool is_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el) - -=for hackers -Found in file utf8.c - -=item pv_uni_display -X<pv_uni_display> - -Build to the scalar dsv a displayable version of the string spv, -length len, the displayable version being at most pvlim bytes long -(if longer, the rest is truncated and "..." will be appended). - -The flags argument can have UNI_DISPLAY_ISPRINT set to display -isPRINT()able characters as themselves, UNI_DISPLAY_BACKSLASH -to display the \\[nrfta\\] as the backslashed versions (like '\n') -(UNI_DISPLAY_BACKSLASH is preferred over UNI_DISPLAY_ISPRINT for \\). -UNI_DISPLAY_QQ (and its alias UNI_DISPLAY_REGEX) have both -UNI_DISPLAY_BACKSLASH and UNI_DISPLAY_ISPRINT turned on. - -The pointer to the PV of the dsv is returned. - - char* pv_uni_display(SV *dsv, const U8 *spv, STRLEN len, STRLEN pvlim, UV flags) - -=for hackers -Found in file utf8.c - -=item sv_cat_decode -X<sv_cat_decode> - -The encoding is assumed to be an Encode object, the PV of the ssv is -assumed to be octets in that encoding and decoding the input starts -from the position which (PV + *offset) pointed to. The dsv will be -concatenated the decoded UTF-8 string from ssv. Decoding will terminate -when the string tstr appears in decoding output or the input ends on -the PV of the ssv. The value which the offset points will be modified -to the last input position on the ssv. - -Returns TRUE if the terminator was found, else returns FALSE. - - bool sv_cat_decode(SV* dsv, SV *encoding, SV *ssv, int *offset, char* tstr, int tlen) - -=for hackers -Found in file sv.c - -=item sv_recode_to_utf8 -X<sv_recode_to_utf8> - -The encoding is assumed to be an Encode object, on entry the PV -of the sv is assumed to be octets in that encoding, and the sv -will be converted into Unicode (and UTF-8). - -If the sv already is UTF-8 (or if it is not POK), or if the encoding -is not a reference, nothing is done to the sv. If the encoding is not -an C<Encode::XS> Encoding object, bad things will happen. -(See F<lib/encoding.pm> and L<Encode>). - -The PV of the sv is returned. - - char* sv_recode_to_utf8(SV* sv, SV *encoding) - -=for hackers -Found in file sv.c - -=item sv_uni_display -X<sv_uni_display> - -Build to the scalar dsv a displayable version of the scalar sv, -the displayable version being at most pvlim bytes long -(if longer, the rest is truncated and "..." will be appended). - -The flags argument is as in pv_uni_display(). - -The pointer to the PV of the dsv is returned. - - char* sv_uni_display(SV *dsv, SV *ssv, STRLEN pvlim, UV flags) - -=for hackers -Found in file utf8.c - -=item to_utf8_case -X<to_utf8_case> - -The "p" contains the pointer to the UTF-8 string encoding -the character that is being converted. - -The "ustrp" is a pointer to the character buffer to put the -conversion result to. The "lenp" is a pointer to the length -of the result. - -The "swashp" is a pointer to the swash to use. - -Both the special and normal mappings are stored lib/unicore/To/Foo.pl, -and loaded by SWASHNEW, using lib/utf8_heavy.pl. The special (usually, -but not always, a multicharacter mapping), is tried first. - -The "special" is a string like "utf8::ToSpecLower", which means the -hash %utf8::ToSpecLower. The access to the hash is through -Perl_to_utf8_case(). - -The "normal" is a string like "ToLower" which means the swash -%utf8::ToLower. - - UV to_utf8_case(const U8 *p, U8* ustrp, STRLEN *lenp, SV **swashp, const char *normal, const char *special) - -=for hackers -Found in file utf8.c - -=item to_utf8_fold -X<to_utf8_fold> - -Convert the UTF-8 encoded character at p to its foldcase version and -store that in UTF-8 in ustrp and its length in bytes in lenp. Note -that the ustrp needs to be at least UTF8_MAXBYTES_CASE+1 bytes since the -foldcase version may be longer than the original character (up to -three characters). - -The first character of the foldcased version is returned -(but note, as explained above, that there may be more.) - - UV to_utf8_fold(const U8 *p, U8* ustrp, STRLEN *lenp) - -=for hackers -Found in file utf8.c - -=item to_utf8_lower -X<to_utf8_lower> - -Convert the UTF-8 encoded character at p to its lowercase version and -store that in UTF-8 in ustrp and its length in bytes in lenp. Note -that the ustrp needs to be at least UTF8_MAXBYTES_CASE+1 bytes since the -lowercase version may be longer than the original character. - -The first character of the lowercased version is returned -(but note, as explained above, that there may be more.) - - UV to_utf8_lower(const U8 *p, U8* ustrp, STRLEN *lenp) - -=for hackers -Found in file utf8.c - -=item to_utf8_title -X<to_utf8_title> - -Convert the UTF-8 encoded character at p to its titlecase version and -store that in UTF-8 in ustrp and its length in bytes in lenp. Note -that the ustrp needs to be at least UTF8_MAXBYTES_CASE+1 bytes since the -titlecase version may be longer than the original character. - -The first character of the titlecased version is returned -(but note, as explained above, that there may be more.) - - UV to_utf8_title(const U8 *p, U8* ustrp, STRLEN *lenp) - -=for hackers -Found in file utf8.c - -=item to_utf8_upper -X<to_utf8_upper> - -Convert the UTF-8 encoded character at p to its uppercase version and -store that in UTF-8 in ustrp and its length in bytes in lenp. Note -that the ustrp needs to be at least UTF8_MAXBYTES_CASE+1 bytes since -the uppercase version may be longer than the original character. - -The first character of the uppercased version is returned -(but note, as explained above, that there may be more.) - - UV to_utf8_upper(const U8 *p, U8* ustrp, STRLEN *lenp) - -=for hackers -Found in file utf8.c - -=item utf8n_to_uvchr -X<utf8n_to_uvchr> - -flags - -Returns the native character value of the first character in the string -C<s> -which is assumed to be in UTF-8 encoding; C<retlen> will be set to the -length, in bytes, of that character. - -Allows length and flags to be passed to low level routine. - - UV utf8n_to_uvchr(const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags) - -=for hackers -Found in file utf8.c - -=item utf8n_to_uvuni -X<utf8n_to_uvuni> - -Bottom level UTF-8 decode routine. -Returns the Unicode code point value of the first character in the string C<s> -which is assumed to be in UTF-8 encoding and no longer than C<curlen>; -C<retlen> will be set to the length, in bytes, of that character. - -If C<s> does not point to a well-formed UTF-8 character, the behaviour -is dependent on the value of C<flags>: if it contains UTF8_CHECK_ONLY, -it is assumed that the caller will raise a warning, and this function -will silently just set C<retlen> to C<-1> and return zero. If the -C<flags> does not contain UTF8_CHECK_ONLY, warnings about -malformations will be given, C<retlen> will be set to the expected -length of the UTF-8 character in bytes, and zero will be returned. - -The C<flags> can also contain various flags to allow deviations from -the strict UTF-8 encoding (see F<utf8.h>). - -Most code should use utf8_to_uvchr() rather than call this directly. - - UV utf8n_to_uvuni(const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags) - -=for hackers -Found in file utf8.c - -=item utf8_distance -X<utf8_distance> - -Returns the number of UTF-8 characters between the UTF-8 pointers C<a> -and C<b>. - -WARNING: use only if you *know* that the pointers point inside the -same UTF-8 buffer. - - IV utf8_distance(const U8 *a, const U8 *b) - -=for hackers -Found in file utf8.c - -=item utf8_hop -X<utf8_hop> - -Return the UTF-8 pointer C<s> displaced by C<off> characters, either -forward or backward. - -WARNING: do not use the following unless you *know* C<off> is within -the UTF-8 data pointed to by C<s> *and* that on entry C<s> is aligned -on the first byte of character or just after the last byte of a character. - - U8* utf8_hop(const U8 *s, I32 off) - -=for hackers -Found in file utf8.c - -=item utf8_length -X<utf8_length> - -Return the length of the UTF-8 char encoded string C<s> in characters. -Stops at C<e> (inclusive). If C<e E<lt> s> or if the scan would end -up past C<e>, croaks. - - STRLEN utf8_length(const U8* s, const U8 *e) - -=for hackers -Found in file utf8.c - -=item utf8_to_bytes -X<utf8_to_bytes> - -Converts a string C<s> of length C<len> from UTF-8 into native byte encoding. -Unlike C<bytes_to_utf8>, this over-writes the original string, and -updates len to contain the new length. -Returns zero on failure, setting C<len> to -1. - -If you need a copy of the string, see C<bytes_from_utf8>. - -NOTE: this function is experimental and may change or be -removed without notice. - - U8* utf8_to_bytes(U8 *s, STRLEN *len) - -=for hackers -Found in file utf8.c - -=item utf8_to_uvchr -X<utf8_to_uvchr> - -Returns the native character value of the first character in the string C<s> -which is assumed to be in UTF-8 encoding; C<retlen> will be set to the -length, in bytes, of that character. - -If C<s> does not point to a well-formed UTF-8 character, zero is -returned and retlen is set, if possible, to -1. - - UV utf8_to_uvchr(const U8 *s, STRLEN *retlen) - -=for hackers -Found in file utf8.c - -=item utf8_to_uvuni -X<utf8_to_uvuni> - -Returns the Unicode code point of the first character in the string C<s> -which is assumed to be in UTF-8 encoding; C<retlen> will be set to the -length, in bytes, of that character. - -This function should only be used when the returned UV is considered -an index into the Unicode semantic tables (e.g. swashes). - -If C<s> does not point to a well-formed UTF-8 character, zero is -returned and retlen is set, if possible, to -1. - - UV utf8_to_uvuni(const U8 *s, STRLEN *retlen) - -=for hackers -Found in file utf8.c - -=item uvchr_to_utf8 -X<uvchr_to_utf8> - -Adds the UTF-8 representation of the Native codepoint C<uv> to the end -of the string C<d>; C<d> should be have at least C<UTF8_MAXBYTES+1> free -bytes available. The return value is the pointer to the byte after the -end of the new character. In other words, - - d = uvchr_to_utf8(d, uv); - -is the recommended wide native character-aware way of saying - - *(d++) = uv; - - U8* uvchr_to_utf8(U8 *d, UV uv) - -=for hackers -Found in file utf8.c - -=item uvuni_to_utf8_flags -X<uvuni_to_utf8_flags> - -Adds the UTF-8 representation of the Unicode codepoint C<uv> to the end -of the string C<d>; C<d> should be have at least C<UTF8_MAXBYTES+1> free -bytes available. The return value is the pointer to the byte after the -end of the new character. In other words, - - d = uvuni_to_utf8_flags(d, uv, flags); - -or, in most cases, - - d = uvuni_to_utf8(d, uv); - -(which is equivalent to) - - d = uvuni_to_utf8_flags(d, uv, 0); - -is the recommended Unicode-aware way of saying - - *(d++) = uv; - - U8* uvuni_to_utf8_flags(U8 *d, UV uv, UV flags) - -=for hackers -Found in file utf8.c - - -=back - -=head1 Variables created by C<xsubpp> and C<xsubpp> internal functions - -=over 8 - -=item ax -X<ax> - -Variable which is setup by C<xsubpp> to indicate the stack base offset, -used by the C<ST>, C<XSprePUSH> and C<XSRETURN> macros. The C<dMARK> macro -must be called prior to setup the C<MARK> variable. - - I32 ax - -=for hackers -Found in file XSUB.h - -=item CLASS -X<CLASS> - -Variable which is setup by C<xsubpp> to indicate the -class name for a C++ XS constructor. This is always a C<char*>. See C<THIS>. - - char* CLASS - -=for hackers -Found in file XSUB.h - -=item dAX -X<dAX> - -Sets up the C<ax> variable. -This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>. - - dAX; - -=for hackers -Found in file XSUB.h - -=item dAXMARK -X<dAXMARK> - -Sets up the C<ax> variable and stack marker variable C<mark>. -This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>. - - dAXMARK; - -=for hackers -Found in file XSUB.h - -=item dITEMS -X<dITEMS> - -Sets up the C<items> variable. -This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>. - - dITEMS; - -=for hackers -Found in file XSUB.h - -=item dUNDERBAR -X<dUNDERBAR> - -Sets up the C<padoff_du> variable for an XSUB that wishes to use -C<UNDERBAR>. - - dUNDERBAR; - -=for hackers -Found in file XSUB.h - -=item dXSARGS -X<dXSARGS> - -Sets up stack and mark pointers for an XSUB, calling dSP and dMARK. -Sets up the C<ax> and C<items> variables by calling C<dAX> and C<dITEMS>. -This is usually handled automatically by C<xsubpp>. - - dXSARGS; - -=for hackers -Found in file XSUB.h - -=item dXSI32 -X<dXSI32> - -Sets up the C<ix> variable for an XSUB which has aliases. This is usually -handled automatically by C<xsubpp>. - - dXSI32; - -=for hackers -Found in file XSUB.h - -=item items -X<items> - -Variable which is setup by C<xsubpp> to indicate the number of -items on the stack. See L<perlxs/"Variable-length Parameter Lists">. - - I32 items - -=for hackers -Found in file XSUB.h - -=item ix -X<ix> - -Variable which is setup by C<xsubpp> to indicate which of an -XSUB's aliases was used to invoke it. See L<perlxs/"The ALIAS: Keyword">. - - I32 ix - -=for hackers -Found in file XSUB.h - -=item newXSproto -X<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 RETVAL -X<RETVAL> - -Variable which is setup by C<xsubpp> to hold the return value for an -XSUB. This is always the proper type for the XSUB. See -L<perlxs/"The RETVAL Variable">. - - (whatever) RETVAL - -=for hackers -Found in file XSUB.h - -=item ST -X<ST> - -Used to access elements on the XSUB's stack. - - SV* ST(int ix) - -=for hackers -Found in file XSUB.h - -=item THIS -X<THIS> - -Variable which is setup by C<xsubpp> to designate the object in a C++ -XSUB. This is always the proper type for the C++ object. See C<CLASS> and -L<perlxs/"Using XS With C++">. - - (whatever) THIS - -=for hackers -Found in file XSUB.h - -=item UNDERBAR -X<UNDERBAR> - -The SV* corresponding to the $_ variable. Works even if there -is a lexical $_ in scope. - -=for hackers -Found in file XSUB.h - -=item XS -X<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 XS_VERSION -X<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 -X<XS_VERSION_BOOTCHECK> - -Macro to verify that a PM module's $VERSION variable matches the XS -module's C<XS_VERSION> variable. This is usually handled automatically by -C<xsubpp>. See L<perlxs/"The VERSIONCHECK: Keyword">. - - XS_VERSION_BOOTCHECK; - -=for hackers -Found in file XSUB.h - - -=back - -=head1 Warning and Dieing - -=over 8 - -=item croak -X<croak> - -This is the XSUB-writer's interface to Perl's C<die> function. -Normally call this function the same way you call the C C<printf> -function. Calling C<croak> returns control directly to Perl, -sidestepping the normal C order of execution. See C<warn>. - -If you want to throw an exception object, assign the object to -C<$@> and then pass C<NULL> to croak(): - - errsv = get_sv("@", GV_ADD); - sv_setsv(errsv, exception_object); - croak(NULL); - - void croak(const char* pat, ...) - -=for hackers -Found in file util.c - -=item warn -X<warn> - -This is the XSUB-writer's interface to Perl's C<warn> function. Call this -function the same way you call the C C<printf> function. See C<croak>. - - void warn(const char* pat, ...) - -=for hackers -Found in file util.c - - -=back - -=head1 AUTHORS - -Until May 1997, this document was maintained by Jeff Okamoto -<okamoto@corp.hp.com>. It is now maintained as part of Perl itself. - -With lots of help and suggestions from Dean Roehrich, Malcolm Beattie, -Andreas Koenig, Paul Hudson, Ilya Zakharevich, Paul Marquess, Neil -Bowers, Matthew Green, Tim Bunce, Spider Boardman, Ulrich Pfeifer, -Stephen McCamant, and Gurusamy Sarathy. - -API Listing originally by Dean Roehrich <roehrich@cray.com>. - -Updated to be autogenerated from comments in the source by Benjamin Stuhl. - -=head1 SEE ALSO - -perlguts(1), perlxs(1), perlxstut(1), perlintern(1) - -=cut - - ex: set ro: diff --git a/pod/perlboot.pod b/pod/perlboot.pod index 55317c352e..f4327a70bb 100644 --- a/pod/perlboot.pod +++ b/pod/perlboot.pod @@ -58,7 +58,7 @@ This results in: a Sheep goes baaaah! Wow. That symbolic coderef de-referencing there is pretty nasty. -We're counting on C<no strict subs> mode, certainly not recommended +We're counting on C<no strict refs> mode, certainly not recommended for larger programs. And why was that necessary? Because the name of the package seems to be inseparable from the name of the subroutine we want to invoke within that package. @@ -171,8 +171,8 @@ This method provides the constant text for the sound itself. { package Cow; sub sound { "moooo" } sub speak { - my $class = shift; - print "a $class goes ", $class->sound, "!\n"; + my $class = shift; + print "a $class goes ", $class->sound, "!\n"; } } @@ -183,8 +183,8 @@ returns C<moooo>. But how different would this be for the C<Horse>? { package Horse; sub sound { "neigh" } sub speak { - my $class = shift; - print "a $class goes ", $class->sound, "!\n"; + my $class = shift; + print "a $class goes ", $class->sound, "!\n"; } } @@ -199,8 +199,8 @@ definition for C<speak>: { package Animal; sub speak { - my $class = shift; - print "a $class goes ", $class->sound, "!\n"; + my $class = shift; + print "a $class goes ", $class->sound, "!\n"; } } @@ -212,7 +212,7 @@ with the animal-specific sound: sub sound { "moooo" } } -Note the added C<@ISA> array. We'll get to that in a minute. +Note the added C<@ISA> array (pronounced "is a"). We'll get to that in a minute. But what happens when we invoke C<< Cow->speak >> now? @@ -232,10 +232,10 @@ gets it on the first try without looking at C<@ISA>. Success! =head2 A few notes about @ISA -This magical C<@ISA> variable (pronounced "is a" not "ice-uh"), has -declared that C<Cow> "is a" C<Animal>. Note that it's an array, -not a simple single value, because on rare occasions, it makes sense -to have more than one parent class searched for the missing methods. +This magical C<@ISA> variable has declared that C<Cow> "is a" C<Animal>. +Note that it's an array, not a simple single value, because on rare +occasions, it makes sense to have more than one parent class searched +for the missing methods. If C<Animal> also had an C<@ISA>, then we'd check there too. The search is recursive, depth-first, left-to-right in each C<@ISA> by @@ -264,20 +264,14 @@ Or allow it as an implicitly named package variable: use vars qw(@ISA); @ISA = qw(Animal); -If you're bringing in the class from outside, via an object-oriented -module, you change: - - package Cow; - use Animal; - use vars qw(@ISA); - @ISA = qw(Animal); - -into just: +If the C<Animal> class comes from another (object-oriented) module, then +just employ C<use base> to specify that C<Animal> should serve as the basis +for the C<Cow> class: package Cow; use base qw(Animal); -And that's pretty darn compact. +Now that's pretty darn simple! =head2 Overriding the methods @@ -289,8 +283,8 @@ Let's add a mouse, which can barely be heard: sub sound { "squeak" } sub speak { my $class = shift; - print "a $class goes ", $class->sound, "!\n"; - print "[but you can barely hear it!]\n"; + print "a $class goes ", $class->sound, "!\n"; + print "[but you can barely hear it!]\n"; } } @@ -302,17 +296,26 @@ which results in: [but you can barely hear it!] Here, C<Mouse> has its own speaking routine, so C<< Mouse->speak >> -doesn't immediately invoke C<< Animal->speak >>. This is known as -"overriding". In fact, we didn't even need to say that a C<Mouse> was -an C<Animal> at all, since all of the methods needed for C<speak> are -completely defined with C<Mouse>. - -But we've now duplicated some of the code from C<< Animal->speak >>, -and this can once again be a maintenance headache. So, can we avoid -that? Can we say somehow that a C<Mouse> does everything any other -C<Animal> does, but add in the extra comment? Sure! - -First, we can invoke the C<Animal::speak> method directly: +doesn't immediately invoke C<< Animal->speak >>. This is known as +"overriding". In fact, we don't even need to say that a C<Mouse> is +an C<Animal> at all, because all of the methods needed for C<speak> are +completely defined for C<Mouse>; this is known as "duck typing": +"If it walks like a duck and quacks like a duck, I would call it a duck" +(James Whitcomb). However, it would probably be beneficial to allow a +closer examination to conclude that a C<Mouse> is indeed an C<Animal>, +so it is actually better to define C<Mouse> with C<Animal> as its base +(that is, it is better to "derive C<Mouse> from C<Animal>"). + +Moreover, this duplication of code could become a maintenance headache +(though code-reuse is not actually a good reason for inheritance; good +design practices dictate that a derived class should be usable wherever +its base class is usable, which might not be the outcome if code-reuse +is the sole criterion for inheritance. Just remember that a C<Mouse> +should always act like an C<Animal>). + +So, let's make C<Mouse> an C<Animal>! + +The obvious solution is to invoke C<Animal::speak> directly: # Animal package from before { package Mouse; @@ -321,33 +324,45 @@ First, we can invoke the C<Animal::speak> method directly: sub speak { my $class = shift; Animal::speak($class); - print "[but you can barely hear it!]\n"; + print "[but you can barely hear it!]\n"; } } -Note that we have to include the C<$class> parameter (almost surely -the value of C<"Mouse">) as the first parameter to C<Animal::speak>, -since we've stopped using the method arrow. Why did we stop? Well, -if we invoke C<< Animal->speak >> there, the first parameter to the -method will be C<"Animal"> not C<"Mouse">, and when time comes for it -to call for the C<sound>, it won't have the right class to come back -to this package. - -Invoking C<Animal::speak> directly is a mess, however. What if -C<Animal::speak> didn't exist before, and was being inherited from a -class mentioned in C<@Animal::ISA>? Because we are no longer using -the method arrow, we get one and only one chance to hit the right -subroutine. - -Also note that the C<Animal> classname is now hardwired into the -subroutine selection. This is a mess if someone maintains the code, -changing C<@ISA> for C<Mouse> and didn't notice C<Animal> there in -C<speak>. So, this is probably not the right way to go. +Note that we're using C<Animal::speak>. If we were to invoke +C<< Animal->speak >> instead, the first parameter to C<Animal::speak> +would automatically be C<"Animal"> rather than C<"Mouse">, so that +the call to C<< $class->sound >> in C<Animal::speak> would become +C<< Animal->sound >> rather than C<< Mouse->sound >>. + +Also, without the method arrow C<< -> >>, it becomes necessary to specify +the first parameter to C<Animal::speak> ourselves, which is why C<$class> +is explicitly passed: C<Animal::speak($class)>. + +However, invoking C<Animal::speak> directly is a mess: Firstly, it assumes +that the C<speak> method is a member of the C<Animal> class; what if C<Animal> +actually inherits C<speak> from its own base? Because we are no longer using +C<< -> >> to access C<speak>, the special method look up mechanism wouldn't be +used, so C<speak> wouldn't even be found! + +The second problem is more subtle: C<Animal> is now hardwired into the subroutine +selection. Let's assume that C<Animal::speak> does exist. What happens when, +at a later time, someone expands the class hierarchy by having C<Mouse> +inherit from C<Mus> instead of C<Animal>. Unless the invocation of C<Animal::speak> +is also changed to an invocation of C<Mus::speak>, centuries worth of taxonomical +classification could be obliterated! + +What we have here is a fragile or leaky abstraction; it is the beginning of a +maintenance nightmare. What we need is the ability to search for the right +method wih as few assumptions as possible. =head2 Starting the search from a different place -A better solution is to tell Perl to search from a higher place -in the inheritance chain: +A I<better> solution is to tell Perl where in the inheritance chain to begin searching +for C<speak>. This can be achieved with a modified version of the method arrow C<< -> >>: + + ClassName->FirstPlaceToLook::method + +So, the improved C<Mouse> class is: # same Animal as before { package Mouse; @@ -359,22 +374,20 @@ in the inheritance chain: } } -Ahh. This works. Using this syntax, we start with C<Animal> to find -C<speak>, and use all of C<Animal>'s inheritance chain if not found -immediately. And yet the first parameter will be C<$class>, so the -found C<speak> method will get C<Mouse> as its first entry, and -eventually work its way back to C<Mouse::sound> for the details. +Using this syntax, we start with C<Animal> to find C<speak>, and then +use all of C<Animal>'s inheritance chain if it is not found immediately. +As usual, the first parameter to C<speak> would be C<$class>, so we no +longer need to pass C<$class> explicitly to C<speak>. -But this isn't the best solution. We still have to keep the C<@ISA> -and the initial search package coordinated. Worse, if C<Mouse> had -multiple entries in C<@ISA>, we wouldn't necessarily know which one -had actually defined C<speak>. So, is there an even better way? +But what about the second problem? We're still hardwiring C<Animal> into +the method lookup. =head2 The SUPER way of doing things -By changing the C<Animal> class to the C<SUPER> class in that -invocation, we get a search of all of our super classes (classes -listed in C<@ISA>) automatically: +If C<Animal> is replaced with the special placeholder C<SUPER> in that +invocation, then the contents of C<Mouse>'s C<@ISA> are used for the +search, beginning with C<$ISA[0]>. So, all of the problems can be fixed +as follows: # same Animal as before { package Mouse; @@ -386,11 +399,19 @@ listed in C<@ISA>) automatically: } } -So, C<SUPER::speak> means look in the current package's C<@ISA> for -C<speak>, invoking the first one found. Note that it does I<not> look in -the C<@ISA> of C<$class>. +In general, C<SUPER::speak> means look in the current package's C<@ISA> +for a class that implements C<speak>, and invoke the first one found. +The placeholder is called C<SUPER>, because many other languages refer +to base classes as "I<super>classes", and Perl likes to be eclectic. + +Note that a call such as + + $class->SUPER::method; -=head2 Where we're at so far... +does I<not> look in the C<@ISA> of C<$class> unless C<$class> happens to +be the current package. + +=head2 Let's review... So far, we've seen the method arrow syntax: @@ -405,20 +426,21 @@ which constructs an argument list of: ("Class", @args) -and attempts to invoke +and attempts to invoke: - Class::method("Class", @Args); + Class::method("Class", @args); However, if C<Class::method> is not found, then C<@Class::ISA> is examined -(recursively) to locate a package that does indeed contain C<method>, +(recursively) to locate a class (a package) that does indeed contain C<method>, and that subroutine is invoked instead. -Using this simple syntax, we have class methods, (multiple) -inheritance, overriding, and extending. Using just what we've seen so -far, we've been able to factor out common code, and provide a nice way -to reuse implementations with variations. This is at the core of what -objects provide, but objects also provide instance data, which we -haven't even begun to cover. +Using this simple syntax, we have class methods, (multiple) inheritance, +overriding, and extending. Using just what we've seen so far, we've +been able to factor out common code (though that's never a good reason +for inheritance!), and provide a nice way to reuse implementations with +variations. + +Now, what about data? =head2 A horse is a horse, of course of course -- or is it? @@ -443,61 +465,61 @@ sound, and the output of: a Horse goes neigh! But all of our Horse objects would have to be absolutely identical. -If I add a subroutine, all horses automatically share it. That's +If we add a subroutine, all horses automatically share it. That's great for making horses the same, but how do we capture the -distinctions about an individual horse? For example, suppose I want -to give my first horse a name. There's got to be a way to keep its +distinctions of an individual horse? For example, suppose we want +to give our first horse a name. There's got to be a way to keep its name separate from the other horses. -We can do that by drawing a new distinction, called an "instance". -An "instance" is generally created by a class. In Perl, any reference -can be an instance, so let's start with the simplest reference -that can hold a horse's name: a scalar reference. +That is to say, we want particular instances of C<Horse> to have +different names. + +In Perl, any reference can be an "instance", so let's start with the +simplest reference that can hold a horse's name: a scalar reference. my $name = "Mr. Ed"; - my $talking = \$name; + my $horse = \$name; -So now C<$talking> is a reference to what will be the instance-specific -data (the name). The final step in turning this into a real instance -is with a special operator called C<bless>: +So, now C<$horse> is a reference to what will be the instance-specific +data (the name). The final step is to turn this reference into a real +instance of a C<Horse> by using the special operator C<bless>: - bless $talking, Horse; + bless $horse, Horse; This operator stores information about the package named C<Horse> into the thing pointed at by the reference. At this point, we say -C<$talking> is an instance of C<Horse>. That is, it's a specific +C<$horse> is an instance of C<Horse>. That is, it's a specific horse. The reference is otherwise unchanged, and can still be used with traditional dereferencing operators. =head2 Invoking an instance method -The method arrow can be used on instances, as well as names of -packages (classes). So, let's get the sound that C<$talking> makes: +The method arrow can be used on instances, as well as classes (the names +of packages). So, let's get the sound that C<$horse> makes: - my $noise = $talking->sound; + my $noise = $horse->sound("some", "unnecessary", "args"); -To invoke C<sound>, Perl first notes that C<$talking> is a blessed +To invoke C<sound>, Perl first notes that C<$horse> is a blessed reference (and thus an instance). It then constructs an argument -list, in this case from just C<($talking)>. (Later we'll see that -arguments will take their place following the instance variable, -just like with classes.) +list, as per usual. Now for the fun part: Perl takes the class in which the instance was -blessed, in this case C<Horse>, and uses that to locate the subroutine -to invoke the method. In this case, C<Horse::sound> is found directly -(without using inheritance), yielding the final subroutine invocation: +blessed, in this case C<Horse>, and uses that class to locate the +subroutine. In this case, C<Horse::sound> is found directly (without +using inheritance). In the end, it is as though our initial line were +written as follows: - Horse::sound($talking) + my $noise = Horse::sound($horse, "some", "unnecessary", "args"); Note that the first parameter here is still the instance, not the name of the class as before. We'll get C<neigh> as the return value, and that'll end up as the C<$noise> variable above. -If Horse::sound had not been found, we'd be wandering up the -C<@Horse::ISA> list to try to find the method in one of the -superclasses, just as for a class method. The only difference between -a class method and an instance method is whether the first parameter -is an instance (a blessed reference) or a class name (a string). +If Horse::sound had not been found, we'd be wandering up the C<@Horse::ISA> +array, trying to find the method in one of the superclasses. The only +difference between a class method and an instance method is whether the +first parameter is an instance (a blessed reference) or a class name (a +string). =head2 Accessing the instance data @@ -514,16 +536,22 @@ the name: } } -Now we call for the name: +Inside C<Horse::name>, the C<@_> array contains: - print $talking->name, " says ", $talking->sound, "\n"; + (C<$horse>, "some", "unnecessary", "args") -Inside C<Horse::name>, the C<@_> array contains just C<$talking>, -which the C<shift> stores into C<$self>. (It's traditional to shift -the first parameter off into a variable named C<$self> for instance -methods, so stay with that unless you have strong reasons otherwise.) -Then, C<$self> gets de-referenced as a scalar ref, yielding C<Mr. Ed>, -and we're done with that. The result is: +so the C<shift> stores C<$horse> into C<$self>. Then, C<$self> gets +de-referenced with C<$$self> as normal, yielding C<"Mr. Ed">. + +It's traditional to C<shift> the first parameter into a variable named +C<$self> for instance methods and into a variable named C<$class> for +class methods. + +Then, the following line: + + print $horse->name, " says ", $horse->sound, "\n"; + +outputs: Mr. Ed says neigh. @@ -533,31 +561,32 @@ Of course, if we constructed all of our horses by hand, we'd most likely make mistakes from time to time. We're also violating one of the properties of object-oriented programming, in that the "inside guts" of a Horse are visible. That's good if you're a veterinarian, -but not if you just like to own horses. So, let's let the Horse class -build a new horse: +but not if you just like to own horses. So, let's have the Horse +class handle the details inside a class method: { package Horse; @ISA = qw(Animal); sub sound { "neigh" } sub name { - my $self = shift; + my $self = shift; # instance method, so use $self $$self; } sub named { - my $class = shift; + my $class = shift; # class method, so use $class my $name = shift; bless \$name, $class; } } -Now with the new C<named> method, we can build a horse: +Now with the new C<named> method, we can build a horse as follows: - my $talking = Horse->named("Mr. Ed"); + my $horse = Horse->named("Mr. Ed"); Notice we're back to a class method, so the two arguments to C<Horse::named> are C<Horse> and C<Mr. Ed>. The C<bless> operator -not only blesses C<$name>, it also returns the reference to C<$name>, -so that's fine as a return value. And that's how to build a horse. +not only blesses C<\$name>, it also returns that reference. + +This C<Horse::named> method is called a "constructor". We've called the constructor C<named> here, so that it quickly denotes the constructor's argument as the name for this particular C<Horse>. @@ -574,7 +603,7 @@ right?) But was there anything specific to C<Horse> in that method? No. Therefore, it's also the same recipe for building anything else that inherited from -C<Animal>, so let's put it there: +C<Animal>, so let's put C<name> and C<named> there: { package Animal; sub speak { @@ -598,8 +627,8 @@ C<Animal>, so let's put it there: Ahh, but what happens if we invoke C<speak> on an instance? - my $talking = Horse->named("Mr. Ed"); - $talking->speak; + my $horse = Horse->named("Mr. Ed"); + $horse->speak; We get a debugging value: @@ -620,9 +649,7 @@ classname). Let's modify the C<name> method first to notice the change: sub name { my $either = shift; - ref $either - ? $$either # it's an instance, return name - : "an unnamed $either"; # it's a class, return generic + ref $either ? $$either : "Any $either"; } Here, the C<?:> operator comes in handy to select either the @@ -630,9 +657,9 @@ dereference or a derived string. Now we can use this with either an instance or a class. Note that I've changed the first parameter holder to C<$either> to show that this is intended: - my $talking = Horse->named("Mr. Ed"); - print Horse->name, "\n"; # prints "an unnamed Horse\n" - print $talking->name, "\n"; # prints "Mr Ed.\n" + my $horse = Horse->named("Mr. Ed"); + print Horse->name, "\n"; # prints "Any Horse\n" + print $horse->name, "\n"; # prints "Mr Ed.\n" and now we'll fix C<speak> to use this: @@ -656,9 +683,7 @@ Let's train our animals to eat: } sub name { my $either = shift; - ref $either - ? $$either # it's an instance, return name - : "an unnamed $either"; # it's a class, return generic + ref $either ? $$either : "Any $either"; } sub speak { my $either = shift; @@ -681,19 +706,19 @@ Let's train our animals to eat: And now try it out: - my $talking = Horse->named("Mr. Ed"); - $talking->eat("hay"); + my $horse = Horse->named("Mr. Ed"); + $horse->eat("hay"); Sheep->eat("grass"); which prints: Mr. Ed eats hay. - an unnamed Sheep eats grass. + Any Sheep eats grass. An instance method with parameters gets invoked with the instance, and then the list of parameters. So that first invocation is like: - Animal::eat($talking, "hay"); + Animal::eat($horse, "hay"); =head2 More interesting instances @@ -716,42 +741,77 @@ Let's make a sheep that has a name and a color: so C<< $bad->{Name} >> has C<Evil>, and C<< $bad->{Color} >> has C<black>. But we want to make C<< $bad->name >> access the name, and that's now messed up because it's expecting a scalar reference. Not -to worry, because that's pretty easy to fix up: +to worry, because that's pretty easy to fix up. + +One solution is to override C<Animal::name> and C<Animal::named> by +defining them anew in C<Sheep>, but then any methods added later to +C<Animal> might still mess up, and we'd have to override all of those +too. Therefore, it's never a good idea to define the data layout in a +way that's different from the data layout of the base classes. In fact, +it's a good idea to use blessed hash references in all cases. Also, this +is why it's important to have constructors do the low-level work. So, +let's redefine C<Animal>: ## in Animal sub name { my $either = shift; - ref $either ? - $either->{Name} : - "an unnamed $either"; + ref $either ? $either->{Name} : "Any $either"; } - -And of course C<named> still builds a scalar sheep, so let's fix that -as well: - - ## in Animal sub named { my $class = shift; my $name = shift; - my $self = { Name => $name, Color => $class->default_color }; + my $self = { Name => $name }; bless $self, $class; } +Of course, we still need to override C<named> in order to handle +constructing a C<Sheep> with a certain color: + + ## in Sheep + sub named { + my ($class, $name) = @_; + my $self = $class->SUPER::named(@_); + $$self{Color} = $class->default_color; + $self + } + +(Note that C<@_> contains the parameters to C<named>.) + What's this C<default_color>? Well, if C<named> has only the name, -we still need to set a color, so we'll have a class-specific initial color. +we still need to set a color, so we'll have a class-specific default color. For a sheep, we might define it as white: ## in Sheep sub default_color { "white" } -And then to keep from having to define one for each additional class, -we'll define a "backstop" method that serves as the "default default", -directly in C<Animal>: +Now: + + my $sheep = Sheep->named("Bad"); + print $sheep->{Color}, "\n"; + +outputs: + + white + +Now, there's nothing particularly specific to C<Sheep> when it comes +to color, so let's remove C<Sheep::named> and implement C<Animal::named> +to handle color instead: + + ## in Animal + sub named { + my ($class, $name) = @_; + my $self = { Name => $name, Color => $class->default_color }; + bless $self, $class; + } + +And then to keep from having to define C<default_color> for each additional +class, we'll define a method that serves as the "default default" directly +in C<Animal>: ## in Animal sub default_color { "brown" } -Now, because C<name> and C<named> were the only methods that +Of course, because C<name> and C<named> were the only methods that referenced the "structure" of the object, the rest of the methods can remain the same, so C<speak> still works as before. @@ -773,9 +833,9 @@ in-place, rather than with a C<shift>. (This saves us a bit of time for something that may be invoked frequently.) And now we can fix that color for Mr. Ed: - my $talking = Horse->named("Mr. Ed"); - $talking->set_color("black-and-white"); - print $talking->name, " is colored ", $talking->color, "\n"; + my $horse = Horse->named("Mr. Ed"); + $horse->set_color("black-and-white"); + print $horse->name, " is colored ", $horse->color, "\n"; which results in: @@ -783,14 +843,13 @@ which results in: =head2 Summary -So, now we have class methods, constructors, instance methods, -instance data, and even accessors. But that's still just the -beginning of what Perl has to offer. We haven't even begun to talk -about accessors that double as getters and setters, destructors, -indirect object notation, subclasses that add instance data, per-class -data, overloading, "isa" and "can" tests, C<UNIVERSAL> class, and so -on. That's for the rest of the Perl documentation to cover. -Hopefully, this gets you started, though. +So, now we have class methods, constructors, instance methods, instance +data, and even accessors. But that's still just the beginning of what +Perl has to offer. We haven't even begun to talk about accessors that +double as getters and setters, destructors, indirect object notation, +overloading, "isa" and "can" tests, the C<UNIVERSAL> class, and so on. +That's for the rest of the Perl documentation to cover. Hopefully, this +gets you started, though. =head1 SEE ALSO @@ -807,10 +866,14 @@ Class::MethodMaker and Tie::SecureHash =head1 COPYRIGHT Copyright (c) 1999, 2000 by Randal L. Schwartz and Stonehenge -Consulting Services, Inc. Permission is hereby granted to distribute -this document intact with the Perl distribution, and in accordance -with the licenses of the Perl distribution; derived documents must -include this copyright notice intact. +Consulting Services, Inc. + +Copyright (c) 2009 by Michael F. Witten. + +Permission is hereby granted to distribute this document intact with +the Perl distribution, and in accordance with the licenses of the Perl +distribution; derived documents must include this copyright notice +intact. Portions of this text have been derived from Perl Training materials originally appearing in the I<Packages, References, Objects, and diff --git a/pod/perldiag.pod b/pod/perldiag.pod index 70a432db11..f2a4a1a72f 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -306,6 +306,20 @@ of an array and later assigning through that reference. For example used as an lvalue, which is pretty strange. Perhaps you forgot to dereference it first. See L<perlfunc/substr>. +=item Attribute "locked" is deprecated + +(D deprecated) You have used the attributes pragam to modify the "locked" +attribute on a code reference. The :locked attribute is obsolete, has had no +effect since 5005 threads were removed, and will be removed in the next major +release of Perl 5. + +=item Attribute "unique" is deprecated + +(D deprecated) You have used the attributes pragam to modify the "unique" +attribute on a array, hash or scalar reference. The :unique attribute is has +had no no effect since Perl 5.8.8, and will be removed in the next major +release of Perl 5. + =item Bad arg length for %s, is %d, should be %s (F) You passed a buffer of the wrong size to one of msgctl(), semctl() @@ -3404,24 +3418,6 @@ If instead you intended to match the word 'foo' at the end of the line followed by whitespace and the word 'bar' on the next line then you can use C<m/$(?)\/> (for example: C<m/foo$(?)\s+bar/>). -=item pragma "attrs" is deprecated, use "sub NAME : ATTRS" instead - -(D deprecated) You have written something like this: - - sub doit - { - use attrs qw(locked); - } - -You should use the new declaration syntax instead. - - sub doit : locked - { - ... - -The C<use attrs> pragma is now obsolete, and is only provided for -backward-compatibility. See L<perlsub/"Subroutine Attributes">. - =item Precedence problem: open %s should be open(%s) (S precedence) The old irregular construct @@ -4661,6 +4657,11 @@ you can write it as C<push(@tied_array,())> to avoid this warning. (F) The "use" keyword is recognized and executed at compile time, and returns no useful value. See L<perlmod>. +=item Use of assignment to $[ is deprecated + +(D deprecated) The C<$[> variable (index of the first element in an array) +is deprecated. See L<perlvar/"$[">. + =item Use of bare << to mean <<"" is deprecated (D deprecated, W syntax) You are now encouraged to use the explicitly quoted diff --git a/pod/perldoc.pod b/pod/perldoc.pod index 43471c9d8c..92404395c5 100644 --- a/pod/perldoc.pod +++ b/pod/perldoc.pod @@ -252,6 +252,9 @@ number, the more it emits. Up to 3.14_05, the switch B<-v> was used to produce verbose messages of B<perldoc> operation, which is now enabled by B<-D>. +=head1 SEE ALSO + +L<perlpod>, L<Pod::Perldoc> =head1 AUTHOR diff --git a/pod/perlembed.pod b/pod/perlembed.pod index 39364eb429..36da54f7fe 100644 --- a/pod/perlembed.pod +++ b/pod/perlembed.pod @@ -196,11 +196,20 @@ version of I<miniperlmain.c> containing the essentials of embedding: Notice that we don't use the C<env> pointer. Normally handed to C<perl_parse> as its final argument, C<env> here is replaced by -C<NULL>, which means that the current environment will be used. The macros -PERL_SYS_INIT3() and PERL_SYS_TERM() provide system-specific tune up -of the C runtime environment necessary to run Perl interpreters; since -PERL_SYS_INIT3() may change C<env>, it may be more appropriate to provide -C<env> as an argument to perl_parse(). +C<NULL>, which means that the current environment will be used. + +The macros PERL_SYS_INIT3() and PERL_SYS_TERM() provide system-specific +tune up of the C runtime environment necessary to run Perl interpreters; +they should only be called once regardless of how many interpreters you +create or destroy. Call PERL_SYS_INIT3() before you create your first +interpreter, and PERL_SYS_TERM() after you free your last interpreter. + +Since PERL_SYS_INIT3() may change C<env>, it may be more appropriate to +provide C<env> as an argument to perl_parse(). + +Also notice that no matter what arguments you pass to perl_parse(), +PERL_SYS_INIT3() must be invoked on the C main() argc, argv and env and +only once. Now compile this program (I'll call it I<interp.c>) into an executable: diff --git a/pod/perlfaq9.pod b/pod/perlfaq9.pod index 609f898485..8ac3d0e4f8 100644 --- a/pod/perlfaq9.pod +++ b/pod/perlfaq9.pod @@ -433,7 +433,8 @@ This I<just> matches the address itself: my $dot_atom = qr{$atom(?:\.$atom)*}; my $quoted = qr{"(?:\\[^\r\n]|[^\\"])*"}; my $local = qr{(?:$dot_atom|$quoted)}; - my $domain_lit = qr{\[(?:\\\S|[\x21-\x5a\x5e-\x7e])*\]}; + my $quotedpair = qr{\\[\x00-\x09\x0B-\x0c\x0e-\x7e]}; + my $domain_lit = qr{\[(?:$quotedpair|[\x21-\x5a\x5e-\x7e])*\]}; my $domain = qr{(?:$dot_atom|$domain_lit)}; my $addr_spec = qr{$local\@$domain}; diff --git a/pod/perlfunc.pod b/pod/perlfunc.pod index f8d2282d51..826df27ef0 100644 --- a/pod/perlfunc.pod +++ b/pod/perlfunc.pod @@ -982,7 +982,7 @@ X<decrypt> X<cryptography> X<passwd> X<encrypt> Creates a digest string exactly like the crypt(3) function in the C library (assuming that you actually have a version there that has not -been extirpated as a potential munitions). +been extirpated as a potential munition). crypt() is a one-way hash function. The PLAINTEXT and SALT is turned into a short string, called a digest, which is returned. The same @@ -1012,7 +1012,7 @@ digest matter. Traditionally the result is a string of 13 bytes: two first bytes of the salt, followed by 11 bytes from the set C<[./0-9A-Za-z]>, and only -the first eight bytes of the digest string mattered, but alternative +the first eight bytes of PLAINTEXT mattered. But alternative hashing schemes (like MD5), higher level security schemes (like C2), and implementations on non-UNIX platforms may produce different strings. diff --git a/pod/perlintern.pod b/pod/perlintern.pod deleted file mode 100644 index 4107d5e63f..0000000000 --- a/pod/perlintern.pod +++ /dev/null @@ -1,1100 +0,0 @@ --*- buffer-read-only: t -*- - -!!!!!!! DO NOT EDIT THIS FILE !!!!!!! -This file is built by autodoc.pl extracting documentation from the C source -files. - -=head1 NAME - -perlintern - autogenerated documentation of purely B<internal> - Perl functions - -=head1 DESCRIPTION -X<internal Perl functions> X<interpreter functions> - -This file is the autogenerated documentation of functions in the -Perl interpreter that are documented using Perl's internal documentation -format but are not marked as part of the Perl API. In other words, -B<they are not for use in extensions>! - - -=head1 CV reference counts and CvOUTSIDE - -=over 8 - -=item CvWEAKOUTSIDE -X<CvWEAKOUTSIDE> - -Each CV has a pointer, C<CvOUTSIDE()>, to its lexically enclosing -CV (if any). Because pointers to anonymous sub prototypes are -stored in C<&> pad slots, it is a possible to get a circular reference, -with the parent pointing to the child and vice-versa. To avoid the -ensuing memory leak, we do not increment the reference count of the CV -pointed to by C<CvOUTSIDE> in the I<one specific instance> that the parent -has a C<&> pad slot pointing back to us. In this case, we set the -C<CvWEAKOUTSIDE> flag in the child. This allows us to determine under what -circumstances we should decrement the refcount of the parent when freeing -the child. - -There is a further complication with non-closure anonymous subs (i.e. those -that do not refer to any lexicals outside that sub). In this case, the -anonymous prototype is shared rather than being cloned. This has the -consequence that the parent may be freed while there are still active -children, eg - - BEGIN { $a = sub { eval '$x' } } - -In this case, the BEGIN is freed immediately after execution since there -are no active references to it: the anon sub prototype has -C<CvWEAKOUTSIDE> set since it's not a closure, and $a points to the same -CV, so it doesn't contribute to BEGIN's refcount either. When $a is -executed, the C<eval '$x'> causes the chain of C<CvOUTSIDE>s to be followed, -and the freed BEGIN is accessed. - -To avoid this, whenever a CV and its associated pad is freed, any -C<&> entries in the pad are explicitly removed from the pad, and if the -refcount of the pointed-to anon sub is still positive, then that -child's C<CvOUTSIDE> is set to point to its grandparent. This will only -occur in the single specific case of a non-closure anon prototype -having one or more active references (such as C<$a> above). - -One other thing to consider is that a CV may be merely undefined -rather than freed, eg C<undef &foo>. In this case, its refcount may -not have reached zero, but we still delete its pad and its C<CvROOT> etc. -Since various children may still have their C<CvOUTSIDE> pointing at this -undefined CV, we keep its own C<CvOUTSIDE> for the time being, so that -the chain of lexical scopes is unbroken. For example, the following -should print 123: - - my $x = 123; - sub tmp { sub { eval '$x' } } - my $a = tmp(); - undef &tmp; - print $a->(); - - bool CvWEAKOUTSIDE(CV *cv) - -=for hackers -Found in file cv.h - - -=back - -=head1 Functions in file pad.h - - -=over 8 - -=item CX_CURPAD_SAVE -X<CX_CURPAD_SAVE> - -Save the current pad in the given context block structure. - - void CX_CURPAD_SAVE(struct context) - -=for hackers -Found in file pad.h - -=item CX_CURPAD_SV -X<CX_CURPAD_SV> - -Access the SV at offset po in the saved current pad in the given -context block structure (can be used as an lvalue). - - SV * CX_CURPAD_SV(struct context, PADOFFSET po) - -=for hackers -Found in file pad.h - -=item PAD_BASE_SV -X<PAD_BASE_SV> - -Get the value from slot C<po> in the base (DEPTH=1) pad of a padlist - - SV * PAD_BASE_SV(PADLIST padlist, PADOFFSET po) - -=for hackers -Found in file pad.h - -=item PAD_CLONE_VARS -X<PAD_CLONE_VARS> - -Clone the state variables associated with running and compiling pads. - - void PAD_CLONE_VARS(PerlInterpreter *proto_perl, CLONE_PARAMS* param) - -=for hackers -Found in file pad.h - -=item PAD_COMPNAME_FLAGS -X<PAD_COMPNAME_FLAGS> - -Return the flags for the current compiling pad name -at offset C<po>. Assumes a valid slot entry. - - U32 PAD_COMPNAME_FLAGS(PADOFFSET po) - -=for hackers -Found in file pad.h - -=item PAD_COMPNAME_GEN -X<PAD_COMPNAME_GEN> - -The generation number of the name at offset C<po> in the current -compiling pad (lvalue). Note that C<SvUVX> is hijacked for this purpose. - - STRLEN PAD_COMPNAME_GEN(PADOFFSET po) - -=for hackers -Found in file pad.h - -=item PAD_COMPNAME_GEN_set -X<PAD_COMPNAME_GEN_set> - -Sets the generation number of the name at offset C<po> in the current -ling pad (lvalue) to C<gen>. Note that C<SvUV_set> is hijacked for this purpose. - - STRLEN PAD_COMPNAME_GEN_set(PADOFFSET po, int gen) - -=for hackers -Found in file pad.h - -=item PAD_COMPNAME_OURSTASH -X<PAD_COMPNAME_OURSTASH> - -Return the stash associated with an C<our> variable. -Assumes the slot entry is a valid C<our> lexical. - - HV * PAD_COMPNAME_OURSTASH(PADOFFSET po) - -=for hackers -Found in file pad.h - -=item PAD_COMPNAME_PV -X<PAD_COMPNAME_PV> - -Return the name of the current compiling pad name -at offset C<po>. Assumes a valid slot entry. - - char * PAD_COMPNAME_PV(PADOFFSET po) - -=for hackers -Found in file pad.h - -=item PAD_COMPNAME_TYPE -X<PAD_COMPNAME_TYPE> - -Return the type (stash) of the current compiling pad name at offset -C<po>. Must be a valid name. Returns null if not typed. - - HV * PAD_COMPNAME_TYPE(PADOFFSET po) - -=for hackers -Found in file pad.h - -=item PAD_DUP -X<PAD_DUP> - -Clone a padlist. - - void PAD_DUP(PADLIST dstpad, PADLIST srcpad, CLONE_PARAMS* param) - -=for hackers -Found in file pad.h - -=item PAD_RESTORE_LOCAL -X<PAD_RESTORE_LOCAL> - -Restore the old pad saved into the local variable opad by PAD_SAVE_LOCAL() - - void PAD_RESTORE_LOCAL(PAD *opad) - -=for hackers -Found in file pad.h - -=item PAD_SAVE_LOCAL -X<PAD_SAVE_LOCAL> - -Save the current pad to the local variable opad, then make the -current pad equal to npad - - void PAD_SAVE_LOCAL(PAD *opad, PAD *npad) - -=for hackers -Found in file pad.h - -=item PAD_SAVE_SETNULLPAD -X<PAD_SAVE_SETNULLPAD> - -Save the current pad then set it to null. - - void PAD_SAVE_SETNULLPAD() - -=for hackers -Found in file pad.h - -=item PAD_SETSV -X<PAD_SETSV> - -Set the slot at offset C<po> in the current pad to C<sv> - - SV * PAD_SETSV(PADOFFSET po, SV* sv) - -=for hackers -Found in file pad.h - -=item PAD_SET_CUR -X<PAD_SET_CUR> - -Set the current pad to be pad C<n> in the padlist, saving -the previous current pad. NB currently this macro expands to a string too -long for some compilers, so it's best to replace it with - - SAVECOMPPAD(); - PAD_SET_CUR_NOSAVE(padlist,n); - - - void PAD_SET_CUR(PADLIST padlist, I32 n) - -=for hackers -Found in file pad.h - -=item PAD_SET_CUR_NOSAVE -X<PAD_SET_CUR_NOSAVE> - -like PAD_SET_CUR, but without the save - - void PAD_SET_CUR_NOSAVE(PADLIST padlist, I32 n) - -=for hackers -Found in file pad.h - -=item PAD_SV -X<PAD_SV> - -Get the value at offset C<po> in the current pad - - void PAD_SV(PADOFFSET po) - -=for hackers -Found in file pad.h - -=item PAD_SVl -X<PAD_SVl> - -Lightweight and lvalue version of C<PAD_SV>. -Get or set the value at offset C<po> in the current pad. -Unlike C<PAD_SV>, does not print diagnostics with -DX. -For internal use only. - - SV * PAD_SVl(PADOFFSET po) - -=for hackers -Found in file pad.h - -=item SAVECLEARSV -X<SAVECLEARSV> - -Clear the pointed to pad value on scope exit. (i.e. the runtime action of 'my') - - void SAVECLEARSV(SV **svp) - -=for hackers -Found in file pad.h - -=item SAVECOMPPAD -X<SAVECOMPPAD> - -save PL_comppad and PL_curpad - - - - - - void SAVECOMPPAD() - -=for hackers -Found in file pad.h - -=item SAVEPADSV -X<SAVEPADSV> - -Save a pad slot (used to restore after an iteration) - -XXX DAPM it would make more sense to make the arg a PADOFFSET - void SAVEPADSV(PADOFFSET po) - -=for hackers -Found in file pad.h - - -=back - -=head1 GV Functions - -=over 8 - -=item is_gv_magical_sv -X<is_gv_magical_sv> - -Returns C<TRUE> if given the name of a magical GV. - -Currently only useful internally when determining if a GV should be -created even in rvalue contexts. - -C<flags> is not used at present but available for future extension to -allow selecting particular classes of magical variable. - -Currently assumes that C<name> is NUL terminated (as well as len being valid). -This assumption is met by all callers within the perl core, which all pass -pointers returned by SvPV. - - bool is_gv_magical_sv(SV *const name_sv, U32 flags) - -=for hackers -Found in file gv.c - - -=back - -=head1 Hash Manipulation Functions - -=over 8 - -=item refcounted_he_chain_2hv -X<refcounted_he_chain_2hv> - -Generates and returns a C<HV *> by walking up the tree starting at the passed -in C<struct refcounted_he *>. - - HV * refcounted_he_chain_2hv(const struct refcounted_he *c) - -=for hackers -Found in file hv.c - -=item refcounted_he_free -X<refcounted_he_free> - -Decrements the reference count of the passed in C<struct refcounted_he *> -by one. If the reference count reaches zero the structure's memory is freed, -and C<refcounted_he_free> iterates onto the parent node. - - void refcounted_he_free(struct refcounted_he *he) - -=for hackers -Found in file hv.c - -=item refcounted_he_new -X<refcounted_he_new> - -Creates a new C<struct refcounted_he>. As S<key> is copied, and value is -stored in a compact form, all references remain the property of the caller. -The C<struct refcounted_he> is returned with a reference count of 1. - - struct refcounted_he * refcounted_he_new(struct refcounted_he *const parent, SV *const key, SV *const value) - -=for hackers -Found in file hv.c - - -=back - -=head1 IO Functions - -=over 8 - -=item start_glob -X<start_glob> - -Function called by C<do_readline> to spawn a glob (or do the glob inside -perl on VMS). This code used to be inline, but now perl uses C<File::Glob> -this glob starter is only used by miniperl during the build process. -Moving it away shrinks pp_hot.c; shrinking pp_hot.c helps speed perl up. - - PerlIO* start_glob(SV *tmpglob, IO *io) - -=for hackers -Found in file doio.c - - -=back - -=head1 Magical Functions - -=over 8 - -=item magic_clearhint -X<magic_clearhint> - -Triggered by a delete from %^H, records the key to -C<PL_compiling.cop_hints_hash>. - - int magic_clearhint(SV* sv, MAGIC* mg) - -=for hackers -Found in file mg.c - -=item magic_sethint -X<magic_sethint> - -Triggered by a store to %^H, records the key/value pair to -C<PL_compiling.cop_hints_hash>. It is assumed that hints aren't storing -anything that would need a deep copy. Maybe we should warn if we find a -reference. - - int magic_sethint(SV* sv, MAGIC* mg) - -=for hackers -Found in file mg.c - -=item mg_localize -X<mg_localize> - -Copy some of the magic from an existing SV to new localized version of that -SV. Container magic (eg %ENV, $1, tie) gets copied, value magic doesn't (eg -taint, pos). - -If setmagic is false then no set magic will be called on the new (empty) SV. -This typically means that assignment will soon follow (e.g. 'local $x = $y'), -and that will handle the magic. - - void mg_localize(SV* sv, SV* nsv, bool setmagic) - -=for hackers -Found in file mg.c - - -=back - -=head1 MRO Functions - -=over 8 - -=item mro_get_linear_isa_dfs -X<mro_get_linear_isa_dfs> - -Returns the Depth-First Search linearization of @ISA -the given stash. The return value is a read-only AV*. -C<level> should be 0 (it is used internally in this -function's recursion). - -You are responsible for C<SvREFCNT_inc()> on the -return value if you plan to store it anywhere -semi-permanently (otherwise it might be deleted -out from under you the next time the cache is -invalidated). - - AV* mro_get_linear_isa_dfs(HV* stash, U32 level) - -=for hackers -Found in file mro.c - -=item mro_isa_changed_in -X<mro_isa_changed_in> - -Takes the necessary steps (cache invalidations, mostly) -when the @ISA of the given package has changed. Invoked -by the C<setisa> magic, should not need to invoke directly. - - void mro_isa_changed_in(HV* stash) - -=for hackers -Found in file mro.c - - -=back - -=head1 Pad Data Structures - -=over 8 - -=item CvPADLIST -X<CvPADLIST> - -CV's can have CvPADLIST(cv) set to point to an AV. - -For these purposes "forms" are a kind-of CV, eval""s are too (except they're -not callable at will and are always thrown away after the eval"" is done -executing). Require'd files are simply evals without any outer lexical -scope. - -XSUBs don't have CvPADLIST set - dXSTARG fetches values from PL_curpad, -but that is really the callers pad (a slot of which is allocated by -every entersub). - -The CvPADLIST AV has does not have AvREAL set, so REFCNT of component items -is managed "manual" (mostly in pad.c) rather than normal av.c rules. -The items in the AV are not SVs as for a normal AV, but other AVs: - -0'th Entry of the CvPADLIST is an AV which represents the "names" or rather -the "static type information" for lexicals. - -The CvDEPTH'th entry of CvPADLIST AV is an AV which is the stack frame at that -depth of recursion into the CV. -The 0'th slot of a frame AV is an AV which is @_. -other entries are storage for variables and op targets. - -During compilation: -C<PL_comppad_name> is set to the names AV. -C<PL_comppad> is set to the frame AV for the frame CvDEPTH == 1. -C<PL_curpad> is set to the body of the frame AV (i.e. AvARRAY(PL_comppad)). - -During execution, C<PL_comppad> and C<PL_curpad> refer to the live -frame of the currently executing sub. - -Iterating over the names AV iterates over all possible pad -items. Pad slots that are SVs_PADTMP (targets/GVs/constants) end up having -&PL_sv_undef "names" (see pad_alloc()). - -Only my/our variable (SVs_PADMY/SVs_PADOUR) slots get valid names. -The rest are op targets/GVs/constants which are statically allocated -or resolved at compile time. These don't have names by which they -can be looked up from Perl code at run time through eval"" like -my/our variables can be. Since they can't be looked up by "name" -but only by their index allocated at compile time (which is usually -in PL_op->op_targ), wasting a name SV for them doesn't make sense. - -The SVs in the names AV have their PV being the name of the variable. -xlow+1..xhigh inclusive in the NV union is a range of cop_seq numbers for -which the name is valid. For typed lexicals name SV is SVt_PVMG and SvSTASH -points at the type. For C<our> lexicals, the type is also SVt_PVMG, with the -SvOURSTASH slot pointing at the stash of the associated global (so that -duplicate C<our> declarations in the same package can be detected). SvUVX is -sometimes hijacked to store the generation number during compilation. - -If SvFAKE is set on the name SV, then that slot in the frame AV is -a REFCNT'ed reference to a lexical from "outside". In this case, -the name SV does not use xlow and xhigh to store a cop_seq range, since it is -in scope throughout. Instead xhigh stores some flags containing info about -the real lexical (is it declared in an anon, and is it capable of being -instantiated multiple times?), and for fake ANONs, xlow contains the index -within the parent's pad where the lexical's value is stored, to make -cloning quicker. - -If the 'name' is '&' the corresponding entry in frame AV -is a CV representing a possible closure. -(SvFAKE and name of '&' is not a meaningful combination currently but could -become so if C<my sub foo {}> is implemented.) - -Note that formats are treated as anon subs, and are cloned each time -write is called (if necessary). - -The flag SVf_PADSTALE is cleared on lexicals each time the my() is executed, -and set on scope exit. This allows the 'Variable $x is not available' warning -to be generated in evals, such as - - { my $x = 1; sub f { eval '$x'} } f(); - -For state vars, SVf_PADSTALE is overloaded to mean 'not yet initialised' - - AV * CvPADLIST(CV *cv) - -=for hackers -Found in file pad.c - -=item cv_clone -X<cv_clone> - -Clone a CV: make a new CV which points to the same code etc, but which -has a newly-created pad built by copying the prototype pad and capturing -any outer lexicals. - - CV* cv_clone(CV* proto) - -=for hackers -Found in file pad.c - -=item cv_dump -X<cv_dump> - -dump the contents of a CV - - void cv_dump(const CV *cv, const char *title) - -=for hackers -Found in file pad.c - -=item do_dump_pad -X<do_dump_pad> - -Dump the contents of a padlist - - void do_dump_pad(I32 level, PerlIO *file, PADLIST *padlist, int full) - -=for hackers -Found in file pad.c - -=item intro_my -X<intro_my> - -"Introduce" my variables to visible status. - - U32 intro_my() - -=for hackers -Found in file pad.c - -=item pad_add_anon -X<pad_add_anon> - -Add an anon code entry to the current compiling pad - - PADOFFSET pad_add_anon(SV* sv, OPCODE op_type) - -=for hackers -Found in file pad.c - -=item pad_add_name -X<pad_add_name> - -Create a new name and associated PADMY SV in the current pad; return the -offset. -If C<typestash> is valid, the name is for a typed lexical; set the -name's stash to that value. -If C<ourstash> is valid, it's an our lexical, set the name's -SvOURSTASH to that value - -If fake, it means we're cloning an existing entry - - PADOFFSET pad_add_name(const char *name, HV* typestash, HV* ourstash, bool clone, bool state) - -=for hackers -Found in file pad.c - -=item pad_alloc -X<pad_alloc> - -Allocate a new my or tmp pad entry. For a my, simply push a null SV onto -the end of PL_comppad, but for a tmp, scan the pad from PL_padix upwards -for a slot which has no name and no active value. - - PADOFFSET pad_alloc(I32 optype, U32 tmptype) - -=for hackers -Found in file pad.c - -=item pad_block_start -X<pad_block_start> - -Update the pad compilation state variables on entry to a new block - - void pad_block_start(int full) - -=for hackers -Found in file pad.c - -=item pad_check_dup -X<pad_check_dup> - -Check for duplicate declarations: report any of: - * a my in the current scope with the same name; - * an our (anywhere in the pad) with the same name and the same stash - as C<ourstash> -C<is_our> indicates that the name to check is an 'our' declaration - - void pad_check_dup(const char* name, bool is_our, const HV* ourstash) - -=for hackers -Found in file pad.c - -=item pad_findlex -X<pad_findlex> - -Find a named lexical anywhere in a chain of nested pads. Add fake entries -in the inner pads if it's found in an outer one. - -Returns the offset in the bottom pad of the lex or the fake lex. -cv is the CV in which to start the search, and seq is the current cop_seq -to match against. If warn is true, print appropriate warnings. The out_* -vars return values, and so are pointers to where the returned values -should be stored. out_capture, if non-null, requests that the innermost -instance of the lexical is captured; out_name_sv is set to the innermost -matched namesv or fake namesv; out_flags returns the flags normally -associated with the IVX field of a fake namesv. - -Note that pad_findlex() is recursive; it recurses up the chain of CVs, -then comes back down, adding fake entries as it goes. It has to be this way -because fake namesvs in anon protoypes have to store in xlow the index into -the parent pad. - - PADOFFSET pad_findlex(const char *name, const CV* cv, U32 seq, int warn, SV** out_capture, SV** out_name_sv, int *out_flags) - -=for hackers -Found in file pad.c - -=item pad_findmy -X<pad_findmy> - -Given a lexical name, try to find its offset, first in the current pad, -or failing that, in the pads of any lexically enclosing subs (including -the complications introduced by eval). If the name is found in an outer pad, -then a fake entry is added to the current pad. -Returns the offset in the current pad, or NOT_IN_PAD on failure. - - PADOFFSET pad_findmy(const char* name) - -=for hackers -Found in file pad.c - -=item pad_fixup_inner_anons -X<pad_fixup_inner_anons> - -For any anon CVs in the pad, change CvOUTSIDE of that CV from -old_cv to new_cv if necessary. Needed when a newly-compiled CV has to be -moved to a pre-existing CV struct. - - void pad_fixup_inner_anons(PADLIST *padlist, CV *old_cv, CV *new_cv) - -=for hackers -Found in file pad.c - -=item pad_free -X<pad_free> - -Free the SV at offset po in the current pad. - - void pad_free(PADOFFSET po) - -=for hackers -Found in file pad.c - -=item pad_leavemy -X<pad_leavemy> - -Cleanup at end of scope during compilation: set the max seq number for -lexicals in this scope and warn of any lexicals that never got introduced. - - void pad_leavemy() - -=for hackers -Found in file pad.c - -=item pad_new -X<pad_new> - -Create a new compiling padlist, saving and updating the various global -vars at the same time as creating the pad itself. The following flags -can be OR'ed together: - - padnew_CLONE this pad is for a cloned CV - padnew_SAVE save old globals - padnew_SAVESUB also save extra stuff for start of sub - - PADLIST* pad_new(int flags) - -=for hackers -Found in file pad.c - -=item pad_push -X<pad_push> - -Push a new pad frame onto the padlist, unless there's already a pad at -this depth, in which case don't bother creating a new one. Then give -the new pad an @_ in slot zero. - - void pad_push(PADLIST *padlist, int depth) - -=for hackers -Found in file pad.c - -=item pad_reset -X<pad_reset> - -Mark all the current temporaries for reuse - - void pad_reset() - -=for hackers -Found in file pad.c - -=item pad_setsv -X<pad_setsv> - -Set the entry at offset po in the current pad to sv. -Use the macro PAD_SETSV() rather than calling this function directly. - - void pad_setsv(PADOFFSET po, SV* sv) - -=for hackers -Found in file pad.c - -=item pad_swipe -X<pad_swipe> - -Abandon the tmp in the current pad at offset po and replace with a -new one. - - void pad_swipe(PADOFFSET po, bool refadjust) - -=for hackers -Found in file pad.c - -=item pad_tidy -X<pad_tidy> - -Tidy up a pad after we've finished compiling it: - * remove most stuff from the pads of anonsub prototypes; - * give it a @_; - * mark tmps as such. - - void pad_tidy(padtidy_type type) - -=for hackers -Found in file pad.c - -=item pad_undef -X<pad_undef> - -Free the padlist associated with a CV. -If parts of it happen to be current, we null the relevant -PL_*pad* global vars so that we don't have any dangling references left. -We also repoint the CvOUTSIDE of any about-to-be-orphaned -inner subs to the outer of this cv. - -(This function should really be called pad_free, but the name was already -taken) - - void pad_undef(CV* cv) - -=for hackers -Found in file pad.c - - -=back - -=head1 Per-Interpreter Variables - -=over 8 - -=item PL_DBsingle -X<PL_DBsingle> - -When Perl is run in debugging mode, with the B<-d> switch, this SV is a -boolean which indicates whether subs are being single-stepped. -Single-stepping is automatically turned on after every step. This is the C -variable which corresponds to Perl's $DB::single variable. See -C<PL_DBsub>. - - SV * PL_DBsingle - -=for hackers -Found in file intrpvar.h - -=item PL_DBsub -X<PL_DBsub> - -When Perl is run in debugging mode, with the B<-d> switch, this GV contains -the SV which holds the name of the sub being debugged. This is the C -variable which corresponds to Perl's $DB::sub variable. See -C<PL_DBsingle>. - - GV * PL_DBsub - -=for hackers -Found in file intrpvar.h - -=item PL_DBtrace -X<PL_DBtrace> - -Trace variable used when Perl is run in debugging mode, with the B<-d> -switch. This is the C variable which corresponds to Perl's $DB::trace -variable. See C<PL_DBsingle>. - - SV * PL_DBtrace - -=for hackers -Found in file intrpvar.h - -=item PL_dowarn -X<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_last_in_gv -X<PL_last_in_gv> - -The GV which was last used for a filehandle input operation. (C<< <FH> >>) - - GV* PL_last_in_gv - -=for hackers -Found in file intrpvar.h - -=item PL_ofsgv -X<PL_ofsgv> - -The glob containing the output field separator - C<*,> in Perl space. - - GV* PL_ofsgv - -=for hackers -Found in file intrpvar.h - -=item PL_rs -X<PL_rs> - -The input record separator - C<$/> in Perl space. - - SV* PL_rs - -=for hackers -Found in file intrpvar.h - - -=back - -=head1 Stack Manipulation Macros - -=over 8 - -=item djSP -X<djSP> - -Declare Just C<SP>. This is actually identical to C<dSP>, and declares -a local copy of perl's stack pointer, available via the C<SP> macro. -See C<SP>. (Available for backward source code compatibility with the -old (Perl 5.005) thread model.) - - djSP; - -=for hackers -Found in file pp.h - -=item LVRET -X<LVRET> - -True if this op will be the return value of an lvalue subroutine - -=for hackers -Found in file pp.h - - -=back - -=head1 SV Manipulation Functions - -=over 8 - -=item sv_add_arena -X<sv_add_arena> - -Given a chunk of memory, link it to the head of the list of arenas, -and split it into a list of free SVs. - - void sv_add_arena(char *const ptr, const U32 size, const U32 flags) - -=for hackers -Found in file sv.c - -=item sv_clean_all -X<sv_clean_all> - -Decrement the refcnt of each remaining SV, possibly triggering a -cleanup. This function may have to be called multiple times to free -SVs which are in complex self-referential hierarchies. - - I32 sv_clean_all() - -=for hackers -Found in file sv.c - -=item sv_clean_objs -X<sv_clean_objs> - -Attempt to destroy all objects not yet freed - - void sv_clean_objs() - -=for hackers -Found in file sv.c - -=item sv_free_arenas -X<sv_free_arenas> - -Deallocate the memory used by all arenas. Note that all the individual SV -heads and bodies within the arenas must already have been freed. - - void sv_free_arenas() - -=for hackers -Found in file sv.c - - -=back - -=head1 SV-Body Allocation - -=over 8 - -=item sv_2num -X<sv_2num> - -Return an SV with the numeric value of the source SV, doing any necessary -reference or overload conversion. You must use the C<SvNUM(sv)> macro to -access this function. - - SV* sv_2num(SV *const sv) - -=for hackers -Found in file sv.c - - -=back - -=head1 Unicode Support - -=over 8 - -=item find_uninit_var -X<find_uninit_var> - -Find the name of the undefined variable (if any) that caused the operator o -to issue a "Use of uninitialized value" warning. -If match is true, only return a name if it's value matches uninit_sv. -So roughly speaking, if a unary operator (such as OP_COS) generates a -warning, then following the direct child of the op may yield an -OP_PADSV or OP_GV that gives the name of the undefined variable. On the -other hand, with OP_ADD there are two branches to follow, so we only print -the variable name if we get an exact match. - -The name is returned as a mortal SV. - -Assumes that PL_op is the op that originally triggered the error, and that -PL_comppad/PL_curpad points to the currently executing pad. - - SV* find_uninit_var(const OP *const obase, const SV *const uninit_sv, bool top) - -=for hackers -Found in file sv.c - -=item report_uninit -X<report_uninit> - -Print appropriate "Use of uninitialized variable" warning - - void report_uninit(const SV *uninit_sv) - -=for hackers -Found in file sv.c - - -=back - -=head1 AUTHORS - -The autodocumentation system was originally added to the Perl core by -Benjamin Stuhl. Documentation is by whoever was kind enough to -document their functions. - -=head1 SEE ALSO - -perlguts(1), perlapi(1) - -=cut - - ex: set ro: diff --git a/pod/perlobj.pod b/pod/perlobj.pod index 44ae4535ab..6d335e5410 100644 --- a/pod/perlobj.pod +++ b/pod/perlobj.pod @@ -460,6 +460,15 @@ object destruction, or for ensuring that destructors in the base classes of your choosing get called. Explicitly calling DESTROY is also possible, but is usually never needed. +DESTROY is subject to AUTOLOAD lookup, just like any other method. Hence, if +your class has an AUTOLOAD method, but does not need any DESTROY actions, +you probably want to provide a DESTROY method anyway, to prevent an +expensive call to AUTOLOAD each time an object is freed. As this technique +makes empty DESTROY methods common, the implementation is optimised so that +a DESTROY method that is an empty or constant subroutine, and hence could +have no side effects anyway, is not actually called. +X<AUTOLOAD> X<DESTROY> + Do not confuse the previous discussion with how objects I<CONTAINED> in the current one are destroyed. Such objects will be freed and destroyed automatically when the current object is freed, provided no other references to them exist diff --git a/pod/perlothrtut.pod b/pod/perlothrtut.pod deleted file mode 100644 index e0d69c5059..0000000000 --- a/pod/perlothrtut.pod +++ /dev/null @@ -1,1067 +0,0 @@ -=head1 NAME - -perlothrtut - old tutorial on threads in Perl - -=head1 DESCRIPTION - -B<WARNING>: -This tutorial describes the old-style thread model that was introduced in -release 5.005. This model is deprecated, and has been removed -for version 5.10. The interfaces described here were considered -experimental, and are likely to be buggy. - -For information about the new interpreter threads ("ithreads") model, see -the F<perlthrtut> tutorial, and the L<threads> and L<threads::shared> -modules. - -You are strongly encouraged to migrate any existing threads code to the -new model as soon as possible. - -=head1 What Is A Thread Anyway? - -A thread is a flow of control through a program with a single -execution point. - -Sounds an awful lot like a process, doesn't it? Well, it should. -Threads are one of the pieces of a process. Every process has at least -one thread and, up until now, every process running Perl had only one -thread. With 5.005, though, you can create extra threads. We're going -to show you how, when, and why. - -=head1 Threaded Program Models - -There are three basic ways that you can structure a threaded -program. Which model you choose depends on what you need your program -to do. For many non-trivial threaded programs you'll need to choose -different models for different pieces of your program. - -=head2 Boss/Worker - -The boss/worker model usually has one `boss' thread and one or more -`worker' threads. The boss thread gathers or generates tasks that need -to be done, then parcels those tasks out to the appropriate worker -thread. - -This model is common in GUI and server programs, where a main thread -waits for some event and then passes that event to the appropriate -worker threads for processing. Once the event has been passed on, the -boss thread goes back to waiting for another event. - -The boss thread does relatively little work. While tasks aren't -necessarily performed faster than with any other method, it tends to -have the best user-response times. - -=head2 Work Crew - -In the work crew model, several threads are created that do -essentially the same thing to different pieces of data. It closely -mirrors classical parallel processing and vector processors, where a -large array of processors do the exact same thing to many pieces of -data. - -This model is particularly useful if the system running the program -will distribute multiple threads across different processors. It can -also be useful in ray tracing or rendering engines, where the -individual threads can pass on interim results to give the user visual -feedback. - -=head2 Pipeline - -The pipeline model divides up a task into a series of steps, and -passes the results of one step on to the thread processing the -next. Each thread does one thing to each piece of data and passes the -results to the next thread in line. - -This model makes the most sense if you have multiple processors so two -or more threads will be executing in parallel, though it can often -make sense in other contexts as well. It tends to keep the individual -tasks small and simple, as well as allowing some parts of the pipeline -to block (on I/O or system calls, for example) while other parts keep -going. If you're running different parts of the pipeline on different -processors you may also take advantage of the caches on each -processor. - -This model is also handy for a form of recursive programming where, -rather than having a subroutine call itself, it instead creates -another thread. Prime and Fibonacci generators both map well to this -form of the pipeline model. (A version of a prime number generator is -presented later on.) - -=head1 Native threads - -There are several different ways to implement threads on a system. How -threads are implemented depends both on the vendor and, in some cases, -the version of the operating system. Often the first implementation -will be relatively simple, but later versions of the OS will be more -sophisticated. - -While the information in this section is useful, it's not necessary, -so you can skip it if you don't feel up to it. - -There are three basic categories of threads-user-mode threads, kernel -threads, and multiprocessor kernel threads. - -User-mode threads are threads that live entirely within a program and -its libraries. In this model, the OS knows nothing about threads. As -far as it's concerned, your process is just a process. - -This is the easiest way to implement threads, and the way most OSes -start. The big disadvantage is that, since the OS knows nothing about -threads, if one thread blocks they all do. Typical blocking activities -include most system calls, most I/O, and things like sleep(). - -Kernel threads are the next step in thread evolution. The OS knows -about kernel threads, and makes allowances for them. The main -difference between a kernel thread and a user-mode thread is -blocking. With kernel threads, things that block a single thread don't -block other threads. This is not the case with user-mode threads, -where the kernel blocks at the process level and not the thread level. - -This is a big step forward, and can give a threaded program quite a -performance boost over non-threaded programs. Threads that block -performing I/O, for example, won't block threads that are doing other -things. Each process still has only one thread running at once, -though, regardless of how many CPUs a system might have. - -Since kernel threading can interrupt a thread at any time, they will -uncover some of the implicit locking assumptions you may make in your -program. For example, something as simple as C<$a = $a + 2> can behave -unpredictably with kernel threads if $a is visible to other -threads, as another thread may have changed $a between the time it -was fetched on the right hand side and the time the new value is -stored. - -Multiprocessor Kernel Threads are the final step in thread -support. With multiprocessor kernel threads on a machine with multiple -CPUs, the OS may schedule two or more threads to run simultaneously on -different CPUs. - -This can give a serious performance boost to your threaded program, -since more than one thread will be executing at the same time. As a -tradeoff, though, any of those nagging synchronization issues that -might not have shown with basic kernel threads will appear with a -vengeance. - -In addition to the different levels of OS involvement in threads, -different OSes (and different thread implementations for a particular -OS) allocate CPU cycles to threads in different ways. - -Cooperative multitasking systems have running threads give up control -if one of two things happen. If a thread calls a yield function, it -gives up control. It also gives up control if the thread does -something that would cause it to block, such as perform I/O. In a -cooperative multitasking implementation, one thread can starve all the -others for CPU time if it so chooses. - -Preemptive multitasking systems interrupt threads at regular intervals -while the system decides which thread should run next. In a preemptive -multitasking system, one thread usually won't monopolize the CPU. - -On some systems, there can be cooperative and preemptive threads -running simultaneously. (Threads running with realtime priorities -often behave cooperatively, for example, while threads running at -normal priorities behave preemptively.) - -=head1 What kind of threads are perl threads? - -If you have experience with other thread implementations, you might -find that things aren't quite what you expect. It's very important to -remember when dealing with Perl threads that Perl Threads Are Not X -Threads, for all values of X. They aren't POSIX threads, or -DecThreads, or Java's Green threads, or Win32 threads. There are -similarities, and the broad concepts are the same, but if you start -looking for implementation details you're going to be either -disappointed or confused. Possibly both. - -This is not to say that Perl threads are completely different from -everything that's ever come before--they're not. Perl's threading -model owes a lot to other thread models, especially POSIX. Just as -Perl is not C, though, Perl threads are not POSIX threads. So if you -find yourself looking for mutexes, or thread priorities, it's time to -step back a bit and think about what you want to do and how Perl can -do it. - -=head1 Threadsafe Modules - -The addition of threads has changed Perl's internals -substantially. There are implications for people who write -modules--especially modules with XS code or external libraries. While -most modules won't encounter any problems, modules that aren't -explicitly tagged as thread-safe should be tested before being used in -production code. - -Not all modules that you might use are thread-safe, and you should -always assume a module is unsafe unless the documentation says -otherwise. This includes modules that are distributed as part of the -core. Threads are a beta feature, and even some of the standard -modules aren't thread-safe. - -If you're using a module that's not thread-safe for some reason, you -can protect yourself by using semaphores and lots of programming -discipline to control access to the module. Semaphores are covered -later in the article. Perl Threads Are Different - -=head1 Thread Basics - -The core Thread module provides the basic functions you need to write -threaded programs. In the following sections we'll cover the basics, -showing you what you need to do to create a threaded program. After -that, we'll go over some of the features of the Thread module that -make threaded programming easier. - -=head2 Basic Thread Support - -Thread support is a Perl compile-time option-it's something that's -turned on or off when Perl is built at your site, rather than when -your programs are compiled. If your Perl wasn't compiled with thread -support enabled, then any attempt to use threads will fail. - -Remember that the threading support in 5.005 is in beta release, and -should be treated as such. You should expect that it may not function -entirely properly, and the thread interface may well change some -before it is a fully supported, production release. The beta version -shouldn't be used for mission-critical projects. Having said that, -threaded Perl is pretty nifty, and worth a look. - -Your programs can use the Config module to check whether threads are -enabled. If your program can't run without them, you can say something -like: - - $Config{usethreads} or die "Recompile Perl with threads to run this program."; - -A possibly-threaded program using a possibly-threaded module might -have code like this: - - use Config; - use MyMod; - - if ($Config{usethreads}) { - # We have threads - require MyMod_threaded; - import MyMod_threaded; - } else { - require MyMod_unthreaded; - import MyMod_unthreaded; - } - -Since code that runs both with and without threads is usually pretty -messy, it's best to isolate the thread-specific code in its own -module. In our example above, that's what MyMod_threaded is, and it's -only imported if we're running on a threaded Perl. - -=head2 Creating Threads - -The Thread package provides the tools you need to create new -threads. Like any other module, you need to tell Perl you want to use -it; use Thread imports all the pieces you need to create basic -threads. - -The simplest, straightforward way to create a thread is with new(): - - use Thread; - - $thr = Thread->new( \&sub1 ); - - sub sub1 { - print "In the thread\n"; - } - -The new() method takes a reference to a subroutine and creates a new -thread, which starts executing in the referenced subroutine. Control -then passes both to the subroutine and the caller. - -If you need to, your program can pass parameters to the subroutine as -part of the thread startup. Just include the list of parameters as -part of the C<Thread::new> call, like this: - - use Thread; - $Param3 = "foo"; - $thr = Thread->new( \&sub1, "Param 1", "Param 2", $Param3 ); - $thr = Thread->new( \&sub1, @ParamList ); - $thr = Thread->new( \&sub1, qw(Param1 Param2 $Param3) ); - - sub sub1 { - my @InboundParameters = @_; - print "In the thread\n"; - print "got parameters >", join("<>", @InboundParameters), "<\n"; - } - - -The subroutine runs like a normal Perl subroutine, and the call to new -Thread returns whatever the subroutine returns. - -The last example illustrates another feature of threads. You can spawn -off several threads using the same subroutine. Each thread executes -the same subroutine, but in a separate thread with a separate -environment and potentially separate arguments. - -The other way to spawn a new thread is with async(), which is a way to -spin off a chunk of code like eval(), but into its own thread: - - use Thread qw(async); - - $LineCount = 0; - - $thr = async { - while(<>) {$LineCount++} - print "Got $LineCount lines\n"; - }; - - print "Waiting for the linecount to end\n"; - $thr->join; - print "All done\n"; - -You'll notice we did a use Thread qw(async) in that example. async is -not exported by default, so if you want it, you'll either need to -import it before you use it or fully qualify it as -Thread::async. You'll also note that there's a semicolon after the -closing brace. That's because async() treats the following block as an -anonymous subroutine, so the semicolon is necessary. - -Like eval(), the code executes in the same context as it would if it -weren't spun off. Since both the code inside and after the async start -executing, you need to be careful with any shared resources. Locking -and other synchronization techniques are covered later. - -=head2 Giving up control - -There are times when you may find it useful to have a thread -explicitly give up the CPU to another thread. Your threading package -might not support preemptive multitasking for threads, for example, or -you may be doing something compute-intensive and want to make sure -that the user-interface thread gets called frequently. Regardless, -there are times that you might want a thread to give up the processor. - -Perl's threading package provides the yield() function that does -this. yield() is pretty straightforward, and works like this: - - use Thread qw(yield async); - async { - my $foo = 50; - while ($foo--) { print "first async\n" } - yield; - $foo = 50; - while ($foo--) { print "first async\n" } - }; - async { - my $foo = 50; - while ($foo--) { print "second async\n" } - yield; - $foo = 50; - while ($foo--) { print "second async\n" } - }; - -=head2 Waiting For A Thread To Exit - -Since threads are also subroutines, they can return values. To wait -for a thread to exit and extract any scalars it might return, you can -use the join() method. - - use Thread; - $thr = Thread->new( \&sub1 ); - - @ReturnData = $thr->join; - print "Thread returned @ReturnData"; - - sub sub1 { return "Fifty-six", "foo", 2; } - -In the example above, the join() method returns as soon as the thread -ends. In addition to waiting for a thread to finish and gathering up -any values that the thread might have returned, join() also performs -any OS cleanup necessary for the thread. That cleanup might be -important, especially for long-running programs that spawn lots of -threads. If you don't want the return values and don't want to wait -for the thread to finish, you should call the detach() method -instead. detach() is covered later in the article. - -=head2 Errors In Threads - -So what happens when an error occurs in a thread? Any errors that -could be caught with eval() are postponed until the thread is -joined. If your program never joins, the errors appear when your -program exits. - -Errors deferred until a join() can be caught with eval(): - - use Thread qw(async); - $thr = async {$b = 3/0}; # Divide by zero error - $foo = eval {$thr->join}; - if ($@) { - print "died with error $@\n"; - } else { - print "Hey, why aren't you dead?\n"; - } - -eval() passes any results from the joined thread back unmodified, so -if you want the return value of the thread, this is your only chance -to get them. - -=head2 Ignoring A Thread - -join() does three things: it waits for a thread to exit, cleans up -after it, and returns any data the thread may have produced. But what -if you're not interested in the thread's return values, and you don't -really care when the thread finishes? All you want is for the thread -to get cleaned up after when it's done. - -In this case, you use the detach() method. Once a thread is detached, -it'll run until it's finished, then Perl will clean up after it -automatically. - - use Thread; - $thr = Thread->new( \&sub1 ); # Spawn the thread - - $thr->detach; # Now we officially don't care any more - - sub sub1 { - $a = 0; - while (1) { - $a++; - print "\$a is $a\n"; - sleep 1; - } - } - - -Once a thread is detached, it may not be joined, and any output that -it might have produced (if it was done and waiting for a join) is -lost. - -=head1 Threads And Data - -Now that we've covered the basics of threads, it's time for our next -topic: data. Threading introduces a couple of complications to data -access that non-threaded programs never need to worry about. - -=head2 Shared And Unshared Data - -The single most important thing to remember when using threads is that -all threads potentially have access to all the data anywhere in your -program. While this is true with a nonthreaded Perl program as well, -it's especially important to remember with a threaded program, since -more than one thread can be accessing this data at once. - -Perl's scoping rules don't change because you're using threads. If a -subroutine (or block, in the case of async()) could see a variable if -you weren't running with threads, it can see it if you are. This is -especially important for the subroutines that create, and makes C<my> -variables even more important. Remember--if your variables aren't -lexically scoped (declared with C<my>) you're probably sharing them -between threads. - -=head2 Thread Pitfall: Races - -While threads bring a new set of useful tools, they also bring a -number of pitfalls. One pitfall is the race condition: - - use Thread; - $a = 1; - $thr1 = Thread->new(\&sub1); - $thr2 = Thread->new(\&sub2); - - sleep 10; - print "$a\n"; - - sub sub1 { $foo = $a; $a = $foo + 1; } - sub sub2 { $bar = $a; $a = $bar + 1; } - -What do you think $a will be? The answer, unfortunately, is "it -depends." Both sub1() and sub2() access the global variable $a, once -to read and once to write. Depending on factors ranging from your -thread implementation's scheduling algorithm to the phase of the moon, -$a can be 2 or 3. - -Race conditions are caused by unsynchronized access to shared -data. Without explicit synchronization, there's no way to be sure that -nothing has happened to the shared data between the time you access it -and the time you update it. Even this simple code fragment has the -possibility of error: - - use Thread qw(async); - $a = 2; - async{ $b = $a; $a = $b + 1; }; - async{ $c = $a; $a = $c + 1; }; - -Two threads both access $a. Each thread can potentially be interrupted -at any point, or be executed in any order. At the end, $a could be 3 -or 4, and both $b and $c could be 2 or 3. - -Whenever your program accesses data or resources that can be accessed -by other threads, you must take steps to coordinate access or risk -data corruption and race conditions. - -=head2 Controlling access: lock() - -The lock() function takes a variable (or subroutine, but we'll get to -that later) and puts a lock on it. No other thread may lock the -variable until the locking thread exits the innermost block containing -the lock. Using lock() is straightforward: - - use Thread qw(async); - $a = 4; - $thr1 = async { - $foo = 12; - { - lock ($a); # Block until we get access to $a - $b = $a; - $a = $b * $foo; - } - print "\$foo was $foo\n"; - }; - $thr2 = async { - $bar = 7; - { - lock ($a); # Block until we can get access to $a - $c = $a; - $a = $c * $bar; - } - print "\$bar was $bar\n"; - }; - $thr1->join; - $thr2->join; - print "\$a is $a\n"; - -lock() blocks the thread until the variable being locked is -available. When lock() returns, your thread can be sure that no other -thread can lock that variable until the innermost block containing the -lock exits. - -It's important to note that locks don't prevent access to the variable -in question, only lock attempts. This is in keeping with Perl's -longstanding tradition of courteous programming, and the advisory file -locking that flock() gives you. Locked subroutines behave differently, -however. We'll cover that later in the article. - -You may lock arrays and hashes as well as scalars. Locking an array, -though, will not block subsequent locks on array elements, just lock -attempts on the array itself. - -Finally, locks are recursive, which means it's okay for a thread to -lock a variable more than once. The lock will last until the outermost -lock() on the variable goes out of scope. - -=head2 Thread Pitfall: Deadlocks - -Locks are a handy tool to synchronize access to data. Using them -properly is the key to safe shared data. Unfortunately, locks aren't -without their dangers. Consider the following code: - - use Thread qw(async yield); - $a = 4; - $b = "foo"; - async { - lock($a); - yield; - sleep 20; - lock ($b); - }; - async { - lock($b); - yield; - sleep 20; - lock ($a); - }; - -This program will probably hang until you kill it. The only way it -won't hang is if one of the two async() routines acquires both locks -first. A guaranteed-to-hang version is more complicated, but the -principle is the same. - -The first thread spawned by async() will grab a lock on $a then, a -second or two later, try to grab a lock on $b. Meanwhile, the second -thread grabs a lock on $b, then later tries to grab a lock on $a. The -second lock attempt for both threads will block, each waiting for the -other to release its lock. - -This condition is called a deadlock, and it occurs whenever two or -more threads are trying to get locks on resources that the others -own. Each thread will block, waiting for the other to release a lock -on a resource. That never happens, though, since the thread with the -resource is itself waiting for a lock to be released. - -There are a number of ways to handle this sort of problem. The best -way is to always have all threads acquire locks in the exact same -order. If, for example, you lock variables $a, $b, and $c, always lock -$a before $b, and $b before $c. It's also best to hold on to locks for -as short a period of time to minimize the risks of deadlock. - -=head2 Queues: Passing Data Around - -A queue is a special thread-safe object that lets you put data in one -end and take it out the other without having to worry about -synchronization issues. They're pretty straightforward, and look like -this: - - use Thread qw(async); - use Thread::Queue; - - my $DataQueue = Thread::Queue->new(); - $thr = async { - while ($DataElement = $DataQueue->dequeue) { - print "Popped $DataElement off the queue\n"; - } - }; - - $DataQueue->enqueue(12); - $DataQueue->enqueue("A", "B", "C"); - sleep 10; - $DataQueue->enqueue(undef); - -You create the queue with C<< Thread::Queue->new >>. Then you can add -lists of scalars onto the end with enqueue(), and pop scalars off the -front of it with dequeue(). A queue has no fixed size, and can grow as -needed to hold everything pushed on to it. - -If a queue is empty, dequeue() blocks until another thread enqueues -something. This makes queues ideal for event loops and other -communications between threads. - -=head1 Threads And Code - -In addition to providing thread-safe access to data via locks and -queues, threaded Perl also provides general-purpose semaphores for -coarser synchronization than locks provide and thread-safe access to -entire subroutines. - -=head2 Semaphores: Synchronizing Data Access - -Semaphores are a kind of generic locking mechanism. Unlike lock, which -gets a lock on a particular scalar, Perl doesn't associate any -particular thing with a semaphore so you can use them to control -access to anything you like. In addition, semaphores can allow more -than one thread to access a resource at once, though by default -semaphores only allow one thread access at a time. - -=over 4 - -=item Basic semaphores - -Semaphores have two methods, down and up. down decrements the resource -count, while up increments it. down calls will block if the -semaphore's current count would decrement below zero. This program -gives a quick demonstration: - - use Thread qw(yield); - use Thread::Semaphore; - my $semaphore = Thread::Semaphore->new(); - $GlobalVariable = 0; - - $thr1 = Thread->new( \&sample_sub, 1 ); - $thr2 = Thread->new( \&sample_sub, 2 ); - $thr3 = Thread->new( \&sample_sub, 3 ); - - sub sample_sub { - my $SubNumber = shift @_; - my $TryCount = 10; - my $LocalCopy; - sleep 1; - while ($TryCount--) { - $semaphore->down; - $LocalCopy = $GlobalVariable; - print "$TryCount tries left for sub $SubNumber (\$GlobalVariable is $GlobalVariable)\n"; - yield; - sleep 2; - $LocalCopy++; - $GlobalVariable = $LocalCopy; - $semaphore->up; - } - } - -The three invocations of the subroutine all operate in sync. The -semaphore, though, makes sure that only one thread is accessing the -global variable at once. - -=item Advanced Semaphores - -By default, semaphores behave like locks, letting only one thread -down() them at a time. However, there are other uses for semaphores. - -Each semaphore has a counter attached to it. down() decrements the -counter and up() increments the counter. By default, semaphores are -created with the counter set to one, down() decrements by one, and -up() increments by one. If down() attempts to decrement the counter -below zero, it blocks until the counter is large enough. Note that -while a semaphore can be created with a starting count of zero, any -up() or down() always changes the counter by at least -one. $semaphore->down(0) is the same as $semaphore->down(1). - -The question, of course, is why would you do something like this? Why -create a semaphore with a starting count that's not one, or why -decrement/increment it by more than one? The answer is resource -availability. Many resources that you want to manage access for can be -safely used by more than one thread at once. - -For example, let's take a GUI driven program. It has a semaphore that -it uses to synchronize access to the display, so only one thread is -ever drawing at once. Handy, but of course you don't want any thread -to start drawing until things are properly set up. In this case, you -can create a semaphore with a counter set to zero, and up it when -things are ready for drawing. - -Semaphores with counters greater than one are also useful for -establishing quotas. Say, for example, that you have a number of -threads that can do I/O at once. You don't want all the threads -reading or writing at once though, since that can potentially swamp -your I/O channels, or deplete your process' quota of filehandles. You -can use a semaphore initialized to the number of concurrent I/O -requests (or open files) that you want at any one time, and have your -threads quietly block and unblock themselves. - -Larger increments or decrements are handy in those cases where a -thread needs to check out or return a number of resources at once. - -=back - -=head2 Attributes: Restricting Access To Subroutines - -In addition to synchronizing access to data or resources, you might -find it useful to synchronize access to subroutines. You may be -accessing a singular machine resource (perhaps a vector processor), or -find it easier to serialize calls to a particular subroutine than to -have a set of locks and semaphores. - -One of the additions to Perl 5.005 is subroutine attributes. The -Thread package uses these to provide several flavors of -serialization. It's important to remember that these attributes are -used in the compilation phase of your program so you can't change a -subroutine's behavior while your program is actually running. - -=head2 Subroutine Locks - -The basic subroutine lock looks like this: - - sub test_sub :locked { - } - -This ensures that only one thread will be executing this subroutine at -any one time. Once a thread calls this subroutine, any other thread -that calls it will block until the thread in the subroutine exits -it. A more elaborate example looks like this: - - use Thread qw(yield); - - Thread->new(\&thread_sub, 1); - Thread->new(\&thread_sub, 2); - Thread->new(\&thread_sub, 3); - Thread->new(\&thread_sub, 4); - - sub sync_sub :locked { - my $CallingThread = shift @_; - print "In sync_sub for thread $CallingThread\n"; - yield; - sleep 3; - print "Leaving sync_sub for thread $CallingThread\n"; - } - - sub thread_sub { - my $ThreadID = shift @_; - print "Thread $ThreadID calling sync_sub\n"; - sync_sub($ThreadID); - print "$ThreadID is done with sync_sub\n"; - } - -The C<locked> attribute tells perl to lock sync_sub(), and if you run -this, you can see that only one thread is in it at any one time. - -=head2 Methods - -Locking an entire subroutine can sometimes be overkill, especially -when dealing with Perl objects. When calling a method for an object, -for example, you want to serialize calls to a method, so that only one -thread will be in the subroutine for a particular object, but threads -calling that subroutine for a different object aren't blocked. The -method attribute indicates whether the subroutine is really a method. - - use Thread; - - sub tester { - my $thrnum = shift @_; - my $bar = Foo->new(); - foreach (1..10) { - print "$thrnum calling per_object\n"; - $bar->per_object($thrnum); - print "$thrnum out of per_object\n"; - yield; - print "$thrnum calling one_at_a_time\n"; - $bar->one_at_a_time($thrnum); - print "$thrnum out of one_at_a_time\n"; - yield; - } - } - - foreach my $thrnum (1..10) { - Thread->new(\&tester, $thrnum); - } - - package Foo; - sub new { - my $class = shift @_; - return bless [@_], $class; - } - - sub per_object :locked :method { - my ($class, $thrnum) = @_; - print "In per_object for thread $thrnum\n"; - yield; - sleep 2; - print "Exiting per_object for thread $thrnum\n"; - } - - sub one_at_a_time :locked { - my ($class, $thrnum) = @_; - print "In one_at_a_time for thread $thrnum\n"; - yield; - sleep 2; - print "Exiting one_at_a_time for thread $thrnum\n"; - } - -As you can see from the output (omitted for brevity; it's 800 lines) -all the threads can be in per_object() simultaneously, but only one -thread is ever in one_at_a_time() at once. - -=head2 Locking A Subroutine - -You can lock a subroutine as you would lock a variable. Subroutine locks -work the same as specifying a C<locked> attribute for the subroutine, -and block all access to the subroutine for other threads until the -lock goes out of scope. When the subroutine isn't locked, any number -of threads can be in it at once, and getting a lock on a subroutine -doesn't affect threads already in the subroutine. Getting a lock on a -subroutine looks like this: - - lock(\&sub_to_lock); - -Simple enough. Unlike the C<locked> attribute, which is a compile time -option, locking and unlocking a subroutine can be done at runtime at your -discretion. There is some runtime penalty to using lock(\&sub) instead -of the C<locked> attribute, so make sure you're choosing the proper -method to do the locking. - -You'd choose lock(\&sub) when writing modules and code to run on both -threaded and unthreaded Perl, especially for code that will run on -5.004 or earlier Perls. In that case, it's useful to have subroutines -that should be serialized lock themselves if they're running threaded, -like so: - - package Foo; - use Config; - $Running_Threaded = 0; - - BEGIN { $Running_Threaded = $Config{'usethreads'} } - - sub sub1 { lock(\&sub1) if $Running_Threaded } - - -This way you can ensure single-threadedness regardless of which -version of Perl you're running. - -=head1 General Thread Utility Routines - -We've covered the workhorse parts of Perl's threading package, and -with these tools you should be well on your way to writing threaded -code and packages. There are a few useful little pieces that didn't -really fit in anyplace else. - -=head2 What Thread Am I In? - -The Thread->self method provides your program with a way to get an -object representing the thread it's currently in. You can use this -object in the same way as the ones returned from the thread creation. - -=head2 Thread IDs - -tid() is a thread object method that returns the thread ID of the -thread the object represents. Thread IDs are integers, with the main -thread in a program being 0. Currently Perl assigns a unique tid to -every thread ever created in your program, assigning the first thread -to be created a tid of 1, and increasing the tid by 1 for each new -thread that's created. - -=head2 Are These Threads The Same? - -The equal() method takes two thread objects and returns true -if the objects represent the same thread, and false if they don't. - -=head2 What Threads Are Running? - -Thread->list returns a list of thread objects, one for each thread -that's currently running. Handy for a number of things, including -cleaning up at the end of your program: - - # Loop through all the threads - foreach $thr (Thread->list) { - # Don't join the main thread or ourselves - if ($thr->tid && !Thread::equal($thr, Thread->self)) { - $thr->join; - } - } - -The example above is just for illustration. It isn't strictly -necessary to join all the threads you create, since Perl detaches all -the threads before it exits. - -=head1 A Complete Example - -Confused yet? It's time for an example program to show some of the -things we've covered. This program finds prime numbers using threads. - - 1 #!/usr/bin/perl -w - 2 # prime-pthread, courtesy of Tom Christiansen - 3 - 4 use strict; - 5 - 6 use Thread; - 7 use Thread::Queue; - 8 - 9 my $stream = Thread::Queue->new(); - 10 my $kid = Thread->new(\&check_num, $stream, 2); - 11 - 12 for my $i ( 3 .. 1000 ) { - 13 $stream->enqueue($i); - 14 } - 15 - 16 $stream->enqueue(undef); - 17 $kid->join(); - 18 - 19 sub check_num { - 20 my ($upstream, $cur_prime) = @_; - 21 my $kid; - 22 my $downstream = Thread::Queue->new(); - 23 while (my $num = $upstream->dequeue) { - 24 next unless $num % $cur_prime; - 25 if ($kid) { - 26 $downstream->enqueue($num); - 27 } else { - 28 print "Found prime $num\n"; - 29 $kid = Thread->new(\&check_num, $downstream, $num); - 30 } - 31 } - 32 $downstream->enqueue(undef) if $kid; - 33 $kid->join() if $kid; - 34 } - -This program uses the pipeline model to generate prime numbers. Each -thread in the pipeline has an input queue that feeds numbers to be -checked, a prime number that it's responsible for, and an output queue -that it funnels numbers that have failed the check into. If the thread -has a number that's failed its check and there's no child thread, then -the thread must have found a new prime number. In that case, a new -child thread is created for that prime and stuck on the end of the -pipeline. - -This probably sounds a bit more confusing than it really is, so lets -go through this program piece by piece and see what it does. (For -those of you who might be trying to remember exactly what a prime -number is, it's a number that's only evenly divisible by itself and 1) - -The bulk of the work is done by the check_num() subroutine, which -takes a reference to its input queue and a prime number that it's -responsible for. After pulling in the input queue and the prime that -the subroutine's checking (line 20), we create a new queue (line 22) -and reserve a scalar for the thread that we're likely to create later -(line 21). - -The while loop from lines 23 to line 31 grabs a scalar off the input -queue and checks against the prime this thread is responsible -for. Line 24 checks to see if there's a remainder when we modulo the -number to be checked against our prime. If there is one, the number -must not be evenly divisible by our prime, so we need to either pass -it on to the next thread if we've created one (line 26) or create a -new thread if we haven't. - -The new thread creation is line 29. We pass on to it a reference to -the queue we've created, and the prime number we've found. - -Finally, once the loop terminates (because we got a 0 or undef in the -queue, which serves as a note to die), we pass on the notice to our -child and wait for it to exit if we've created a child (Lines 32 and -37). - -Meanwhile, back in the main thread, we create a queue (line 9) and the -initial child thread (line 10), and pre-seed it with the first prime: -2. Then we queue all the numbers from 3 to 1000 for checking (lines -12-14), then queue a die notice (line 16) and wait for the first child -thread to terminate (line 17). Because a child won't die until its -child has died, we know that we're done once we return from the join. - -That's how it works. It's pretty simple; as with many Perl programs, -the explanation is much longer than the program. - -=head1 Conclusion - -A complete thread tutorial could fill a book (and has, many times), -but this should get you well on your way. The final authority on how -Perl's threads behave is the documentation bundled with the Perl -distribution, but with what we've covered in this article, you should -be well on your way to becoming a threaded Perl expert. - -=head1 Bibliography - -Here's a short bibliography courtesy of Jürgen Christoffel: - -=head2 Introductory Texts - -Birrell, Andrew D. An Introduction to Programming with -Threads. Digital Equipment Corporation, 1989, DEC-SRC Research Report -#35 online as -http://www.research.digital.com/SRC/staff/birrell/bib.html (highly -recommended) - -Robbins, Kay. A., and Steven Robbins. Practical Unix Programming: A -Guide to Concurrency, Communication, and -Multithreading. Prentice-Hall, 1996. - -Lewis, Bill, and Daniel J. Berg. Multithreaded Programming with -Pthreads. Prentice Hall, 1997, ISBN 0-13-443698-9 (a well-written -introduction to threads). - -Nelson, Greg (editor). Systems Programming with Modula-3. Prentice -Hall, 1991, ISBN 0-13-590464-1. - -Nichols, Bradford, Dick Buttlar, and Jacqueline Proulx Farrell. -Pthreads Programming. O'Reilly & Associates, 1996, ISBN 156592-115-1 -(covers POSIX threads). - -=head2 OS-Related References - -Boykin, Joseph, David Kirschen, Alan Langerman, and Susan -LoVerso. Programming under Mach. Addison-Wesley, 1994, ISBN -0-201-52739-1. - -Tanenbaum, Andrew S. Distributed Operating Systems. Prentice Hall, -1995, ISBN 0-13-219908-4 (great textbook). - -Silberschatz, Abraham, and Peter B. Galvin. Operating System Concepts, -4th ed. Addison-Wesley, 1995, ISBN 0-201-59292-4 - -=head2 Other References - -Arnold, Ken and James Gosling. The Java Programming Language, 2nd -ed. Addison-Wesley, 1998, ISBN 0-201-31006-6. - -Le Sergent, T. and B. Berthomieu. "Incremental MultiThreaded Garbage -Collection on Virtually Shared Memory Architectures" in Memory -Management: Proc. of the International Workshop IWMM 92, St. Malo, -France, September 1992, Yves Bekkers and Jacques Cohen, eds. Springer, -1992, ISBN 3540-55940-X (real-life thread applications). - -=head1 Acknowledgements - -Thanks (in no particular order) to Chaim Frenkel, Steve Fink, Gurusamy -Sarathy, Ilya Zakharevich, Benjamin Sugars, Jürgen Christoffel, Joshua -Pritikin, and Alan Burlison, for their help in reality-checking and -polishing this article. Big thanks to Tom Christiansen for his rewrite -of the prime number generator. - -=head1 AUTHOR - -Dan Sugalski E<lt>sugalskd@ous.eduE<gt> - -=head1 Copyrights - -This article originally appeared in The Perl Journal #10, and is -copyright 1998 The Perl Journal. It appears courtesy of Jon Orwant and -The Perl Journal. This document may be distributed under the same terms -as Perl itself. - - diff --git a/pod/perlpod.pod b/pod/perlpod.pod index 9fc7bed663..827548b8eb 100644 --- a/pod/perlpod.pod +++ b/pod/perlpod.pod @@ -300,7 +300,9 @@ module. Examples: =back -And don't forget, when using any command, that the command lasts up +C<=encoding> affects the whole document, and must occur only once. + +And don't forget, when using any other command, that the command lasts up until the end of its I<paragraph>, not its line. So in the examples below, you can see that every command needs the blank line after it, to end its paragraph. diff --git a/pod/perlport.pod b/pod/perlport.pod index 39a7441956..9920a83e85 100644 --- a/pod/perlport.pod +++ b/pod/perlport.pod @@ -1600,9 +1600,11 @@ C<-x>, C<-o>. (S<Mac OS>, Win32, VMS, S<RISC OS>) C<-b>, C<-c>, C<-k>, C<-g>, C<-p>, C<-u>, C<-A> are not implemented. (S<Mac OS>) -C<-g>, C<-k>, C<-l>, C<-p>, C<-u>, C<-A> are not particularly meaningful. +C<-g>, C<-k>, C<-l>, C<-u>, C<-A> are not particularly meaningful. (Win32, VMS, S<RISC OS>) +C<-p> is not particularly meaningful. (VMS, S<RISC OS>) + C<-d> is true if passed a device spec without an explicit directory. (VMS) diff --git a/pod/perlrecharclass.pod b/pod/perlrecharclass.pod index 4af2c9793d..c86a2c35f8 100644 --- a/pod/perlrecharclass.pod +++ b/pod/perlrecharclass.pod @@ -471,7 +471,7 @@ Some examples: Perl will recognize the POSIX character classes C<[=class=]>, and C<[.class.]>, but does not (yet?) support this construct. Use of -such a constructs will lead to an error. +such a construct will lead to an error. =head4 Examples diff --git a/pod/perlreftut.pod b/pod/perlreftut.pod index 82ad80e3a6..7898b6db53 100644 --- a/pod/perlreftut.pod +++ b/pod/perlreftut.pod @@ -67,11 +67,11 @@ entire hash (or to just about anything else). Names are one kind of reference that you're already familiar with. Think of the President of the United States: a messy, inconvenient bag of blood and bones. But to talk about him, or to represent him in a computer program, all -you need is the easy, convenient scalar string "George Bush". +you need is the easy, convenient scalar string "Barack Obama". References in Perl are like names for arrays and hashes. They're Perl's private, internal names, so you can be sure they're -unambiguous. Unlike "George Bush", a reference only refers to one +unambiguous. Unlike "Barack Obama", a reference only refers to one thing, and you always know what it refers to. If you have a reference to an array, you can recover the entire array from it. If you have a reference to a hash, you can recover the entire hash. But the diff --git a/pod/perlretut.pod b/pod/perlretut.pod index 67e06700d4..71317693bd 100644 --- a/pod/perlretut.pod +++ b/pod/perlretut.pod @@ -2133,8 +2133,8 @@ example is This style of commenting has been largely superseded by the raw, freeform commenting that is allowed with the C<//x> modifier. -The modifiers C<//i>, C<//m>, C<//s>, C<//x> and C<//k> (or any -combination thereof) can also embedded in +The modifiers C<//i>, C<//m>, C<//s> and C<//x> (or any +combination thereof) can also be embedded in a regexp using C<(?i)>, C<(?m)>, C<(?s)>, and C<(?x)>. For instance, /(?i)yes/; # match 'yes' case insensitively @@ -2159,7 +2159,7 @@ that must have different modifiers: } } -The second advantage is that embedded modifiers (except C<//k>, which +The second advantage is that embedded modifiers (except C<//p>, which modifies the entire regexp) only affect the regexp inside the group the embedded modifier is contained in. So grouping can be used to localize the modifier's effects: @@ -2420,9 +2420,9 @@ containing just one word character is a palindrome. Otherwise it must have a word character up front and the same at its end, with another palindrome in between. - /(?: (\w) (?...Here be a palindrome...) \{-1} | \w? )/x + /(?: (\w) (?...Here be a palindrome...) \g{-1} | \w? )/x -Adding C<\W*> at either end to eliminate was is to be ignored, we already +Adding C<\W*> at either end to eliminate what is to be ignored, we already have the full pattern: my $pp = qr/^(\W* (?: (\w) (?1) \g{-1} | \w? ) \W*)$/ix; diff --git a/pod/perlrun.pod b/pod/perlrun.pod index d8e718ef1b..c3b30c8ad7 100644 --- a/pod/perlrun.pod +++ b/pod/perlrun.pod @@ -13,7 +13,7 @@ B<perl> S<[ B<-sTtuUWX> ]> S<[ B<-S> ]> S<[ B<-x>[I<dir>] ]> S<[ B<-i>[I<extension>] ]> - S<[ B<-eE> I<'command'> ] [ B<--> ] [ I<programfile> ] [ I<argument> ]...> + S<[ [B<-e>|B<-E>] I<'command'> ] [ B<--> ] [ I<programfile> ] [ I<argument> ]...> =head1 DESCRIPTION @@ -974,7 +974,7 @@ is used. The program should instead say: X<PERL5OPT> Command-line options (switches). Switches in this variable are taken -as if they were on every Perl command line. Only the B<-[CDIMUdmtw]> +as if they were on every Perl command line. Only the B<-[CDIMUdmtwW]> switches are allowed. When running taint checks (because the program was running setuid or setgid, or the B<-T> switch was used), this variable is ignored. If PERL5OPT begins with B<-T>, tainting will be diff --git a/pod/perlsyn.pod b/pod/perlsyn.pod index 8b448505c1..9f964e001f 100644 --- a/pod/perlsyn.pod +++ b/pod/perlsyn.pod @@ -117,7 +117,7 @@ is treated as 0. =head2 Statement Modifiers X<statement modifier> X<modifier> X<if> X<unless> X<while> -X<until> X<foreach> X<for> +X<until> X<when> X<foreach> X<for> Any simple statement may optionally be followed by a I<SINGLE> modifier, just before the terminating semicolon (or block ending). The possible @@ -127,6 +127,8 @@ modifiers are: unless EXPR while EXPR until EXPR + when EXPR + for LIST foreach LIST The C<EXPR> following the modifier is referred to as the "condition". @@ -139,6 +141,22 @@ the condition is true (i.e., if the condition is false). print "Basset hounds got long ears" if length $ear >= 10; go_outside() and play() unless $is_raining; +C<when> executes the statement I<when> C<$_> smart matches C<EXPR>, and +then either C<break>s out if it's enclosed in a C<given> scope or skips +to the C<next> element when it lies directly inside a C<for> loop. +See also L</"Switch statements">. + + given ($something) { + $abc = 1 when /^abc/; + $just_a = 1 when /^a/; + $other = 1; + } + + for (@names) { + admin($_) when [ qw/Alice Bob/ ]; + regular($_) when [ qw/Chris David Ellen/ ]; + } + The C<foreach> modifier is an iterator: it executes the statement once for each item in the LIST (with C<$_> aliased to each item in turn). @@ -738,7 +756,8 @@ underlying structure). The Perl 5 smart match and C<given>/C<when> constructs are not absolutely identical to their Perl 6 analogues. The most visible difference is that, in Perl 5, parentheses are required around -the argument to C<given()> and C<when()>. Parentheses in Perl 6 +the argument to C<given()> and C<when()> (except when this last +one is used as a statement modifier). Parentheses in Perl 6 are always optional in a control construct such as C<if()>, C<while()>, or C<when()>; they can't be made optional in Perl 5 without a great deal of potential confusion, because Perl 5 diff --git a/pod/perltoc.pod b/pod/perltoc.pod deleted file mode 100644 index 1d57ee1149..0000000000 --- a/pod/perltoc.pod +++ /dev/null @@ -1,36909 +0,0 @@ - -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is autogenerated by buildtoc from all the other pods. -# Edit those files and run buildtoc --build-toc to effect changes. - -=head1 NAME - -perltoc - perl documentation table of contents - -=head1 DESCRIPTION - -This page provides a brief table of contents for the rest of the Perl -documentation set. It is meant to be scanned quickly or grepped -through to locate the proper section you're looking for. - -=head1 BASIC DOCUMENTATION - -=head2 perl - Practical Extraction and Report Language - -=over 4 - -=item SYNOPSIS - -=over 4 - -=item Overview - -=item Tutorials - -=item Reference Manual - -=item Internals and C Language Interface - -=item Miscellaneous - -=item Language-Specific - -=item Platform-Specific - -=back - -=item DESCRIPTION - -=item AVAILABILITY - -=item ENVIRONMENT - -=item AUTHOR - -=item FILES - -=item SEE ALSO - -=item DIAGNOSTICS - -=item BUGS - -=item NOTES - -=back - -=head2 perlintro -- a brief introduction and overview of Perl - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item What is Perl? - -=item Running Perl programs - -=item Safety net - -=item Basic syntax overview - -=item Perl variable types - -Scalars, Arrays, Hashes - -=item Variable scoping - -=item Conditional and looping constructs - -if, while, for, foreach - -=item Builtin operators and functions - -Arithmetic, Numeric comparison, String comparison, Boolean logic, -Miscellaneous - -=item Files and I/O - -=item Regular expressions - -Simple matching, Simple substitution, More complex regular expressions, -Parentheses for capturing, Other regexp features - -=item Writing subroutines - -=item OO Perl - -=item Using Perl modules - -=back - -=item AUTHOR - -=back - -=head2 perlreftut - Mark's very short tutorial about references - -=over 4 - -=item DESCRIPTION - -=item Who Needs Complicated Data Structures? - -=item The Solution - -=item Syntax - -=over 4 - -=item Making References - -=item Using References - -=item An Example - -=item Arrow Rule - -=back - -=item Solution - -=item The Rest - -=item Summary - -=item Credits - -=over 4 - -=item Distribution Conditions - -=back - -=back - -=head2 perldsc - Perl Data Structures Cookbook - -=over 4 - -=item DESCRIPTION - -arrays of arrays, hashes of arrays, arrays of hashes, hashes of hashes, -more elaborate constructs - -=item REFERENCES -X<reference> X<dereference> X<dereferencing> X<pointer> - -=item COMMON MISTAKES - -=item CAVEAT ON PRECEDENCE -X<dereference, precedence> X<dereferencing, precedence> - -=item WHY YOU SHOULD ALWAYS C<use strict> - -=item DEBUGGING -X<data structure, debugging> X<complex data structure, debugging> -X<AoA, debugging> X<HoA, debugging> X<AoH, debugging> X<HoH, debugging> -X<array of arrays, debugging> X<hash of arrays, debugging> -X<array of hashes, debugging> X<hash of hashes, debugging> - -=item CODE EXAMPLES - -=item ARRAYS OF ARRAYS -X<array of arrays> X<AoA> - -=over 4 - -=item Declaration of an ARRAY OF ARRAYS - -=item Generation of an ARRAY OF ARRAYS - -=item Access and Printing of an ARRAY OF ARRAYS - -=back - -=item HASHES OF ARRAYS -X<hash of arrays> X<HoA> - -=over 4 - -=item Declaration of a HASH OF ARRAYS - -=item Generation of a HASH OF ARRAYS - -=item Access and Printing of a HASH OF ARRAYS - -=back - -=item ARRAYS OF HASHES -X<array of hashes> X<AoH> - -=over 4 - -=item Declaration of an ARRAY OF HASHES - -=item Generation of an ARRAY OF HASHES - -=item Access and Printing of an ARRAY OF HASHES - -=back - -=item HASHES OF HASHES -X<hass of hashes> X<HoH> - -=over 4 - -=item Declaration of a HASH OF HASHES - -=item Generation of a HASH OF HASHES - -=item Access and Printing of a HASH OF HASHES - -=back - -=item MORE ELABORATE RECORDS -X<record> X<structure> X<struct> - -=over 4 - -=item Declaration of MORE ELABORATE RECORDS - -=item Declaration of a HASH OF COMPLEX RECORDS - -=item Generation of a HASH OF COMPLEX RECORDS - -=back - -=item Database Ties - -=item SEE ALSO - -=item AUTHOR - -=back - -=head2 perllol - Manipulating Arrays of Arrays in Perl - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Declaration and Access of Arrays of Arrays - -=item Growing Your Own - -=item Access and Printing - -=item Slices - -=back - -=item SEE ALSO - -=item AUTHOR - -=back - -=head2 perlrequick - Perl regular expressions quick start - -=over 4 - -=item DESCRIPTION - -=item The Guide - -=over 4 - -=item Simple word matching - -=item Using character classes - -=item Matching this or that - -=item Grouping things and hierarchical matching - -=item Extracting matches - -=item Matching repetitions - -=item More matching - -=item Search and replace - -=item The split operator - -=back - -=item BUGS - -=item SEE ALSO - -=item AUTHOR AND COPYRIGHT - -=over 4 - -=item Acknowledgments - -=back - -=back - -=head2 perlretut - Perl regular expressions tutorial - -=over 4 - -=item DESCRIPTION - -=item Part 1: The basics - -=over 4 - -=item Simple word matching - -=item Using character classes - -=item Matching this or that - -=item Grouping things and hierarchical matching - -=item Extracting matches - -=item Backreferences - -=item Relative backreferences - -=item Named backreferences - -=item Alternative capture group numbering - -=item Position information - -=item Non-capturing groupings - -=item Matching repetitions - -=item Possessive quantifiers - -=item Building a regexp - -=item Using regular expressions in Perl - -=back - -=item Part 2: Power tools - -=over 4 - -=item More on characters, strings, and character classes - -=item Compiling and saving regular expressions - -=item Composing regular expressions at runtime - -=item Embedding comments and modifiers in a regular expression - -=item Looking ahead and looking behind - -=item Using independent subexpressions to prevent backtracking - -=item Conditional expressions - -=item Defining named patterns - -=item Recursive patterns - -=item A bit of magic: executing Perl code in a regular expression - -=item Backtracking control verbs - -=item Pragmas and debugging - -=back - -=item BUGS - -=item SEE ALSO - -=item AUTHOR AND COPYRIGHT - -=over 4 - -=item Acknowledgments - -=back - -=back - -=head2 perlboot - Beginner's Object-Oriented Tutorial - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item If we could talk to the animals... - -=item Introducing the method invocation arrow - -=item Invoking a barnyard - -=item The extra parameter of method invocation - -=item Calling a second method to simplify things - -=item Inheriting the windpipes - -=item A few notes about @ISA - -=item Overriding the methods - -=item Starting the search from a different place - -=item The SUPER way of doing things - -=item Where we're at so far... - -=item A horse is a horse, of course of course -- or is it? - -=item Invoking an instance method - -=item Accessing the instance data - -=item How to build a horse - -=item Inheriting the constructor - -=item Making a method work with either classes or instances - -=item Adding parameters to a method - -=item More interesting instances - -=item A horse of a different color - -=item Summary - -=back - -=item SEE ALSO - -=item COPYRIGHT - -=back - -=head2 perltoot - Tom's object-oriented tutorial for perl - -=over 4 - -=item DESCRIPTION - -=item Creating a Class - -=over 4 - -=item Object Representation - -=item Class Interface - -=item Constructors and Instance Methods - -=item Planning for the Future: Better Constructors - -=item Destructors - -=item Other Object Methods - -=back - -=item Class Data - -=over 4 - -=item Accessing Class Data - -=item Debugging Methods - -=item Class Destructors - -=item Documenting the Interface - -=back - -=item Aggregation - -=item Inheritance - -=over 4 - -=item Overridden Methods - -=item Multiple Inheritance - -=item UNIVERSAL: The Root of All Objects - -=item Deeper UNIVERSAL details - -=back - -=item Alternate Object Representations - -=over 4 - -=item Arrays as Objects - -=item Closures as Objects - -=back - -=item AUTOLOAD: Proxy Methods - -=over 4 - -=item Autoloaded Data Methods - -=item Inherited Autoloaded Data Methods - -=back - -=item Metaclassical Tools - -=over 4 - -=item Class::Struct - -=item Data Members as Variables - -=back - -=item NOTES - -=over 4 - -=item Object Terminology - -=back - -=item SEE ALSO - -=item AUTHOR AND COPYRIGHT - -=item COPYRIGHT - -=over 4 - -=item Acknowledgments - -=back - -=back - -=head2 perltooc - Tom's OO Tutorial for Class Data in Perl - -=over 4 - -=item DESCRIPTION - -=item Class Data in a Can - -=item Class Data as Package Variables - -=over 4 - -=item Putting All Your Eggs in One Basket - -=item Inheritance Concerns - -=item The Eponymous Meta-Object - -=item Indirect References to Class Data - -=item Monadic Classes - -=item Translucent Attributes - -=back - -=item Class Data as Lexical Variables - -=over 4 - -=item Privacy and Responsibility - -=item File-Scoped Lexicals - -=item More Inheritance Concerns - -=item Locking the Door and Throwing Away the Key - -=item Translucency Revisited - -=back - -=item NOTES - -=item SEE ALSO - -=item AUTHOR AND COPYRIGHT - -=item ACKNOWLEDGEMENTS - -=item HISTORY - -=back - -=head2 perlbot - Bag'o Object Tricks (the BOT) - -=over 4 - -=item DESCRIPTION - -=item OO SCALING TIPS - -=item INSTANCE VARIABLES - -=item SCALAR INSTANCE VARIABLES - -=item INSTANCE VARIABLE INHERITANCE - -=item OBJECT RELATIONSHIPS - -=item OVERRIDING SUPERCLASS METHODS - -=item USING RELATIONSHIP WITH SDBM - -=item THINKING OF CODE REUSE - -=item CLASS CONTEXT AND THE OBJECT - -=item INHERITING A CONSTRUCTOR - -=item DELEGATION - -=item SEE ALSO - -=back - -=head2 perlperf - Perl Performance and Optimization Techniques - -=over 4 - -=item DESCRIPTION - -=item OVERVIEW - -=over 4 - -=item ONE STEP SIDEWAYS - -=item ONE STEP FORWARD - -=item ANOTHER STEP SIDEWAYS - -=back - -=item GENERAL GUIDELINES - -=item BENCHMARKS - -=over 4 - -=item Assigning and Dereferencing Variables. - -=item Search and replace or tr - -=back - -=item PROFILING TOOLS - -=over 4 - -=item Devel::DProf - -=item Devel::Profiler - -=item Devel::SmallProf - -=item Devel::FastProf - -=item Devel::NYTProf - -=back - -=item SORTING - -Elapsed Real Time, User CPU Time, System CPU Time - -=item LOGGING - -=over 4 - -=item Logging if DEBUG (constant) - -=back - -=item POSTSCRIPT - -=item SEE ALSO - -=over 4 - -=item PERLDOCS - -=item MAN PAGES - -=item MODULES - -=item URLS - -=back - -=item AUTHOR - -=back - -=head2 perlstyle - Perl style guide - -=over 4 - -=item DESCRIPTION - -=back - -=head2 perlcheat - Perl 5 Cheat Sheet - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item The sheet - -=back - -=item ACKNOWLEDGEMENTS - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 perltrap - Perl traps for the unwary - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Awk Traps - -=item C/C++ Traps - -=item Sed Traps - -=item Shell Traps - -=item Perl Traps - -=item Perl4 to Perl5 Traps - -Discontinuance, Deprecation, and BugFix traps, Parsing Traps, Numerical -Traps, General data type traps, Context Traps - scalar, list contexts, -Precedence Traps, General Regular Expression Traps using s///, etc, -Subroutine, Signal, Sorting Traps, OS Traps, DBM Traps, Unclassified Traps - -=item Discontinuance, Deprecation, and BugFix traps - -Symbols starting with "_" no longer forced into main, Double-colon valid -package separator in variable name, 2nd and 3rd args to C<splice()> are now -in scalar context, Can't do C<goto> into a block that is optimized away, -Can't use whitespace as variable name or quote delimiter, C<while/if BLOCK -BLOCK> gone, C<**> binds tighter than unary minus, C<foreach> changed when -iterating over a list, C<split> with no args behavior changed, B<-e> -behavior fixed, C<push> returns number of elements in resulting list, Some -error messages differ, C<split()> honors subroutine args, Bugs removed - -=item Parsing Traps - -Space between . and = triggers syntax error, Better parsing in perl 5, -Function parsing, String interpolation of C<$#array> differs, Perl guesses -on C<map>, C<grep> followed by C<{> if it starts BLOCK or hash ref - -=item Numerical Traps - -Formatted output and significant digits, Auto-increment operator over -signed int limit deleted, Assignment of return values from numeric equality -tests doesn't work, Bitwise string ops - -=item General data type traps - -Negative array subscripts now count from the end of array, Setting -C<$#array> lower now discards array elements, Hashes get defined before -use, Glob assignment from localized variable to variable, Assigning -C<undef> to glob, Changes in unary negation (of strings), Modifying of -constants prohibited, C<defined $var> behavior changed, Variable Suicide - -=item Context Traps - scalar, list contexts - -Elements of argument lists for formats evaluated in list context, -C<caller()> returns false value in scalar context if no caller present, -Comma operator in scalar context gives scalar context to args, C<sprintf()> -prototyped as C<($;@)> - -=item Precedence Traps - -LHS vs. RHS of any assignment operator, Semantic errors introduced due to -precedence, Precedence of assignment operators same as the precedence of -assignment, C<open> requires parentheses around filehandle, C<$:> -precedence over C<$::> gone, Precedence of file test operators documented, -C<keys>, C<each>, C<values> are regular named unary operators - -=item General Regular Expression Traps using s///, etc. - -C<s'$lhs'$rhs'> interpolates on either side, C<m//g> attaches its state to -the searched string, C<m//o> used within an anonymous sub, C<$+> isn't set -to whole match, Substitution now returns null string if it fails, -C<s`lhs`rhs`> is now a normal substitution, Stricter parsing of variables -in regular expressions, C<m?x?> matches only once, Failed matches don't -reset the match variables - -=item Subroutine, Signal, Sorting Traps - -Barewords that used to look like strings look like subroutine calls, -Reverse is no longer allowed as the name of a sort subroutine, C<warn()> -won't let you specify a filehandle - -=item OS Traps - -SysV resets signal handler correctly, SysV C<seek()> appends correctly - -=item Interpolation Traps - -C<@> always interpolates an array in double-quotish strings, Double-quoted -strings may no longer end with an unescaped $, Arbitrary expressions are -evaluated inside braces within double quotes, C<$$x> now tries to -dereference $x, Creation of hashes on the fly with C<eval "EXPR"> requires -protection, Bugs in earlier perl versions, Array and hash brackets during -interpolation, Interpolation of C<\$$foo{bar}>, C<qq()> string passed to -C<eval> will not find string terminator - -=item DBM Traps - -Perl5 must have been linked with same dbm/ndbm as the default for -C<dbmopen()>, DBM exceeding limit on the key/value size will cause perl5 to -exit immediately - -=item Unclassified Traps - -C<require>/C<do> trap using returned value, C<split> on empty string with -LIMIT specified - -=back - -=back - -=head2 perldebtut - Perl debugging tutorial - -=over 4 - -=item DESCRIPTION - -=item use strict - -=item Looking at data and -w and v - -=item help - -=item Stepping through code - -=item Placeholder for a, w, t, T - -=item REGULAR EXPRESSIONS - -=item OUTPUT TIPS - -=item CGI - -=item GUIs - -=item SUMMARY - -=item SEE ALSO - -=item AUTHOR - -=item CONTRIBUTORS - -=back - -=head2 perlfaq - frequently asked questions about Perl - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Where to get the perlfaq - -=item How to contribute to the perlfaq - -=item What will happen if you mail your Perl programming problems to the -authors? - -=back - -=item CREDITS - -=item AUTHOR AND COPYRIGHT - -=item Table of Contents - -perlfaq - this document, perlfaq1 - General Questions About Perl, perlfaq2 -- Obtaining and Learning about Perl, perlfaq3 - Programming Tools, perlfaq4 -- Data Manipulation, perlfaq5 - Files and Formats, perlfaq6 - Regular -Expressions, perlfaq7 - General Perl Language Issues, perlfaq8 - System -Interaction, perlfaq9 - Networking - -=item The Questions - -=over 4 - -=item L<perlfaq1>: General Questions About Perl - -=item L<perlfaq2>: Obtaining and Learning about Perl - -=item L<perlfaq3>: Programming Tools - -=item L<perlfaq4>: Data Manipulation - -=item L<perlfaq5>: Files and Formats - -=item L<perlfaq6>: Regular Expressions - -=item L<perlfaq7>: General Perl Language Issues - -=item L<perlfaq8>: System Interaction - -=item L<perlfaq9>: Networking - -=back - -=back - -=head2 perlfaq1 - General Questions About Perl - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item What is Perl? - -=item Who supports Perl? Who develops it? Why is it free? - -=item Which version of Perl should I use? - -=item What are Perl 4, Perl 5, or Perl 6? - -=item What was Ponie? - -=item What is Perl 6? - -=item How stable is Perl? - -=item Is Perl difficult to learn? - -=item How does Perl compare with other languages like Java, Python, REXX, -Scheme, or Tcl? - -=item Can I do [task] in Perl? - -=item When shouldn't I program in Perl? - -=item What's the difference between "perl" and "Perl"? - -=item Is it a Perl program or a Perl script? - -=item What is a JAPH? - -=item Where can I get a list of Larry Wall witticisms? - -=item How can I convince others to use Perl? - -http://perltraining.com.au/whyperl.html, -http://www.perl.org/advocacy/whyperl.html - -=back - -=item REVISION - -=item AUTHOR AND COPYRIGHT - -=back - -=head2 perlfaq2 - Obtaining and Learning about Perl - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item What machines support perl? Where do I get it? - -=item How can I get a binary version of perl? - -=item I don't have a C compiler. How can I build my own Perl interpreter? - -=item I copied the perl binary from one machine to another, but scripts -don't work. - -=item I grabbed the sources and tried to compile but gdbm/dynamic -loading/malloc/linking/... failed. How do I make it work? - -=item What modules and extensions are available for Perl? What is CPAN? -What does CPAN/src/... mean? - -=item Is there an ISO or ANSI certified version of Perl? - -=item Where can I get information on Perl? - -=item What are the Perl newsgroups on Usenet? Where do I post questions? - -=item Where should I post source code? - -=item Perl Books - -References, Tutorials, Task-Oriented, Special Topics - -=item Which magazines have Perl content? - -=item What mailing lists are there for Perl? - -=item Where are the archives for comp.lang.perl.misc? - -=item Where can I buy a commercial version of perl? - -=item Where do I send bug reports? - -=item What is perl.com? Perl Mongers? pm.org? perl.org? cpan.org? - -=back - -=item REVISION - -=item AUTHOR AND COPYRIGHT - -=back - -=head2 perlfaq3 - Programming Tools - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item How do I do (anything)? - -=item How can I use Perl interactively? - -=item Is there a Perl shell? - -=item How do I find which modules are installed on my system? - -=item How do I debug my Perl programs? - -=item How do I profile my Perl programs? - -=item How do I cross-reference my Perl programs? - -=item Is there a pretty-printer (formatter) for Perl? - -=item Is there a ctags for Perl? - -=item Is there an IDE or Windows Perl Editor? - -Eclipse, Enginsite, Komodo, Open Perl IDE, OptiPerl, PerlBuilder, -visiPerl+, Visual Perl, Zeus, GNU Emacs, MicroEMACS, XEmacs, Jed, Elvis, -Vile, Vim, Codewright, MultiEdit, SlickEdit, Bash, Ksh, Tcsh, Zsh, Affrus, -Alpha, BBEdit and BBEdit Lite - -=item Where can I get Perl macros for vi? - -=item Where can I get perl-mode for emacs? - -=item How can I use curses with Perl? - -=item How can I write a GUI (X, Tk, Gtk, etc.) in Perl? -X<GUI> X<Tk> X<Wx> X<WxWidgets> X<Gtk> X<Gtk2> X<CamelBones> X<Qt> - -Tk, Wx, Gtk and Gtk2, Win32::GUI, CamelBones, Qt, Athena - -=item How can I make my Perl program run faster? - -=item How can I make my Perl program take less memory? - -Don't slurp!, Use map and grep selectively, Avoid unnecessary quotes and -stringification, Pass by reference, Tie large variables to disk - -=item Is it safe to return a reference to local or lexical data? - -=item How can I free an array or hash so my program shrinks? - -=item How can I make my CGI script more efficient? - -=item How can I hide the source for my Perl program? - -=item How can I compile my Perl program into byte code or C? - -=item How can I get C<#!perl> to work on [MS-DOS,NT,...]? - -=item Can I write useful Perl programs on the command line? - -=item Why don't Perl one-liners work on my DOS/Mac/VMS system? - -=item Where can I learn about CGI or Web programming in Perl? - -=item Where can I learn about object-oriented Perl programming? - -=item Where can I learn about linking C with Perl? - -=item I've read perlembed, perlguts, etc., but I can't embed perl in my C -program; what am I doing wrong? - -=item When I tried to run my script, I got this message. What does it mean? - -=item What's MakeMaker? - -=back - -=item REVISION - -=item AUTHOR AND COPYRIGHT - -=back - -=head2 perlfaq4 - Data Manipulation - -=over 4 - -=item DESCRIPTION - -=item Data: Numbers - -=over 4 - -=item Why am I getting long decimals (eg, 19.9499999999999) instead of the -numbers I should be getting (eg, 19.95)? - -=item Why is int() broken? - -=item Why isn't my octal data interpreted correctly? - -=item Does Perl have a round() function? What about ceil() and floor()? -Trig functions? - -=item How do I convert between numeric representations/bases/radixes? - -How do I convert hexadecimal into decimal, How do I convert from decimal to -hexadecimal, How do I convert from octal to decimal, How do I convert from -decimal to octal, How do I convert from binary to decimal, How do I convert -from decimal to binary - -=item Why doesn't & work the way I want it to? - -=item How do I multiply matrices? - -=item How do I perform an operation on a series of integers? - -=item How can I output Roman numerals? - -=item Why aren't my random numbers random? - -=item How do I get a random number between X and Y? - -=back - -=item Data: Dates - -=over 4 - -=item How do I find the day or week of the year? - -=item How do I find the current century or millennium? - -=item How can I compare two dates and find the difference? - -=item How can I take a string and turn it into epoch seconds? - -=item How can I find the Julian Day? - -=item How do I find yesterday's date? - -=item Does Perl have a Year 2000 problem? Is Perl Y2K compliant? - -=back - -=item Data: Strings - -=over 4 - -=item How do I validate input? - -=item How do I unescape a string? - -=item How do I remove consecutive pairs of characters? - -=item How do I expand function calls in a string? - -=item How do I find matching/nesting anything? - -=item How do I reverse a string? - -=item How do I expand tabs in a string? - -=item How do I reformat a paragraph? - -=item How can I access or change N characters of a string? - -=item How do I change the Nth occurrence of something? - -=item How can I count the number of occurrences of a substring within a -string? - -=item How do I capitalize all the words on one line? - -=item How can I split a [character] delimited string except when inside -[character]? - -=item How do I strip blank space from the beginning/end of a string? - -=item How do I pad a string with blanks or pad a number with zeroes? - -=item How do I extract selected columns from a string? - -=item How do I find the soundex value of a string? - -=item How can I expand variables in text strings? - -=item What's wrong with always quoting "$vars"? - -=item Why don't my E<lt>E<lt>HERE documents work? - -There must be no space after the E<lt>E<lt> part, There (probably) should -be a semicolon at the end, You can't (easily) have any space in front of -the tag - -=back - -=item Data: Arrays - -=over 4 - -=item What is the difference between a list and an array? - -=item What is the difference between $array[1] and @array[1]? - -=item How can I remove duplicate elements from a list or array? - -=item How can I tell whether a certain element is contained in a list or -array? - -=item How do I compute the difference of two arrays? How do I compute the -intersection of two arrays? - -=item How do I test whether two arrays or hashes are equal? - -=item How do I find the first array element for which a condition is true? - -=item How do I handle linked lists? - -=item How do I handle circular lists? - -=item How do I shuffle an array randomly? - -=item How do I process/modify each element of an array? - -=item How do I select a random element from an array? - -=item How do I permute N elements of a list? -X<List::Permuter> X<permute> X<Algorithm::Loops> X<Knuth> -X<The Art of Computer Programming> X<Fischer-Krause> - -=item How do I sort an array by (anything)? - -=item How do I manipulate arrays of bits? - -=item Why does defined() return true on empty arrays and hashes? - -=back - -=item Data: Hashes (Associative Arrays) - -=over 4 - -=item How do I process an entire hash? - -=item What happens if I add or remove keys from a hash while iterating over -it? - -=item How do I look up a hash element by value? - -=item How can I know how many entries are in a hash? - -=item How do I sort a hash (optionally by value instead of key)? - -=item How can I always keep my hash sorted? -X<hash tie sort DB_File Tie::IxHash> - -=item What's the difference between "delete" and "undef" with hashes? - -=item Why don't my tied hashes make the defined/exists distinction? - -=item How do I reset an each() operation part-way through? - -=item How can I get the unique keys from two hashes? - -=item How can I store a multidimensional array in a DBM file? - -=item How can I make my hash remember the order I put elements into it? - -=item Why does passing a subroutine an undefined element in a hash create -it? - -=item How can I make the Perl equivalent of a C structure/C++ class/hash or -array of hashes or arrays? - -=item How can I use a reference as a hash key? - -=back - -=item Data: Misc - -=over 4 - -=item How do I handle binary data correctly? - -=item How do I determine whether a scalar is a number/whole/integer/float? - -=item How do I keep persistent data across program calls? - -=item How do I print out or copy a recursive data structure? - -=item How do I define methods for every class/object? - -=item How do I verify a credit card checksum? - -=item How do I pack arrays of doubles or floats for XS code? - -=back - -=item REVISION - -=item AUTHOR AND COPYRIGHT - -=back - -=head2 perlfaq5 - Files and Formats - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item How do I flush/unbuffer an output filehandle? Why must I do this? -X<flush> X<buffer> X<unbuffer> X<autoflush> - -=item How do I change, delete, or insert a line in a file, or append to the -beginning of a file? -X<file, editing> - -=item How do I count the number of lines in a file? -X<file, counting lines> X<lines> X<line> - -=item How can I use Perl's C<-i> option from within a program? -X<-i> X<in-place> - -=item How can I copy a file? -X<copy> X<file, copy> - -=item How do I make a temporary file name? -X<file, temporary> - -=item How can I manipulate fixed-record-length files? -X<fixed-length> X<file, fixed-length records> - -=item How can I make a filehandle local to a subroutine? How do I pass -filehandles between subroutines? How do I make an array of filehandles? -X<filehandle, local> X<filehandle, passing> X<filehandle, reference> - -=item How can I use a filehandle indirectly? -X<filehandle, indirect> - -=item How can I set up a footer format to be used with write()? -X<footer> - -=item How can I write() into a string? -X<write, into a string> - -=item How can I open a filehandle to a string? -X<string>, X<open>, X<IO::Scalar>, X<filehandle> - -=item How can I output my numbers with commas added? -X<number, commify> - -=item How can I translate tildes (~) in a filename? -X<tilde> X<tilde expansion> - -=item How come when I open a file read-write it wipes it out? -X<clobber> X<read-write> X<clobbering> X<truncate> X<truncating> - -=item Why do I sometimes get an "Argument list too long" when I use -E<lt>*E<gt>? -X<argument list too long> - -=item Is there a leak/bug in glob()? -X<glob> - -=item How can I open a file with a leading ">" or trailing blanks? -X<filename, special characters> - -=item How can I reliably rename a file? -X<rename> X<mv> X<move> X<file, rename> X<ren> - -=item How can I lock a file? -X<lock> X<file, lock> X<flock> - -=item Why can't I just open(FH, "E<gt>file.lock")? -X<lock, lockfile race condition> - -=item I still don't get locking. I just want to increment the number in -the file. How can I do this? -X<counter> X<file, counter> - -=item All I want to do is append a small amount of text to the end of a -file. Do I still have to use locking? -X<append> X<file, append> - -=item How do I randomly update a binary file? -X<file, binary patch> - -=item How do I get a file's timestamp in perl? -X<timestamp> X<file, timestamp> - -=item How do I set a file's timestamp in perl? -X<timestamp> X<file, timestamp> - -=item How do I print to more than one file at once? -X<print, to multiple files> - -=item How can I read in an entire file all at once? -X<slurp> X<file, slurping> - -=item How can I read in a file by paragraphs? -X<file, reading by paragraphs> - -=item How can I read a single character from a file? From the keyboard? -X<getc> X<file, reading one character at a time> - -=item How can I tell whether there's a character waiting on a filehandle? - -=item How do I do a C<tail -f> in perl? -X<tail> X<IO::Handle> X<File::Tail> X<clearerr> - -=item How do I dup() a filehandle in Perl? -X<dup> - -=item How do I close a file descriptor by number? -X<file, closing file descriptors> X<POSIX> X<close> - -=item Why can't I use "C:\temp\foo" in DOS paths? Why doesn't -`C:\temp\foo.exe` work? -X<filename, DOS issues> - -=item Why doesn't glob("*.*") get all the files? -X<glob> - -=item Why does Perl let me delete read-only files? Why does C<-i> clobber -protected files? Isn't this a bug in Perl? - -=item How do I select a random line from a file? -X<file, selecting a random line> - -=item Why do I get weird spaces when I print an array of lines? - -=back - -=item REVISION - -=item AUTHOR AND COPYRIGHT - -=back - -=head2 perlfaq6 - Regular Expressions - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item How can I hope to use regular expressions without creating illegible -and unmaintainable code? -X<regex, legibility> X<regexp, legibility> -X<regular expression, legibility> X</x> - -Comments Outside the Regex, Comments Inside the Regex, Different Delimiters - -=item I'm having trouble matching over more than one line. What's wrong? -X<regex, multiline> X<regexp, multiline> X<regular expression, multiline> - -=item How can I pull out lines between two patterns that are themselves on -different lines? -X<..> - -=item I put a regular expression into $/ but it didn't work. What's wrong? -X<$/, regexes in> X<$INPUT_RECORD_SEPARATOR, regexes in> -X<$RS, regexes in> - -=item How do I substitute case insensitively on the LHS while preserving -case on the RHS? -X<replace, case preserving> X<substitute, case preserving> -X<substitution, case preserving> X<s, case preserving> - -=item How can I make C<\w> match national character sets? -X<\w> - -=item How can I match a locale-smart version of C</[a-zA-Z]/>? -X<alpha> - -=item How can I quote a variable to use in a regex? -X<regex, escaping> X<regexp, escaping> X<regular expression, escaping> - -=item What is C</o> really for? -X</o, regular expressions> X<compile, regular expressions> - -=item How do I use a regular expression to strip C style comments from a -file? - -=item Can I use Perl regular expressions to match balanced text? -X<regex, matching balanced test> X<regexp, matching balanced test> -X<regular expression, matching balanced test> - -=item What does it mean that regexes are greedy? How can I get around it? -X<greedy> X<greediness> - -=item How do I process each word on each line? -X<word> - -=item How can I print out a word-frequency or line-frequency summary? - -=item How can I do approximate matching? -X<match, approximate> X<matching, approximate> - -=item How do I efficiently match many regular expressions at once? -X<regex, efficiency> X<regexp, efficiency> -X<regular expression, efficiency> - -=item Why don't word-boundary searches with C<\b> work for me? -X<\b> - -=item Why does using $&, $`, or $' slow my program down? -X<$MATCH> X<$&> X<$POSTMATCH> X<$'> X<$PREMATCH> X<$`> - -=item What good is C<\G> in a regular expression? -X<\G> - -=item Are Perl regexes DFAs or NFAs? Are they POSIX compliant? -X<DFA> X<NFA> X<POSIX> - -=item What's wrong with using grep in a void context? -X<grep> - -=item How can I match strings with multibyte characters? -X<regex, and multibyte characters> X<regexp, and multibyte characters> -X<regular expression, and multibyte characters> X<martian> X<encoding, -Martian> - -=item How do I match a regular expression that's in a variable? -X<regex, in variable> X<eval> X<regex> X<quotemeta> X<\Q, regex> -X<\E, regex>, X<qr//> - -=back - -=item REVISION - -=item AUTHOR AND COPYRIGHT - -=back - -=head2 perlfaq7 - General Perl Language Issues - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Can I get a BNF/yacc/RE for the Perl language? - -=item What are all these $@%&* punctuation signs, and how do I know when to -use them? - -=item Do I always/never have to quote my strings or use semicolons and -commas? - -=item How do I skip some return values? - -=item How do I temporarily block warnings? - -=item What's an extension? - -=item Why do Perl operators have different precedence than C operators? - -=item How do I declare/create a structure? - -=item How do I create a module? - -=item How do I adopt or take over a module already on CPAN? - -=item How do I create a class? - -=item How can I tell if a variable is tainted? - -=item What's a closure? - -=item What is variable suicide and how can I prevent it? - -=item How can I pass/return a {Function, FileHandle, Array, Hash, Method, -Regex}? - -Passing Variables and Functions, Passing Filehandles, Passing Regexes, -Passing Methods - -=item How do I create a static variable? - -=item What's the difference between dynamic and lexical (static) scoping? -Between local() and my()? - -=item How can I access a dynamic variable while a similarly named lexical -is in scope? - -=item What's the difference between deep and shallow binding? - -=item Why doesn't "my($foo) = E<lt>FILEE<gt>;" work right? - -=item How do I redefine a builtin function, operator, or method? - -=item What's the difference between calling a function as &foo and foo()? - -=item How do I create a switch or case statement? - -=item How can I catch accesses to undefined variables, functions, or -methods? - -=item Why can't a method included in this same file be found? - -=item How can I find out my current package? - -=item How can I comment out a large block of perl code? - -=item How do I clear a package? - -=item How can I use a variable as a variable name? - -=item What does "bad interpreter" mean? - -=back - -=item REVISION - -=item AUTHOR AND COPYRIGHT - -=back - -=head2 perlfaq8 - System Interaction - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item How do I find out which operating system I'm running under? - -=item How come exec() doesn't return? - -=item How do I do fancy stuff with the keyboard/screen/mouse? - -Keyboard, Screen, Mouse - -=item How do I print something out in color? - -=item How do I read just one key without waiting for a return key? - -=item How do I check whether input is ready on the keyboard? - -=item How do I clear the screen? - -=item How do I get the screen size? - -=item How do I ask the user for a password? - -=item How do I read and write the serial port? - -lockfiles, open mode, end of line, flushing output, non-blocking input - -=item How do I decode encrypted password files? - -=item How do I start a process in the background? - -STDIN, STDOUT, and STDERR are shared, Signals, Zombies - -=item How do I trap control characters/signals? - -=item How do I modify the shadow password file on a Unix system? - -=item How do I set the time and date? - -=item How can I sleep() or alarm() for under a second? -X<Time::HiRes> X<BSD::Itimer> X<sleep> X<select> - -=item How can I measure time under a second? -X<Time::HiRes> X<BSD::Itimer> X<sleep> X<select> - -=item How can I do an atexit() or setjmp()/longjmp()? (Exception handling) - -=item Why doesn't my sockets program work under System V (Solaris)? What -does the error message "Protocol not supported" mean? - -=item How can I call my system's unique C functions from Perl? - -=item Where do I get the include files to do ioctl() or syscall()? - -=item Why do setuid perl scripts complain about kernel problems? - -=item How can I open a pipe both to and from a command? - -=item Why can't I get the output of a command with system()? - -=item How can I capture STDERR from an external command? - -=item Why doesn't open() return an error when a pipe open fails? - -=item What's wrong with using backticks in a void context? - -=item How can I call backticks without shell processing? - -=item Why can't my script read from STDIN after I gave it EOF (^D on Unix, -^Z on MS-DOS)? - -=item How can I convert my shell script to perl? - -=item Can I use perl to run a telnet or ftp session? - -=item How can I write expect in Perl? - -=item Is there a way to hide perl's command line from programs such as -"ps"? - -=item I {changed directory, modified my environment} in a perl script. How -come the change disappeared when I exited the script? How do I get my -changes to be visible? - -Unix - -=item How do I close a process's filehandle without waiting for it to -complete? - -=item How do I fork a daemon process? - -=item How do I find out if I'm running interactively or not? - -=item How do I timeout a slow event? - -=item How do I set CPU limits? -X<BSD::Resource> X<limit> X<CPU> - -=item How do I avoid zombies on a Unix system? - -=item How do I use an SQL database? - -=item How do I make a system() exit on control-C? - -=item How do I open a file without blocking? - -=item How do I tell the difference between errors from the shell and perl? - -=item How do I install a module from CPAN? - -=item What's the difference between require and use? - -=item How do I keep my own module/library directory? - -=item How do I add the directory my program lives in to the module/library -search path? - -=item How do I add a directory to my include path (@INC) at runtime? - -the PERLLIB environment variable, the PERL5LIB environment variable, the -perl -Idir command line flag, the use lib pragma: - -=item What is socket.ph and where do I get it? - -=back - -=item REVISION - -=item AUTHOR AND COPYRIGHT - -=back - -=head2 perlfaq9 - Networking - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item What is the correct form of response from a CGI script? - -=item My CGI script runs from the command line but not the browser. (500 -Server Error) - -=item How can I get better error messages from a CGI program? - -=item How do I remove HTML from a string? - -=item How do I extract URLs? - -=item How do I download a file from the user's machine? How do I open a -file on another machine? - -=item How do I make an HTML pop-up menu with Perl? - -=item How do I fetch an HTML file? - -=item How do I automate an HTML form submission? - -=item How do I decode or create those %-encodings on the web? - -=item How do I redirect to another page? - -=item How do I put a password on my web pages? - -=item How do I edit my .htpasswd and .htgroup files with Perl? - -=item How do I make sure users can't enter values into a form that cause my -CGI script to do bad things? - -=item How do I parse a mail header? - -=item How do I decode a CGI form? - -=item How do I check a valid mail address? - -=item How do I decode a MIME/BASE64 string? - -=item How do I return the user's mail address? - -=item How do I send mail? - -=item How do I use MIME to make an attachment to a mail message? - -=item How do I read mail? - -=item How do I find out my hostname, domainname, or IP address? -X<hostname, domainname, IP address, host, domain, hostfqdn, inet_ntoa, -gethostbyname, Socket, Net::Domain, Sys::Hostname> - -=item How do I fetch a news article or the active newsgroups? - -=item How do I fetch/put an FTP file? - -=item How can I do RPC in Perl? - -=back - -=item REVISION - -=item AUTHOR AND COPYRIGHT - -=back - -=head2 perlsyn - Perl syntax - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Declarations -X<declaration> X<undef> X<undefined> X<uninitialized> - -=item Comments -X<comment> X<#> - -=item Simple Statements -X<statement> X<semicolon> X<expression> X<;> - -=item Truth and Falsehood -X<truth> X<falsehood> X<true> X<false> X<!> X<not> X<negation> X<0> - -=item Statement Modifiers -X<statement modifier> X<modifier> X<if> X<unless> X<while> -X<until> X<foreach> X<for> - -=item Compound Statements -X<statement, compound> X<block> X<bracket, curly> X<curly bracket> X<brace> -X<{> X<}> X<if> X<unless> X<while> X<until> X<foreach> X<for> X<continue> - -=item Loop Control -X<loop control> X<loop, control> X<next> X<last> X<redo> X<continue> - -=item For Loops -X<for> X<foreach> - -=item Foreach Loops -X<for> X<foreach> - -=item Basic BLOCKs -X<block> - -=item Switch statements -X<switch> X<case> X<given> X<when> X<default> - -o, o - -=item Goto -X<goto> - -=item PODs: Embedded Documentation -X<POD> X<documentation> - -=item Plain Old Comments (Not!) -X<comment> X<line> X<#> X<preprocessor> X<eval> - -=back - -=back - -=head2 perldata - Perl data types - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Variable names -X<variable, name> X<variable name> X<data type> X<type> - -=item Context -X<context> X<scalar context> X<list context> - -=item Scalar values -X<scalar> X<number> X<string> X<reference> - -=item Scalar value constructors -X<scalar, literal> X<scalar, constant> - -=item List value constructors -X<list> - -=item Subscripts - -=item Slices -X<slice> X<array, slice> X<hash, slice> - -=item Typeglobs and Filehandles -X<typeglob> X<filehandle> X<*> - -=back - -=item SEE ALSO - -=back - -=head2 perlop - Perl operators and precedence - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Operator Precedence and Associativity -X<operator, precedence> X<precedence> X<associativity> - -=item Terms and List Operators (Leftward) -X<list operator> X<operator, list> X<term> - -=item The Arrow Operator -X<arrow> X<dereference> X<< -> >> - -=item Auto-increment and Auto-decrement -X<increment> X<auto-increment> X<++> X<decrement> X<auto-decrement> X<--> - -=item Exponentiation -X<**> X<exponentiation> X<power> - -=item Symbolic Unary Operators -X<unary operator> X<operator, unary> - -=item Binding Operators -X<binding> X<operator, binding> X<=~> X<!~> - -=item Multiplicative Operators -X<operator, multiplicative> - -=item Additive Operators -X<operator, additive> - -=item Shift Operators -X<shift operator> X<operator, shift> X<<< << >>> -X<<< >> >>> X<right shift> X<left shift> X<bitwise shift> -X<shl> X<shr> X<shift, right> X<shift, left> - -=item Named Unary Operators -X<operator, named unary> - -=item Relational Operators -X<relational operator> X<operator, relational> - -=item Equality Operators -X<equality> X<equal> X<equals> X<operator, equality> - -=item Bitwise And -X<operator, bitwise, and> X<bitwise and> X<&> - -=item Bitwise Or and Exclusive Or -X<operator, bitwise, or> X<bitwise or> X<|> X<operator, bitwise, xor> -X<bitwise xor> X<^> - -=item C-style Logical And -X<&&> X<logical and> X<operator, logical, and> - -=item C-style Logical Or -X<||> X<operator, logical, or> - -=item C-style Logical Defined-Or -X<//> X<operator, logical, defined-or> - -=item Range Operators -X<operator, range> X<range> X<..> X<...> - -=item Conditional Operator -X<operator, conditional> X<operator, ternary> X<ternary> X<?:> - -=item Assignment Operators -X<assignment> X<operator, assignment> X<=> X<**=> X<+=> X<*=> X<&=> -X<<< <<= >>> X<&&=> X<-=> X</=> X<|=> X<<< >>= >>> X<||=> X<//=> X<.=> -X<%=> X<^=> X<x=> - -=item Comma Operator -X<comma> X<operator, comma> X<,> - -=item Yada Yada Operators -X<...> X<... operator> X<!!!> X<!!! operator> X<???> X<??? operator> -X<yada yada operator> - -=item List Operators (Rightward) -X<operator, list, rightward> X<list operator> - -=item Logical Not -X<operator, logical, not> X<not> - -=item Logical And -X<operator, logical, and> X<and> - -=item Logical or, Defined or, and Exclusive Or -X<operator, logical, or> X<operator, logical, xor> -X<operator, logical, defined or> X<operator, logical, exclusive or> -X<or> X<xor> - -=item C Operators Missing From Perl -X<operator, missing from perl> X<&> X<*> -X<typecasting> X<(TYPE)> - -unary &, unary *, (TYPE) - -=item Quote and Quote-like Operators -X<operator, quote> X<operator, quote-like> X<q> X<qq> X<qx> X<qw> X<m> -X<qr> X<s> X<tr> X<'> X<''> X<"> X<""> X<//> X<`> X<``> X<<< << >>> -X<escape sequence> X<escape> - -=item Regexp Quote-Like Operators -X<operator, regexp> - -qr/STRING/msixpo X<qr> X</i> X</m> X</o> X</s> X</x> X</p>, -m/PATTERN/msixpogc X<m> X<operator, match> X<regexp, options> X<regexp> -X<regex, options> X<regex> X</m> X</s> X</i> X</x> X</p> X</o> X</g> X</c>, -/PATTERN/msixpogc, The empty pattern //, Matching in list context, \G -assertion, ?PATTERN? X<?>, s/PATTERN/REPLACEMENT/msixpogce X<substitute> -X<substitution> X<replace> X<regexp, replace> X<regexp, substitute> X</m> -X</s> X</i> X</x> X</p> X</o> X</g> X</c> X</e> - -=item Quote-Like Operators -X<operator, quote-like> - -q/STRING/ X<q> X<quote, single> X<'> X<''>, 'STRING', qq/STRING/ X<qq> -X<quote, double> X<"> X<"">, "STRING", qx/STRING/ X<qx> X<`> X<``> -X<backtick>, `STRING`, qw/STRING/ X<qw> X<quote, list> X<quote, words>, -tr/SEARCHLIST/REPLACEMENTLIST/cds X<tr> X<y> X<transliterate> X</c> X</d> -X</s>, y/SEARCHLIST/REPLACEMENTLIST/cds, <<EOF X<here-doc> X<heredoc> -X<here-document> X<<< << >>>, Double Quotes, Single Quotes, Backticks - -=item Gory details of parsing quoted constructs -X<quote, gory details> - -Finding the end, Interpolation X<interpolation>, C<<<'EOF'>, C<m''>, the -pattern of C<s'''>, C<''>, C<q//>, C<tr'''>, C<y'''>, the replacement of -C<s'''>, C<tr///>, C<y///>, C<"">, C<``>, C<qq//>, C<qx//>, C<< <file*glob> ->>, C<<<"EOF">, the replacement of C<s///>, C<RE> in C<?RE?>, C</RE/>, -C<m/RE/>, C<s/RE/foo/>,, parsing regular expressions X<regexp, parse>, -Optimization of regular expressions X<regexp, optimization> - -=item I/O Operators -X<operator, i/o> X<operator, io> X<io> X<while> X<filehandle> -X<< <> >> X<@ARGV> - -=item Constant Folding -X<constant folding> X<folding> - -=item No-ops -X<no-op> X<nop> - -=item Bitwise String Operators -X<operator, bitwise, string> - -=item Integer Arithmetic -X<integer> - -=item Floating-point Arithmetic -X<floating-point> X<floating point> X<float> X<real> - -=item Bigger Numbers -X<number, arbitrary precision> - -=back - -=back - -=head2 perlsub - Perl subroutines - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Private Variables via my() -X<my> X<variable, lexical> X<lexical> X<lexical variable> X<scope, lexical> -X<lexical scope> X<attributes, my> - -=item Persistent Private Variables -X<state> X<state variable> X<static> X<variable, persistent> X<variable, -static> X<closure> - -=item Temporary Values via local() -X<local> X<scope, dynamic> X<dynamic scope> X<variable, local> -X<variable, temporary> - -=item Lvalue subroutines -X<lvalue> X<subroutine, lvalue> - -Lvalue subroutines are EXPERIMENTAL - -=item Passing Symbol Table Entries (typeglobs) -X<typeglob> X<*> - -=item When to Still Use local() -X<local> X<variable, local> - -=item Pass by Reference -X<pass by reference> X<pass-by-reference> X<reference> - -=item Prototypes -X<prototype> X<subroutine, prototype> - -=item Constant Functions -X<constant> - -=item Overriding Built-in Functions -X<built-in> X<override> X<CORE> X<CORE::GLOBAL> - -=item Autoloading -X<autoloading> X<AUTOLOAD> - -=item Subroutine Attributes -X<attribute> X<subroutine, attribute> X<attrs> - -=back - -=item SEE ALSO - -=back - -=head2 perlfunc - Perl builtin functions - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Perl Functions by Category -X<function> - -Functions for SCALARs or strings X<scalar> X<string> X<character>, Regular -expressions and pattern matching X<regular expression> X<regex> X<regexp>, -Numeric functions X<numeric> X<number> X<trigonometric> X<trigonometry>, -Functions for real @ARRAYs X<array>, Functions for list data X<list>, -Functions for real %HASHes X<hash>, Input and output functions X<I/O> -X<input> X<output> X<dbm>, Functions for fixed length data or records, -Functions for filehandles, files, or directories X<file> X<filehandle> -X<directory> X<pipe> X<link> X<symlink>, Keywords related to the control -flow of your Perl program X<control flow>, Keywords related to switch, -Keywords related to scoping, Miscellaneous functions, Functions for -processes and process groups X<process> X<pid> X<process id>, Keywords -related to perl modules X<module>, Keywords related to classes and -object-orientation X<object> X<class> X<package>, Low-level socket -functions X<socket> X<sock>, System V interprocess communication functions -X<IPC> X<System V> X<semaphore> X<shared memory> X<memory> X<message>, -Fetching user and group info X<user> X<group> X<password> X<uid> X<gid> -X<passwd> X</etc/passwd>, Fetching network info X<network> X<protocol> -X<host> X<hostname> X<IP> X<address> X<service>, Time-related functions -X<time> X<date>, Functions new in perl5 X<perl5>, Functions obsoleted in -perl5 - -=item Portability -X<portability> X<Unix> X<portable> - -=item Alphabetical Listing of Perl Functions - --I<X> FILEHANDLE -X<-r>X<-w>X<-x>X<-o>X<-R>X<-W>X<-X>X<-O>X<-e>X<-z>X<-s>X<-f>X<-d>X<-l>X<-p> -X<-S>X<-b>X<-c>X<-t>X<-u>X<-g>X<-k>X<-T>X<-B>X<-M>X<-A>X<-C>, -I<X> EXPR, --I<X> DIRHANDLE, -I<X>, abs VALUE X<abs> X<absolute>, abs, accept -NEWSOCKET,GENERICSOCKET X<accept>, alarm SECONDS X<alarm> X<SIGALRM> -X<timer>, alarm, atan2 Y,X X<atan2> X<arctangent> X<tan> X<tangent>, bind -SOCKET,NAME X<bind>, binmode FILEHANDLE, LAYER X<binmode> X<binary> X<text> -X<DOS> X<Windows>, binmode FILEHANDLE, bless REF,CLASSNAME X<bless>, bless -REF, break, caller EXPR X<caller> X<call stack> X<stack> X<stack trace>, -caller, chdir EXPR X<chdir> X<cd> X<directory, change>, chdir FILEHANDLE, -chdir DIRHANDLE, chdir, chmod LIST X<chmod> X<permission> X<mode>, chomp -VARIABLE X<chomp> X<INPUT_RECORD_SEPARATOR> X<$/> X<newline> X<eol>, chomp( -LIST ), chomp, chop VARIABLE X<chop>, chop( LIST ), chop, chown LIST -X<chown> X<owner> X<user> X<group>, chr NUMBER X<chr> X<character> X<ASCII> -X<Unicode>, chr, chroot FILENAME X<chroot> X<root>, chroot, close -FILEHANDLE X<close>, close, closedir DIRHANDLE X<closedir>, connect -SOCKET,NAME X<connect>, continue BLOCK X<continue>, continue, cos EXPR -X<cos> X<cosine> X<acos> X<arccosine>, cos, crypt PLAINTEXT,SALT X<crypt> -X<digest> X<hash> X<salt> X<plaintext> X<password> X<decrypt> -X<cryptography> X<passwd> X<encrypt>, dbmclose HASH X<dbmclose>, dbmopen -HASH,DBNAME,MASK X<dbmopen> X<dbm> X<ndbm> X<sdbm> X<gdbm>, defined EXPR -X<defined> X<undef> X<undefined>, defined, delete EXPR X<delete>, die LIST -X<die> X<throw> X<exception> X<raise> X<$@> X<abort>, do BLOCK X<do> -X<block>, do SUBROUTINE(LIST) X<do>, do EXPR X<do>, dump LABEL X<dump> -X<core> X<undump>, dump, each HASH X<each> X<hash, iterator>, each ARRAY -X<array, iterator>, eof FILEHANDLE X<eof> X<end of file> X<end-of-file>, -eof (), eof, eval EXPR X<eval> X<try> X<catch> X<evaluate> X<parse> -X<execute> X<error, handling> X<exception, handling>, eval BLOCK, eval, -exec LIST X<exec> X<execute>, exec PROGRAM LIST, exists EXPR X<exists> -X<autovivification>, exit EXPR X<exit> X<terminate> X<abort>, exit, exp -EXPR X<exp> X<exponential> X<antilog> X<antilogarithm> X<e>, exp, fcntl -FILEHANDLE,FUNCTION,SCALAR X<fcntl>, fileno FILEHANDLE X<fileno>, flock -FILEHANDLE,OPERATION X<flock> X<lock> X<locking>, fork X<fork> X<child> -X<parent>, format X<format>, formline PICTURE,LIST X<formline>, getc -FILEHANDLE X<getc> X<getchar> X<character> X<file, read>, getc, getlogin -X<getlogin> X<login>, getpeername SOCKET X<getpeername> X<peer>, getpgrp -PID X<getpgrp> X<group>, getppid X<getppid> X<parent> X<pid>, getpriority -WHICH,WHO X<getpriority> X<priority> X<nice>, getpwnam NAME X<getpwnam> -X<getgrnam> X<gethostbyname> X<getnetbyname> X<getprotobyname> X<getpwuid> -X<getgrgid> X<getservbyname> X<gethostbyaddr> X<getnetbyaddr> -X<getprotobynumber> X<getservbyport> X<getpwent> X<getgrent> X<gethostent> -X<getnetent> X<getprotoent> X<getservent> X<setpwent> X<setgrent> -X<sethostent> X<setnetent> X<setprotoent> X<setservent> X<endpwent> -X<endgrent> X<endhostent> X<endnetent> X<endprotoent> X<endservent>, -getgrnam NAME, gethostbyname NAME, getnetbyname NAME, getprotobyname NAME, -getpwuid UID, getgrgid GID, getservbyname NAME,PROTO, gethostbyaddr -ADDR,ADDRTYPE, getnetbyaddr ADDR,ADDRTYPE, getprotobynumber NUMBER, -getservbyport PORT,PROTO, getpwent, getgrent, gethostent, getnetent, -getprotoent, getservent, setpwent, setgrent, sethostent STAYOPEN, setnetent -STAYOPEN, setprotoent STAYOPEN, setservent STAYOPEN, endpwent, endgrent, -endhostent, endnetent, endprotoent, endservent, getsockname SOCKET -X<getsockname>, getsockopt SOCKET,LEVEL,OPTNAME X<getsockopt>, glob EXPR -X<glob> X<wildcard> X<filename, expansion> X<expand>, glob, gmtime EXPR -X<gmtime> X<UTC> X<Greenwich>, gmtime, goto LABEL X<goto> X<jump> X<jmp>, -goto EXPR, goto &NAME, grep BLOCK LIST X<grep>, grep EXPR,LIST, hex EXPR -X<hex> X<hexadecimal>, hex, import LIST X<import>, index -STR,SUBSTR,POSITION X<index> X<indexOf> X<InStr>, index STR,SUBSTR, int -EXPR X<int> X<integer> X<truncate> X<trunc> X<floor>, int, ioctl -FILEHANDLE,FUNCTION,SCALAR X<ioctl>, join EXPR,LIST X<join>, keys HASH -X<keys> X<key>, keys ARRAY, kill SIGNAL, LIST X<kill> X<signal>, last LABEL -X<last> X<break>, last, lc EXPR X<lc> X<lowercase>, lc, lcfirst EXPR -X<lcfirst> X<lowercase>, lcfirst, length EXPR X<length> X<size>, length, -link OLDFILE,NEWFILE X<link>, listen SOCKET,QUEUESIZE X<listen>, local EXPR -X<local>, localtime EXPR X<localtime> X<ctime>, localtime, lock THING -X<lock>, log EXPR X<log> X<logarithm> X<e> X<ln> X<base>, log, lstat EXPR -X<lstat>, lstat, m//, map BLOCK LIST X<map>, map EXPR,LIST, mkdir -FILENAME,MASK X<mkdir> X<md> X<directory, create>, mkdir FILENAME, mkdir, -msgctl ID,CMD,ARG X<msgctl>, msgget KEY,FLAGS X<msgget>, msgrcv -ID,VAR,SIZE,TYPE,FLAGS X<msgrcv>, msgsnd ID,MSG,FLAGS X<msgsnd>, my EXPR -X<my>, my TYPE EXPR, my EXPR : ATTRS, my TYPE EXPR : ATTRS, next LABEL -X<next> X<continue>, next, no Module VERSION LIST X<no>, no Module VERSION, -no Module LIST, no Module, no VERSION, oct EXPR X<oct> X<octal> X<hex> -X<hexadecimal> X<binary> X<bin>, oct, open FILEHANDLE,EXPR X<open> X<pipe> -X<file, open> X<fopen>, open FILEHANDLE,MODE,EXPR, open -FILEHANDLE,MODE,EXPR,LIST, open FILEHANDLE,MODE,REFERENCE, open FILEHANDLE, -opendir DIRHANDLE,EXPR X<opendir>, ord EXPR X<ord> X<encoding>, ord, our -EXPR X<our> X<global>, our TYPE EXPR, our EXPR : ATTRS, our TYPE EXPR : -ATTRS, pack TEMPLATE,LIST X<pack>, package NAMESPACE X<package> X<module> -X<namespace>, package, pipe READHANDLE,WRITEHANDLE X<pipe>, pop ARRAY -X<pop> X<stack>, pop, pos SCALAR X<pos> X<match, position>, pos, print -FILEHANDLE LIST X<print>, print LIST, print, printf FILEHANDLE FORMAT, LIST -X<printf>, printf FORMAT, LIST, prototype FUNCTION X<prototype>, push -ARRAY,LIST X<push> X<stack>, q/STRING/, qq/STRING/, qx/STRING/, qw/STRING/, -qr/STRING/, quotemeta EXPR X<quotemeta> X<metacharacter>, quotemeta, rand -EXPR X<rand> X<random>, rand, read FILEHANDLE,SCALAR,LENGTH,OFFSET X<read> -X<file, read>, read FILEHANDLE,SCALAR,LENGTH, readdir DIRHANDLE X<readdir>, -readline EXPR, readline X<readline> X<gets> X<fgets>, readlink EXPR -X<readlink>, readlink, readpipe EXPR, readpipe X<readpipe>, recv -SOCKET,SCALAR,LENGTH,FLAGS X<recv>, redo LABEL X<redo>, redo, ref EXPR -X<ref> X<reference>, ref, rename OLDNAME,NEWNAME X<rename> X<move> X<mv> -X<ren>, require VERSION X<require>, require EXPR, require, reset EXPR -X<reset>, reset, return EXPR X<return>, return, reverse LIST X<reverse> -X<rev> X<invert>, rewinddir DIRHANDLE X<rewinddir>, rindex -STR,SUBSTR,POSITION X<rindex>, rindex STR,SUBSTR, rmdir FILENAME X<rmdir> -X<rd> X<directory, remove>, rmdir, s///, say FILEHANDLE LIST X<say>, say -LIST, say, scalar EXPR X<scalar> X<context>, seek -FILEHANDLE,POSITION,WHENCE X<seek> X<fseek> X<filehandle, position>, -seekdir DIRHANDLE,POS X<seekdir>, select FILEHANDLE X<select> X<filehandle, -default>, select, select RBITS,WBITS,EBITS,TIMEOUT X<select>, semctl -ID,SEMNUM,CMD,ARG X<semctl>, semget KEY,NSEMS,FLAGS X<semget>, semop -KEY,OPSTRING X<semop>, send SOCKET,MSG,FLAGS,TO X<send>, send -SOCKET,MSG,FLAGS, setpgrp PID,PGRP X<setpgrp> X<group>, setpriority -WHICH,WHO,PRIORITY X<setpriority> X<priority> X<nice> X<renice>, setsockopt -SOCKET,LEVEL,OPTNAME,OPTVAL X<setsockopt>, shift ARRAY X<shift>, shift, -shmctl ID,CMD,ARG X<shmctl>, shmget KEY,SIZE,FLAGS X<shmget>, shmread -ID,VAR,POS,SIZE X<shmread> X<shmwrite>, shmwrite ID,STRING,POS,SIZE, -shutdown SOCKET,HOW X<shutdown>, sin EXPR X<sin> X<sine> X<asin> -X<arcsine>, sin, sleep EXPR X<sleep> X<pause>, sleep, socket -SOCKET,DOMAIN,TYPE,PROTOCOL X<socket>, socketpair -SOCKET1,SOCKET2,DOMAIN,TYPE,PROTOCOL X<socketpair>, sort SUBNAME LIST -X<sort> X<qsort> X<quicksort> X<mergesort>, sort BLOCK LIST, sort LIST, -splice ARRAY,OFFSET,LENGTH,LIST X<splice>, splice ARRAY,OFFSET,LENGTH, -splice ARRAY,OFFSET, splice ARRAY, split /PATTERN/,EXPR,LIMIT X<split>, -split /PATTERN/,EXPR, split /PATTERN/, split, sprintf FORMAT, LIST -X<sprintf>, format parameter index, flags, vector flag, (minimum) width, -precision, or maximum width X<precision>, size, order of arguments, sqrt -EXPR X<sqrt> X<root> X<square root>, sqrt, srand EXPR X<srand> X<seed> -X<randseed>, srand, stat FILEHANDLE X<stat> X<file, status> X<ctime>, stat -EXPR, stat DIRHANDLE, stat, state EXPR X<state>, state TYPE EXPR, state -EXPR : ATTRS, state TYPE EXPR : ATTRS, study SCALAR X<study>, study, sub -NAME BLOCK X<sub>, sub NAME (PROTO) BLOCK, sub NAME : ATTRS BLOCK, sub NAME -(PROTO) : ATTRS BLOCK, substr EXPR,OFFSET,LENGTH,REPLACEMENT X<substr> -X<substring> X<mid> X<left> X<right>, substr EXPR,OFFSET,LENGTH, substr -EXPR,OFFSET, symlink OLDFILE,NEWFILE X<symlink> X<link> X<symbolic link> -X<link, symbolic>, syscall NUMBER, LIST X<syscall> X<system call>, sysopen -FILEHANDLE,FILENAME,MODE X<sysopen>, sysopen -FILEHANDLE,FILENAME,MODE,PERMS, sysread FILEHANDLE,SCALAR,LENGTH,OFFSET -X<sysread>, sysread FILEHANDLE,SCALAR,LENGTH, sysseek -FILEHANDLE,POSITION,WHENCE X<sysseek> X<lseek>, system LIST X<system> -X<shell>, system PROGRAM LIST, syswrite FILEHANDLE,SCALAR,LENGTH,OFFSET -X<syswrite>, syswrite FILEHANDLE,SCALAR,LENGTH, syswrite FILEHANDLE,SCALAR, -tell FILEHANDLE X<tell>, tell, telldir DIRHANDLE X<telldir>, tie -VARIABLE,CLASSNAME,LIST X<tie>, tied VARIABLE X<tied>, time X<time> -X<epoch>, times X<times>, tr///, truncate FILEHANDLE,LENGTH X<truncate>, -truncate EXPR,LENGTH, uc EXPR X<uc> X<uppercase> X<toupper>, uc, ucfirst -EXPR X<ucfirst> X<uppercase>, ucfirst, umask EXPR X<umask>, umask, undef -EXPR X<undef> X<undefine>, undef, unlink LIST X<unlink> X<delete> X<remove> -X<rm> X<del>, unlink, unpack TEMPLATE,EXPR X<unpack>, unpack TEMPLATE, -untie VARIABLE X<untie>, unshift ARRAY,LIST X<unshift>, use Module VERSION -LIST X<use> X<module> X<import>, use Module VERSION, use Module LIST, use -Module, use VERSION, utime LIST X<utime>, values HASH X<values>, values -ARRAY, vec EXPR,OFFSET,BITS X<vec> X<bit> X<bit vector>, wait X<wait>, -waitpid PID,FLAGS X<waitpid>, wantarray X<wantarray> X<context>, warn LIST -X<warn> X<warning> X<STDERR>, write FILEHANDLE X<write>, write EXPR, write, -y/// - -=back - -=back - -=head2 perlopentut - tutorial on opening things in Perl - -=over 4 - -=item DESCRIPTION - -=item Open E<agrave> la shell - -=over 4 - -=item Simple Opens - -=item Indirect Filehandles - -=item Pipe Opens - -=item The Minus File - -=item Mixing Reads and Writes - -=item Filters - -=back - -=item Open E<agrave> la C - -=over 4 - -=item Permissions E<agrave> la mode - -=back - -=item Obscure Open Tricks - -=over 4 - -=item Re-Opening Files (dups) - -=item Dispelling the Dweomer - -=item Paths as Opens - -=item Single Argument Open - -=item Playing with STDIN and STDOUT - -=back - -=item Other I/O Issues - -=over 4 - -=item Opening Non-File Files - -=item Opening Named Pipes - -=item Opening Sockets - -=item Binary Files - -=item File Locking - -=item IO Layers - -=back - -=item SEE ALSO - -=item AUTHOR and COPYRIGHT - -=item HISTORY - -=back - -=head2 perlpacktut - tutorial on C<pack> and C<unpack> - -=over 4 - -=item DESCRIPTION - -=item The Basic Principle - -=item Packing Text - -=item Packing Numbers - -=over 4 - -=item Integers - -=item Unpacking a Stack Frame - -=item How to Eat an Egg on a Net - -=item Byte-order modifiers - -=item Floating point Numbers - -=back - -=item Exotic Templates - -=over 4 - -=item Bit Strings - -=item Uuencoding - -=item Doing Sums - -=item Unicode - -=item Another Portable Binary Encoding - -=back - -=item Template Grouping - -=item Lengths and Widths - -=over 4 - -=item String Lengths - -=item Dynamic Templates - -=item Counting Repetitions - -=back - -=item Packing and Unpacking C Structures - -=over 4 - -=item The Alignment Pit - -=item Dealing with Endian-ness - -=item Alignment, Take 2 - -=item Alignment, Take 3 - -=item Pointers for How to Use Them - -=back - -=item Pack Recipes - -=item Funnies Section - -=item Authors - -=back - -=head2 perlpod - the Plain Old Documentation format - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Ordinary Paragraph -X<POD, ordinary paragraph> - -=item Verbatim Paragraph -X<POD, verbatim paragraph> X<verbatim> - -=item Command Paragraph -X<POD, command> - -C<=head1 I<Heading Text>> X<=head1> X<=head2> X<=head3> X<=head4> X<head1> -X<head2> X<head3> X<head4>, C<=head2 I<Heading Text>>, C<=head3 I<Heading -Text>>, C<=head4 I<Heading Text>>, C<=over I<indentlevel>> X<=over> -X<=item> X<=back> X<over> X<item> X<back>, C<=item I<stuff...>>, C<=back>, -C<=cut> X<=cut> X<cut>, C<=pod> X<=pod> X<pod>, C<=begin I<formatname>> -X<=begin> X<=end> X<=for> X<begin> X<end> X<for>, C<=end I<formatname>>, -C<=for I<formatname> I<text...>>, C<=encoding I<encodingname>> X<=encoding> -X<encoding> - -=item Formatting Codes -X<POD, formatting code> X<formatting code> -X<POD, interior sequence> X<interior sequence> - -C<IE<lt>textE<gt>> -- italic text X<I> X<< IZ<><> >> X<POD, formatting -code, italic> X<italic>, C<BE<lt>textE<gt>> -- bold text X<B> X<< BZ<><> >> -X<POD, formatting code, bold> X<bold>, C<CE<lt>codeE<gt>> -- code text X<C> -X<< CZ<><> >> X<POD, formatting code, code> X<code>, C<LE<lt>nameE<gt>> -- -a hyperlink X<L> X<< LZ<><> >> X<POD, formatting code, hyperlink> -X<hyperlink>, C<EE<lt>escapeE<gt>> -- a character escape X<E> X<< EZ<><> >> -X<POD, formatting code, escape> X<escape>, C<FE<lt>filenameE<gt>> -- used -for filenames X<F> X<< FZ<><> >> X<POD, formatting code, filename> -X<filename>, C<SE<lt>textE<gt>> -- text contains non-breaking spaces X<S> -X<< SZ<><> >> X<POD, formatting code, non-breaking space> X<non-breaking -space>, C<XE<lt>topic nameE<gt>> -- an index entry X<X> X<< XZ<><> >> -X<POD, formatting code, index entry> X<index entry>, C<ZE<lt>E<gt>> -- a -null (zero-effect) formatting code X<Z> X<< ZZ<><> >> X<POD, formatting -code, null> X<null> - -=item The Intent -X<POD, intent of> - -=item Embedding Pods in Perl Modules -X<POD, embedding> - -=item Hints for Writing Pod - -X<podchecker> X<POD, validating> - -=back - -=item SEE ALSO - -=item AUTHOR - -=back - -=head2 perlpodspec - Plain Old Documentation: format specification and -notes - -=over 4 - -=item DESCRIPTION - -=item Pod Definitions - -=item Pod Commands - -"=head1", "=head2", "=head3", "=head4", "=pod", "=cut", "=over", "=item", -"=back", "=begin formatname", "=end formatname", "=for formatname text...", -"=encoding encodingname" - -=item Pod Formatting Codes - -C<IE<lt>textE<gt>> -- italic text, C<BE<lt>textE<gt>> -- bold text, -C<CE<lt>codeE<gt>> -- code text, C<FE<lt>filenameE<gt>> -- style for -filenames, C<XE<lt>topic nameE<gt>> -- an index entry, C<ZE<lt>E<gt>> -- a -null (zero-effect) formatting code, C<LE<lt>nameE<gt>> -- a hyperlink, -C<EE<lt>escapeE<gt>> -- a character escape, C<SE<lt>textE<gt>> -- text -contains non-breaking spaces - -=item Notes on Implementing Pod Processors - -=item About LE<lt>...E<gt> Codes - -First:, Second:, Third:, Fourth:, Fifth:, Sixth: - -=item About =over...=back Regions - -=item About Data Paragraphs and "=begin/=end" Regions - -=item SEE ALSO - -=item AUTHOR - -=back - -=head2 perlrun - how to execute the Perl interpreter - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item #! and quoting on non-Unix systems -X<hashbang> X<#!> - -OS/2, MS-DOS, Win95/NT, Macintosh, VMS - -=item Location of Perl -X<perl, location of interpreter> - -=item Command Switches -X<perl, command switches> X<command switches> - -B<-0>[I<octal/hexadecimal>] X<-0> X<$/>, B<-a> X<-a> X<autosplit>, B<-C -[I<number/list>]> X<-C>, B<-c> X<-c>, B<-d> X<-d> X<-dt>, B<-dt>, -B<-d:>I<foo[=bar,baz]> X<-d> X<-dt>, B<-dt:>I<foo[=bar,baz]>, -B<-D>I<letters> X<-D> X<DEBUGGING> X<-DDEBUGGING>, B<-D>I<number>, B<-e> -I<commandline> X<-e>, B<-E> I<commandline> X<-E>, B<-f> X<-f>, -B<-F>I<pattern> X<-F>, B<-h> X<-h>, B<-i>[I<extension>] X<-i> X<in-place>, -B<-I>I<directory> X<-I> X<@INC>, B<-l>[I<octnum>] X<-l> X<$/> X<$\>, -B<-m>[B<->]I<module> X<-m> X<-M>, B<-M>[B<->]I<module>, -B<-M>[B<->]I<'module ...'>, B<-[mM]>[B<->]I<module=arg[,arg]...>, B<-n> -X<-n>, B<-p> X<-p>, B<-s> X<-s>, B<-S> X<-S>, B<-t> X<-t>, B<-T> X<-T>, -B<-u> X<-u>, B<-U> X<-U>, B<-v> X<-v>, B<-V> X<-V>, B<-V:>I<configvar>, -B<-w> X<-w>, B<-W> X<-W>, B<-X> X<-X>, B<-x> X<-x>, B<-x>I<directory> - -=back - -=item ENVIRONMENT -X<perl, environment variables> - -HOME X<HOME>, LOGDIR X<LOGDIR>, PATH X<PATH>, PERL5LIB X<PERL5LIB>, -PERL5OPT X<PERL5OPT>, PERLIO X<PERLIO>, :bytes X<:bytes>, :crlf X<:crlf>, -:mmap X<:mmap>, :perlio X<:perlio>, :pop X<:pop>, :raw X<:raw>, :stdio -X<:stdio>, :unix X<:unix>, :utf8 X<:utf8>, :win32 X<:win32>, PERLIO_DEBUG -X<PERLIO_DEBUG>, PERLLIB X<PERLLIB>, PERL5DB X<PERL5DB>, PERL5DB_THREADED -X<PERL5DB_THREADED>, PERL5SHELL (specific to the Win32 port) X<PERL5SHELL>, -PERL_ALLOW_NON_IFS_LSP (specific to the Win32 port) -X<PERL_ALLOW_NON_IFS_LSP>, PERL_DEBUG_MSTATS X<PERL_DEBUG_MSTATS>, -PERL_DESTRUCT_LEVEL X<PERL_DESTRUCT_LEVEL>, PERL_DL_NONLAZY -X<PERL_DL_NONLAZY>, PERL_ENCODING X<PERL_ENCODING>, PERL_HASH_SEED -X<PERL_HASH_SEED>, PERL_HASH_SEED_DEBUG X<PERL_HASH_SEED_DEBUG>, PERL_ROOT -(specific to the VMS port) X<PERL_ROOT>, PERL_SIGNALS X<PERL_SIGNALS>, -PERL_UNICODE X<PERL_UNICODE>, SYS$LOGIN (specific to the VMS port) -X<SYS$LOGIN> - -=back - -=head2 perldiag - various Perl diagnostics - -=over 4 - -=item DESCRIPTION - -=item SEE ALSO - -=back - -=head2 perllexwarn - Perl Lexical Warnings - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Default Warnings and Optional Warnings - -=item What's wrong with B<-w> and C<$^W> - -=item Controlling Warnings from the Command Line - -B<-w> X<-w>, B<-W> X<-W>, B<-X> X<-X> - -=item Backward Compatibility - -=item Category Hierarchy -X<warning, categories> - -=item Fatal Warnings -X<warning, fatal> - -=item Reporting Warnings from a Module -X<warning, reporting> X<warning, registering> - -=back - -=item SEE ALSO - -=item AUTHOR - -=back - -=head2 perldebug - Perl debugging - -=over 4 - -=item DESCRIPTION - -=item The Perl Debugger - -=over 4 - -=item Calling the debugger - -perl -d program_name, perl -d -e 0, perl -d:Ptkdb program_name, perl -dt -threaded_program_name - -=item Debugger Commands - -h X<debugger command, h>, h [command], h h, p expr X<debugger command, p>, -x [maxdepth] expr X<debugger command, x>, V [pkg [vars]] X<debugger -command, V>, X [vars] X<debugger command, X>, y [level [vars]] X<debugger -command, y>, T X<debugger command, T> X<backtrace> X<stack, backtrace>, s -[expr] X<debugger command, s> X<step>, n [expr] X<debugger command, n>, r -X<debugger command, r>, <CR>, c [line|sub] X<debugger command, c>, l -X<debugger command, l>, l min+incr, l min-max, l line, l subname, - -X<debugger command, ->, v [line] X<debugger command, v>, . X<debugger -command, .>, f filename X<debugger command, f>, /pattern/, ?pattern?, L -[abw] X<debugger command, L>, S [[!]regex] X<debugger command, S>, t -X<debugger command, t>, t expr X<debugger command, t>, b X<breakpoint> -X<debugger command, b>, b [line] [condition] X<breakpoint> X<debugger -command, b>, b subname [condition] X<breakpoint> X<debugger command, b>, b -postpone subname [condition] X<breakpoint> X<debugger command, b>, b load -filename X<breakpoint> X<debugger command, b>, b compile subname -X<breakpoint> X<debugger command, b>, B line X<breakpoint> X<debugger -command, B>, B * X<breakpoint> X<debugger command, B>, a [line] command -X<debugger command, a>, A line X<debugger command, A>, A * X<debugger -command, A>, w expr X<debugger command, w>, W expr X<debugger command, W>, -W * X<debugger command, W>, o X<debugger command, o>, o booloption ... -X<debugger command, o>, o anyoption? ... X<debugger command, o>, o -option=value ... X<debugger command, o>, < ? X<< debugger command, < >>, < -[ command ] X<< debugger command, < >>, < * X<< debugger command, < >>, << -command X<< debugger command, << >>, > ? X<< debugger command, > >>, > -command X<< debugger command, > >>, > * X<< debugger command, > >>, >> -command X<<< debugger command, >> >>>, { ? X<debugger command, {>, { [ -command ], { * X<debugger command, {>, {{ command X<debugger command, {{>, -! number X<debugger command, !>, ! -number X<debugger command, !>, ! -pattern X<debugger command, !>, !! cmd X<debugger command, !!>, source file -X<debugger command, source>, H -number X<debugger command, H>, q or ^D -X<debugger command, q> X<debugger command, ^D>, R X<debugger command, R>, -|dbcmd X<debugger command, |>, ||dbcmd X<debugger command, ||>, command, m -expr X<debugger command, m>, M X<debugger command, M>, man [manpage] -X<debugger command, man> - -=item Configurable Options - -C<recallCommand>, C<ShellBang> X<debugger option, recallCommand> X<debugger -option, ShellBang>, C<pager> X<debugger option, pager>, C<tkRunning> -X<debugger option, tkRunning>, C<signalLevel>, C<warnLevel>, C<dieLevel> -X<debugger option, signalLevel> X<debugger option, warnLevel> X<debugger -option, dieLevel>, C<AutoTrace> X<debugger option, AutoTrace>, C<LineInfo> -X<debugger option, LineInfo>, C<inhibit_exit> X<debugger option, -inhibit_exit>, C<PrintRet> X<debugger option, PrintRet>, C<ornaments> -X<debugger option, ornaments>, C<frame> X<debugger option, frame>, -C<maxTraceLen> X<debugger option, maxTraceLen>, C<windowSize> X<debugger -option, windowSize>, C<arrayDepth>, C<hashDepth> X<debugger option, -arrayDepth> X<debugger option, hashDepth>, C<dumpDepth> X<debugger option, -dumpDepth>, C<compactDump>, C<veryCompact> X<debugger option, compactDump> -X<debugger option, veryCompact>, C<globPrint> X<debugger option, -globPrint>, C<DumpDBFiles> X<debugger option, DumpDBFiles>, C<DumpPackages> -X<debugger option, DumpPackages>, C<DumpReused> X<debugger option, -DumpReused>, C<quote>, C<HighBit>, C<undefPrint> X<debugger option, quote> -X<debugger option, HighBit> X<debugger option, undefPrint>, C<UsageOnly> -X<debugger option, UsageOnly>, C<TTY> X<debugger option, TTY>, C<noTTY> -X<debugger option, noTTY>, C<ReadLine> X<debugger option, ReadLine>, -C<NonStop> X<debugger option, NonStop> - -=item Debugger input/output - -Prompt, Multiline commands, Stack backtrace X<backtrace> X<stack, -backtrace>, Line Listing Format, Frame listing - -=item Debugging compile-time statements - -=item Debugger Customization - -=item Readline Support - -=item Editor Support for Debugging - -=item The Perl Profiler -X<profile> X<profiling> X<profiler> - -=back - -=item Debugging regular expressions -X<regular expression, debugging> -X<regex, debugging> X<regexp, debugging> - -=item Debugging memory usage -X<memory usage> - -=item SEE ALSO - -=item BUGS - -=back - -=head2 perlvar - Perl predefined variables - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Predefined Names - -$ARG, $_ X<$_> X<$ARG>, $a, $b X<$a> X<$b>, $<I<digits>> X<$1> X<$2> X<$3>, -$MATCH, $& X<$&> X<$MATCH>, ${^MATCH} X<${^MATCH}>, $PREMATCH, $` X<$`> -X<$PREMATCH>, ${^PREMATCH} X<${^PREMATCH}>, $POSTMATCH, $' X<$'> -X<$POSTMATCH>, ${^POSTMATCH} X<${^POSTMATCH}>, $LAST_PAREN_MATCH, $+ X<$+> -X<$LAST_PAREN_MATCH>, $LAST_SUBMATCH_RESULT, $^N X<$^N>, @LAST_MATCH_END, -@+ X<@+> X<@LAST_MATCH_END>, %+ X<%+>, HANDLE->input_line_number(EXPR), -$INPUT_LINE_NUMBER, $NR, $. X<$.> X<$NR> X<$INPUT_LINE_NUMBER> X<line -number>, IO::Handle->input_record_separator(EXPR), $INPUT_RECORD_SEPARATOR, -$RS, $/ X<$/> X<$RS> X<$INPUT_RECORD_SEPARATOR>, HANDLE->autoflush(EXPR), -$OUTPUT_AUTOFLUSH, $| X<$|> X<autoflush> X<flush> X<$OUTPUT_AUTOFLUSH>, -IO::Handle->output_field_separator EXPR, $OUTPUT_FIELD_SEPARATOR, $OFS, $, -X<$,> X<$OFS> X<$OUTPUT_FIELD_SEPARATOR>, -IO::Handle->output_record_separator EXPR, $OUTPUT_RECORD_SEPARATOR, $ORS, -$\ X<$\> X<$ORS> X<$OUTPUT_RECORD_SEPARATOR>, $LIST_SEPARATOR, $" X<$"> -X<$LIST_SEPARATOR>, $SUBSCRIPT_SEPARATOR, $SUBSEP, $; X<$;> X<$SUBSEP> -X<SUBSCRIPT_SEPARATOR>, HANDLE->format_page_number(EXPR), -$FORMAT_PAGE_NUMBER, $% X<$%> X<$FORMAT_PAGE_NUMBER>, -HANDLE->format_lines_per_page(EXPR), $FORMAT_LINES_PER_PAGE, $= X<$=> -X<$FORMAT_LINES_PER_PAGE>, HANDLE->format_lines_left(EXPR), -$FORMAT_LINES_LEFT, $- X<$-> X<$FORMAT_LINES_LEFT>, @LAST_MATCH_START, @- -X<@-> X<@LAST_MATCH_START>, C<$`> is the same as C<substr($var, 0, $-[0])>, -C<$&> is the same as C<substr($var, $-[0], $+[0] - $-[0])>, C<$'> is the -same as C<substr($var, $+[0])>, C<$1> is the same as C<substr($var, $-[1], -$+[1] - $-[1])>, C<$2> is the same as C<substr($var, $-[2], $+[2] - -$-[2])>, C<$3> is the same as C<substr($var, $-[3], $+[3] - $-[3])>, %- -X<%->, HANDLE->format_name(EXPR), $FORMAT_NAME, $~ X<$~> X<$FORMAT_NAME>, -HANDLE->format_top_name(EXPR), $FORMAT_TOP_NAME, $^ X<$^> -X<$FORMAT_TOP_NAME>, IO::Handle->format_line_break_characters EXPR, -$FORMAT_LINE_BREAK_CHARACTERS, $: X<$:> X<FORMAT_LINE_BREAK_CHARACTERS>, -IO::Handle->format_formfeed EXPR, $FORMAT_FORMFEED, $^L X<$^L> -X<$FORMAT_FORMFEED>, $ACCUMULATOR, $^A X<$^A> X<$ACCUMULATOR>, -$CHILD_ERROR, $? X<$?> X<$CHILD_ERROR>, ${^CHILD_ERROR_NATIVE} -X<$^CHILD_ERROR_NATIVE>, ${^ENCODING} X<$^ENCODING>, $OS_ERROR, $ERRNO, $! -X<$!> X<$ERRNO> X<$OS_ERROR>, %OS_ERROR, %ERRNO, %! X<%!>, -$EXTENDED_OS_ERROR, $^E X<$^E> X<$EXTENDED_OS_ERROR>, $EVAL_ERROR, $@ X<$@> -X<$EVAL_ERROR>, $PROCESS_ID, $PID, $$ X<$$> X<$PID> X<$PROCESS_ID>, -$REAL_USER_ID, $UID, $< X<< $< >> X<$UID> X<$REAL_USER_ID>, -$EFFECTIVE_USER_ID, $EUID, $> X<< $> >> X<$EUID> X<$EFFECTIVE_USER_ID>, -$REAL_GROUP_ID, $GID, $( X<$(> X<$GID> X<$REAL_GROUP_ID>, -$EFFECTIVE_GROUP_ID, $EGID, $) X<$)> X<$EGID> X<$EFFECTIVE_GROUP_ID>, -$PROGRAM_NAME, $0 X<$0> X<$PROGRAM_NAME>, $[ X<$[>, $] X<$]>, $COMPILING, -$^C X<$^C> X<$COMPILING>, $DEBUGGING, $^D X<$^D> X<$DEBUGGING>, -${^RE_DEBUG_FLAGS}, ${^RE_TRIE_MAXBUF}, $SYSTEM_FD_MAX, $^F X<$^F> -X<$SYSTEM_FD_MAX>, $^H, %^H, $INPLACE_EDIT, $^I X<$^I> X<$INPLACE_EDIT>, -$^M X<$^M>, $OSNAME, $^O X<$^O> X<$OSNAME>, ${^OPEN}, $PERLDB, $^P X<$^P> -X<$PERLDB>, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x100, 0x200, -0x400, $LAST_REGEXP_CODE_RESULT, $^R X<$^R> X<$LAST_REGEXP_CODE_RESULT>, -$EXCEPTIONS_BEING_CAUGHT, $^S X<$^S> X<$EXCEPTIONS_BEING_CAUGHT>, -$BASETIME, $^T X<$^T> X<$BASETIME>, ${^TAINT}, ${^UNICODE}, ${^UTF8CACHE}, -${^UTF8LOCALE}, $PERL_VERSION, $^V X<$^V> X<$PERL_VERSION>, $WARNING, $^W -X<$^W> X<$WARNING>, ${^WARNING_BITS}, ${^WIN32_SLOPPY_STAT}, -$EXECUTABLE_NAME, $^X X<$^X> X<$EXECUTABLE_NAME>, ARGV X<ARGV>, $ARGV -X<$ARGV>, @ARGV X<@ARGV>, ARGVOUT X<ARGVOUT>, @F X<@F>, @INC X<@INC>, @ARG, -@_ X<@_> X<@ARG>, %INC X<%INC>, %ENV, $ENV{expr} X<%ENV>, %SIG, $SIG{expr} -X<%SIG> - -=item Error Indicators -X<error> X<exception> - -=item Technical Note on the Syntax of Variable Names - -=back - -=item BUGS - -=back - -=head2 perlre - Perl regular expressions - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Modifiers - -m X</m> X<regex, multiline> X<regexp, multiline> X<regular expression, -multiline>, s X</s> X<regex, single-line> X<regexp, single-line> X<regular -expression, single-line>, i X</i> X<regex, case-insensitive> X<regexp, -case-insensitive> X<regular expression, case-insensitive>, x X</x>, p X</p> -X<regex, preserve> X<regexp, preserve>, g and c X</g> X</c> - -=item Regular Expressions - -[1], [2], [3], [1], [2], [3], C<$>, C<+> C<< < >> C<=> C<< > >> C<|> C<~>, -C<^> C<`>, cntrl X<cntrl>, graph X<graph>, print X<print>, punct X<punct>, -xdigit X<xdigit> - -=item Extended Patterns - -C<(?#text)> X<(?#)>, C<(?pimsx-imsx)> X<(?)>, C<(?:pattern)> X<(?:)>, -C<(?imsx-imsx:pattern)>, C<(?|pattern)> X<(?|)> X<Branch reset>, -Look-Around Assertions X<look-around assertion> X<lookaround assertion> -X<look-around> X<lookaround>, C<(?=pattern)> X<(?=)> X<look-ahead, -positive> X<lookahead, positive>, C<(?!pattern)> X<(?!)> X<look-ahead, -negative> X<lookahead, negative>, C<(?<=pattern)> C<\K> X<(?<=)> -X<look-behind, positive> X<lookbehind, positive> X<\K>, C<(?<!pattern)> -X<(?<!)> X<look-behind, negative> X<lookbehind, negative>, -C<(?'NAME'pattern)>, C<< (?<NAME>pattern) >> X<< (?<NAME>) >> X<(?'NAME')> -X<named capture> X<capture>, C<< \k<NAME> >>, C<< \k'NAME' >>, C<(?{ code -})> X<(?{})> X<regex, code in> X<regexp, code in> X<regular expression, -code in>, C<(??{ code })> X<(??{})> X<regex, postponed> X<regexp, -postponed> X<regular expression, postponed>, C<(?PARNO)> C<(?-PARNO)> -C<(?+PARNO)> C<(?R)> C<(?0)> X<(?PARNO)> X<(?1)> X<(?R)> X<(?0)> X<(?-1)> -X<(?+1)> X<(?-PARNO)> X<(?+PARNO)> X<regex, recursive> X<regexp, recursive> -X<regular expression, recursive> X<regex, relative recursion>, C<(?&NAME)> -X<(?&NAME)>, C<(?(condition)yes-pattern|no-pattern)> X<(?()>, -C<(?(condition)yes-pattern)>, (1) (2) .., (<NAME>) ('NAME'), (?{ CODE }), -(R), (R1) (R2) .., (R&NAME), (DEFINE), C<< (?>pattern) >> X<backtrack> -X<backtracking> X<atomic> X<possessive> - -=item Special Backtracking Control Verbs - -Verbs that take an argument, C<(*PRUNE)> C<(*PRUNE:NAME)> X<(*PRUNE)> -X<(*PRUNE:NAME)>, C<(*SKIP)> C<(*SKIP:NAME)> X<(*SKIP)>, C<(*MARK:NAME)> -C<(*:NAME)> X<(*MARK)> C<(*MARK:NAME)> C<(*:NAME)>, C<(*THEN)> -C<(*THEN:NAME)>, C<(*COMMIT)> X<(*COMMIT)>, Verbs without an argument, -C<(*FAIL)> C<(*F)> X<(*FAIL)> X<(*F)>, C<(*ACCEPT)> X<(*ACCEPT)> - -=item Backtracking -X<backtrack> X<backtracking> - -=item Version 8 Regular Expressions -X<regular expression, version 8> X<regex, version 8> X<regexp, version 8> - -=item Warning on \1 Instead of $1 - -=item Repeated Patterns Matching a Zero-length Substring - -=item Combining RE Pieces - -C<ST>, C<S|T>, C<S{REPEAT_COUNT}>, C<S{min,max}>, C<S{min,max}?>, C<S?>, -C<S*>, C<S+>, C<S??>, C<S*?>, C<S+?>, C<< (?>S) >>, C<(?=S)>, C<(?<=S)>, -C<(?!S)>, C<(?<!S)>, C<(??{ EXPR })>, C<(?PARNO)>, -C<(?(condition)yes-pattern|no-pattern)> - -=item Creating Custom RE Engines - -=back - -=item PCRE/Python Support - -C<< (?PE<lt>NAMEE<gt>pattern) >>, C<< (?P=NAME) >>, C<< (?P>NAME) >> - -=item BUGS - -=item SEE ALSO - -=back - -=head2 perlrebackslash - Perl Regular Expression Backslash Sequences and -Escapes - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item The backslash - -[1] - -=item All the sequences and escapes - -=item Character Escapes - -[1], [2] - -=item Modifiers - -=item Character classes - -=item Referencing - -=item Assertions - -\A, \z, \Z, \G, \b, \B - -=item Misc - -\C, \K, \R, \X - -=back - -=back - -=head2 perlrecharclass - Perl Regular Expression Character Classes - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item The dot - -=item Backslashed sequences - -[1] - -=item Bracketed Character Classes - -cntrl, graph, print, punct - -=item Locale, Unicode and UTF-8 - -=back - -=back - -=head2 perlreref - Perl Regular Expressions Reference - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item OPERATORS - -=item SYNTAX - -=item ESCAPE SEQUENCES - -=item CHARACTER CLASSES - -=item ANCHORS - -=item QUANTIFIERS - -=item EXTENDED CONSTRUCTS - -=item VARIABLES - -=item FUNCTIONS - -=item TERMINOLOGY - -=back - -=item AUTHOR - -=item SEE ALSO - -=item THANKS - -=back - -=head2 perlref - Perl references and nested data structures - -=over 4 - -=item NOTE - -=item DESCRIPTION - -=over 4 - -=item Making References -X<reference, creation> X<referencing> - -1. X<\> X<backslash>, 2. X<array, anonymous> X<[> X<[]> X<square bracket> -X<bracket, square> X<arrayref> X<array reference> X<reference, array>, 3. -X<hash, anonymous> X<{> X<{}> X<curly bracket> X<bracket, curly> X<brace> -X<hashref> X<hash reference> X<reference, hash>, 4. X<subroutine, -anonymous> X<subroutine, reference> X<reference, subroutine> X<scope, -lexical> X<closure> X<lexical> X<lexical scope>, 5. X<constructor> X<new>, -6. X<autovivification>, 7. X<*foo{THING}> X<*> - -=item Using References -X<reference, use> X<dereferencing> X<dereference> - -=item Symbolic references -X<reference, symbolic> X<reference, soft> -X<symbolic reference> X<soft reference> - -=item Not-so-symbolic references - -=item Pseudo-hashes: Using an array as a hash -X<pseudo-hash> X<pseudo hash> X<pseudohash> - -=item Function Templates -X<scope, lexical> X<closure> X<lexical> X<lexical scope> -X<subroutine, nested> X<sub, nested> X<subroutine, local> X<sub, local> - -=back - -=item WARNING -X<reference, string context> X<reference, use as hash key> - -=item SEE ALSO - -=back - -=head2 perlform - Perl formats - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Text Fields -X<format, text field> - -=item Numeric Fields -X<#> X<format, numeric field> - -=item The Field @* for Variable Width Multi-Line Text -X<@*> - -=item The Field ^* for Variable Width One-line-at-a-time Text -X<^*> - -=item Specifying Values -X<format, specifying values> - -=item Using Fill Mode -X<format, fill mode> - -=item Suppressing Lines Where All Fields Are Void -X<format, suppressing lines> - -=item Repeating Format Lines -X<format, repeating lines> - -=item Top of Form Processing -X<format, top of form> X<top> X<header> - -=item Format Variables -X<format variables> -X<format, variables> - -=back - -=item NOTES - -=over 4 - -=item Footers -X<format, footer> X<footer> - -=item Accessing Formatting Internals -X<format, internals> - -=back - -=item WARNINGS - -=back - -=head2 perlobj - Perl objects - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item An Object is Simply a Reference -X<object> X<bless> X<constructor> X<new> - -=item A Class is Simply a Package -X<class> X<package> X<@ISA> X<inheritance> - -=item A Method is Simply a Subroutine -X<method> - -=item Method Invocation -X<invocation> X<method> X<arrow> X<< -> >> - -=item Indirect Object Syntax -X<indirect object syntax> X<invocation, indirect> X<indirect> - -=item Default UNIVERSAL methods -X<UNIVERSAL> - -isa(CLASS) X<isa>, DOES(ROLE), can(METHOD) X<can>, VERSION( [NEED] ) -X<VERSION> - -=item Destructors -X<destructor> X<DESTROY> - -=item Summary - -=item Two-Phased Garbage Collection -X<garbage collection> X<GC> X<circular reference> -X<reference, circular> X<DESTROY> X<destructor> - -=back - -=item SEE ALSO - -=back - -=head2 perltie - how to hide an object class in a simple variable - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Tying Scalars -X<scalar, tying> - -TIESCALAR classname, LIST X<TIESCALAR>, FETCH this X<FETCH>, STORE this, -value X<STORE>, UNTIE this X<UNTIE>, DESTROY this X<DESTROY> - -=item Tying Arrays -X<array, tying> - -TIEARRAY classname, LIST X<TIEARRAY>, FETCH this, index X<FETCH>, STORE -this, index, value X<STORE>, FETCHSIZE this X<FETCHSIZE>, STORESIZE this, -count X<STORESIZE>, EXTEND this, count X<EXTEND>, EXISTS this, key -X<EXISTS>, DELETE this, key X<DELETE>, CLEAR this X<CLEAR>, PUSH this, LIST - X<PUSH>, POP this X<POP>, SHIFT this X<SHIFT>, UNSHIFT this, LIST -X<UNSHIFT>, SPLICE this, offset, length, LIST X<SPLICE>, UNTIE this -X<UNTIE>, DESTROY this X<DESTROY> - -=item Tying Hashes -X<hash, tying> - -USER, HOME, CLOBBER, LIST, TIEHASH classname, LIST X<TIEHASH>, FETCH this, -key X<FETCH>, STORE this, key, value X<STORE>, DELETE this, key X<DELETE>, -CLEAR this X<CLEAR>, EXISTS this, key X<EXISTS>, FIRSTKEY this X<FIRSTKEY>, -NEXTKEY this, lastkey X<NEXTKEY>, SCALAR this X<SCALAR>, UNTIE this -X<UNTIE>, DESTROY this X<DESTROY> - -=item Tying FileHandles -X<filehandle, tying> - -TIEHANDLE classname, LIST X<TIEHANDLE>, WRITE this, LIST X<WRITE>, PRINT -this, LIST X<PRINT>, PRINTF this, LIST X<PRINTF>, READ this, LIST X<READ>, -READLINE this X<READLINE>, GETC this X<GETC>, EOF this X<EOF>, CLOSE this -X<CLOSE>, UNTIE this X<UNTIE>, DESTROY this X<DESTROY> - -=item UNTIE this -X<UNTIE> - -=item The C<untie> Gotcha -X<untie> - -=back - -=item SEE ALSO - -=item BUGS - -=item AUTHOR - -=back - -=head2 perldbmfilter - Perl DBM Filters - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -B<filter_store_key>, B<filter_store_value>, B<filter_fetch_key>, -B<filter_fetch_value> - -=over 4 - -=item The Filter - -=item An Example -- the NULL termination problem. - -=item Another Example -- Key is a C int. - -=back - -=item SEE ALSO - -=item AUTHOR - -=back - -=head2 perlipc - Perl interprocess communication (signals, fifos, pipes, -safe subprocesses, sockets, and semaphores) - -=over 4 - -=item DESCRIPTION - -=item Signals - -=over 4 - -=item Handling the SIGHUP Signal in Daemons - -=back - -=item Named Pipes - -=over 4 - -=item Deferred Signals (Safe Signals) - -Long-running opcodes, Interrupting IO, Restartable system calls, Signals as -"faults", Signals triggered by operating system state - -=back - -=item Using open() for IPC - -=over 4 - -=item Filehandles - -=item Background Processes - -=item Complete Dissociation of Child from Parent - -=item Safe Pipe Opens - -=item Bidirectional Communication with Another Process - -=item Bidirectional Communication with Yourself - -=back - -=item Sockets: Client/Server Communication - -=over 4 - -=item Internet Line Terminators - -=item Internet TCP Clients and Servers - -=item Unix-Domain TCP Clients and Servers - -=back - -=item TCP Clients with IO::Socket - -=over 4 - -=item A Simple Client - -C<Proto>, C<PeerAddr>, C<PeerPort> - -=item A Webget Client - -=item Interactive Client with IO::Socket - -=back - -=item TCP Servers with IO::Socket - -Proto, LocalPort, Listen, Reuse - -=item UDP: Message Passing - -=item SysV IPC - -=item NOTES - -=item BUGS - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 perlfork - Perl's fork() emulation - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Behavior of other Perl features in forked pseudo-processes - -$$ or $PROCESS_ID, %ENV, chdir() and all other builtins that accept -filenames, wait() and waitpid(), kill(), exec(), exit(), Open handles to -files, directories and network sockets - -=item Resource limits - -=item Killing the parent process - -=item Lifetime of the parent process and pseudo-processes - -=item CAVEATS AND LIMITATIONS - -BEGIN blocks, Open filehandles, Forking pipe open() not yet implemented, -Global state maintained by XSUBs, Interpreter embedded in larger -application, Thread-safety of extensions - -=back - -=item BUGS - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 perlnumber - semantics of numbers and numeric operations in Perl - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Storing numbers - -=item Numeric operators and numeric conversions - -=item Flavors of Perl numeric operations - -Arithmetic operators, ++, Arithmetic operators during C<use integer>, Other -mathematical operators, Bitwise operators, Bitwise operators during C<use -integer>, Operators which expect an integer, Operators which expect a -string - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 perlthrtut - Tutorial on threads in Perl - -=over 4 - -=item DESCRIPTION - -=item What Is A Thread Anyway? - -=item Threaded Program Models - -=over 4 - -=item Boss/Worker - -=item Work Crew - -=item Pipeline - -=back - -=item What kind of threads are Perl threads? - -=item Thread-Safe Modules - -=item Thread Basics - -=over 4 - -=item Basic Thread Support - -=item A Note about the Examples - -=item Creating Threads - -=item Waiting For A Thread To Exit - -=item Ignoring A Thread - -=item Process and Thread Termination - -=back - -=item Threads And Data - -=over 4 - -=item Shared And Unshared Data - -=item Thread Pitfalls: Races - -=back - -=item Synchronization and control - -=over 4 - -=item Controlling access: lock() - -=item A Thread Pitfall: Deadlocks - -=item Queues: Passing Data Around - -=item Semaphores: Synchronizing Data Access - -=item Basic semaphores - -=item Advanced Semaphores - -=item Waiting for a Condition - -=item Giving up control - -=back - -=item General Thread Utility Routines - -=over 4 - -=item What Thread Am I In? - -=item Thread IDs - -=item Are These Threads The Same? - -=item What Threads Are Running? - -=back - -=item A Complete Example - -=item Different implementations of threads - -=item Performance considerations - -=item Process-scope Changes - -=item Thread-Safety of System Libraries - -=item Conclusion - -=item SEE ALSO - -=item Bibliography - -=over 4 - -=item Introductory Texts - -=item OS-Related References - -=item Other References - -=back - -=item Acknowledgements - -=item AUTHOR - -=item Copyrights - -=back - -=head2 perlothrtut - old tutorial on threads in Perl - -=over 4 - -=item DESCRIPTION - -=item What Is A Thread Anyway? - -=item Threaded Program Models - -=over 4 - -=item Boss/Worker - -=item Work Crew - -=item Pipeline - -=back - -=item Native threads - -=item What kind of threads are perl threads? - -=item Threadsafe Modules - -=item Thread Basics - -=over 4 - -=item Basic Thread Support - -=item Creating Threads - -=item Giving up control - -=item Waiting For A Thread To Exit - -=item Errors In Threads - -=item Ignoring A Thread - -=back - -=item Threads And Data - -=over 4 - -=item Shared And Unshared Data - -=item Thread Pitfall: Races - -=item Controlling access: lock() - -=item Thread Pitfall: Deadlocks - -=item Queues: Passing Data Around - -=back - -=item Threads And Code - -=over 4 - -=item Semaphores: Synchronizing Data Access - -Basic semaphores, Advanced Semaphores - -=item Attributes: Restricting Access To Subroutines - -=item Subroutine Locks - -=item Methods - -=item Locking A Subroutine - -=back - -=item General Thread Utility Routines - -=over 4 - -=item What Thread Am I In? - -=item Thread IDs - -=item Are These Threads The Same? - -=item What Threads Are Running? - -=back - -=item A Complete Example - -=item Conclusion - -=item Bibliography - -=over 4 - -=item Introductory Texts - -=item OS-Related References - -=item Other References - -=back - -=item Acknowledgements - -=item AUTHOR - -=item Copyrights - -=back - -=head2 perlport - Writing portable Perl - -=over 4 - -=item DESCRIPTION - -Not all Perl programs have to be portable, Nearly all of Perl already I<is> -portable - -=item ISSUES - -=over 4 - -=item Newlines - -=item Numbers endianness and Width - -=item Files and Filesystems - -=item System Interaction - -=item Command names versus file pathnames - -=item Networking - -=item Interprocess Communication (IPC) - -=item External Subroutines (XS) - -=item Standard Modules - -=item Time and Date - -=item Character sets and character encoding - -=item Internationalisation - -=item System Resources - -=item Security - -=item Style - -=back - -=item CPAN Testers - -=item PLATFORMS - -=over 4 - -=item Unix - -=item DOS and Derivatives - -=item S<Mac OS> - -=item VMS - -=item VOS - -=item EBCDIC Platforms - -=item Acorn RISC OS - -=item Other perls - -=back - -=item FUNCTION IMPLEMENTATIONS - -=over 4 - -=item Alphabetical Listing of Perl Functions - --I<X>, atan2, binmode, chmod, chown, chroot, crypt, dbmclose, dbmopen, -dump, exec, exit, fcntl, flock, fork, getlogin, getpgrp, getppid, -getpriority, getpwnam, getgrnam, getnetbyname, getpwuid, getgrgid, -getnetbyaddr, getprotobynumber, getservbyport, getpwent, getgrent, -gethostbyname, gethostent, getnetent, getprotoent, getservent, sethostent, -setnetent, setprotoent, setservent, endpwent, endgrent, endhostent, -endnetent, endprotoent, endservent, getsockopt SOCKET,LEVEL,OPTNAME, glob, -gmtime, ioctl FILEHANDLE,FUNCTION,SCALAR, kill, link, localtime, lstat, -msgctl, msgget, msgsnd, msgrcv, open, pipe, readlink, rename, select, -semctl, semget, semop, setgrent, setpgrp, setpriority, setpwent, -setsockopt, shmctl, shmget, shmread, shmwrite, sockatmark, socketpair, -stat, symlink, syscall, sysopen, system, times, truncate, umask, utime, -wait, waitpid - -=back - -=item Supported Platforms - -=item SEE ALSO - -=item AUTHORS / CONTRIBUTORS - -=back - -=head2 perllocale - Perl locale handling (internationalization and -localization) - -=over 4 - -=item DESCRIPTION - -=item PREPARING TO USE LOCALES - -=item USING LOCALES - -=over 4 - -=item The use locale pragma - -=item The setlocale function - -=item Finding locales - -=item LOCALE PROBLEMS - -=item Temporarily fixing locale problems - -=item Permanently fixing locale problems - -=item Permanently fixing your system's locale configuration - -=item Fixing system locale configuration - -=item The localeconv function - -=item I18N::Langinfo - -=back - -=item LOCALE CATEGORIES - -=over 4 - -=item Category LC_COLLATE: Collation - -=item Category LC_CTYPE: Character Types - -=item Category LC_NUMERIC: Numeric Formatting - -=item Category LC_MONETARY: Formatting of monetary amounts - -=item LC_TIME - -=item Other categories - -=back - -=item SECURITY - -=item ENVIRONMENT - -PERL_BADLANG, LC_ALL, LANGUAGE, LC_CTYPE, LC_COLLATE, LC_MONETARY, -LC_NUMERIC, LC_TIME, LANG - -=over 4 - -=item Examples - -=back - -=item NOTES - -=over 4 - -=item Backward compatibility - -=item I18N:Collate obsolete - -=item Sort speed and memory use impacts - -=item write() and LC_NUMERIC - -=item Freely available locale definitions - -=item I18n and l10n - -=item An imperfect standard - -=back - -=item Unicode and UTF-8 - -=item BUGS - -=over 4 - -=item Broken systems - -=back - -=item SEE ALSO - -=item HISTORY - -=back - -=head2 perluniintro - Perl Unicode introduction - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Unicode - -=item Perl's Unicode Support - -=item Perl's Unicode Model - -=item Unicode and EBCDIC - -=item Creating Unicode - -=item Handling Unicode - -=item Legacy Encodings - -=item Unicode I/O - -=item Displaying Unicode As Text - -=item Special Cases - -=item Advanced Topics - -=item Miscellaneous - -=item Questions With Answers - -=item Hexadecimal Notation - -=item Further Resources - -=back - -=item UNICODE IN OLDER PERLS - -=item SEE ALSO - -=item ACKNOWLEDGMENTS - -=item AUTHOR, COPYRIGHT, AND LICENSE - -=back - -=head2 perlunicode - Unicode support in Perl - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Important Caveats - -Input and Output Layers, Regular Expressions, C<use utf8> still needed to -enable UTF-8/UTF-EBCDIC in scripts, BOM-marked scripts and UTF-16 scripts -autodetected, C<use encoding> needed to upgrade non-Latin-1 byte strings - -=item Byte and Character Semantics - -=item Effects of Character Semantics - -=item Unicode Character Properties - -General Category, Bidirectional Character Types, Scripts, Extended property -classes, Use of "Is" Prefix, Blocks - -=item User-Defined Character Properties - -=item User-Defined Case Mappings - -=item Character Encodings for Input and Output - -=item Unicode Regular Expression Support Level - -=item Unicode Encodings - -=item Security Implications of Unicode - -=item Unicode in Perl on EBCDIC - -=item Locales - -=item When Unicode Does Not Happen - -=item Forcing Unicode in Perl (Or Unforcing Unicode in Perl) - -=item Using Unicode in XS - -=back - -=item BUGS - -=over 4 - -=item Interaction with Locales - -=item Problems with characters whose ordinal numbers are in the range 128 - -255 with no Locale specified - -=item Interaction with Extensions - -=item Speed - -=item Porting code from perl-5.6.X - -=back - -=item SEE ALSO - -=back - -=head2 perlunifaq - Perl Unicode FAQ - -=over 4 - -=item Q and A - -=over 4 - -=item perlunitut isn't really a Unicode tutorial, is it? - -=item What character encodings does Perl support? - -=item Which version of perl should I use? - -=item What about binary data, like images? - -=item When should I decode or encode? - -=item What if I don't decode? - -=item What if I don't encode? - -=item Is there a way to automatically decode or encode? - -=item What if I don't know which encoding was used? - -=item Can I use Unicode in my Perl sources? - -=item Data::Dumper doesn't restore the UTF8 flag; is it broken? - -=item Why do regex character classes sometimes match only in the ASCII -range? - -=item Why do some characters not uppercase or lowercase correctly? - -=item How can I determine if a string is a text string or a binary string? - -=item How do I convert from encoding FOO to encoding BAR? - -=item What are C<decode_utf8> and C<encode_utf8>? - -=item What is a "wide character"? - -=back - -=item INTERNALS - -=over 4 - -=item What is "the UTF8 flag"? - -=item What about the C<use bytes> pragma? - -=item What about the C<use encoding> pragma? - -=item What is the difference between C<:encoding> and C<:utf8>? - -=item What's the difference between C<UTF-8> and C<utf8>? - -=item I lost track; what encoding is the internal format really? - -=back - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 perlunitut - Perl Unicode Tutorial - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Definitions - -=item Your new toolkit - -=item I/O flow (the actual 5 minute tutorial) - -=back - -=item SUMMARY - -=item Q and A (or FAQ) - -=item ACKNOWLEDGEMENTS - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 perlebcdic - Considerations for running Perl on EBCDIC platforms - -=over 4 - -=item DESCRIPTION - -=item COMMON CHARACTER CODE SETS - -=over 4 - -=item ASCII - -=item ISO 8859 - -=item Latin 1 (ISO 8859-1) - -=item EBCDIC - -=item 13 variant characters - -=item 0037 - -=item 1047 - -=item POSIX-BC - -=item Unicode code points versus EBCDIC code points - -=item Remaining Perl Unicode problems in EBCDIC - -=item Unicode and UTF - -=item Using Encode - -=back - -=item SINGLE OCTET TABLES - -recipe 0, recipe 1, recipe 2, recipe 3, recipe 4, recipe 5, recipe 6 - -=item IDENTIFYING CHARACTER CODE SETS - -=item CONVERSIONS - -=over 4 - -=item tr/// - -=item iconv - -=item C RTL - -=back - -=item OPERATOR DIFFERENCES - -=item FUNCTION DIFFERENCES - -chr(), ord(), pack(), print(), printf(), sort(), sprintf(), unpack() - -=item REGULAR EXPRESSION DIFFERENCES - -=item SOCKETS - -=item SORTING - -=over 4 - -=item Ignore ASCII vs. EBCDIC sort differences. - -=item MONO CASE then sort data. - -=item Convert, sort data, then re convert. - -=item Perform sorting on one type of platform only. - -=back - -=item TRANSFORMATION FORMATS - -=over 4 - -=item URL decoding and encoding - -=item uu encoding and decoding - -=item Quoted-Printable encoding and decoding - -=item Caesarian ciphers - -=back - -=item Hashing order and checksums - -=item I18N AND L10N - -=item MULTI OCTET CHARACTER SETS - -=item OS ISSUES - -=over 4 - -=item OS/400 - -PASE, IFS access - -=item OS/390, z/OS - -chcp, dataset access, OS/390, z/OS iconv, locales - -=item VM/ESA? - -=item POSIX-BC? - -=back - -=item BUGS - -=item SEE ALSO - -=item REFERENCES - -=item HISTORY - -=item AUTHOR - -=back - -=head2 perlsec - Perl security - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Laundering and Detecting Tainted Data - -=item Switches On the "#!" Line - -=item Taint mode and @INC - -=item Cleaning Up Your Path - -=item Security Bugs - -=item Protecting Your Programs - -=item Unicode - -=item Algorithmic Complexity Attacks - -=back - -=item SEE ALSO - -=back - -=head2 perlmod - Perl modules (packages and symbol tables) - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Packages -X<package> X<namespace> X<variable, global> X<global variable> X<global> - -=item Symbol Tables -X<symbol table> X<stash> X<%::> X<%main::> X<typeglob> X<glob> X<alias> - -=item BEGIN, UNITCHECK, CHECK, INIT and END -X<BEGIN> X<UNITCHECK> X<CHECK> X<INIT> X<END> - -=item Perl Classes -X<class> X<@ISA> - -=item Perl Modules -X<module> - -=item Making your module threadsafe -X<threadsafe> X<thread safe> -X<module, threadsafe> X<module, thread safe> -X<CLONE> X<CLONE_SKIP> X<thread> X<threads> X<ithread> - -=back - -=item SEE ALSO - -=back - -=head2 perlmodlib - constructing new Perl modules and finding existing ones - -=over 4 - -=item THE PERL MODULE LIBRARY - -=over 4 - -=item Pragmatic Modules - -attributes, attrs, autodie, autouse, base, bigint, bignum, bigrat, blib, -bytes, charnames, constant, diagnostics, encoding, encoding::warnings, -feature, fields, filetest, if, integer, less, lib, locale, mro, open, ops, -overload, parent, re, sigtrap, sort, strict, subs, threads, -threads::shared, utf8, vars, version, vmsish, warnings, warnings::register - -=item Standard Modules - -AnyDBM_File, App::Prove, App::Prove::State, Archive::Extract, Archive::Tar, -Archive::Tar::File, Attribute::Handlers, AutoLoader, AutoSplit, B, -B::Concise, B::Debug, B::Deparse, B::Lint, B::Lint::Debug, B::Showlex, -B::Terse, B::Xref, Benchmark, CGI, CGI::Apache, CGI::Carp, CGI::Cookie, -CGI::Fast, CGI::Pretty, CGI::Push, CGI::Switch, CGI::Util, CORE, CPAN, -CPAN::API::HOWTO, CPAN::FirstTime, CPAN::Kwalify, CPAN::Nox, CPAN::Version, -CPANPLUS, CPANPLUS::Dist::Base, CPANPLUS::Dist::Sample, -CPANPLUS::Shell::Classic, CPANPLUS::Shell::Default::Plugins::HOWTO, Carp, -Carp::Heavy, Class::ISA, Class::Struct, Compress::Raw::Zlib, -Compress::Zlib, Config, Cwd, DB, DBM_Filter, DBM_Filter::compress, -DBM_Filter::encode, DBM_Filter::int32, DBM_Filter::null, DBM_Filter::utf8, -DB_File, Data::Dumper, Devel::DProf, Devel::InnerPackage, Devel::Peek, -Devel::SelfStubber, Digest, Digest::MD5, Digest::SHA, Digest::base, -Digest::file, DirHandle, Dumpvalue, DynaLoader, Encode, Encode::Alias, -Encode::Byte, Encode::CJKConstants, Encode::CN, Encode::CN::HZ, -Encode::Config, Encode::EBCDIC, Encode::Encoder, Encode::Encoding, -Encode::GSM0338, Encode::Guess, Encode::JP, Encode::JP::H2Z, -Encode::JP::JIS7, Encode::KR, Encode::KR::2022_KR, Encode::MIME::Header, -Encode::MIME::Name, Encode::PerlIO, Encode::Supported, Encode::Symbol, -Encode::TW, Encode::Unicode, Encode::Unicode::UTF7, English, Env, Errno, -Exporter, Exporter::Heavy, ExtUtils::CBuilder, -ExtUtils::CBuilder::Platform::Windows, ExtUtils::Command, -ExtUtils::Command::MM, ExtUtils::Constant, ExtUtils::Constant::Base, -ExtUtils::Constant::Utils, ExtUtils::Constant::XS, ExtUtils::Embed, -ExtUtils::Install, ExtUtils::Installed, ExtUtils::Liblist, ExtUtils::MM, -ExtUtils::MM_AIX, ExtUtils::MM_Any, ExtUtils::MM_BeOS, ExtUtils::MM_Cygwin, -ExtUtils::MM_DOS, ExtUtils::MM_Darwin, ExtUtils::MM_MacOS, -ExtUtils::MM_NW5, ExtUtils::MM_OS2, ExtUtils::MM_QNX, ExtUtils::MM_UWIN, -ExtUtils::MM_Unix, ExtUtils::MM_VMS, ExtUtils::MM_VOS, ExtUtils::MM_Win32, -ExtUtils::MM_Win95, ExtUtils::MY, ExtUtils::MakeMaker, -ExtUtils::MakeMaker::Config, ExtUtils::MakeMaker::FAQ, -ExtUtils::MakeMaker::Tutorial, ExtUtils::MakeMaker::bytes, -ExtUtils::MakeMaker::vmsish, ExtUtils::Manifest, ExtUtils::Mkbootstrap, -ExtUtils::Mksymlists, ExtUtils::Packlist, ExtUtils::ParseXS, -ExtUtils::testlib, Fatal, Fcntl, File::Basename, File::CheckTree, -File::Compare, File::Copy, File::DosGlob, File::Fetch, File::Find, -File::Glob, File::GlobMapper, File::Path, File::Spec, File::Spec::Cygwin, -File::Spec::Epoc, File::Spec::Functions, File::Spec::Mac, File::Spec::OS2, -File::Spec::Unix, File::Spec::VMS, File::Spec::Win32, File::Temp, -File::stat, FileCache, FileHandle, Filter::Simple, Filter::Util::Call, -FindBin, GDBM_File, Getopt::Long, Getopt::Std, Hash::Util, -Hash::Util::FieldHash, I18N::Collate, I18N::LangTags, -I18N::LangTags::Detect, I18N::LangTags::List, I18N::Langinfo, IO, -IO::Compress::Base, IO::Compress::Deflate, IO::Compress::Gzip, -IO::Compress::RawDeflate, IO::Compress::Zip, IO::Dir, IO::File, IO::Handle, -IO::Pipe, IO::Poll, IO::Seekable, IO::Select, IO::Socket, IO::Socket::INET, -IO::Socket::UNIX, IO::Uncompress::AnyInflate, -IO::Uncompress::AnyUncompress, IO::Uncompress::Base, -IO::Uncompress::Gunzip, IO::Uncompress::Inflate, -IO::Uncompress::RawInflate, IO::Uncompress::Unzip, IO::Zlib, IPC::Cmd, -IPC::Msg, IPC::Open2, IPC::Open3, IPC::Semaphore, IPC::SharedMem, -IPC::SysV, List::Util, Locale::Constants, Locale::Country, -Locale::Currency, Locale::Language, Locale::Maketext, -Locale::Maketext::Simple, Locale::Maketext::TPJ13, Locale::Script, -Log::Message, Log::Message::Config, Log::Message::Handlers, -Log::Message::Item, MIME::Base64, MIME::QuotedPrint, Math::BigFloat, -Math::BigInt, Math::BigInt::Calc, Math::BigInt::CalcEmu, -Math::BigInt::FastCalc, Math::BigRat, Math::Complex, Math::Trig, Memoize, -Memoize::AnyDBM_File, Memoize::Expire, Memoize::ExpireFile, -Memoize::ExpireTest, Memoize::NDBM_File, Memoize::SDBM_File, -Memoize::Storable, Module::Build, Module::Build::API, -Module::Build::Authoring, Module::Build::Base, Module::Build::Compat, -Module::Build::ConfigData, Module::Build::Cookbook, -Module::Build::ModuleInfo, Module::Build::Notes, Module::Build::PPMMaker, -Module::Build::Platform::Amiga, Module::Build::Platform::Default, -Module::Build::Platform::EBCDIC, Module::Build::Platform::MPEiX, -Module::Build::Platform::MacOS, Module::Build::Platform::RiscOS, -Module::Build::Platform::Unix, Module::Build::Platform::VMS, -Module::Build::Platform::VOS, Module::Build::Platform::Windows, -Module::Build::Platform::aix, Module::Build::Platform::cygwin, -Module::Build::Platform::darwin, Module::Build::Platform::os2, -Module::Build::YAML, Module::CoreList, Module::Load, -Module::Load::Conditional, Module::Loaded, Module::Pluggable, -Module::Pluggable::Object, NDBM_File, NEXT, Net::Cmd, Net::Config, -Net::Domain, Net::FTP, Net::NNTP, Net::Netrc, Net::POP3, Net::Ping, -Net::SMTP, Net::Time, Net::hostent, Net::libnetFAQ, Net::netent, -Net::protoent, Net::servent, O, ODBM_File, Opcode, POSIX, -Package::Constants, Params::Check, PerlIO, PerlIO::encoding, -PerlIO::scalar, PerlIO::via, PerlIO::via::QuotedPrint, Pod::Checker, -Pod::Escapes, Pod::Find, Pod::Functions, Pod::Html, Pod::InputObjects, -Pod::LaTeX, Pod::Man, Pod::ParseLink, Pod::ParseUtils, Pod::Parser, -Pod::Perldoc::ToChecker, Pod::Perldoc::ToMan, Pod::Perldoc::ToNroff, -Pod::Perldoc::ToPod, Pod::Perldoc::ToRtf, Pod::Perldoc::ToText, -Pod::Perldoc::ToTk, Pod::Perldoc::ToXml, Pod::PlainText, Pod::Plainer, -Pod::Select, Pod::Simple, Pod::Simple::Checker, Pod::Simple::Debug, -Pod::Simple::DumpAsText, Pod::Simple::DumpAsXML, Pod::Simple::HTML, -Pod::Simple::HTMLBatch, Pod::Simple::LinkSection, Pod::Simple::Methody, -Pod::Simple::PullParser, Pod::Simple::PullParserEndToken, -Pod::Simple::PullParserStartToken, Pod::Simple::PullParserTextToken, -Pod::Simple::PullParserToken, Pod::Simple::RTF, Pod::Simple::Search, -Pod::Simple::SimpleTree, Pod::Simple::Subclassing, Pod::Simple::Text, -Pod::Simple::TextContent, Pod::Simple::XMLOutStream, Pod::Text, -Pod::Text::Color, Pod::Text::Overstrike, Pod::Text::Termcap, Pod::Usage, -SDBM_File, Safe, Scalar::Util, Search::Dict, SelectSaver, SelfLoader, -Shell, Socket, Storable, Switch, Symbol, Sys::Hostname, Sys::Syslog, -Sys::Syslog::win32::Win32, TAP::Base, TAP::Formatter::Color, -TAP::Formatter::Console, TAP::Formatter::Console::ParallelSession, -TAP::Formatter::Console::Session, TAP::Harness, TAP::Parser, -TAP::Parser::Aggregator, TAP::Parser::Grammar, TAP::Parser::Iterator, -TAP::Parser::Iterator::Array, TAP::Parser::Iterator::Process, -TAP::Parser::Iterator::Stream, TAP::Parser::Multiplexer, -TAP::Parser::Result, TAP::Parser::Result::Bailout, -TAP::Parser::Result::Comment, TAP::Parser::Result::Plan, -TAP::Parser::Result::Pragma, TAP::Parser::Result::Test, -TAP::Parser::Result::Unknown, TAP::Parser::Result::Version, -TAP::Parser::Result::YAML, TAP::Parser::Source, TAP::Parser::Source::Perl, -TAP::Parser::Utils, TAP::Parser::YAMLish::Reader, -TAP::Parser::YAMLish::Writer, Term::ANSIColor, Term::Cap, Term::Complete, -Term::ReadLine, Term::UI, Test, Test::Builder, Test::Builder::Module, -Test::Builder::Tester, Test::Builder::Tester::Color, Test::Harness, -Test::More, Test::Simple, Test::Tutorial, Text::Abbrev, Text::Balanced, -Text::ParseWords, Text::Soundex, Text::Tabs, Text::Wrap, Thread, -Thread::Queue, Thread::Semaphore, Tie::Array, Tie::File, Tie::Handle, -Tie::Hash, Tie::Hash::NamedCapture, Tie::Memoize, Tie::RefHash, -Tie::Scalar, Tie::SubstrHash, Time::HiRes, Time::Local, Time::Piece, -Time::Piece::Seconds, Time::gmtime, Time::localtime, Time::tm, UNIVERSAL, -Unicode::Collate, Unicode::Normalize, Unicode::UCD, User::grent, -User::pwent, Win32, Win32API::File, Win32CORE, XS::APItest, XS::Typemap, -XSLoader - -=item Extension Modules - -=back - -=item CPAN - -=over 4 - -=item Africa - -South Africa - -=item Asia - -China, Indonesia, Israel, Japan, Malaysia, Russian Federation, Saudi -Arabia, Singapore, South Korea, Taiwan, Thailand - -=item Central America - -Costa Rica - -=item Europe - -Austria, Belgium, Bosnia and Herzegovina, Bulgaria, Croatia, Czech -Republic, Denmark, Estonia, Finland, France, Germany, Greece, Hungary, -Iceland, Ireland, Italy, Latvia, Lithuania, Netherlands, Norway, Poland, -Portugal, Romania, Russia, Slovakia, Slovenia, Spain, Sweden, Switzerland, -Turkey, Ukraine, United Kingdom - -=item North America - -Canada, Alberta, Manitoba, Nova Scotia, Ontario, Mexico, United States, -Alabama, California, Colorado, Delaware, District of Columbia, Florida, -Indiana, Kentucky, Massachusetts, Michigan, Nevada, New Jersey, New York, -North Carolina, Oklahoma, Oregon, Pennsylvania, Tennessee, Texas, Utah, -Virginia, Washington, Wisconsin - -=item Oceania - -Australia, New Zealand, United States - -=item South America - -Argentina, Brazil, Chile - -=item RSYNC Mirrors - -=back - -=item Modules: Creation, Use, and Abuse - -=over 4 - -=item Guidelines for Module Creation - -=item Guidelines for Converting Perl 4 Library Scripts into Modules - -=item Guidelines for Reusing Application Code - -=back - -=item NOTE - -=back - -=head2 perlmodstyle - Perl module style guide - -=over 4 - -=item INTRODUCTION - -=item QUICK CHECKLIST - -=over 4 - -=item Before you start - -=item The API - -=item Stability - -=item Documentation - -=item Release considerations - -=back - -=item BEFORE YOU START WRITING A MODULE - -=over 4 - -=item Has it been done before? - -=item Do one thing and do it well - -=item What's in a name? - -=back - -=item DESIGNING AND WRITING YOUR MODULE - -=over 4 - -=item To OO or not to OO? - -=item Designing your API - -Write simple routines to do simple things, Separate functionality from -output, Provide sensible shortcuts and defaults, Naming conventions, -Parameter passing - -=item Strictness and warnings - -=item Backwards compatibility - -=item Error handling and messages - -=back - -=item DOCUMENTING YOUR MODULE - -=over 4 - -=item POD - -=item README, INSTALL, release notes, changelogs - -perl Makefile.PL, make, make test, make install, perl Build.PL, perl Build, -perl Build test, perl Build install - -=back - -=item RELEASE CONSIDERATIONS - -=over 4 - -=item Version numbering - -=item Pre-requisites - -=item Testing - -=item Packaging - -=item Licensing - -=back - -=item COMMON PITFALLS - -=over 4 - -=item Reinventing the wheel - -=item Trying to do too much - -=item Inappropriate documentation - -=back - -=item SEE ALSO - -L<perlstyle>, L<perlnewmod>, L<perlpod>, L<podchecker>, Packaging Tools, -Testing tools, http://pause.perl.org/, Any good book on software -engineering - -=item AUTHOR - -=back - -=head2 perlmodinstall - Installing CPAN Modules - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item PREAMBLE - -B<DECOMPRESS> the file, B<UNPACK> the file into a directory, B<BUILD> the -module (sometimes unnecessary), B<INSTALL> the module - -=back - -=item PORTABILITY - -=item HEY - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 perlnewmod - preparing a new module for distribution - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Warning - -=item What should I make into a module? - -=item Step-by-step: Preparing the ground - -Look around, Check it's new, Discuss the need, Choose a name, Check again - -=item Step-by-step: Making the module - -Start with F<module-starter> or F<h2xs>, Use L<strict|strict> and -L<warnings|warnings>, Use L<Carp|Carp>, Use L<Exporter|Exporter> - wisely!, -Use L<plain old documentation|perlpod>, Write tests, Write the README - -=item Step-by-step: Distributing your module - -Get a CPAN user ID, C<perl Makefile.PL; make test; make dist>, Upload the -tarball, Announce to the modules list, Announce to clpa, Fix bugs! - -=back - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 perlpragma - how to write a user pragma - -=over 4 - -=item DESCRIPTION - -=item A basic example - -=item Implementation details - -=back - -=head2 perlutil - utilities packaged with the Perl distribution - -=over 4 - -=item DESCRIPTION - -=item LIST OF UTILITIES - -=over 4 - -=item Documentation - -L<perldoc|perldoc>, L<pod2man|pod2man> and L<pod2text|pod2text>, -L<pod2html|pod2html> and L<pod2latex|pod2latex>, L<pod2usage|pod2usage>, -L<podselect|podselect>, L<podchecker|podchecker>, L<splain|splain>, -L<roffitall|roffitall> - -=item Convertors - -L<a2p|a2p>, L<s2p|s2p> and L<psed>, L<find2perl|find2perl> - -=item Administration - -L<config_data|config_data>, L<libnetcfg|libnetcfg>, L<perlivp> - -=item Development - -L<perlbug|perlbug>, L<perlthanks|perlthanks>, L<h2ph|h2ph>, L<c2ph|c2ph> -and L<pstruct|pstruct>, L<h2xs|h2xs>, L<enc2xs>, L<xsubpp>, -L<dprofpp|dprofpp>, L<prove>, L<corelist> - -=item General tools - -L<piconv>, L<ptar>, L<ptardiff>, L<shasum> - -=item Installation - -L<cpan>, L<cpanp>, L<cpan2dist>, L<instmodsh> - -=back - -=item SEE ALSO - -=back - -=head2 perlcompile - Introduction to the Perl Compiler-Translator - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Layout - -B::Lint, B::Deparse, B::Xref - -=back - -=item Using The Back Ends - -=over 4 - -=item The Cross Referencing Back End - -i, &, s, r - -=item The Decompiling Back End - -=item The Lint Back End - -=back - -=item Module List for the Compiler Suite - -B, O, B::Concise, B::Debug, B::Deparse, B::Lint, B::Showlex, B::Terse, -B::Xref - -=item KNOWN PROBLEMS - -=item AUTHOR - -=back - -=head2 perlfilter - Source Filters - -=over 4 - -=item DESCRIPTION - -=item CONCEPTS - -=item USING FILTERS - -=item WRITING A SOURCE FILTER - -=item WRITING A SOURCE FILTER IN C - -B<Decryption Filters> - -=item CREATING A SOURCE FILTER AS A SEPARATE EXECUTABLE - -=item WRITING A SOURCE FILTER IN PERL - -=item USING CONTEXT: THE DEBUG FILTER - -=item CONCLUSION - -=item THINGS TO LOOK OUT FOR - -Some Filters Clobber the C<DATA> Handle - -=item REQUIREMENTS - -=item AUTHOR - -=item Copyrights - -=back - -=head2 perlglossary - Perl Glossary - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item A - -accessor methods, actual arguments, address operator, algorithm, alias, -alternatives, anonymous, architecture, argument, ARGV, arithmetical -operator, array, array context, ASCII, assertion, assignment, assignment -operator, associative array, associativity, asynchronous, atom, atomic -operation, attribute, autogeneration, autoincrement, autoload, autosplit, -autovivification, AV, awk - -=item B - -backreference, backtracking, backward compatibility, bareword, base class, -big-endian, binary, binary operator, bind, bit, bit shift, bit string, -bless, block, BLOCK, block buffering, Boolean, Boolean context, breakpoint, -broadcast, BSD, bucket, buffer, built-in, bundle, byte, bytecode - -=item C - -C, C preprocessor, call by reference, call by value, callback, canonical, -capturing, character, character class, character property, circumfix -operator, class, class method, client, cloister, closure, cluster, CODE, -code generator, code subpattern, collating sequence, command, command -buffering, command name, command-line arguments, comment, compilation unit, -compile phase, compile time, compiler, composer, concatenation, -conditional, connection, construct, constructor, context, continuation, -core dump, CPAN, cracker, current package, current working directory, -currently selected output channel, CV - -=item D - -dangling statement, data structure, data type, datagram, DBM, declaration, -decrement, default, defined, delimiter, deprecated modules and features, -dereference, derived class, descriptor, destroy, destructor, device, -directive, directory, directory handle, dispatch, distribution, (to be) -dropped modules, dweomer, dwimmer, dynamic scoping - -=item E - -eclectic, element, embedding, empty subclass test, en passant, -encapsulation, endian, environment, environment variable, EOF, errno, -error, escape sequence, exception, exception handling, exec, executable -file, execute, execute bit, exit status, export, expression, extension - -=item F - -false, FAQ, fatal error, field, FIFO, file, file descriptor, file test -operator, fileglob, filehandle, filename, filesystem, filter, flag, -floating point, flush, FMTEYEWTK, fork, formal arguments, format, freely -available, freely redistributable, freeware, function, funny character, -garbage collection - -=item G - -GID, glob, global, global destruction, glue language, granularity, greedy, -grep, group, GV - -=item H - -hacker, handler, hard reference, hash, hash table, header file, here -document, hexadecimal, home directory, host, hubris, HV - -=item I - -identifier, impatience, implementation, import, increment, indexing, -indirect filehandle, indirect object, indirect object slot, indirection, -infix, inheritance, instance, instance variable, integer, interface, -interpolation, interpreter, invocant, invocation, I/O, IO, IP, IPC, is-a, -iteration, iterator, IV - -=item J - -JAPH - -=item K - -key, keyword - -=item L - -label, laziness, left shift, leftmost longest, lexeme, lexer, lexical -analysis, lexical scoping, lexical variable, library, LIFO, line, line -buffering, line number, link, LIST, list, list context, list operator, list -value, literal, little-endian, local, logical operator, lookahead, -lookbehind, loop, loop control statement, loop label, lvaluable, lvalue, -lvalue modifier - -=item M - -magic, magical increment, magical variables, Makefile, man, manpage, -matching, member data, memory, metacharacter, metasymbol, method, -minimalism, mode, modifier, module, modulus, monger, mortal, -multidimensional array, multiple inheritance - -=item N - -named pipe, namespace, network address, newline, NFS, null character, null -list, null string, numeric context, NV, nybble - -=item O - -object, octal, offset, one-liner, open source software, operand, operating -system, operator, operator overloading, options, overloading, overriding, -owner - -=item P - -package, pad, parameter, parent class, parse tree, parsing, patch, PATH, -pathname, pattern, pattern matching, permission bits, Pern, pipe, pipeline, -platform, pod, pointer, polymorphism, port, portable, porter, POSIX, -postfix, pp, pragma, precedence, prefix, preprocessing, procedure, process, -program generator, progressive matching, property, protocol, prototype, -pseudofunction, pseudohash, pseudoliteral, public domain, pumpkin, -pumpking, PV - -=item Q - -qualified, quantifier - -=item R - -readable, reaping, record, recursion, reference, referent, regex, regular -expression, regular expression modifier, regular file, relational operator, -reserved words, return value, RFC, right shift, root, RTFM, run phase, run -time, run-time pattern, RV, rvalue - -=item S - -scalar, scalar context, scalar literal, scalar value, scalar variable, -scope, scratchpad, script, script kiddie, sed, semaphore, separator, -serialization, server, service, setgid, setuid, shared memory, shebang, -shell, side effects, signal, signal handler, single inheritance, slice, -slurp, socket, soft reference, source filter, stack, standard, standard -error, standard I/O, standard input, standard output, stat structure, -statement, statement modifier, static, static method, static scoping, -static variable, status, STDERR, STDIN, STDIO, STDOUT, stream, string, -string context, stringification, struct, structure, subclass, subpattern, -subroutine, subscript, substitution, substring, superclass, superuser, SV, -switch, switch cluster, switch statement, symbol, symbol table, symbolic -debugger, symbolic link, symbolic reference, synchronous, syntactic sugar, -syntax, syntax tree, syscall - -=item T - -tainted, TCP, term, terminator, ternary, text, thread, tie, TMTOWTDI, -token, tokener, tokenizing, toolbox approach, transliterate, trigger, -trinary, troff, true, truncating, type, type casting, typed lexical, -typedef, typeglob, typemap - -=item U - -UDP, UID, umask, unary operator, Unicode, Unix - -=item V - -value, variable, variable interpolation, variadic, vector, virtual, void -context, v-string - -=item W - -warning, watch expression, whitespace, word, working directory, wrapper, -WYSIWYG - -=item X - -XS, XSUB - -=item Y - -yacc - -=item Z - -zero width, zombie - -=back - -=item AUTHOR AND COPYRIGHT - -=back - -=head2 perlembed - how to embed perl in your C program - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item PREAMBLE - -B<Use C from Perl?>, B<Use a Unix program from Perl?>, B<Use Perl from -Perl?>, B<Use C from C?>, B<Use Perl from C?> - -=item ROADMAP - -=item Compiling your C program - -=item Adding a Perl interpreter to your C program - -=item Calling a Perl subroutine from your C program - -=item Evaluating a Perl statement from your C program - -=item Performing Perl pattern matches and substitutions from your C program - -=item Fiddling with the Perl stack from your C program - -=item Maintaining a persistent interpreter - -=item Execution of END blocks - -=item $0 assignments - -=item Maintaining multiple interpreter instances - -=item Using Perl modules, which themselves use C libraries, from your C -program - -=back - -=item Embedding Perl under Win32 - -=item Hiding Perl_ - -=item MORAL - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 perldebguts - Guts of Perl debugging - -=over 4 - -=item DESCRIPTION - -=item Debugger Internals - -=over 4 - -=item Writing Your Own Debugger - -=back - -=item Frame Listing Output Examples - -=item Debugging regular expressions - -=over 4 - -=item Compile-time output - -C<anchored> I<STRING> C<at> I<POS>, C<floating> I<STRING> C<at> -I<POS1..POS2>, C<matching floating/anchored>, C<minlen>, C<stclass> -I<TYPE>, C<noscan>, C<isall>, C<GPOS>, C<plus>, C<implicit>, C<with eval>, -C<anchored(TYPE)> - -=item Types of nodes - -=item Run-time output - -=back - -=item Debugging Perl memory usage - -=over 4 - -=item Using C<$ENV{PERL_DEBUG_MSTATS}> - -C<buckets SMALLEST(APPROX)..GREATEST(APPROX)>, Free/Used, C<Total sbrk(): -SBRKed/SBRKs:CONTINUOUS>, C<pad: 0>, C<heads: 2192>, C<chain: 0>, C<tail: -6144> - -=back - -=item SEE ALSO - -=back - -=head2 perlxstut, perlXStut - Tutorial for writing XSUBs - -=over 4 - -=item DESCRIPTION - -=item SPECIAL NOTES - -=over 4 - -=item make - -=item Version caveat - -=item Dynamic Loading versus Static Loading - -=back - -=item TUTORIAL - -=over 4 - -=item EXAMPLE 1 - -=item EXAMPLE 2 - -=item What has gone on? - -=item Writing good test scripts - -=item EXAMPLE 3 - -=item What's new here? - -=item Input and Output Parameters - -=item The XSUBPP Program - -=item The TYPEMAP file - -=item Warning about Output Arguments - -=item EXAMPLE 4 - -=item What has happened here? - -=item Anatomy of .xs file - -=item Getting the fat out of XSUBs - -=item More about XSUB arguments - -=item The Argument Stack - -=item Extending your Extension - -=item Documenting your Extension - -=item Installing your Extension - -=item EXAMPLE 5 - -=item New Things in this Example - -=item EXAMPLE 6 - -=item New Things in this Example - -=item EXAMPLE 7 (Coming Soon) - -=item EXAMPLE 8 (Coming Soon) - -=item EXAMPLE 9 Passing open files to XSes - -=item Troubleshooting these Examples - -=back - -=item See also - -=item Author - -=over 4 - -=item Last Changed - -=back - -=back - -=head2 perlxs - XS language reference manual - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Introduction - -=item On The Road - -=item The Anatomy of an XSUB - -=item The Argument Stack - -=item The RETVAL Variable - -=item Returning SVs, AVs and HVs through RETVAL - -=item The MODULE Keyword - -=item The PACKAGE Keyword - -=item The PREFIX Keyword - -=item The OUTPUT: Keyword - -=item The NO_OUTPUT Keyword - -=item The CODE: Keyword - -=item The INIT: Keyword - -=item The NO_INIT Keyword - -=item Initializing Function Parameters - -=item Default Parameter Values - -=item The PREINIT: Keyword - -=item The SCOPE: Keyword - -=item The INPUT: Keyword - -=item The IN/OUTLIST/IN_OUTLIST/OUT/IN_OUT Keywords - -=item The C<length(NAME)> Keyword - -=item Variable-length Parameter Lists - -=item The C_ARGS: Keyword - -=item The PPCODE: Keyword - -=item Returning Undef And Empty Lists - -=item The REQUIRE: Keyword - -=item The CLEANUP: Keyword - -=item The POSTCALL: Keyword - -=item The BOOT: Keyword - -=item The VERSIONCHECK: Keyword - -=item The PROTOTYPES: Keyword - -=item The PROTOTYPE: Keyword - -=item The ALIAS: Keyword - -=item The OVERLOAD: Keyword - -=item The FALLBACK: Keyword - -=item The INTERFACE: Keyword - -=item The INTERFACE_MACRO: Keyword - -=item The INCLUDE: Keyword - -=item The CASE: Keyword - -=item The & Unary Operator - -=item Inserting POD, Comments and C Preprocessor Directives - -=item Using XS With C++ - -=item Interface Strategy - -=item Perl Objects And C Structures - -=item The Typemap - -=item Safely Storing Static Data in XS - -MY_CXT_KEY, typedef my_cxt_t, START_MY_CXT, MY_CXT_INIT, dMY_CXT, MY_CXT, -aMY_CXT/pMY_CXT, MY_CXT_CLONE, MY_CXT_INIT_INTERP(my_perl), -dMY_CXT_INTERP(my_perl) - -=item Thread-aware system interfaces - -=back - -=item EXAMPLES - -=item XS VERSION - -=item AUTHOR - -=back - -=head2 perlclib - Internal replacements for standard C library functions - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Conventions - -C<t>, C<p>, C<n>, C<s> - -=item File Operations - -=item File Input and Output - -=item File Positioning - -=item Memory Management and String Handling - -=item Character Class Tests - -=item F<stdlib.h> functions - -=item Miscellaneous functions - -=back - -=item SEE ALSO - -=back - -=head2 perlguts - Introduction to the Perl API - -=over 4 - -=item DESCRIPTION - -=item Variables - -=over 4 - -=item Datatypes - -=item What is an "IV"? - -=item Working with SVs - -=item Offsets - -=item What's Really Stored in an SV? - -=item Working with AVs - -=item Working with HVs - -=item Hash API Extensions - -=item AVs, HVs and undefined values - -=item References - -=item Blessed References and Class Objects - -=item Creating New Variables - -GV_ADDMULTI, GV_ADDWARN - -=item Reference Counts and Mortality - -=item Stashes and Globs - -=item Double-Typed SVs - -=item Magic Variables - -=item Assigning Magic - -=item Magic Virtual Tables - -=item Finding Magic - -=item Understanding the Magic of Tied Hashes and Arrays - -=item Localizing changes - -C<SAVEINT(int i)>, C<SAVEIV(IV i)>, C<SAVEI32(I32 i)>, C<SAVELONG(long i)>, -C<SAVESPTR(s)>, C<SAVEPPTR(p)>, C<SAVEFREESV(SV *sv)>, C<SAVEMORTALIZESV(SV -*sv)>, C<SAVEFREEOP(OP *op)>, C<SAVEFREEPV(p)>, C<SAVECLEARSV(SV *sv)>, -C<SAVEDELETE(HV *hv, char *key, I32 length)>, -C<SAVEDESTRUCTOR(DESTRUCTORFUNC_NOCONTEXT_t f, void *p)>, -C<SAVEDESTRUCTOR_X(DESTRUCTORFUNC_t f, void *p)>, C<SAVESTACK_POS()>, C<SV* -save_scalar(GV *gv)>, C<AV* save_ary(GV *gv)>, C<HV* save_hash(GV *gv)>, -C<void save_item(SV *item)>, C<void save_list(SV **sarg, I32 maxsarg)>, -C<SV* save_svref(SV **sptr)>, C<void save_aptr(AV **aptr)>, C<void -save_hptr(HV **hptr)> - -=back - -=item Subroutines - -=over 4 - -=item XSUBs and the Argument Stack - -=item Calling Perl Routines from within C Programs - -=item Memory Allocation - -=item PerlIO - -=item Putting a C value on Perl stack - -=item Scratchpads - -=item Scratchpads and recursion - -=back - -=item Compiled code - -=over 4 - -=item Code tree - -=item Examining the tree - -=item Compile pass 1: check routines - -=item Compile pass 1a: constant folding - -=item Compile pass 2: context propagation - -=item Compile pass 3: peephole optimization - -=item Pluggable runops - -=back - -=item Examining internal data structures with the C<dump> functions - -=item How multiple interpreters and concurrency are supported - -=over 4 - -=item Background and PERL_IMPLICIT_CONTEXT - -=item So what happened to dTHR? - -=item How do I use all this in extensions? - -=item Should I do anything special if I call perl from multiple threads? - -=item Future Plans and PERL_IMPLICIT_SYS - -=back - -=item Internal Functions - -A, p, d, s, n, r, f, M, o, x, m, X, E, b, others - -=over 4 - -=item Formatted Printing of IVs, UVs, and NVs - -=item Pointer-To-Integer and Integer-To-Pointer - -=item Exception Handling - -=item Source Documentation - -=item Backwards compatibility - -=back - -=item Unicode Support - -=over 4 - -=item What B<is> Unicode, anyway? - -=item How can I recognise a UTF-8 string? - -=item How does UTF-8 represent Unicode characters? - -=item How does Perl store UTF-8 strings? - -=item How do I convert a string to UTF-8? - -=item Is there anything else I need to know? - -=back - -=item Custom Operators - -=item AUTHORS - -=item SEE ALSO - -=back - -=head2 perlcall - Perl calling conventions from C - -=over 4 - -=item DESCRIPTION - -An Error Handler, An Event Driven Program - -=item THE CALL_ FUNCTIONS - -call_sv, call_pv, call_method, call_argv - -=item FLAG VALUES - -=over 4 - -=item G_VOID - -=item G_SCALAR - -=item G_ARRAY - -=item G_DISCARD - -=item G_NOARGS - -=item G_EVAL - -=item G_KEEPERR - -=item Determining the Context - -=back - -=item EXAMPLES - -=over 4 - -=item No Parameters, Nothing returned - -=item Passing Parameters - -=item Returning a Scalar - -=item Returning a list of values - -=item Returning a list in a scalar context - -=item Returning Data from Perl via the parameter list - -=item Using G_EVAL - -=item Using G_KEEPERR - -=item Using call_sv - -=item Using call_argv - -=item Using call_method - -=item Using GIMME_V - -=item Using Perl to dispose of temporaries - -=item Strategies for storing Callback Context Information - -1. Ignore the problem - Allow only 1 callback, 2. Create a sequence of -callbacks - hard wired limit, 3. Use a parameter to map to the Perl -callback - -=item Alternate Stack Manipulation - -=item Creating and calling an anonymous subroutine in C - -=back - -=item LIGHTWEIGHT CALLBACKS - -=item SEE ALSO - -=item AUTHOR - -=item DATE - -=back - -=head2 perlreapi - perl regular expression plugin interface - -=over 4 - -=item DESCRIPTION - -=item Callbacks - -=over 4 - -=item comp - -C</m> - RXf_PMf_MULTILINE, C</s> - RXf_PMf_SINGLELINE, C</i> - -RXf_PMf_FOLD, C</x> - RXf_PMf_EXTENDED, C</p> - RXf_PMf_KEEPCOPY, -RXf_PMf_LOCALE, RXf_UTF8, RXf_SPLIT, RXf_SKIPWHITE, RXf_START_ONLY, -RXf_WHITE, RXf_NULL - -=item exec - -=item intuit - -=item checkstr - -=item free - -=item Numbered capture callbacks - -=item Named capture callbacks - -=item qr_package - -=item dupe - -=back - -=item The REGEXP structure - -=over 4 - -=item C<engine> - -=item C<mother_re> - -=item C<extflags> - -=item C<minlen> C<minlenret> - -=item C<gofs> - -=item C<substrs> - -=item C<nparens>, C<lasparen>, and C<lastcloseparen> - -=item C<intflags> - -=item C<pprivate> - -=item C<swap> - -=item C<offs> - -=item C<precomp> C<prelen> - -=item C<paren_names> - -=item C<substrs> - -=item C<subbeg> C<sublen> C<saved_copy> - -=item C<wrapped> C<wraplen> - -=item C<seen_evals> - -=item C<refcnt> - -=back - -=item HISTORY - -=item AUTHORS - -=item LICENSE - -=back - -=head2 perlreguts - Description of the Perl regular expression engine. - -=over 4 - -=item DESCRIPTION - -=item OVERVIEW - -=over 4 - -=item A quick note on terms - -=item What is a regular expression engine? - -=item Structure of a Regexp Program - -C<regnode_1>, C<regnode_2>, C<regnode_string>, C<regnode_charclass>, -C<regnode_charclass_class> - -=back - -=item Process Overview - -A. Compilation, 1. Parsing for size, 2. Parsing for construction, 3. -Peep-hole optimisation and analysis, B. Execution, 4. Start position and -no-match optimisations, 5. Program execution - -=over 4 - -=item Compilation - -anchored fixed strings, floating fixed strings, minimum and maximum length -requirements, start class, Beginning/End of line positions - -=item Execution - -=back - -=item MISCELLANEOUS - -=over 4 - -=item Unicode and Localisation Support - -=item Base Structures - -C<swap>, C<offsets>, C<regstclass>, C<data>, C<program> - -=back - -=item SEE ALSO - -=item AUTHOR - -=item LICENCE - -=item REFERENCES - -=back - -=head2 perlapi - autogenerated documentation for the perl public API - -=over 4 - -=item DESCRIPTION -X<Perl API> X<API> X<api> - -=item "Gimme" Values - -GIMME X<GIMME>, GIMME_V X<GIMME_V>, G_ARRAY X<G_ARRAY>, G_DISCARD -X<G_DISCARD>, G_EVAL X<G_EVAL>, G_NOARGS X<G_NOARGS>, G_SCALAR X<G_SCALAR>, -G_VOID X<G_VOID> - -=item Array Manipulation Functions - -AvFILL X<AvFILL>, av_clear X<av_clear>, av_create_and_push -X<av_create_and_push>, av_create_and_unshift_one -X<av_create_and_unshift_one>, av_delete X<av_delete>, av_exists -X<av_exists>, av_extend X<av_extend>, av_fetch X<av_fetch>, av_fill -X<av_fill>, av_len X<av_len>, av_make X<av_make>, av_pop X<av_pop>, av_push -X<av_push>, av_shift X<av_shift>, av_store X<av_store>, av_undef -X<av_undef>, av_unshift X<av_unshift>, get_av X<get_av>, newAV X<newAV>, -sortsv X<sortsv>, sortsv_flags X<sortsv_flags> - -=item Callback Functions - -call_argv X<call_argv>, call_method X<call_method>, call_pv X<call_pv>, -call_sv X<call_sv>, ENTER X<ENTER>, eval_pv X<eval_pv>, eval_sv X<eval_sv>, -FREETMPS X<FREETMPS>, LEAVE X<LEAVE>, SAVETMPS X<SAVETMPS> - -=item Character classes - -isALNUM X<isALNUM>, isALPHA X<isALPHA>, isDIGIT X<isDIGIT>, isLOWER -X<isLOWER>, isSPACE X<isSPACE>, isUPPER X<isUPPER>, toLOWER X<toLOWER>, -toUPPER X<toUPPER> - -=item Cloning an interpreter - -perl_clone X<perl_clone> - -=item CV Manipulation Functions - -CvSTASH X<CvSTASH>, get_cv X<get_cv>, get_cvn_flags X<get_cvn_flags> - -=item Embedding Functions - -cv_undef X<cv_undef>, load_module X<load_module>, nothreadhook -X<nothreadhook>, perl_alloc X<perl_alloc>, perl_construct -X<perl_construct>, perl_destruct X<perl_destruct>, perl_free X<perl_free>, -perl_parse X<perl_parse>, perl_run X<perl_run>, require_pv X<require_pv> - -=item Functions in file dump.c - -pv_display X<pv_display>, pv_escape X<pv_escape>, pv_pretty X<pv_pretty> - -=item Functions in file mathoms.c - -gv_fetchmethod X<gv_fetchmethod>, pack_cat X<pack_cat>, sv_2pvbyte_nolen -X<sv_2pvbyte_nolen>, sv_2pvutf8_nolen X<sv_2pvutf8_nolen>, sv_2pv_nolen -X<sv_2pv_nolen>, sv_catpvn_mg X<sv_catpvn_mg>, sv_catsv_mg X<sv_catsv_mg>, -sv_force_normal X<sv_force_normal>, sv_iv X<sv_iv>, sv_nolocking -X<sv_nolocking>, sv_nounlocking X<sv_nounlocking>, sv_nv X<sv_nv>, sv_pv -X<sv_pv>, sv_pvbyte X<sv_pvbyte>, sv_pvbyten X<sv_pvbyten>, sv_pvn -X<sv_pvn>, sv_pvutf8 X<sv_pvutf8>, sv_pvutf8n X<sv_pvutf8n>, sv_taint -X<sv_taint>, sv_unref X<sv_unref>, sv_usepvn X<sv_usepvn>, sv_usepvn_mg -X<sv_usepvn_mg>, sv_uv X<sv_uv>, unpack_str X<unpack_str> - -=item Functions in file pp_ctl.c - -find_runcv X<find_runcv> - -=item Functions in file pp_pack.c - -packlist X<packlist>, unpackstring X<unpackstring> - -=item Functions in file pp_sys.c - -setdefout X<setdefout> - -=item GV Functions - -GvSV X<GvSV>, gv_const_sv X<gv_const_sv>, gv_fetchmeth X<gv_fetchmeth>, -gv_fetchmethod_autoload X<gv_fetchmethod_autoload>, gv_fetchmeth_autoload -X<gv_fetchmeth_autoload>, gv_stashpv X<gv_stashpv>, gv_stashpvn -X<gv_stashpvn>, gv_stashpvs X<gv_stashpvs>, gv_stashsv X<gv_stashsv> - -=item Handy Values - -Nullav X<Nullav>, Nullch X<Nullch>, Nullcv X<Nullcv>, Nullhv X<Nullhv>, -Nullsv X<Nullsv> - -=item Hash Manipulation Functions - -get_hv X<get_hv>, HEf_SVKEY X<HEf_SVKEY>, HeHASH X<HeHASH>, HeKEY X<HeKEY>, -HeKLEN X<HeKLEN>, HePV X<HePV>, HeSVKEY X<HeSVKEY>, HeSVKEY_force -X<HeSVKEY_force>, HeSVKEY_set X<HeSVKEY_set>, HeUTF8 X<HeUTF8>, HeVAL -X<HeVAL>, HvNAME X<HvNAME>, hv_assert X<hv_assert>, hv_clear X<hv_clear>, -hv_clear_placeholders X<hv_clear_placeholders>, hv_delete X<hv_delete>, -hv_delete_ent X<hv_delete_ent>, hv_exists X<hv_exists>, hv_exists_ent -X<hv_exists_ent>, hv_fetch X<hv_fetch>, hv_fetchs X<hv_fetchs>, -hv_fetch_ent X<hv_fetch_ent>, hv_iterinit X<hv_iterinit>, hv_iterkey -X<hv_iterkey>, hv_iterkeysv X<hv_iterkeysv>, hv_iternext X<hv_iternext>, -hv_iternextsv X<hv_iternextsv>, hv_iternext_flags X<hv_iternext_flags>, -hv_iterval X<hv_iterval>, hv_magic X<hv_magic>, hv_scalar X<hv_scalar>, -hv_store X<hv_store>, hv_stores X<hv_stores>, hv_store_ent X<hv_store_ent>, -hv_undef X<hv_undef>, newHV X<newHV> - -=item Magical Functions - -mg_clear X<mg_clear>, mg_copy X<mg_copy>, mg_find X<mg_find>, mg_free -X<mg_free>, mg_get X<mg_get>, mg_length X<mg_length>, mg_magical -X<mg_magical>, mg_set X<mg_set>, SvGETMAGIC X<SvGETMAGIC>, SvLOCK -X<SvLOCK>, SvSETMAGIC X<SvSETMAGIC>, SvSetMagicSV X<SvSetMagicSV>, -SvSetMagicSV_nosteal X<SvSetMagicSV_nosteal>, SvSetSV X<SvSetSV>, -SvSetSV_nosteal X<SvSetSV_nosteal>, SvSHARE X<SvSHARE>, SvUNLOCK -X<SvUNLOCK> - -=item Memory Management - -Copy X<Copy>, CopyD X<CopyD>, Move X<Move>, MoveD X<MoveD>, Newx X<Newx>, -Newxc X<Newxc>, Newxz X<Newxz>, Poison X<Poison>, PoisonFree X<PoisonFree>, -PoisonNew X<PoisonNew>, PoisonWith X<PoisonWith>, Renew X<Renew>, Renewc -X<Renewc>, Safefree X<Safefree>, savepv X<savepv>, savepvn X<savepvn>, -savepvs X<savepvs>, savesharedpv X<savesharedpv>, savesharedpvn -X<savesharedpvn>, savesvpv X<savesvpv>, StructCopy X<StructCopy>, Zero -X<Zero>, ZeroD X<ZeroD> - -=item Miscellaneous Functions - -fbm_compile X<fbm_compile>, fbm_instr X<fbm_instr>, form X<form>, getcwd_sv -X<getcwd_sv>, my_snprintf X<my_snprintf>, my_sprintf X<my_sprintf>, -my_vsnprintf X<my_vsnprintf>, new_version X<new_version>, scan_version -X<scan_version>, strEQ X<strEQ>, strGE X<strGE>, strGT X<strGT>, strLE -X<strLE>, strLT X<strLT>, strNE X<strNE>, strnEQ X<strnEQ>, strnNE -X<strnNE>, sv_destroyable X<sv_destroyable>, sv_nosharing X<sv_nosharing>, -upg_version X<upg_version>, vcmp X<vcmp>, vnormal X<vnormal>, vnumify -X<vnumify>, vstringify X<vstringify>, vverify X<vverify> - -=item MRO Functions - -mro_get_linear_isa X<mro_get_linear_isa>, mro_method_changed_in -X<mro_method_changed_in> - -=item Multicall Functions - -dMULTICALL X<dMULTICALL>, MULTICALL X<MULTICALL>, POP_MULTICALL -X<POP_MULTICALL>, PUSH_MULTICALL X<PUSH_MULTICALL> - -=item Numeric functions - -grok_bin X<grok_bin>, grok_hex X<grok_hex>, grok_number X<grok_number>, -grok_numeric_radix X<grok_numeric_radix>, grok_oct X<grok_oct>, -Perl_signbit X<Perl_signbit>, scan_bin X<scan_bin>, scan_hex X<scan_hex>, -scan_oct X<scan_oct> - -=item Optree Manipulation Functions - -cv_const_sv X<cv_const_sv>, newCONSTSUB X<newCONSTSUB>, newXS X<newXS> - -=item Pad Data Structures - -pad_sv X<pad_sv> - -=item Per-Interpreter Variables - -PL_modglobal X<PL_modglobal>, PL_na X<PL_na>, PL_sv_no X<PL_sv_no>, -PL_sv_undef X<PL_sv_undef>, PL_sv_yes X<PL_sv_yes> - -=item REGEXP Functions - -SvRX X<SvRX>, SvRXOK X<SvRXOK> - -=item Simple Exception Handling Macros - -dXCPT X<dXCPT>, XCPT_CATCH X<XCPT_CATCH>, XCPT_RETHROW X<XCPT_RETHROW>, -XCPT_TRY_END X<XCPT_TRY_END>, XCPT_TRY_START X<XCPT_TRY_START> - -=item Stack Manipulation Macros - -dMARK X<dMARK>, dORIGMARK X<dORIGMARK>, dSP X<dSP>, EXTEND X<EXTEND>, MARK -X<MARK>, mPUSHi X<mPUSHi>, mPUSHn X<mPUSHn>, mPUSHp X<mPUSHp>, mPUSHs -X<mPUSHs>, mPUSHu X<mPUSHu>, mXPUSHi X<mXPUSHi>, mXPUSHn X<mXPUSHn>, -mXPUSHp X<mXPUSHp>, mXPUSHs X<mXPUSHs>, mXPUSHu X<mXPUSHu>, ORIGMARK -X<ORIGMARK>, POPi X<POPi>, POPl X<POPl>, POPn X<POPn>, POPp X<POPp>, -POPpbytex X<POPpbytex>, POPpx X<POPpx>, POPs X<POPs>, PUSHi X<PUSHi>, -PUSHMARK X<PUSHMARK>, PUSHmortal X<PUSHmortal>, PUSHn X<PUSHn>, PUSHp -X<PUSHp>, PUSHs X<PUSHs>, PUSHu X<PUSHu>, PUTBACK X<PUTBACK>, SP X<SP>, -SPAGAIN X<SPAGAIN>, XPUSHi X<XPUSHi>, XPUSHmortal X<XPUSHmortal>, XPUSHn -X<XPUSHn>, XPUSHp X<XPUSHp>, XPUSHs X<XPUSHs>, XPUSHu X<XPUSHu>, XSRETURN -X<XSRETURN>, XSRETURN_EMPTY X<XSRETURN_EMPTY>, XSRETURN_IV X<XSRETURN_IV>, -XSRETURN_NO X<XSRETURN_NO>, XSRETURN_NV X<XSRETURN_NV>, XSRETURN_PV -X<XSRETURN_PV>, XSRETURN_UNDEF X<XSRETURN_UNDEF>, XSRETURN_UV -X<XSRETURN_UV>, XSRETURN_YES X<XSRETURN_YES>, XST_mIV X<XST_mIV>, XST_mNO -X<XST_mNO>, XST_mNV X<XST_mNV>, XST_mPV X<XST_mPV>, XST_mUNDEF -X<XST_mUNDEF>, XST_mYES X<XST_mYES> - -=item SV Flags - -svtype X<svtype>, SVt_IV X<SVt_IV>, SVt_NV X<SVt_NV>, SVt_PV X<SVt_PV>, -SVt_PVAV X<SVt_PVAV>, SVt_PVCV X<SVt_PVCV>, SVt_PVHV X<SVt_PVHV>, SVt_PVMG -X<SVt_PVMG> - -=item SV Manipulation Functions - -croak_xs_usage X<croak_xs_usage>, get_sv X<get_sv>, newRV_inc X<newRV_inc>, -newSVpvn_utf8 X<newSVpvn_utf8>, SvCUR X<SvCUR>, SvCUR_set X<SvCUR_set>, -SvEND X<SvEND>, SvGAMAGIC X<SvGAMAGIC>, SvGROW X<SvGROW>, SvIOK X<SvIOK>, -SvIOKp X<SvIOKp>, SvIOK_notUV X<SvIOK_notUV>, SvIOK_off X<SvIOK_off>, -SvIOK_on X<SvIOK_on>, SvIOK_only X<SvIOK_only>, SvIOK_only_UV -X<SvIOK_only_UV>, SvIOK_UV X<SvIOK_UV>, SvIsCOW X<SvIsCOW>, -SvIsCOW_shared_hash X<SvIsCOW_shared_hash>, SvIV X<SvIV>, SvIVX X<SvIVX>, -SvIVx X<SvIVx>, SvIV_nomg X<SvIV_nomg>, SvIV_set X<SvIV_set>, SvLEN -X<SvLEN>, SvLEN_set X<SvLEN_set>, SvMAGIC_set X<SvMAGIC_set>, SvNIOK -X<SvNIOK>, SvNIOKp X<SvNIOKp>, SvNIOK_off X<SvNIOK_off>, SvNOK X<SvNOK>, -SvNOKp X<SvNOKp>, SvNOK_off X<SvNOK_off>, SvNOK_on X<SvNOK_on>, SvNOK_only -X<SvNOK_only>, SvNV X<SvNV>, SvNVX X<SvNVX>, SvNVx X<SvNVx>, SvNV_set -X<SvNV_set>, SvOK X<SvOK>, SvOOK X<SvOOK>, SvOOK_offset X<SvOOK_offset>, -SvPOK X<SvPOK>, SvPOKp X<SvPOKp>, SvPOK_off X<SvPOK_off>, SvPOK_on -X<SvPOK_on>, SvPOK_only X<SvPOK_only>, SvPOK_only_UTF8 X<SvPOK_only_UTF8>, -SvPV X<SvPV>, SvPVbyte X<SvPVbyte>, SvPVbytex X<SvPVbytex>, SvPVbytex_force -X<SvPVbytex_force>, SvPVbyte_force X<SvPVbyte_force>, SvPVbyte_nolen -X<SvPVbyte_nolen>, SvPVutf8 X<SvPVutf8>, SvPVutf8x X<SvPVutf8x>, -SvPVutf8x_force X<SvPVutf8x_force>, SvPVutf8_force X<SvPVutf8_force>, -SvPVutf8_nolen X<SvPVutf8_nolen>, SvPVX X<SvPVX>, SvPVx X<SvPVx>, -SvPV_force X<SvPV_force>, SvPV_force_nomg X<SvPV_force_nomg>, SvPV_nolen -X<SvPV_nolen>, SvPV_nomg X<SvPV_nomg>, SvPV_set X<SvPV_set>, SvREFCNT -X<SvREFCNT>, SvREFCNT_dec X<SvREFCNT_dec>, SvREFCNT_inc X<SvREFCNT_inc>, -SvREFCNT_inc_NN X<SvREFCNT_inc_NN>, SvREFCNT_inc_simple -X<SvREFCNT_inc_simple>, SvREFCNT_inc_simple_NN X<SvREFCNT_inc_simple_NN>, -SvREFCNT_inc_simple_void X<SvREFCNT_inc_simple_void>, -SvREFCNT_inc_simple_void_NN X<SvREFCNT_inc_simple_void_NN>, -SvREFCNT_inc_void X<SvREFCNT_inc_void>, SvREFCNT_inc_void_NN -X<SvREFCNT_inc_void_NN>, SvROK X<SvROK>, SvROK_off X<SvROK_off>, SvROK_on -X<SvROK_on>, SvRV X<SvRV>, SvRV_set X<SvRV_set>, SvSTASH X<SvSTASH>, -SvSTASH_set X<SvSTASH_set>, SvTAINT X<SvTAINT>, SvTAINTED X<SvTAINTED>, -SvTAINTED_off X<SvTAINTED_off>, SvTAINTED_on X<SvTAINTED_on>, SvTRUE -X<SvTRUE>, SvTYPE X<SvTYPE>, SvUOK X<SvUOK>, SvUPGRADE X<SvUPGRADE>, SvUTF8 -X<SvUTF8>, SvUTF8_off X<SvUTF8_off>, SvUTF8_on X<SvUTF8_on>, SvUV X<SvUV>, -SvUVX X<SvUVX>, SvUVx X<SvUVx>, SvUV_nomg X<SvUV_nomg>, SvUV_set -X<SvUV_set>, SvVOK X<SvVOK>, sv_catpvn_nomg X<sv_catpvn_nomg>, -sv_catsv_nomg X<sv_catsv_nomg>, sv_derived_from X<sv_derived_from>, sv_does -X<sv_does>, sv_report_used X<sv_report_used>, sv_setsv_nomg -X<sv_setsv_nomg>, sv_utf8_upgrade_nomg X<sv_utf8_upgrade_nomg> - -=item SV-Body Allocation - -looks_like_number X<looks_like_number>, newRV_noinc X<newRV_noinc>, newSV -X<newSV>, newSVhek X<newSVhek>, newSViv X<newSViv>, newSVnv X<newSVnv>, -newSVpv X<newSVpv>, newSVpvf X<newSVpvf>, newSVpvn X<newSVpvn>, -newSVpvn_flags X<newSVpvn_flags>, newSVpvn_share X<newSVpvn_share>, -newSVpvs X<newSVpvs>, newSVpvs_flags X<newSVpvs_flags>, newSVpvs_share -X<newSVpvs_share>, newSVrv X<newSVrv>, newSVsv X<newSVsv>, newSVuv -X<newSVuv>, newSV_type X<newSV_type>, sv_2bool X<sv_2bool>, sv_2cv -X<sv_2cv>, sv_2io X<sv_2io>, sv_2iv_flags X<sv_2iv_flags>, sv_2mortal -X<sv_2mortal>, sv_2nv X<sv_2nv>, sv_2pvbyte X<sv_2pvbyte>, sv_2pvutf8 -X<sv_2pvutf8>, sv_2pv_flags X<sv_2pv_flags>, sv_2uv_flags X<sv_2uv_flags>, -sv_backoff X<sv_backoff>, sv_bless X<sv_bless>, sv_catpv X<sv_catpv>, -sv_catpvf X<sv_catpvf>, sv_catpvf_mg X<sv_catpvf_mg>, sv_catpvn -X<sv_catpvn>, sv_catpvn_flags X<sv_catpvn_flags>, sv_catpvs X<sv_catpvs>, -sv_catpv_mg X<sv_catpv_mg>, sv_catsv X<sv_catsv>, sv_catsv_flags -X<sv_catsv_flags>, sv_chop X<sv_chop>, sv_clear X<sv_clear>, sv_cmp -X<sv_cmp>, sv_cmp_locale X<sv_cmp_locale>, sv_collxfrm X<sv_collxfrm>, -sv_copypv X<sv_copypv>, sv_dec X<sv_dec>, sv_eq X<sv_eq>, -sv_force_normal_flags X<sv_force_normal_flags>, sv_free X<sv_free>, sv_gets -X<sv_gets>, sv_grow X<sv_grow>, sv_inc X<sv_inc>, sv_insert X<sv_insert>, -sv_insert_flags X<sv_insert_flags>, sv_isa X<sv_isa>, sv_isobject -X<sv_isobject>, sv_len X<sv_len>, sv_len_utf8 X<sv_len_utf8>, sv_magic -X<sv_magic>, sv_magicext X<sv_magicext>, sv_mortalcopy X<sv_mortalcopy>, -sv_newmortal X<sv_newmortal>, sv_newref X<sv_newref>, sv_pos_b2u -X<sv_pos_b2u>, sv_pos_u2b X<sv_pos_u2b>, sv_pvbyten_force -X<sv_pvbyten_force>, sv_pvn_force X<sv_pvn_force>, sv_pvn_force_flags -X<sv_pvn_force_flags>, sv_pvutf8n_force X<sv_pvutf8n_force>, sv_reftype -X<sv_reftype>, sv_replace X<sv_replace>, sv_reset X<sv_reset>, sv_rvweaken -X<sv_rvweaken>, sv_setiv X<sv_setiv>, sv_setiv_mg X<sv_setiv_mg>, sv_setnv -X<sv_setnv>, sv_setnv_mg X<sv_setnv_mg>, sv_setpv X<sv_setpv>, sv_setpvf -X<sv_setpvf>, sv_setpvf_mg X<sv_setpvf_mg>, sv_setpviv X<sv_setpviv>, -sv_setpviv_mg X<sv_setpviv_mg>, sv_setpvn X<sv_setpvn>, sv_setpvn_mg -X<sv_setpvn_mg>, sv_setpvs X<sv_setpvs>, sv_setpv_mg X<sv_setpv_mg>, -sv_setref_iv X<sv_setref_iv>, sv_setref_nv X<sv_setref_nv>, sv_setref_pv -X<sv_setref_pv>, sv_setref_pvn X<sv_setref_pvn>, sv_setref_uv -X<sv_setref_uv>, sv_setsv X<sv_setsv>, sv_setsv_flags X<sv_setsv_flags>, -sv_setsv_mg X<sv_setsv_mg>, sv_setuv X<sv_setuv>, sv_setuv_mg -X<sv_setuv_mg>, sv_tainted X<sv_tainted>, sv_true X<sv_true>, sv_unmagic -X<sv_unmagic>, sv_unref_flags X<sv_unref_flags>, sv_untaint X<sv_untaint>, -sv_upgrade X<sv_upgrade>, sv_usepvn_flags X<sv_usepvn_flags>, -sv_utf8_decode X<sv_utf8_decode>, sv_utf8_downgrade X<sv_utf8_downgrade>, -sv_utf8_encode X<sv_utf8_encode>, sv_utf8_upgrade X<sv_utf8_upgrade>, -sv_utf8_upgrade_flags X<sv_utf8_upgrade_flags>, sv_vcatpvf X<sv_vcatpvf>, -sv_vcatpvfn X<sv_vcatpvfn>, sv_vcatpvf_mg X<sv_vcatpvf_mg>, sv_vsetpvf -X<sv_vsetpvf>, sv_vsetpvfn X<sv_vsetpvfn>, sv_vsetpvf_mg X<sv_vsetpvf_mg> - -=item Unicode Support - -bytes_from_utf8 X<bytes_from_utf8>, bytes_to_utf8 X<bytes_to_utf8>, -ibcmp_utf8 X<ibcmp_utf8>, is_utf8_char X<is_utf8_char>, is_utf8_string -X<is_utf8_string>, is_utf8_string_loc X<is_utf8_string_loc>, -is_utf8_string_loclen X<is_utf8_string_loclen>, pv_uni_display -X<pv_uni_display>, sv_cat_decode X<sv_cat_decode>, sv_recode_to_utf8 -X<sv_recode_to_utf8>, sv_uni_display X<sv_uni_display>, to_utf8_case -X<to_utf8_case>, to_utf8_fold X<to_utf8_fold>, to_utf8_lower -X<to_utf8_lower>, to_utf8_title X<to_utf8_title>, to_utf8_upper -X<to_utf8_upper>, utf8n_to_uvchr X<utf8n_to_uvchr>, utf8n_to_uvuni -X<utf8n_to_uvuni>, utf8_distance X<utf8_distance>, utf8_hop X<utf8_hop>, -utf8_length X<utf8_length>, utf8_to_bytes X<utf8_to_bytes>, utf8_to_uvchr -X<utf8_to_uvchr>, utf8_to_uvuni X<utf8_to_uvuni>, uvchr_to_utf8 -X<uvchr_to_utf8>, uvuni_to_utf8_flags X<uvuni_to_utf8_flags> - -=item Variables created by C<xsubpp> and C<xsubpp> internal functions - -ax X<ax>, CLASS X<CLASS>, dAX X<dAX>, dAXMARK X<dAXMARK>, dITEMS X<dITEMS>, -dUNDERBAR X<dUNDERBAR>, dXSARGS X<dXSARGS>, dXSI32 X<dXSI32>, items -X<items>, ix X<ix>, newXSproto X<newXSproto>, RETVAL X<RETVAL>, ST X<ST>, -THIS X<THIS>, UNDERBAR X<UNDERBAR>, XS X<XS>, XS_VERSION X<XS_VERSION>, -XS_VERSION_BOOTCHECK X<XS_VERSION_BOOTCHECK> - -=item Warning and Dieing - -croak X<croak>, warn X<warn> - -=item AUTHORS - -=item SEE ALSO - -=back - -=head2 perlintern - autogenerated documentation of purely B<internal> - Perl functions - -=over 4 - -=item DESCRIPTION -X<internal Perl functions> X<interpreter functions> - -=item CV reference counts and CvOUTSIDE - -CvWEAKOUTSIDE X<CvWEAKOUTSIDE> - -=item Functions in file pad.h - -CX_CURPAD_SAVE X<CX_CURPAD_SAVE>, CX_CURPAD_SV X<CX_CURPAD_SV>, PAD_BASE_SV -X<PAD_BASE_SV>, PAD_CLONE_VARS X<PAD_CLONE_VARS>, PAD_COMPNAME_FLAGS -X<PAD_COMPNAME_FLAGS>, PAD_COMPNAME_GEN X<PAD_COMPNAME_GEN>, -PAD_COMPNAME_GEN_set X<PAD_COMPNAME_GEN_set>, PAD_COMPNAME_OURSTASH -X<PAD_COMPNAME_OURSTASH>, PAD_COMPNAME_PV X<PAD_COMPNAME_PV>, -PAD_COMPNAME_TYPE X<PAD_COMPNAME_TYPE>, PAD_DUP X<PAD_DUP>, -PAD_RESTORE_LOCAL X<PAD_RESTORE_LOCAL>, PAD_SAVE_LOCAL X<PAD_SAVE_LOCAL>, -PAD_SAVE_SETNULLPAD X<PAD_SAVE_SETNULLPAD>, PAD_SETSV X<PAD_SETSV>, -PAD_SET_CUR X<PAD_SET_CUR>, PAD_SET_CUR_NOSAVE X<PAD_SET_CUR_NOSAVE>, -PAD_SV X<PAD_SV>, PAD_SVl X<PAD_SVl>, SAVECLEARSV X<SAVECLEARSV>, -SAVECOMPPAD X<SAVECOMPPAD>, SAVEPADSV X<SAVEPADSV> - -=item GV Functions - -is_gv_magical_sv X<is_gv_magical_sv> - -=item Hash Manipulation Functions - -refcounted_he_chain_2hv X<refcounted_he_chain_2hv>, refcounted_he_free -X<refcounted_he_free>, refcounted_he_new X<refcounted_he_new> - -=item IO Functions - -start_glob X<start_glob> - -=item Magical Functions - -magic_clearhint X<magic_clearhint>, magic_sethint X<magic_sethint>, -mg_localize X<mg_localize> - -=item MRO Functions - -mro_get_linear_isa_c3 X<mro_get_linear_isa_c3>, mro_get_linear_isa_dfs -X<mro_get_linear_isa_dfs>, mro_isa_changed_in X<mro_isa_changed_in> - -=item Pad Data Structures - -CvPADLIST X<CvPADLIST>, cv_clone X<cv_clone>, cv_dump X<cv_dump>, -do_dump_pad X<do_dump_pad>, intro_my X<intro_my>, pad_add_anon -X<pad_add_anon>, pad_add_name X<pad_add_name>, pad_alloc X<pad_alloc>, -pad_block_start X<pad_block_start>, pad_check_dup X<pad_check_dup>, -pad_findlex X<pad_findlex>, pad_findmy X<pad_findmy>, pad_fixup_inner_anons -X<pad_fixup_inner_anons>, pad_free X<pad_free>, pad_leavemy X<pad_leavemy>, -pad_new X<pad_new>, pad_push X<pad_push>, pad_reset X<pad_reset>, pad_setsv -X<pad_setsv>, pad_swipe X<pad_swipe>, pad_tidy X<pad_tidy>, pad_undef -X<pad_undef> - -=item Per-Interpreter Variables - -PL_DBsingle X<PL_DBsingle>, PL_DBsub X<PL_DBsub>, PL_DBtrace X<PL_DBtrace>, -PL_dowarn X<PL_dowarn>, PL_last_in_gv X<PL_last_in_gv>, PL_ofsgv -X<PL_ofsgv>, PL_rs X<PL_rs> - -=item Stack Manipulation Macros - -djSP X<djSP>, LVRET X<LVRET> - -=item SV Manipulation Functions - -sv_add_arena X<sv_add_arena>, sv_clean_all X<sv_clean_all>, sv_clean_objs -X<sv_clean_objs>, sv_free_arenas X<sv_free_arenas> - -=item SV-Body Allocation - -sv_2num X<sv_2num> - -=item Unicode Support - -find_uninit_var X<find_uninit_var>, report_uninit X<report_uninit> - -=item AUTHORS - -=item SEE ALSO - -=back - -=head2 perliol - C API for Perl's implementation of IO in Layers. - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item History and Background - -=item Basic Structure - -=item Layers vs Disciplines - -=item Data Structures - -=item Functions and Attributes - -=item Per-instance Data - -=item Layers in action. - -=item Per-instance flag bits - -PERLIO_F_EOF, PERLIO_F_CANWRITE, PERLIO_F_CANREAD, PERLIO_F_ERROR, -PERLIO_F_TRUNCATE, PERLIO_F_APPEND, PERLIO_F_CRLF, PERLIO_F_UTF8, -PERLIO_F_UNBUF, PERLIO_F_WRBUF, PERLIO_F_RDBUF, PERLIO_F_LINEBUF, -PERLIO_F_TEMP, PERLIO_F_OPEN, PERLIO_F_FASTGETS - -=item Methods in Detail - -fsize, name, size, kind, PERLIO_K_BUFFERED, PERLIO_K_RAW, PERLIO_K_CANCRLF, -PERLIO_K_FASTGETS, PERLIO_K_MULTIARG, Pushed, Popped, Open, Binmode, -Getarg, Fileno, Dup, Read, Write, Seek, Tell, Close, Flush, Fill, Eof, -Error, Clearerr, Setlinebuf, Get_base, Get_bufsiz, Get_ptr, Get_cnt, -Set_ptrcnt - -=item Utilities - -=item Implementing PerlIO Layers - -C implementations, Perl implementations - -=item Core Layers - -"unix", "perlio", "stdio", "crlf", "mmap", "pending", "raw", "utf8" - -=item Extension Layers - -":encoding", ":scalar", ":via" - -=back - -=item TODO - -=back - -=head2 perlapio - perl's IO abstraction interface. - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -1. USE_STDIO, 2. USE_SFIO, 3. USE_PERLIO, B<PerlIO_stdin()>, -B<PerlIO_stdout()>, B<PerlIO_stderr()>, B<PerlIO_open(path, mode)>, -B<PerlIO_fdopen(fd,mode)>, B<PerlIO_reopen(path,mode,f)>, -B<PerlIO_printf(f,fmt,...)>, B<PerlIO_vprintf(f,fmt,a)>, -B<PerlIO_stdoutf(fmt,...)>, B<PerlIO_read(f,buf,count)>, -B<PerlIO_write(f,buf,count)>, B<PerlIO_close(f)>, B<PerlIO_puts(f,s)>, -B<PerlIO_putc(f,c)>, B<PerlIO_ungetc(f,c)>, B<PerlIO_getc(f)>, -B<PerlIO_eof(f)>, B<PerlIO_error(f)>, B<PerlIO_fileno(f)>, -B<PerlIO_clearerr(f)>, B<PerlIO_flush(f)>, B<PerlIO_seek(f,offset,whence)>, -B<PerlIO_tell(f)>, B<PerlIO_getpos(f,p)>, B<PerlIO_setpos(f,p)>, -B<PerlIO_rewind(f)>, B<PerlIO_tmpfile()>, B<PerlIO_setlinebuf(f)> - -=over 4 - -=item Co-existence with stdio - -B<PerlIO_importFILE(f,mode)>, B<PerlIO_exportFILE(f,mode)>, -B<PerlIO_releaseFILE(p,f)>, B<PerlIO_findFILE(f)> - -=item "Fast gets" Functions - -B<PerlIO_fast_gets(f)>, B<PerlIO_has_cntptr(f)>, B<PerlIO_get_cnt(f)>, -B<PerlIO_get_ptr(f)>, B<PerlIO_set_ptrcnt(f,p,c)>, B<PerlIO_canset_cnt(f)>, -B<PerlIO_set_cnt(f,c)>, B<PerlIO_has_base(f)>, B<PerlIO_get_base(f)>, -B<PerlIO_get_bufsiz(f)> - -=item Other Functions - -PerlIO_apply_layers(f,mode,layers), PerlIO_binmode(f,ptype,imode,layers), -'E<lt>' read, 'E<gt>' write, '+' read/write, PerlIO_debug(fmt,...) - -=back - -=back - -=head2 perlhack - How to hack at the Perl internals - -=over 4 - -=item DESCRIPTION - -Does concept match the general goals of Perl?, Where is the -implementation?, Backwards compatibility, Could it be a module instead?, Is -the feature generic enough?, Does it potentially introduce new bugs?, Does -it preclude other desirable features?, Is the implementation robust?, Is -the implementation generic enough to be portable?, Is the implementation -tested?, Is there enough documentation?, Is there another way to do it?, -Does it create too much work?, Patches speak louder than words - -=over 4 - -=item Keeping in sync - -rsync'ing the source tree, Using rsync over the LAN, Using pushing over the -NFS, rsync'ing the patches - -=item Why rsync the source tree - -It's easier to rsync the source tree, It's more reliable - -=item Why rsync the patches - -It's easier to rsync the patches, It's a good reference, Finding a start -point, Finding how to fix a bug, Finding the source of misbehaviour - -=item Working with the source - -=item Perlbug administration - -=item Submitting patches - -L<perlguts>, L<perlxstut> and L<perlxs>, L<perlapi>, -F<Porting/pumpkin.pod>, The perl5-porters FAQ - -=item Finding Your Way Around - -Core modules, Tests, Documentation, Configure, Interpreter - -=item Elements of the interpreter - -Startup, Parsing, Optimization, Running, Exception handing - -=item Internal Variable Types - -=item Op Trees - -=item Stacks - -Argument stack, Mark stack, Save stack - -=item Millions of Macros - -=item The .i Targets - -=back - -=item SOURCE CODE STATIC ANALYSIS - -=over 4 - -=item lint, splint - -=item Coverity - -=item cpd (cut-and-paste detector) - -=item gcc warnings - -=item Warnings of other C compilers - -=item DEBUGGING - -=item Poking at Perl - -=item Using a source-level debugger - -run [args], break function_name, break source.c:xxx, step, next, continue, -finish, 'enter', print - -=item gdb macro support - -=item Dumping Perl Data Structures - -=item Patching - -=item Patching a core module - -=item Adding a new function to the core - -=item Writing a test - -F<t/base/>, F<t/cmd/>, F<t/comp/>, F<t/io/>, F<t/lib/>, F<t/mro/>, -F<t/op/>, F<t/pod/>, F<t/run/>, F<t/uni/>, F<t/win32/>, F<t/x2p>, t/base -t/comp, t/cmd t/run t/io t/op, t/lib ext lib - -=item Special Make Test Targets - -coretest, test.deparse, test.taintwarn, minitest, test.valgrind -check.valgrind utest.valgrind ucheck.valgrind, test.third check.third -utest.third ucheck.third, test.torture torturetest, utest ucheck test.utf8 -check.utf8, minitest.utf16 test.utf16, test_harness, test-notty test_notty - -=item Running tests by hand - --v, -torture, -re=PATTERN, -re LIST OF PATTERNS, PERL_CORE=1, -PERL_DESTRUCT_LEVEL=2, PERL, PERL_SKIP_TTY_TEST, PERL_TEST_Net_Ping, -PERL_TEST_NOVREXX, PERL_TEST_NUMCONVERTS - -=item Common problems when patching Perl source code - -=item Perl environment problems - -=item Portability problems - -=item Problematic System Interfaces - -=item Security problems - -=back - -=item EXTERNAL TOOLS FOR DEBUGGING PERL - -=over 4 - -=item Rational Software's Purify - -=item Purify on Unix - --Accflags=-DPURIFY, -Doptimize='-g', -Uusemymalloc, -Dusemultiplicity - -=item Purify on NT - -DEFINES, USE_MULTI = define, #PERL_MALLOC = define, CFG = Debug - -=item valgrind - -=item Compaq's/Digital's/HP's Third Degree - -=item PERL_DESTRUCT_LEVEL - -=item PERL_MEM_LOG - -=item Profiling - -=item Gprof Profiling - --a, -b, -e routine, -f routine, -s, -z - -=item GCC gcov Profiling - -=item Pixie Profiling - --h, -l, -p[rocedures], -h[eavy], -i[nvocations], -l[ines], -testcoverage, --z[ero] - -=item Miscellaneous tricks - -=back - -=item CONCLUSION - -I<The Road goes ever on and on, down from the door where it began.> - -=over 4 - -=item Metaphoric Quotations - -=back - -=item AUTHOR - -=back - -=head2 perlrepository - Using the Perl source repository - -=over 4 - -=item SYNOPSIS - -=item GETTING ACCESS TO THE REPOSITORY - -=over 4 - -=item READ ACCESS VIA THE WEB - -=item READ ACCESS VIA GIT - -=item WRITE ACCESS TO THE REPOSITORY - -=back - -=item OVERVIEW OF THE REPOSITORY - -=over 4 - -=item FINDING OUT YOUR STATUS - -=back - -=item SUBMITTING A PATCH - -=item ACCEPTING A PATCH - -=back - -=head2 perlbook - Perl book information - -=over 4 - -=item DESCRIPTION - -=back - -=head2 perlcommunity - a brief overview of the Perl community - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Where to find the community - -=item Mailing lists and Newsgroups - -=item IRC - -=item Websites - -L<http://perl.com/>, L<http://use.perl.org/>, L<http://www.perlmonks.org/> - -=item User Groups - -=item Workshops - -=item Hackathons - -=item Conventions - -=item Calendar of Perl Events - -=back - -=item AUTHOR - -=back - -=head2 perltodo - Perl TO-DO List - -=over 4 - -=item DESCRIPTION - -=item Tasks that only need Perl knowledge - -=over 4 - -=item Smartmatch design issues - -=item Remove duplication of test setup. - -=item POD -E<gt> HTML conversion in the core still sucks - -=item merge checkpods and podchecker - -=item Parallel testing - -=item Make Schwern poorer - -=item Improve the coverage of the core tests - -=item test B - -=item A decent benchmark - -=item fix tainting bugs - -=item Dual life everything - -=item Bundle dual life modules in ext/ - -=item POSIX memory footprint - -=item embed.pl/makedef.pl - -=item use strict; and AutoLoad - -=item profile installman - -=back - -=item Tasks that need a little sysadmin-type knowledge - -=over 4 - -=item make HTML install work - -=item compressed man pages - -=item Add a code coverage target to the Makefile - -=item Make Config.pm cope with differences between built and installed perl - -=item linker specification files - -=item Cross-compile support - -=item roffitall - -=item Split "linker" from "compiler" - -C<cc> (in F<cc.U>), C<ld> (in F<dlsrc.U>) - -=back - -=item Tasks that need a little C knowledge - -=over 4 - -=item Weed out needless PERL_UNUSED_ARG - -=item Modernize the order of directories in @INC - -=item -Duse32bit* - -=item Make it clear from -v if this is the exact official release - -=item Profile Perl - am I hot or not? - -=item Allocate OPs from arenas - -=item Improve win32/wince.c - -=item Use secure CRT functions when building with VC8 on Win32 - -=item Fix POSIX::access() and chdir() on Win32 - -=item strcat(), strcpy(), strncat(), strncpy(), sprintf(), vsprintf() - -=item -D_FORTIFY_SOURCE=2, -fstack-protector - -=item Arenas for GPs? For MAGIC? - -=item Shared arenas - -=back - -=item Tasks that need a knowledge of XS - -=over 4 - -=item safely supporting POSIX SA_SIGINFO - -=item autovivification - -=item Unicode in Filenames - -=item Unicode in %ENV - -=item Unicode and glob() - -=item Unicode and lc/uc operators - -=item use less 'memory' - -=item Re-implement C<:unique> in a way that is actually thread-safe - -=item Make tainting consistent - -=item readpipe(LIST) - -=item Audit the code for destruction ordering assumptions - -=item Extend PerlIO and PerlIO::Scalar - -=item -C on the #! line - -=item Organize error messages - -=back - -=item Tasks that need a knowledge of the interpreter - -=over 4 - -=item error reporting of [$a ; $b] - -=item lexicals used only once - -=item UTF-8 revamp - -=item Properly Unicode safe tokeniser and pads. - -=item state variable initialization in list context - -=item Implement $value ~~ 0 .. $range - -=item A does() built-in - -=item Tied filehandles and write() don't mix - -=item Attach/detach debugger from running program - -=item Optimize away empty destructors - -=item LVALUE functions for lists - -=item regexp optimiser optional - -=item delete &function - -=item C</w> regex modifier - -=item optional optimizer - -=item You WANT *how* many - -=item lexical aliases - -=item entersub XS vs Perl - -=item Self-ties - -=item Optimize away @_ - -=item Virtualize operating system access - -=item Investigate PADTMP hash pessimisation - -=item Store the current pad in the OP slab allocator - -=item repack the optree - -=item eliminate incorrect line numbers in warnings - -=item optimize tail-calls - -=back - -=item Big projects - -=over 4 - -=item make ithreads more robust - -=item iCOW - -=item (?{...}) closures in regexps - -=item A re-entrant regexp engine - -=item Add class set operations to regexp engine - -=back - -=back - -=head2 perldoc - Look up Perl documentation in Pod format. - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item OPTIONS - -B<-h>, B<-D>, B<-t>, B<-u>, B<-m> I<module>, B<-l>, B<-F>, B<-f> -I<perlfunc>, B<-q> I<perlfaq-search-regexp>, B<-v> I<perlvar>, B<-T>, B<-d> -I<destination-filename>, B<-o> I<output-formatname>, B<-M> I<module-name>, -B<-w> I<option:value> or B<-w> I<option>, B<-X>, B<-L> I<language_code>, -B<PageName|ModuleName|ProgramName>, B<-n> I<some-formatter>, B<-r>, B<-i>, -B<-V> - -=item SECURITY - -=item ENVIRONMENT - -=item CHANGES - -=item AUTHOR - -=back - -=head2 perlhist - the Perl history records - -=over 4 - -=item DESCRIPTION - -=item INTRODUCTION - -=item THE KEEPERS OF THE PUMPKIN - -=over 4 - -=item PUMPKIN? - -=back - -=item THE RECORDS - -=over 4 - -=item SELECTED RELEASE SIZES - -=item SELECTED PATCH SIZES - -=back - -=item THE KEEPERS OF THE RECORDS - -=back - -=head2 perldelta - what is new for perl v5.11.0 - -=over 4 - -=item DESCRIPTION - -=item Incompatible Changes - -=item Core Enhancements - -=item Modules and Pragmata - -=item Utility Changes - -=item Documentation - -=item Performance Enhancements - -=item Installation and Configuration Improvements - -=item Selected Bug Fixes - -=item New or Changed Diagnostics - -=item Changed Internals - -=item Known Problems - -=over 4 - -=item Platform Specific Problems - -=back - -=item Reporting Bugs - -=item SEE ALSO - -=back - -=head2 perl5110delta, perldelta - what is new for perl v5.11.0 - -=over 4 - -=item DESCRIPTION - -=item Incompatible Changes - -=item Core Enhancements - -=item Modules and Pragmata - -=item Utility Changes - -=item Documentation - -=item Performance Enhancements - -=item Installation and Configuration Improvements - -=item Selected Bug Fixes - -=item New or Changed Diagnostics - -=item Changed Internals - -=item Known Problems - -=over 4 - -=item Platform Specific Problems - -=back - -=item Reporting Bugs - -=item SEE ALSO - -=back - -=head2 perl5100delta - what is new for perl 5.10.0 - -=over 4 - -=item DESCRIPTION - -=item Core Enhancements - -=over 4 - -=item The C<feature> pragma - -=item New B<-E> command-line switch - -=item Defined-or operator - -=item Switch and Smart Match operator - -=item Regular expressions - -Recursive Patterns, Named Capture Buffers, Possessive Quantifiers, -Backtracking control verbs, Relative backreferences, C<\K> escape, Vertical -and horizontal whitespace, and linebreak - -=item C<say()> - -=item Lexical C<$_> - -=item The C<_> prototype - -=item UNITCHECK blocks - -=item New Pragma, C<mro> - -=item readdir() may return a "short filename" on Windows - -=item readpipe() is now overridable - -=item Default argument for readline() - -=item state() variables - -=item Stacked filetest operators - -=item UNIVERSAL::DOES() - -=item Formats - -=item Byte-order modifiers for pack() and unpack() - -=item C<no VERSION> - -=item C<chdir>, C<chmod> and C<chown> on filehandles - -=item OS groups - -=item Recursive sort subs - -=item Exceptions in constant folding - -=item Source filters in @INC - -=item New internal variables - -C<${^RE_DEBUG_FLAGS}>, C<${^CHILD_ERROR_NATIVE}>, C<${^RE_TRIE_MAXBUF}>, -C<${^WIN32_SLOPPY_STAT}> - -=item Miscellaneous - -=item UCD 5.0.0 - -=item MAD - -=item kill() on Windows - -=back - -=item Incompatible Changes - -=over 4 - -=item Packing and UTF-8 strings - -=item Byte/character count feature in unpack() - -=item The C<$*> and C<$#> variables have been removed - -=item substr() lvalues are no longer fixed-length - -=item Parsing of C<-f _> - -=item C<:unique> - -=item Effect of pragmas in eval - -=item chdir FOO - -=item Handling of .pmc files - -=item $^V is now a C<version> object instead of a v-string - -=item @- and @+ in patterns - -=item $AUTOLOAD can now be tainted - -=item Tainting and printf - -=item undef and signal handlers - -=item strictures and dereferencing in defined() - -=item C<(?p{})> has been removed - -=item Pseudo-hashes have been removed - -=item Removal of the bytecode compiler and of perlcc - -=item Removal of the JPL - -=item Recursive inheritance detected earlier - -=back - -=item Modules and Pragmata - -=over 4 - -=item Upgrading individual core modules - -=item Pragmata Changes - -C<feature>, C<mro>, Scoping of the C<sort> pragma, Scoping of C<bignum>, -C<bigint>, C<bigrat>, C<base>, C<strict> and C<warnings>, C<version>, -C<warnings>, C<less> - -=item New modules - -=item Selected Changes to Core Modules - -C<Attribute::Handlers>, C<B::Lint>, C<B>, C<Thread> - -=back - -=item Utility Changes - -perl -d, ptar, ptardiff, shasum, corelist, h2ph and h2xs, perlivp, -find2perl, config_data, cpanp, cpan2dist, pod2html - -=item New Documentation - -=item Performance Enhancements - -=over 4 - -=item In-place sorting - -=item Lexical array access - -=item XS-assisted SWASHGET - -=item Constant subroutines - -=item C<PERL_DONT_CREATE_GVSV> - -=item Weak references are cheaper - -=item sort() enhancements - -=item Memory optimisations - -=item UTF-8 cache optimisation - -=item Sloppy stat on Windows - -=item Regular expressions optimisations - -Engine de-recursivised, Single char char-classes treated as literals, Trie -optimisation of literal string alternations, Aho-Corasick start-point -optimisation - -=back - -=item Installation and Configuration Improvements - -=over 4 - -=item Configuration improvements - -C<-Dusesitecustomize>, Relocatable installations, strlcat() and strlcpy(), -C<d_pseudofork> and C<d_printf_format_null>, Configure help - -=item Compilation improvements - -Parallel build, Borland's compilers support, Static build on Windows, -ppport.h files, C++ compatibility, Support for Microsoft 64-bit compiler, -Visual C++, Win32 builds - -=item Installation improvements - -Module auxiliary files - -=item New Or Improved Platforms - -=back - -=item Selected Bug Fixes - -strictures in regexp-eval blocks, Calling CORE::require(), Subscripts of -slices, C<no warnings 'category'> works correctly with -w, threads -improvements, chr() and negative values, PERL5SHELL and tainting, Using -*FILE{IO}, Overloading and reblessing, Overloading and UTF-8, eval memory -leaks fixed, Random device on Windows, PERLIO_DEBUG, PerlIO::scalar and -read-only scalars, study() and UTF-8, Critical signals, @INC-hook fix, -C<-t> switch fix, Duping UTF-8 filehandles, Localisation of hash elements - -=item New or Changed Diagnostics - -Use of uninitialized value, Deprecated use of my() in false conditional, -!=~ should be !~, Newline in left-justified string, Too late for "-T" -option, "%s" variable %s masks earlier declaration, -readdir()/closedir()/etc. attempted on invalid dirhandle, Opening -dirhandle/filehandle %s also as a file/directory, Use of -P is deprecated, -v-string in use/require is non-portable, perl -V - -=item Changed Internals - -=over 4 - -=item Reordering of SVt_* constants - -=item Elimination of SVt_PVBM - -=item New type SVt_BIND - -=item Removal of CPP symbols - -=item Less space is used by ops - -=item New parser - -=item Use of C<const> - -=item Mathoms - -=item C<AvFLAGS> has been removed - -=item C<av_*> changes - -=item $^H and %^H - -=item B:: modules inheritance changed - -=item Anonymous hash and array constructors - -=back - -=item Known Problems - -=over 4 - -=item UTF-8 problems - -=back - -=item Platform Specific Problems - -=item Reporting Bugs - -=item SEE ALSO - -=back - -=head2 perl595delta - what is new for perl v5.9.5 - -=over 4 - -=item DESCRIPTION - -=item Incompatible Changes - -=over 4 - -=item Tainting and printf - -=item undef and signal handlers - -=item strictures and array/hash dereferencing in defined() - -=item C<(?p{})> has been removed - -=item Pseudo-hashes have been removed - -=item Removal of the bytecode compiler and of perlcc - -=item Removal of the JPL - -=item Recursive inheritance detected earlier - -=back - -=item Core Enhancements - -=over 4 - -=item Regular expressions - -Recursive Patterns, Named Capture Buffers, Possessive Quantifiers, -Backtracking control verbs, Relative backreferences, C<\K> escape, Vertical -and horizontal whitespace, and linebreak - -=item The C<_> prototype - -=item UNITCHECK blocks - -=item readpipe() is now overridable - -=item default argument for readline() - -=item UCD 5.0.0 - -=item Smart match - -=item Implicit loading of C<feature> - -=back - -=item Modules and Pragmas - -=over 4 - -=item New Pragma, C<mro> - -=item bignum, bigint, bigrat - -=item Math::BigInt/Math::BigFloat - -config(), import(), roundmode common, bpi(), bcos(), bsin(), batan(), -batan2(), bmuladd(), bexp(), bnok(), from_hex(), from_oct(), and -from_bin(), as_oct() - -=item New Core Modules - -=item Module changes - -C<assertions>, C<base>, C<strict> and C<warnings>, C<warnings>, C<less>, -C<Attribute::Handlers>, C<B::Lint>, C<B>, C<Thread> - -=back - -=item Utility Changes - -=over 4 - -=item C<cpanp> - -=item C<cpan2dist> - -=item C<pod2html> - -=back - -=item Documentation - -=over 4 - -=item New manpage, perlunifaq - -=back - -=item Performance Enhancements - -=item Installation and Configuration Improvements - -=over 4 - -=item C++ compatibility - -=item Visual C++ - -=item Static build on Win32 - -=item win32 builds - -=item C<d_pseudofork> and C<d_printf_format_null> - -=item Help - -=item 64bit systems - -=item Ports - -=back - -=item Selected Bug Fixes - -=item New or Changed Diagnostics - -=over 4 - -=item Deprecations - -=back - -=item Changed Internals - -=item Known Problems - -=over 4 - -=item Platform Specific Problems - -=back - -=item Reporting Bugs - -=item SEE ALSO - -=back - -=head2 perl594delta - what is new for perl v5.9.4 - -=over 4 - -=item DESCRIPTION - -=item Incompatible Changes - -=over 4 - -=item chdir FOO - -=item Handling of pmc files - -=item @- and @+ in patterns - -=item $AUTOLOAD can now be tainted - -=back - -=item Core Enhancements - -=over 4 - -=item state() variables - -=item UNIVERSAL::DOES() - -=item Exceptions in constant folding - -=item Source filters in @INC - -=item MAD - -=back - -=item Modules and Pragmas - -=over 4 - -=item New Core Modules - -=back - -=item Utility Changes - -=over 4 - -=item config_data - -=back - -=item Documentation - -=over 4 - -=item New manpage, perlpragma - -=item New manpage, perlreguts - -=item New manpage, perlunitut - -=back - -=item Performance Enhancements - -=over 4 - -=item Memory optimisations - -=item UTF-8 cache optimisation - -=item Regular expressions - -Engine de-recursivised, Single char char-classes treated as literals, Trie -optimisation of literal string alternations, Aho-Corasick start-point -optimisation - -=item Sloppy stat on Windows - -=back - -=item Installation and Configuration Improvements - -=over 4 - -=item Relocatable installations - -=item Ports - -=item Compilation improvements - -=item New probes - -=item Windows build improvements - -Building XS extensions, Support for 64-bit compiler - -=back - -=item Selected Bug Fixes - -=over 4 - -=item PERL5SHELL and tainting - -=item Using *FILE{IO} - -=item Overloading and reblessing - -=item Overloading and UTF-8 - -=item eval memory leaks fixed - -=item Random device on Windows - -=back - -=item New or Changed Diagnostics - -State variable %s will be reinitialized - -=item Changed Internals - -=item Known Problems - -=item Reporting Bugs - -=item SEE ALSO - -=back - -=head2 perl593delta - what is new for perl v5.9.3 - -=over 4 - -=item DESCRIPTION - -=item Incompatible Changes - -=over 4 - -=item Parsing of C<-f _> - -=item C<mkdir()> - -=item Magic goto and eval - -=item C<$#> has been removed - -=item C<:unique> - -=item Scoping of the C<sort> pragma - -=back - -=item Core Enhancements - -=over 4 - -=item The C<feature> pragma - -=item Switch and Smart Match operator - -=item C<say()> - -=item C<CLONE_SKIP()> - -=item C<${^CHILD_ERROR_NATIVE}> - -=item Assertions - -=item Unicode Character Database 4.1.0 - -=item C<no VERSION> - -=item Recursive sort subs - -=item Effect of pragmas in eval - -=item New B<-E> command-line switch - -=item C<chdir>, C<chmod> and C<chown> on filehandles - -=item OS groups - -=back - -=item Modules and Pragmata - -=over 4 - -=item New Core Modules - -=back - -=item Utility Changes - -=over 4 - -=item C<ptar> - -=item C<ptardiff> - -=item C<shasum> - -=item C<h2xs> enhancements - -=item C<perlivp> enhancements - -=back - -=item Documentation - -=over 4 - -=item Perl Glossary - -=back - -=item Performance Enhancements - -=over 4 - -=item XS-assisted SWASHGET - -=item Constant subroutines - -=item C<PERL_DONT_CREATE_GVSV> - -=item Weak references are cheaper - -=item sort() enhancements - -=back - -=item Installation and Configuration Improvements - -=over 4 - -=item Compilation improvements - -=item New Or Improved Platforms - -=item New probes - -=item Module auxiliary files - -=back - -=item Selected Bug Fixes - -=over 4 - -=item C<defined $$x> - -=item Calling CORE::require() - -=item Subscripts of slices - -=item Remove over-optimisation - -=item sprintf() fixes - -=item no warnings 'category' works correctly with -w - -=item Smaller fixes - -=item More Unicode Fixes - -=back - -=item New or Changed Diagnostics - -=over 4 - -=item Attempt to set length of freed array - -=item Non-string passed as bitmask - -=item Search pattern not terminated or ternary operator parsed as search -pattern - -=item "%s" variable %s masks earlier declaration - -=item readdir()/closedir()/etc. attempted on invalid dirhandle - -=back - -=item Changed Internals - -=over 4 - -=item B:: modules inheritance changed - -=back - -=item Reporting Bugs - -=item SEE ALSO - -=back - -=head2 perl592delta - what is new for perl v5.9.2 - -=over 4 - -=item DESCRIPTION - -=item Incompatible Changes - -=over 4 - -=item Packing and UTF-8 strings - -=item Miscellaneous - -=back - -=item Core Enhancements - -=over 4 - -=item Malloc wrapping - -=item Unicode Character Database 4.0.1 - -=item suidperl less insecure - -=item PERLIO_DEBUG - -=item Formats - -=item Unicode Character Classes - -=item Byte-order modifiers for pack() and unpack() - -=item Byte count feature in pack() - -=item New variables - -=back - -=item Modules and Pragmata - -=over 4 - -=item New modules - -=item Updated And Improved Modules and Pragmata - -B::Concise, Socket, Sys::Syslog, threads - -=back - -=item Utility Changes - -=item Performance Enhancements - -=item Installation and Configuration Improvements - -=item Selected Bug Fixes - -=item New or Changed Diagnostics - -=item Changed Internals - -=item Known Problems - -=item Plans for the next release - -=item Reporting Bugs - -=item SEE ALSO - -=back - -=head2 perl591delta - what is new for perl v5.9.1 - -=over 4 - -=item DESCRIPTION - -=item Incompatible Changes - -=over 4 - -=item substr() lvalues are no longer fixed-length - -=item The C<:unique> attribute is only meaningful for globals - -=back - -=item Core Enhancements - -=over 4 - -=item Lexical C<$_> - -=item Tied hashes in scalar context - -=item Formats - -=item Stacked filetest operators - -=back - -=item Modules and Pragmata - -Benchmark, Carp, Exporter, FindBin, List::Util, threads::shared - -=item Utility Changes - -=item Documentation - -=item Performance Enhancements - -=item Selected Bug Fixes - -=over 4 - -=item UTF-8 bugs - -=item Threading bugs - -=item More bugs - -=back - -=item New or Changed Diagnostics - -=item Changed Internals - -=over 4 - -=item Reordering of SVt_* constants - -=item Removal of CPP symbols - -=item Less space is used by ops - -=item New parser - -=back - -=item Configuration and Building - -=item Known Problems - -=over 4 - -=item Platform Specific Problems - -=back - -=item To-do for perl 5.10.0 - -=item Reporting Bugs - -=item SEE ALSO - -=back - -=head2 perl590delta - what is new for perl v5.9.0 - -=over 4 - -=item DESCRIPTION - -=item Incompatible Changes - -=over 4 - -=item Hash Randomisation - -=item UTF-8 On Filehandles No Longer Activated By Locale - -=item Single-number v-strings are no longer v-strings before "=>" - -=item (Win32) The -C Switch Has Been Repurposed - -=item (Win32) The /d Switch Of cmd.exe - -=item The C<$*> variable has been removed - -=back - -=item Core Enhancements - -=over 4 - -=item Assertions - -=item Defined-or operators - -=item UTF-8 no longer default under UTF-8 locales - -=item Unsafe signals again available - -=item Tied Arrays with Negative Array Indices - -=item local ${$x} - -=item Unicode Character Database 4.0.0 - -=item Miscellaneous Enhancements - -=back - -=item Modules and Pragmata - -=over 4 - -=item Updated Modules And Pragmata - -base, B::Bytecode, B::Concise, B::Deparse, Benchmark, ByteLoader, bytes, -CGI, charnames, CPAN, Data::Dumper, DB_File, Devel::PPPort, Digest::MD5, -Encode, fields, libnet, Math::BigInt, MIME::Base64, NEXT, Net::Ping, -PerlIO::scalar, podlators, Pod::LaTeX, PodParsers, Pod::Perldoc, -Scalar::Util, Storable, strict, Term::ANSIcolor, Test::Harness, Test::More, -Test::Simple, Text::Balanced, Time::HiRes, threads, threads::shared, -Unicode::Collate, Unicode::Normalize, Win32::GetFolderPath, -Win32::GetOSVersion - -=back - -=item Utility Changes - -=item New Documentation - -=item Performance Enhancements - -=item Installation and Configuration Improvements - -=over 4 - -=item Platform-specific enhancements - -=back - -=item Selected Bug Fixes - -=over 4 - -=item Closures, eval and lexicals - -=item Generic fixes - -=item Platform-specific fixes - -=back - -=item New or Changed Diagnostics - -=over 4 - -=item Changed "A thread exited while %d threads were running" - -=item Removed "Attempt to clear a restricted hash" - -=item New "Illegal declaration of anonymous subroutine" - -=item Changed "Invalid range "%s" in transliteration operator" - -=item New "Missing control char name in \c" - -=item New "Newline in left-justified string for %s" - -=item New "Possible precedence problem on bitwise %c operator" - -=item New "read() on %s filehandle %s" - -=item New "Tied variable freed while still in use" - -=item New "To%s: illegal mapping '%s'" - -=item New "Use of freed value in iteration" - -=back - -=item Changed Internals - -=item New Tests - -=item Known Problems - -=over 4 - -=item Tied hashes in scalar context - -=item Net::Ping 450_service and 510_ping_udp failures - -=item B::C - -=back - -=item Platform Specific Problems - -=over 4 - -=item EBCDIC Platforms - -=item Cygwin 1.5 problems - -=item HP-UX: HP cc warnings about sendfile and sendpath - -=item IRIX: t/uni/tr_7jis.t falsely failing - -=item Mac OS X: no usemymalloc - -=item Tru64: No threaded builds with GNU cc (gcc) - -=item Win32: sysopen, sysread, syswrite - -=back - -=item TODO - -=item Reporting Bugs - -=item SEE ALSO - -=back - -=head2 perl588delta - what is new for perl v5.8.8 - -=over 4 - -=item DESCRIPTION - -=item Incompatible Changes - -=item Core Enhancements - -=item Modules and Pragmata - -=item Utility Changes - -=over 4 - -=item C<h2xs> enhancements - -=item C<perlivp> enhancements - -=back - -=item New Documentation - -=item Performance Enhancements - -=item Installation and Configuration Improvements - -=item Selected Bug Fixes - -=over 4 - -=item no warnings 'category' works correctly with -w - -=item Remove over-optimisation - -=item sprintf() fixes - -=item Debugger and Unicode slowdown - -=item Smaller fixes - -=back - -=item New or Changed Diagnostics - -=over 4 - -=item Attempt to set length of freed array - -=item Non-string passed as bitmask - -=item Search pattern not terminated or ternary operator parsed as search -pattern - -=back - -=item Changed Internals - -=item Platform Specific Problems - -=item Reporting Bugs - -=item SEE ALSO - -=back - -=head2 perl587delta - what is new for perl v5.8.7 - -=over 4 - -=item DESCRIPTION - -=item Incompatible Changes - -=item Core Enhancements - -=over 4 - -=item Unicode Character Database 4.1.0 - -=item suidperl less insecure - -=item Optional site customization script - -=item C<Config.pm> is now much smaller. - -=back - -=item Modules and Pragmata - -=item Utility Changes - -=over 4 - -=item find2perl enhancements - -=back - -=item Performance Enhancements - -=item Installation and Configuration Improvements - -=item Selected Bug Fixes - -=item New or Changed Diagnostics - -=item Changed Internals - -=item Known Problems - -=item Platform Specific Problems - -=item Reporting Bugs - -=item SEE ALSO - -=back - -=head2 perl586delta - what is new for perl v5.8.6 - -=over 4 - -=item DESCRIPTION - -=item Incompatible Changes - -=item Core Enhancements - -=item Modules and Pragmata - -=item Utility Changes - -=item Performance Enhancements - -=item Selected Bug Fixes - -=item New or Changed Diagnostics - -=item Changed Internals - -=item New Tests - -=item Reporting Bugs - -=item SEE ALSO - -=back - -=head2 perl585delta - what is new for perl v5.8.5 - -=over 4 - -=item DESCRIPTION - -=item Incompatible Changes - -=item Core Enhancements - -=item Modules and Pragmata - -=item Utility Changes - -=over 4 - -=item Perl's debugger - -=item h2ph - -=back - -=item Installation and Configuration Improvements - -=item Selected Bug Fixes - -=item New or Changed Diagnostics - -=item Changed Internals - -=item Known Problems - -=item Platform Specific Problems - -=item Reporting Bugs - -=item SEE ALSO - -=back - -=head2 perl584delta - what is new for perl v5.8.4 - -=over 4 - -=item DESCRIPTION - -=item Incompatible Changes - -=item Core Enhancements - -=over 4 - -=item Malloc wrapping - -=item Unicode Character Database 4.0.1 - -=item suidperl less insecure - -=item format - -=back - -=item Modules and Pragmata - -=over 4 - -=item Updated modules - -Attribute::Handlers, B, Benchmark, CGI, Carp, Cwd, Exporter, File::Find, -IO, IPC::Open3, Local::Maketext, Math::BigFloat, Math::BigInt, -Math::BigRat, MIME::Base64, ODBM_File, POSIX, Shell, Socket, Storable, -Switch, Sys::Syslog, Term::ANSIColor, Time::HiRes, Unicode::UCD, Win32, -base, open, threads, utf8 - -=back - -=item Performance Enhancements - -=item Utility Changes - -=item Installation and Configuration Improvements - -=item Selected Bug Fixes - -=item New or Changed Diagnostics - -=item Changed Internals - -=item Future Directions - -=item Platform Specific Problems - -=item Reporting Bugs - -=item SEE ALSO - -=back - -=head2 perl583delta - what is new for perl v5.8.3 - -=over 4 - -=item DESCRIPTION - -=item Incompatible Changes - -=item Core Enhancements - -=item Modules and Pragmata - -CGI, Cwd, Digest, Digest::MD5, Encode, File::Spec, FindBin, List::Util, -Math::BigInt, PodParser, Pod::Perldoc, POSIX, Unicode::Collate, -Unicode::Normalize, Test::Harness, threads::shared - -=item Utility Changes - -=item New Documentation - -=item Installation and Configuration Improvements - -=item Selected Bug Fixes - -=item New or Changed Diagnostics - -=item Changed Internals - -=item Configuration and Building - -=item Platform Specific Problems - -=item Known Problems - -=item Future Directions - -=item Obituary - -=item Reporting Bugs - -=item SEE ALSO - -=back - -=head2 perl582delta - what is new for perl v5.8.2 - -=over 4 - -=item DESCRIPTION - -=item Incompatible Changes - -=item Core Enhancements - -=over 4 - -=item Hash Randomisation - -=item Threading - -=back - -=item Modules and Pragmata - -=over 4 - -=item Updated Modules And Pragmata - -Devel::PPPort, Digest::MD5, I18N::LangTags, libnet, MIME::Base64, -Pod::Perldoc, strict, Tie::Hash, Time::HiRes, Unicode::Collate, -Unicode::Normalize, UNIVERSAL - -=back - -=item Selected Bug Fixes - -=item Changed Internals - -=item Platform Specific Problems - -=item Future Directions - -=item Reporting Bugs - -=item SEE ALSO - -=back - -=head2 perl581delta - what is new for perl v5.8.1 - -=over 4 - -=item DESCRIPTION - -=item Incompatible Changes - -=over 4 - -=item Hash Randomisation - -=item UTF-8 On Filehandles No Longer Activated By Locale - -=item Single-number v-strings are no longer v-strings before "=>" - -=item (Win32) The -C Switch Has Been Repurposed - -=item (Win32) The /d Switch Of cmd.exe - -=back - -=item Core Enhancements - -=over 4 - -=item UTF-8 no longer default under UTF-8 locales - -=item Unsafe signals again available - -=item Tied Arrays with Negative Array Indices - -=item local ${$x} - -=item Unicode Character Database 4.0.0 - -=item Deprecation Warnings - -=item Miscellaneous Enhancements - -=back - -=item Modules and Pragmata - -=over 4 - -=item Updated Modules And Pragmata - -base, B::Bytecode, B::Concise, B::Deparse, Benchmark, ByteLoader, bytes, -CGI, charnames, CPAN, Data::Dumper, DB_File, Devel::PPPort, Digest::MD5, -Encode, fields, libnet, Math::BigInt, MIME::Base64, NEXT, Net::Ping, -PerlIO::scalar, podlators, Pod::LaTeX, PodParsers, Pod::Perldoc, -Scalar::Util, Storable, strict, Term::ANSIcolor, Test::Harness, Test::More, -Test::Simple, Text::Balanced, Time::HiRes, threads, threads::shared, -Unicode::Collate, Unicode::Normalize, Win32::GetFolderPath, -Win32::GetOSVersion - -=back - -=item Utility Changes - -=item New Documentation - -=item Installation and Configuration Improvements - -=over 4 - -=item Platform-specific enhancements - -=back - -=item Selected Bug Fixes - -=over 4 - -=item Closures, eval and lexicals - -=item Generic fixes - -=item Platform-specific fixes - -=back - -=item New or Changed Diagnostics - -=over 4 - -=item Changed "A thread exited while %d threads were running" - -=item Removed "Attempt to clear a restricted hash" - -=item New "Illegal declaration of anonymous subroutine" - -=item Changed "Invalid range "%s" in transliteration operator" - -=item New "Missing control char name in \c" - -=item New "Newline in left-justified string for %s" - -=item New "Possible precedence problem on bitwise %c operator" - -=item New "Pseudo-hashes are deprecated" - -=item New "read() on %s filehandle %s" - -=item New "5.005 threads are deprecated" - -=item New "Tied variable freed while still in use" - -=item New "To%s: illegal mapping '%s'" - -=item New "Use of freed value in iteration" - -=back - -=item Changed Internals - -=item New Tests - -=item Known Problems - -=over 4 - -=item Tied hashes in scalar context - -=item Net::Ping 450_service and 510_ping_udp failures - -=item B::C - -=back - -=item Platform Specific Problems - -=over 4 - -=item EBCDIC Platforms - -=item Cygwin 1.5 problems - -=item HP-UX: HP cc warnings about sendfile and sendpath - -=item IRIX: t/uni/tr_7jis.t falsely failing - -=item Mac OS X: no usemymalloc - -=item Tru64: No threaded builds with GNU cc (gcc) - -=item Win32: sysopen, sysread, syswrite - -=back - -=item Future Directions - -=item Reporting Bugs - -=item SEE ALSO - -=back - -=head2 perl58delta - what is new for perl v5.8.0 - -=over 4 - -=item DESCRIPTION - -=item Highlights In 5.8.0 - -=item Incompatible Changes - -=over 4 - -=item Binary Incompatibility - -=item 64-bit platforms and malloc - -=item AIX Dynaloading - -=item Attributes for C<my> variables now handled at run-time - -=item Socket Extension Dynamic in VMS - -=item IEEE-format Floating Point Default on OpenVMS Alpha - -=item New Unicode Semantics (no more C<use utf8>, almost) - -=item New Unicode Properties - -=item REF(...) Instead Of SCALAR(...) - -=item pack/unpack D/F recycled - -=item glob() now returns filenames in alphabetical order - -=item Deprecations - -=back - -=item Core Enhancements - -=over 4 - -=item Unicode Overhaul - -=item PerlIO is Now The Default - -=item ithreads - -=item Restricted Hashes - -=item Safe Signals - -=item Understanding of Numbers - -=item Arrays now always interpolate into double-quoted strings [561] - -=item Miscellaneous Changes - -=back - -=item Modules and Pragmata - -=over 4 - -=item New Modules and Pragmata - -=item Updated And Improved Modules and Pragmata - -=back - -=item Utility Changes - -=item New Documentation - -=item Performance Enhancements - -=item Installation and Configuration Improvements - -=over 4 - -=item Generic Improvements - -=item New Or Improved Platforms - -=back - -=item Selected Bug Fixes - -=over 4 - -=item Platform Specific Changes and Fixes - -=back - -=item New or Changed Diagnostics - -=item Changed Internals - -=item Security Vulnerability Closed [561] - -=item New Tests - -=item Known Problems - -=over 4 - -=item The Compiler Suite Is Still Very Experimental - -=item Localising Tied Arrays and Hashes Is Broken - -=item Building Extensions Can Fail Because Of Largefiles - -=item Modifying $_ Inside for(..) - -=item mod_perl 1.26 Doesn't Build With Threaded Perl - -=item lib/ftmp-security tests warn 'system possibly insecure' - -=item libwww-perl (LWP) fails base/date #51 - -=item PDL failing some tests - -=item Perl_get_sv - -=item Self-tying Problems - -=item ext/threads/t/libc - -=item Failure of Thread (5.005-style) tests - -=item Timing problems - -=item Tied/Magical Array/Hash Elements Do Not Autovivify - -=item Unicode in package/class and subroutine names does not work - -=back - -=item Platform Specific Problems - -=over 4 - -=item AIX - -=item Alpha systems with old gccs fail several tests - -=item AmigaOS - -=item BeOS - -=item Cygwin "unable to remap" - -=item Cygwin ndbm tests fail on FAT - -=item DJGPP Failures - -=item FreeBSD built with ithreads coredumps reading large directories - -=item FreeBSD Failing locale Test 117 For ISO 8859-15 Locales - -=item IRIX fails ext/List/Util/t/shuffle.t or Digest::MD5 - -=item HP-UX lib/posix Subtest 9 Fails When LP64-Configured - -=item Linux with glibc 2.2.5 fails t/op/int subtest #6 with -Duse64bitint - -=item Linux With Sfio Fails op/misc Test 48 - -=item Mac OS X - -=item Mac OS X dyld undefined symbols - -=item OS/2 Test Failures - -=item op/sprintf tests 91, 129, and 130 - -=item SCO - -=item Solaris 2.5 - -=item Solaris x86 Fails Tests With -Duse64bitint - -=item SUPER-UX (NEC SX) - -=item Term::ReadKey not working on Win32 - -=item UNICOS/mk - -=item UTS - -=item VOS (Stratus) - -=item VMS - -=item Win32 - -=item XML::Parser not working - -=item z/OS (OS/390) - -=item Unicode Support on EBCDIC Still Spotty - -=item Seen In Perl 5.7 But Gone Now - -=back - -=item Reporting Bugs - -=item SEE ALSO - -=item HISTORY - -=back - -=head2 perl573delta - what's new for perl v5.7.3 - -=over 4 - -=item DESCRIPTION - -=item Changes - -=item Reporting Bugs - -=item SEE ALSO - -=item HISTORY - -=back - -=head2 perl572delta - what's new for perl v5.7.2 - -=over 4 - -=item DESCRIPTION - -=item Security Vulnerability Closed - -=item Incompatible Changes - -=over 4 - -=item 64-bit platforms and malloc - -=item AIX Dynaloading - -=item Socket Extension Dynamic in VMS - -=item Different Definition of the Unicode Character Classes \p{In...} - -=item Deprecations - -=back - -=item Core Enhancements - -=item Modules and Pragmata - -=over 4 - -=item New Modules and Distributions - -=item Updated And Improved Modules and Pragmata - -=back - -=item Utility Changes - -=item New Documentation - -=item Installation and Configuration Improvements - -=over 4 - -=item New Or Improved Platforms - -=item Generic Improvements - -=back - -=item Selected Bug Fixes - -=over 4 - -=item Platform Specific Changes and Fixes - -=back - -=item New or Changed Diagnostics - -=item Source Code Enhancements - -=over 4 - -=item MAGIC constants - -=item Better commented code - -=item Regex pre-/post-compilation items matched up - -=item gcc -Wall - -=back - -=item New Tests - -=item Known Problems - -=over 4 - -=item AIX - -=item Amiga Perl Invoking Mystery - -=item lib/ftmp-security tests warn 'system possibly insecure' - -=item Cygwin intermittent failures of lib/Memoize/t/expire_file 11 and 12 - -=item HP-UX lib/io_multihomed Fails When LP64-Configured - -=item HP-UX lib/posix Subtest 9 Fails When LP64-Configured - -=item Linux With Sfio Fails op/misc Test 48 - -=item OS/390 - -=item op/sprintf tests 129 and 130 - -=item Failure of Thread tests - -=item UNICOS - -=item UTS - -=item VMS - -=item Win32 - -=item Localising a Tied Variable Leaks Memory - -=item Self-tying of Arrays and Hashes Is Forbidden - -=item Variable Attributes are not Currently Usable for Tieing - -=item Building Extensions Can Fail Because Of Largefiles - -=item The Compiler Suite Is Still Experimental - -=item The Long Double Support is Still Experimental - -=back - -=item Reporting Bugs - -=item SEE ALSO - -=item HISTORY - -=back - -=head2 perl571delta - what's new for perl v5.7.1 - -=over 4 - -=item DESCRIPTION - -=item Security Vulnerability Closed - -=item Incompatible Changes - -=item Core Enhancements - -=over 4 - -=item AUTOLOAD Is Now Lvaluable - -=item PerlIO is Now The Default - -=item Signals Are Now Safe - -=back - -=item Modules and Pragmata - -=over 4 - -=item New Modules - -=item Updated And Improved Modules and Pragmata - -=back - -=item Performance Enhancements - -=item Utility Changes - -=item New Documentation - -=over 4 - -=item perlclib - -=item perliol - -=item README.aix - -=item README.bs2000 - -=item README.macos - -=item README.mpeix - -=item README.solaris - -=item README.vos - -=item Porting/repository.pod - -=back - -=item Installation and Configuration Improvements - -=over 4 - -=item New Or Improved Platforms - -=item Generic Improvements - -d_cmsghdr, d_fcntl_can_lock, d_fsync, d_getitimer, d_getpagsz, d_msghdr_s, -need_va_copy, d_readv, d_recvmsg, d_sendmsg, sig_size, d_sockatmark, -d_strtoq, d_u32align, d_ualarm, d_usleep - -=back - -=item Selected Bug Fixes - -=over 4 - -=item Platform Specific Changes and Fixes - -=back - -=item New or Changed Diagnostics - -=item Changed Internals - -=item New Tests - -=item Known Problems - -=over 4 - -=item AIX vac 5.0.0.0 May Produce Buggy Code For Perl - -=item lib/ftmp-security tests warn 'system possibly insecure' - -=item lib/io_multihomed Fails In LP64-Configured HP-UX - -=item Test lib/posix Subtest 9 Fails In LP64-Configured HP-UX - -=item lib/b test 19 - -=item Linux With Sfio Fails op/misc Test 48 - -=item sigaction test 13 in VMS - -=item sprintf tests 129 and 130 - -=item Failure of Thread tests - -=item Localising a Tied Variable Leaks Memory - -=item Self-tying of Arrays and Hashes Is Forbidden - -=item Building Extensions Can Fail Because Of Largefiles - -=item The Compiler Suite Is Still Experimental - -=back - -=item Reporting Bugs - -=item SEE ALSO - -=item HISTORY - -=back - -=head2 perl570delta - what's new for perl v5.7.0 - -=over 4 - -=item DESCRIPTION - -=item Security Vulnerability Closed - -=item Incompatible Changes - -=item Core Enhancements - -=item Modules and Pragmata - -=over 4 - -=item New Modules - -=item Updated And Improved Modules and Pragmata - -=back - -=item Utility Changes - -=item New Documentation - -=item Performance Enhancements - -=item Installation and Configuration Improvements - -=over 4 - -=item Generic Improvements - -=back - -=item Selected Bug Fixes - -=over 4 - -=item Platform Specific Changes and Fixes - -=back - -=item New or Changed Diagnostics - -=item Changed Internals - -=item Known Problems - -=over 4 - -=item Unicode Support Still Far From Perfect - -=item EBCDIC Still A Lost Platform - -=item Building Extensions Can Fail Because Of Largefiles - -=item ftmp-security tests warn 'system possibly insecure' - -=item Test lib/posix Subtest 9 Fails In LP64-Configured HP-UX - -=item Long Doubles Still Don't Work In Solaris - -=item Linux With Sfio Fails op/misc Test 48 - -=item Storable tests fail in some platforms - -=item Threads Are Still Experimental - -=item The Compiler Suite Is Still Experimental - -=back - -=item Reporting Bugs - -=item SEE ALSO - -=item HISTORY - -=back - -=head2 perl561delta - what's new for perl v5.6.x - -=over 4 - -=item DESCRIPTION - -=item Summary of changes between 5.6.0 and 5.6.1 - -=over 4 - -=item Security Issues - -=item Core bug fixes - -C<UNIVERSAL::isa()>, Memory leaks, Numeric conversions, qw(a\\b), caller(), -Bugs in regular expressions, "slurp" mode, Autovivification of symbolic -references to special variables, Lexical warnings, Spurious warnings and -errors, glob(), Tainting, sort(), #line directives, Subroutine prototypes, -map(), Debugger, PERL5OPT, chop(), Unicode support, 64-bit support, -Compiler, Lvalue subroutines, IO::Socket, File::Find, xsubpp, C<no -Module;>, Tests - -=item Core features - -=item Configuration issues - -=item Documentation - -=item Bundled modules - -B::Concise, File::Temp, Pod::LaTeX, Pod::Text::Overstrike, CGI, CPAN, -Class::Struct, DB_File, Devel::Peek, File::Find, Getopt::Long, IO::Poll, -IPC::Open3, Math::BigFloat, Math::Complex, Net::Ping, Opcode, Pod::Parser, -Pod::Text, SDBM_File, Sys::Syslog, Tie::RefHash, Tie::SubstrHash - -=item Platform-specific improvements - -NCR MP-RAS, NonStop-UX - -=back - -=item Core Enhancements - -=over 4 - -=item Interpreter cloning, threads, and concurrency - -=item Lexically scoped warning categories - -=item Unicode and UTF-8 support - -=item Support for interpolating named characters - -=item "our" declarations - -=item Support for strings represented as a vector of ordinals - -=item Improved Perl version numbering system - -=item New syntax for declaring subroutine attributes - -=item File and directory handles can be autovivified - -=item open() with more than two arguments - -=item 64-bit support - -=item Large file support - -=item Long doubles - -=item "more bits" - -=item Enhanced support for sort() subroutines - -=item C<sort $coderef @foo> allowed - -=item File globbing implemented internally - -=item Support for CHECK blocks - -=item POSIX character class syntax [: :] supported - -=item Better pseudo-random number generator - -=item Improved C<qw//> operator - -=item Better worst-case behavior of hashes - -=item pack() format 'Z' supported - -=item pack() format modifier '!' supported - -=item pack() and unpack() support counted strings - -=item Comments in pack() templates - -=item Weak references - -=item Binary numbers supported - -=item Lvalue subroutines - -=item Some arrows may be omitted in calls through references - -=item Boolean assignment operators are legal lvalues - -=item exists() is supported on subroutine names - -=item exists() and delete() are supported on array elements - -=item Pseudo-hashes work better - -=item Automatic flushing of output buffers - -=item Better diagnostics on meaningless filehandle operations - -=item Where possible, buffered data discarded from duped input filehandle - -=item eof() has the same old magic as <> - -=item binmode() can be used to set :crlf and :raw modes - -=item C<-T> filetest recognizes UTF-8 encoded files as "text" - -=item system(), backticks and pipe open now reflect exec() failure - -=item Improved diagnostics - -=item Diagnostics follow STDERR - -=item More consistent close-on-exec behavior - -=item syswrite() ease-of-use - -=item Better syntax checks on parenthesized unary operators - -=item Bit operators support full native integer width - -=item Improved security features - -=item More functional bareword prototype (*) - -=item C<require> and C<do> may be overridden - -=item $^X variables may now have names longer than one character - -=item New variable $^C reflects C<-c> switch - -=item New variable $^V contains Perl version as a string - -=item Optional Y2K warnings - -=item Arrays now always interpolate into double-quoted strings - -=item @- and @+ provide starting/ending offsets of regex submatches - -=back - -=item Modules and Pragmata - -=over 4 - -=item Modules - -attributes, B, Benchmark, ByteLoader, constant, charnames, Data::Dumper, -DB, DB_File, Devel::DProf, Devel::Peek, Dumpvalue, DynaLoader, English, -Env, Fcntl, File::Compare, File::Find, File::Glob, File::Spec, -File::Spec::Functions, Getopt::Long, IO, JPL, lib, Math::BigInt, -Math::Complex, Math::Trig, Pod::Parser, Pod::InputObjects, Pod::Checker, -podchecker, Pod::ParseUtils, Pod::Find, Pod::Select, podselect, Pod::Usage, -pod2usage, Pod::Text and Pod::Man, SDBM_File, Sys::Syslog, Sys::Hostname, -Term::ANSIColor, Time::Local, Win32, XSLoader, DBM Filters - -=item Pragmata - -=back - -=item Utility Changes - -=over 4 - -=item dprofpp - -=item find2perl - -=item h2xs - -=item perlcc - -=item perldoc - -=item The Perl Debugger - -=back - -=item Improved Documentation - -perlapi.pod, perlboot.pod, perlcompile.pod, perldbmfilter.pod, -perldebug.pod, perldebguts.pod, perlfork.pod, perlfilter.pod, perlhack.pod, -perlintern.pod, perllexwarn.pod, perlnumber.pod, perlopentut.pod, -perlreftut.pod, perltootc.pod, perltodo.pod, perlunicode.pod - -=item Performance enhancements - -=over 4 - -=item Simple sort() using { $a <=> $b } and the like are optimized - -=item Optimized assignments to lexical variables - -=item Faster subroutine calls - -=item delete(), each(), values() and hash iteration are faster - -=back - -=item Installation and Configuration Improvements - -=over 4 - -=item -Dusethreads means something different - -=item New Configure flags - -=item Threadedness and 64-bitness now more daring - -=item Long Doubles - -=item -Dusemorebits - -=item -Duselargefiles - -=item installusrbinperl - -=item SOCKS support - -=item C<-A> flag - -=item Enhanced Installation Directories - -=item gcc automatically tried if 'cc' does not seem to be working - -=back - -=item Platform specific changes - -=over 4 - -=item Supported platforms - -=item DOS - -=item OS390 (OpenEdition MVS) - -=item VMS - -=item Win32 - -=back - -=item Significant bug fixes - -=over 4 - -=item <HANDLE> on empty files - -=item C<eval '...'> improvements - -=item All compilation errors are true errors - -=item Implicitly closed filehandles are safer - -=item Behavior of list slices is more consistent - -=item C<(\$)> prototype and C<$foo{a}> - -=item C<goto &sub> and AUTOLOAD - -=item C<-bareword> allowed under C<use integer> - -=item Failures in DESTROY() - -=item Locale bugs fixed - -=item Memory leaks - -=item Spurious subroutine stubs after failed subroutine calls - -=item Taint failures under C<-U> - -=item END blocks and the C<-c> switch - -=item Potential to leak DATA filehandles - -=back - -=item New or Changed Diagnostics - -"%s" variable %s masks earlier declaration in same %s, "my sub" not yet -implemented, "our" variable %s redeclared, '!' allowed only after types %s, -/ cannot take a count, / must be followed by a, A or Z, / must be followed -by a*, A* or Z*, / must follow a numeric type, /%s/: Unrecognized escape -\\%c passed through, /%s/: Unrecognized escape \\%c in character class -passed through, /%s/ should probably be written as "%s", %s() called too -early to check prototype, %s argument is not a HASH or ARRAY element, %s -argument is not a HASH or ARRAY element or slice, %s argument is not a -subroutine name, %s package attribute may clash with future reserved word: -%s, (in cleanup) %s, <> should be quotes, Attempt to join self, Bad evalled -substitution pattern, Bad realloc() ignored, Bareword found in conditional, -Binary number > 0b11111111111111111111111111111111 non-portable, Bit vector -size > 32 non-portable, Buffer overflow in prime_env_iter: %s, Can't check -filesystem of script "%s", Can't declare class for non-scalar %s in "%s", -Can't declare %s in "%s", Can't ignore signal CHLD, forcing to default, -Can't modify non-lvalue subroutine call, Can't read CRTL environ, Can't -remove %s: %s, skipping file, Can't return %s from lvalue subroutine, Can't -weaken a nonreference, Character class [:%s:] unknown, Character class -syntax [%s] belongs inside character classes, Constant is not %s reference, -constant(%s): %s, CORE::%s is not a keyword, defined(@array) is deprecated, -defined(%hash) is deprecated, Did not produce a valid header, (Did you mean -"local" instead of "our"?), Document contains no data, entering effective -%s failed, false [] range "%s" in regexp, Filehandle %s opened only for -output, flock() on closed filehandle %s, Global symbol "%s" requires -explicit package name, Hexadecimal number > 0xffffffff non-portable, -Ill-formed CRTL environ value "%s", Ill-formed message in prime_env_iter: -|%s|, Illegal binary digit %s, Illegal binary digit %s ignored, Illegal -number of bits in vec, Integer overflow in %s number, Invalid %s attribute: -%s, Invalid %s attributes: %s, invalid [] range "%s" in regexp, Invalid -separator character %s in attribute list, Invalid separator character %s in -subroutine attribute list, leaving effective %s failed, Lvalue subs -returning %s not implemented yet, Method %s not permitted, Missing -%sbrace%s on \N{}, Missing command in piped open, Missing name in "my sub", -No %s specified for -%c, No package name allowed for variable %s in "our", -No space allowed after -%c, no UTC offset information; assuming local time -is UTC, Octal number > 037777777777 non-portable, panic: del_backref, -panic: kid popen errno read, panic: magic_killbackrefs, Parentheses missing -around "%s" list, Possible unintended interpolation of %s in string, -Possible Y2K bug: %s, pragma "attrs" is deprecated, use "sub NAME : ATTRS" -instead, Premature end of script headers, Repeat count in pack overflows, -Repeat count in unpack overflows, realloc() of freed memory ignored, -Reference is already weak, setpgrp can't take arguments, Strange *+?{} on -zero-length expression, switching effective %s is not implemented, This -Perl can't reset CRTL environ elements (%s), This Perl can't set CRTL -environ elements (%s=%s), Too late to run %s block, Unknown open() mode -'%s', Unknown process %x sent message to prime_env_iter: %s, Unrecognized -escape \\%c passed through, Unterminated attribute parameter in attribute -list, Unterminated attribute list, Unterminated attribute parameter in -subroutine attribute list, Unterminated subroutine attribute list, Value of -CLI symbol "%s" too long, Version number must be a constant number - -=item New tests - -=item Incompatible Changes - -=over 4 - -=item Perl Source Incompatibilities - -CHECK is a new keyword, Treatment of list slices of undef has changed, -Format of $English::PERL_VERSION is different, Literals of the form -C<1.2.3> parse differently, Possibly changed pseudo-random number -generator, Hashing function for hash keys has changed, C<undef> fails on -read only values, Close-on-exec bit may be set on pipe and socket handles, -Writing C<"$$1"> to mean C<"${$}1"> is unsupported, delete(), each(), -values() and C<\(%h)>, vec(EXPR,OFFSET,BITS) enforces powers-of-two BITS, -Text of some diagnostic output has changed, C<%@> has been removed, -Parenthesized not() behaves like a list operator, Semantics of bareword -prototype C<(*)> have changed, Semantics of bit operators may have changed -on 64-bit platforms, More builtins taint their results - -=item C Source Incompatibilities - -C<PERL_POLLUTE>, C<PERL_IMPLICIT_CONTEXT>, C<PERL_POLLUTE_MALLOC> - -=item Compatible C Source API Changes - -C<PATCHLEVEL> is now C<PERL_VERSION> - -=item Binary Incompatibilities - -=back - -=item Known Problems - -=over 4 - -=item Localizing a tied hash element may leak memory - -=item Known test failures - -=item EBCDIC platforms not fully supported - -=item UNICOS/mk CC failures during Configure run - -=item Arrow operator and arrays - -=item Experimental features - -Threads, Unicode, 64-bit support, Lvalue subroutines, Weak references, The -pseudo-hash data type, The Compiler suite, Internal implementation of file -globbing, The DB module, The regular expression code constructs: - -=back - -=item Obsolete Diagnostics - -Character class syntax [: :] is reserved for future extensions, Ill-formed -logical name |%s| in prime_env_iter, In string, @%s now must be written as -\@%s, Probable precedence problem on %s, regexp too big, Use of "$$<digit>" -to mean "${$}<digit>" is deprecated - -=item Reporting Bugs - -=item SEE ALSO - -=item HISTORY - -=back - -=head2 perl56delta - what's new for perl v5.6.0 - -=over 4 - -=item DESCRIPTION - -=item Core Enhancements - -=over 4 - -=item Interpreter cloning, threads, and concurrency - -=item Lexically scoped warning categories - -=item Unicode and UTF-8 support - -=item Support for interpolating named characters - -=item "our" declarations - -=item Support for strings represented as a vector of ordinals - -=item Improved Perl version numbering system - -=item New syntax for declaring subroutine attributes - -=item File and directory handles can be autovivified - -=item open() with more than two arguments - -=item 64-bit support - -=item Large file support - -=item Long doubles - -=item "more bits" - -=item Enhanced support for sort() subroutines - -=item C<sort $coderef @foo> allowed - -=item File globbing implemented internally - -=item Support for CHECK blocks - -=item POSIX character class syntax [: :] supported - -=item Better pseudo-random number generator - -=item Improved C<qw//> operator - -=item Better worst-case behavior of hashes - -=item pack() format 'Z' supported - -=item pack() format modifier '!' supported - -=item pack() and unpack() support counted strings - -=item Comments in pack() templates - -=item Weak references - -=item Binary numbers supported - -=item Lvalue subroutines - -=item Some arrows may be omitted in calls through references - -=item Boolean assignment operators are legal lvalues - -=item exists() is supported on subroutine names - -=item exists() and delete() are supported on array elements - -=item Pseudo-hashes work better - -=item Automatic flushing of output buffers - -=item Better diagnostics on meaningless filehandle operations - -=item Where possible, buffered data discarded from duped input filehandle - -=item eof() has the same old magic as <> - -=item binmode() can be used to set :crlf and :raw modes - -=item C<-T> filetest recognizes UTF-8 encoded files as "text" - -=item system(), backticks and pipe open now reflect exec() failure - -=item Improved diagnostics - -=item Diagnostics follow STDERR - -=item More consistent close-on-exec behavior - -=item syswrite() ease-of-use - -=item Better syntax checks on parenthesized unary operators - -=item Bit operators support full native integer width - -=item Improved security features - -=item More functional bareword prototype (*) - -=item C<require> and C<do> may be overridden - -=item $^X variables may now have names longer than one character - -=item New variable $^C reflects C<-c> switch - -=item New variable $^V contains Perl version as a string - -=item Optional Y2K warnings - -=item Arrays now always interpolate into double-quoted strings - -=item @- and @+ provide starting/ending offsets of regex matches - -=back - -=item Modules and Pragmata - -=over 4 - -=item Modules - -attributes, B, Benchmark, ByteLoader, constant, charnames, Data::Dumper, -DB, DB_File, Devel::DProf, Devel::Peek, Dumpvalue, DynaLoader, English, -Env, Fcntl, File::Compare, File::Find, File::Glob, File::Spec, -File::Spec::Functions, Getopt::Long, IO, JPL, lib, Math::BigInt, -Math::Complex, Math::Trig, Pod::Parser, Pod::InputObjects, Pod::Checker, -podchecker, Pod::ParseUtils, Pod::Find, Pod::Select, podselect, Pod::Usage, -pod2usage, Pod::Text and Pod::Man, SDBM_File, Sys::Syslog, Sys::Hostname, -Term::ANSIColor, Time::Local, Win32, XSLoader, DBM Filters - -=item Pragmata - -=back - -=item Utility Changes - -=over 4 - -=item dprofpp - -=item find2perl - -=item h2xs - -=item perlcc - -=item perldoc - -=item The Perl Debugger - -=back - -=item Improved Documentation - -perlapi.pod, perlboot.pod, perlcompile.pod, perldbmfilter.pod, -perldebug.pod, perldebguts.pod, perlfork.pod, perlfilter.pod, perlhack.pod, -perlintern.pod, perllexwarn.pod, perlnumber.pod, perlopentut.pod, -perlreftut.pod, perltootc.pod, perltodo.pod, perlunicode.pod - -=item Performance enhancements - -=over 4 - -=item Simple sort() using { $a <=> $b } and the like are optimized - -=item Optimized assignments to lexical variables - -=item Faster subroutine calls - -=item delete(), each(), values() and hash iteration are faster - -=back - -=item Installation and Configuration Improvements - -=over 4 - -=item -Dusethreads means something different - -=item New Configure flags - -=item Threadedness and 64-bitness now more daring - -=item Long Doubles - -=item -Dusemorebits - -=item -Duselargefiles - -=item installusrbinperl - -=item SOCKS support - -=item C<-A> flag - -=item Enhanced Installation Directories - -=back - -=item Platform specific changes - -=over 4 - -=item Supported platforms - -=item DOS - -=item OS390 (OpenEdition MVS) - -=item VMS - -=item Win32 - -=back - -=item Significant bug fixes - -=over 4 - -=item <HANDLE> on empty files - -=item C<eval '...'> improvements - -=item All compilation errors are true errors - -=item Implicitly closed filehandles are safer - -=item Behavior of list slices is more consistent - -=item C<(\$)> prototype and C<$foo{a}> - -=item C<goto &sub> and AUTOLOAD - -=item C<-bareword> allowed under C<use integer> - -=item Failures in DESTROY() - -=item Locale bugs fixed - -=item Memory leaks - -=item Spurious subroutine stubs after failed subroutine calls - -=item Taint failures under C<-U> - -=item END blocks and the C<-c> switch - -=item Potential to leak DATA filehandles - -=back - -=item New or Changed Diagnostics - -"%s" variable %s masks earlier declaration in same %s, "my sub" not yet -implemented, "our" variable %s redeclared, '!' allowed only after types %s, -/ cannot take a count, / must be followed by a, A or Z, / must be followed -by a*, A* or Z*, / must follow a numeric type, /%s/: Unrecognized escape -\\%c passed through, /%s/: Unrecognized escape \\%c in character class -passed through, /%s/ should probably be written as "%s", %s() called too -early to check prototype, %s argument is not a HASH or ARRAY element, %s -argument is not a HASH or ARRAY element or slice, %s argument is not a -subroutine name, %s package attribute may clash with future reserved word: -%s, (in cleanup) %s, <> should be quotes, Attempt to join self, Bad evalled -substitution pattern, Bad realloc() ignored, Bareword found in conditional, -Binary number > 0b11111111111111111111111111111111 non-portable, Bit vector -size > 32 non-portable, Buffer overflow in prime_env_iter: %s, Can't check -filesystem of script "%s", Can't declare class for non-scalar %s in "%s", -Can't declare %s in "%s", Can't ignore signal CHLD, forcing to default, -Can't modify non-lvalue subroutine call, Can't read CRTL environ, Can't -remove %s: %s, skipping file, Can't return %s from lvalue subroutine, Can't -weaken a nonreference, Character class [:%s:] unknown, Character class -syntax [%s] belongs inside character classes, Constant is not %s reference, -constant(%s): %s, CORE::%s is not a keyword, defined(@array) is deprecated, -defined(%hash) is deprecated, Did not produce a valid header, (Did you mean -"local" instead of "our"?), Document contains no data, entering effective -%s failed, false [] range "%s" in regexp, Filehandle %s opened only for -output, flock() on closed filehandle %s, Global symbol "%s" requires -explicit package name, Hexadecimal number > 0xffffffff non-portable, -Ill-formed CRTL environ value "%s", Ill-formed message in prime_env_iter: -|%s|, Illegal binary digit %s, Illegal binary digit %s ignored, Illegal -number of bits in vec, Integer overflow in %s number, Invalid %s attribute: -%s, Invalid %s attributes: %s, invalid [] range "%s" in regexp, Invalid -separator character %s in attribute list, Invalid separator character %s in -subroutine attribute list, leaving effective %s failed, Lvalue subs -returning %s not implemented yet, Method %s not permitted, Missing -%sbrace%s on \N{}, Missing command in piped open, Missing name in "my sub", -No %s specified for -%c, No package name allowed for variable %s in "our", -No space allowed after -%c, no UTC offset information; assuming local time -is UTC, Octal number > 037777777777 non-portable, panic: del_backref, -panic: kid popen errno read, panic: magic_killbackrefs, Parentheses missing -around "%s" list, Possible unintended interpolation of %s in string, -Possible Y2K bug: %s, pragma "attrs" is deprecated, use "sub NAME : ATTRS" -instead, Premature end of script headers, Repeat count in pack overflows, -Repeat count in unpack overflows, realloc() of freed memory ignored, -Reference is already weak, setpgrp can't take arguments, Strange *+?{} on -zero-length expression, switching effective %s is not implemented, This -Perl can't reset CRTL environ elements (%s), This Perl can't set CRTL -environ elements (%s=%s), Too late to run %s block, Unknown open() mode -'%s', Unknown process %x sent message to prime_env_iter: %s, Unrecognized -escape \\%c passed through, Unterminated attribute parameter in attribute -list, Unterminated attribute list, Unterminated attribute parameter in -subroutine attribute list, Unterminated subroutine attribute list, Value of -CLI symbol "%s" too long, Version number must be a constant number - -=item New tests - -=item Incompatible Changes - -=over 4 - -=item Perl Source Incompatibilities - -CHECK is a new keyword, Treatment of list slices of undef has changed, -Format of $English::PERL_VERSION is different, Literals of the form -C<1.2.3> parse differently, Possibly changed pseudo-random number -generator, Hashing function for hash keys has changed, C<undef> fails on -read only values, Close-on-exec bit may be set on pipe and socket handles, -Writing C<"$$1"> to mean C<"${$}1"> is unsupported, delete(), each(), -values() and C<\(%h)>, vec(EXPR,OFFSET,BITS) enforces powers-of-two BITS, -Text of some diagnostic output has changed, C<%@> has been removed, -Parenthesized not() behaves like a list operator, Semantics of bareword -prototype C<(*)> have changed, Semantics of bit operators may have changed -on 64-bit platforms, More builtins taint their results - -=item C Source Incompatibilities - -C<PERL_POLLUTE>, C<PERL_IMPLICIT_CONTEXT>, C<PERL_POLLUTE_MALLOC> - -=item Compatible C Source API Changes - -C<PATCHLEVEL> is now C<PERL_VERSION> - -=item Binary Incompatibilities - -=back - -=item Known Problems - -=over 4 - -=item Thread test failures - -=item EBCDIC platforms not supported - -=item In 64-bit HP-UX the lib/io_multihomed test may hang - -=item NEXTSTEP 3.3 POSIX test failure - -=item Tru64 (aka Digital UNIX, aka DEC OSF/1) lib/sdbm test failure with -gcc - -=item UNICOS/mk CC failures during Configure run - -=item Arrow operator and arrays - -=item Experimental features - -Threads, Unicode, 64-bit support, Lvalue subroutines, Weak references, The -pseudo-hash data type, The Compiler suite, Internal implementation of file -globbing, The DB module, The regular expression code constructs: - -=back - -=item Obsolete Diagnostics - -Character class syntax [: :] is reserved for future extensions, Ill-formed -logical name |%s| in prime_env_iter, In string, @%s now must be written as -\@%s, Probable precedence problem on %s, regexp too big, Use of "$$<digit>" -to mean "${$}<digit>" is deprecated - -=item Reporting Bugs - -=item SEE ALSO - -=item HISTORY - -=back - -=head2 perl5005delta - what's new for perl5.005 - -=over 4 - -=item DESCRIPTION - -=item About the new versioning system - -=item Incompatible Changes - -=over 4 - -=item WARNING: This version is not binary compatible with Perl 5.004. - -=item Default installation structure has changed - -=item Perl Source Compatibility - -=item C Source Compatibility - -=item Binary Compatibility - -=item Security fixes may affect compatibility - -=item Relaxed new mandatory warnings introduced in 5.004 - -=item Licensing - -=back - -=item Core Changes - -=over 4 - -=item Threads - -=item Compiler - -=item Regular Expressions - -Many new and improved optimizations, Many bug fixes, New regular expression -constructs, New operator for precompiled regular expressions, Other -improvements, Incompatible changes - -=item Improved malloc() - -=item Quicksort is internally implemented - -=item Reliable signals - -=item Reliable stack pointers - -=item More generous treatment of carriage returns - -=item Memory leaks - -=item Better support for multiple interpreters - -=item Behavior of local() on array and hash elements is now well-defined - -=item C<%!> is transparently tied to the L<Errno> module - -=item Pseudo-hashes are supported - -=item C<EXPR foreach EXPR> is supported - -=item Keywords can be globally overridden - -=item C<$^E> is meaningful on Win32 - -=item C<foreach (1..1000000)> optimized - -=item C<Foo::> can be used as implicitly quoted package name - -=item C<exists $Foo::{Bar::}> tests existence of a package - -=item Better locale support - -=item Experimental support for 64-bit platforms - -=item prototype() returns useful results on builtins - -=item Extended support for exception handling - -=item Re-blessing in DESTROY() supported for chaining DESTROY() methods - -=item All C<printf> format conversions are handled internally - -=item New C<INIT> keyword - -=item New C<lock> keyword - -=item New C<qr//> operator - -=item C<our> is now a reserved word - -=item Tied arrays are now fully supported - -=item Tied handles support is better - -=item 4th argument to substr - -=item Negative LENGTH argument to splice - -=item Magic lvalues are now more magical - -=item <> now reads in records - -=back - -=item Supported Platforms - -=over 4 - -=item New Platforms - -=item Changes in existing support - -=back - -=item Modules and Pragmata - -=over 4 - -=item New Modules - -B, Data::Dumper, Dumpvalue, Errno, File::Spec, ExtUtils::Installed, -ExtUtils::Packlist, Fatal, IPC::SysV, Test, Tie::Array, Tie::Handle, -Thread, attrs, fields, re - -=item Changes in existing modules - -Benchmark, Carp, CGI, Fcntl, Math::Complex, Math::Trig, POSIX, DB_File, -MakeMaker, CPAN, Cwd - -=back - -=item Utility Changes - -=item Documentation Changes - -=item New Diagnostics - -Ambiguous call resolved as CORE::%s(), qualify as such or use &, Bad index -while coercing array into hash, Bareword "%s" refers to nonexistent -package, Can't call method "%s" on an undefined value, Can't check -filesystem of script "%s" for nosuid, Can't coerce array into hash, Can't -goto subroutine from an eval-string, Can't localize pseudo-hash element, -Can't use %%! because Errno.pm is not available, Cannot find an opnumber -for "%s", Character class syntax [. .] is reserved for future extensions, -Character class syntax [: :] is reserved for future extensions, Character -class syntax [= =] is reserved for future extensions, %s: Eval-group in -insecure regular expression, %s: Eval-group not allowed, use re 'eval', %s: -Eval-group not allowed at run time, Explicit blessing to '' (assuming -package main), Illegal hex digit ignored, No such array field, No such -field "%s" in variable %s of type %s, Out of memory during ridiculously -large request, Range iterator outside integer range, Recursive inheritance -detected while looking for method '%s' %s, Reference found where even-sized -list expected, Undefined value assigned to typeglob, Use of reserved word -"%s" is deprecated, perl: warning: Setting locale failed - -=item Obsolete Diagnostics - -Can't mktemp(), Can't write to temp file for B<-e>: %s, Cannot open -temporary file, regexp too big - -=item Configuration Changes - -=item BUGS - -=item SEE ALSO - -=item HISTORY - -=back - -=head2 perl5004delta - what's new for perl5.004 - -=over 4 - -=item DESCRIPTION - -=item Supported Environments - -=item Core Changes - -=over 4 - -=item List assignment to %ENV works - -=item Change to "Can't locate Foo.pm in @INC" error - -=item Compilation option: Binary compatibility with 5.003 - -=item $PERL5OPT environment variable - -=item Limitations on B<-M>, B<-m>, and B<-T> options - -=item More precise warnings - -=item Deprecated: Inherited C<AUTOLOAD> for non-methods - -=item Previously deprecated %OVERLOAD is no longer usable - -=item Subroutine arguments created only when they're modified - -=item Group vector changeable with C<$)> - -=item Fixed parsing of $$<digit>, &$<digit>, etc. - -=item Fixed localization of $<digit>, $&, etc. - -=item No resetting of $. on implicit close - -=item C<wantarray> may return undef - -=item C<eval EXPR> determines value of EXPR in scalar context - -=item Changes to tainting checks - -No glob() or <*>, No spawning if tainted $CDPATH, $ENV, $BASH_ENV, No -spawning if tainted $TERM doesn't look like a terminal name - -=item New Opcode module and revised Safe module - -=item Embedding improvements - -=item Internal change: FileHandle class based on IO::* classes - -=item Internal change: PerlIO abstraction interface - -=item New and changed syntax - -$coderef->(PARAMS) - -=item New and changed builtin constants - -__PACKAGE__ - -=item New and changed builtin variables - -$^E, $^H, $^M - -=item New and changed builtin functions - -delete on slices, flock, printf and sprintf, keys as an lvalue, my() in -Control Structures, pack() and unpack(), sysseek(), use VERSION, use Module -VERSION LIST, prototype(FUNCTION), srand, $_ as Default, C<m//gc> does not -reset search position on failure, C<m//x> ignores whitespace before ?*+{}, -nested C<sub{}> closures work now, formats work right on changing lexicals - -=item New builtin methods - -isa(CLASS), can(METHOD), VERSION( [NEED] ) - -=item TIEHANDLE now supported - -TIEHANDLE classname, LIST, PRINT this, LIST, PRINTF this, LIST, READ this -LIST, READLINE this, GETC this, DESTROY this - -=item Malloc enhancements - --DPERL_EMERGENCY_SBRK, -DPACK_MALLOC, -DTWO_POT_OPTIMIZE - -=item Miscellaneous efficiency enhancements - -=back - -=item Support for More Operating Systems - -=over 4 - -=item Win32 - -=item Plan 9 - -=item QNX - -=item AmigaOS - -=back - -=item Pragmata - -use autouse MODULE => qw(sub1 sub2 sub3), use blib, use blib 'dir', use -constant NAME => VALUE, use locale, use ops, use vmsish - -=item Modules - -=over 4 - -=item Required Updates - -=item Installation directories - -=item Module information summary - -=item Fcntl - -=item IO - -=item Math::Complex - -=item Math::Trig - -=item DB_File - -=item Net::Ping - -=item Object-oriented overrides for builtin operators - -=back - -=item Utility Changes - -=over 4 - -=item pod2html - -Sends converted HTML to standard output - -=item xsubpp - -C<void> XSUBs now default to returning nothing - -=back - -=item C Language API Changes - -C<gv_fetchmethod> and C<perl_call_sv>, C<perl_eval_pv>, Extended API for -manipulating hashes - -=item Documentation Changes - -L<perldelta>, L<perlfaq>, L<perllocale>, L<perltoot>, L<perlapio>, -L<perlmodlib>, L<perldebug>, L<perlsec> - -=item New Diagnostics - -"my" variable %s masks earlier declaration in same scope, %s argument is -not a HASH element or slice, Allocation too large: %lx, Allocation too -large, Applying %s to %s will act on scalar(%s), Attempt to free -nonexistent shared string, Attempt to use reference as lvalue in substr, -Bareword "%s" refers to nonexistent package, Can't redefine active sort -subroutine %s, Can't use bareword ("%s") as %s ref while "strict refs" in -use, Cannot resolve method `%s' overloading `%s' in package `%s', Constant -subroutine %s redefined, Constant subroutine %s undefined, Copy method did -not return a reference, Died, Exiting pseudo-block via %s, Identifier too -long, Illegal character %s (carriage return), Illegal switch in PERL5OPT: -%s, Integer overflow in hex number, Integer overflow in octal number, -internal error: glob failed, Invalid conversion in %s: "%s", Invalid type -in pack: '%s', Invalid type in unpack: '%s', Name "%s::%s" used only once: -possible typo, Null picture in formline, Offset outside string, Out of -memory!, Out of memory during request for %s, panic: frexp, Possible -attempt to put comments in qw() list, Possible attempt to separate words -with commas, Scalar value @%s{%s} better written as $%s{%s}, Stub found -while resolving method `%s' overloading `%s' in %s, Too late for "B<-T>" -option, untie attempted while %d inner references still exist, Unrecognized -character %s, Unsupported function fork, Use of "$$<digit>" to mean -"${$}<digit>" is deprecated, Value of %s can be "0"; test with defined(), -Variable "%s" may be unavailable, Variable "%s" will not stay shared, -Warning: something's wrong, Ill-formed logical name |%s| in prime_env_iter, -Got an error from DosAllocMem, Malformed PERLLIB_PREFIX, PERL_SH_DIR too -long, Process terminated by SIG%s - -=item BUGS - -=item SEE ALSO - -=item HISTORY - -=back - -=head2 perlartistic - the Perl Artistic License - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item The "Artistic License" - -=over 4 - -=item Preamble - -=item Definitions - -"Package", "Standard Version", "Copyright Holder", "You", "Reasonable -copying fee", "Freely Available" - -=item Conditions - -a), b), c), d), a), b), c), d) - -=back - -=back - -=head2 perlgpl - the GNU General Public License, version 2 - -=over 4 - -=item SYNOPSIS - -=back - -=over 4 - -=item DESCRIPTION - -=item GNU GENERAL PUBLIC LICENSE - -=back - -=head2 perlaix, README.aix - Perl version 5 on IBM Unix (AIX) systems - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Compiling Perl 5 on AIX - -=item Supported Compilers - -=item Perl 5.8.9 was successfully compiled and tested on: - - AIX Level | Compiler Level | w th | w/o th - --------------------------+-------------------------+------+------- - 5.1 TL9 32 bit | XL C/C++ V7 | OK | OK - 5.1 TL9 32 bit | gcc 3.2.2 | OK | OK - 5.1 TL9 64 bit | XL C/C++ V7 | OK | OK - 5.2 TL10 32 bit | XL C/C++ V8 | OK | OK - 5.2 TL10 64 bit | XL C/C++ V8 | OK | OK - 5.3 TL7 32 bit | XL C/C++ V9 + IZ35785 | OK | OK - 5.3 TL7 32 bit | gcc 4.2.4 | OK | OK - 5.3 TL7 64 bit | XL C/C++ V9 + IZ35785 | OK | OK - 6.1 TL1 32 bit | XL C/C++ V10 | OK | OK - 6.1 TL1 64 bit + IZ39077 | XL C/C++ V10 | OK | OK - - w th = with thread - w/o th = without thread - -=item Building Dynamic Extensions on AIX - -=item Using Large Files with Perl - -=item Threaded Perl - -=item 64-bit Perl - -=item Recommended Options AIX 5.1/5.2/5.3 and 6.1 (threaded/32-bit) - -=item Recommended Options AIX 5.1/5.2/5.3 and 6.1 (32-bit) - -=item Recommended Options AIX 5.1/5.2/5.3 and 6.1 (threaded/64-bit) - -=item Recommended Options AIX 5.1/5.2/5.3 and 6.1(64-bit) - -=item Compiling Perl 5 on older AIX versions up to 4.3.3 - -=item OS level - -=item Building Dynamic Extensions on AIX - -=item The IBM ANSI C Compiler - -=item The usenm option - -=item Using GNU's gcc for building Perl - -=item Using Large Files with Perl - -=item Threaded Perl - -=item 64-bit Perl - -=item AIX 4.2 and extensions using C++ with statics - -=back - -=item AUTHORS - -=item DATE - -=back - -=head2 perlamiga - Perl under Amiga OS - -=over 4 - -=item NOTE - -=item SYNOPSIS - -=back - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Prerequisites for Compiling Perl on AmigaOS - -B<Unix emulation for AmigaOS: ixemul.library>, B<Version of Amiga OS> - -=item Starting Perl programs under AmigaOS - -=item Shortcomings of Perl under AmigaOS - -=back - -=item INSTALLATION - -=item Accessing documentation - -=over 4 - -=item Manpages for Perl on AmigaOS - -=item Perl HTML Documentation on AmigaOS - -=item Perl GNU Info Files on AmigaOS - -=item Perl LaTeX Documentation on AmigaOS - -=back - -=item BUILDING PERL ON AMIGAOS - -=over 4 - -=item Build Prerequisites for Perl on AmigaOS - -=item Getting the Perl Source for AmigaOS - -=item Making Perl on AmigaOS - -=item Testing Perl on AmigaOS - -=item Installing the built Perl on AmigaOS - -=back - -=item PERL 5.8.0 BROKEN IN AMIGAOS - -=item AUTHORS - -=item SEE ALSO - -=back - -=head2 perlapollo, README.apollo - Perl version 5 on Apollo DomainOS - -=over 4 - -=item DESCRIPTION - -=item AUTHOR - -=back - -=head2 perlbeos, README.beos - Perl version 5.8+ on BeOS - -=over 4 - -=item DESCRIPTION - -=item BUILD AND INSTALL - -=over 4 - -=item Requirements - -=item Configure - -=item Build - -=item Install - -=back - -=item KNOWN PROBLEMS - -=item CONTACT - -=back - -=head2 perlbs2000, README.BS2000 - building and installing Perl for BS2000. - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item gzip on BS2000 - -=item bison on BS2000 - -=item Unpacking Perl Distribution on BS2000 - -=item Compiling Perl on BS2000 - -=item Testing Perl on BS2000 - -=item Installing Perl on BS2000 - -=item Using Perl in the Posix-Shell of BS2000 - -=item Using Perl in "native" BS2000 - -=item Floating point anomalies on BS2000 - -=item Using PerlIO and different encodings on ASCII and EBCDIC partitions - -=back - -=item AUTHORS - -=item SEE ALSO - -=over 4 - -=item Mailing list - -=back - -=item HISTORY - -=back - -=head2 perlce - Perl for WinCE - -=over 4 - -=item Building Perl for WinCE - -=over 4 - -=item DESCRIPTION - -=item General explanations on cross-compiling WinCE - -=item BUILD - -Microsoft Embedded Visual Tools, Microsoft Visual C++, Rainer Keuchel's -celib-sources, Rainer Keuchel's console-sources, go to C<./win32> -subdirectory, edit file C<./win32/ce-helpers/compile.bat>, run -compile.bat, run compile.bat dist - -=back - -=item Using Perl on WinCE - -=over 4 - -=item DESCRIPTION - -=item LIMITATIONS - -=item ENVIRONMENT - -PERL5LIB, PATH, TMP, UNIXROOTPATH, ROWS/COLS, HOME, CONSOLEFONTSIZE - -=item REGISTRY - -=item XS - -=item BUGS - -=item INSTALLATION - -=back - -=item ACKNOWLEDGEMENTS - -=item History of WinCE port - -=item AUTHORS - -Rainer Keuchel <coyxc@rainer-keuchel.de>, Vadim Konovalov - -=back - -=head2 perlcygwin, README.cygwin - Perl for Cygwin - -=over 4 - -=item SYNOPSIS - -=item PREREQUISITES FOR COMPILING PERL ON CYGWIN - -=over 4 - -=item Cygwin = GNU+Cygnus+Windows (Don't leave UNIX without it) - -=item Cygwin Configuration - -C<PATH>, I<nroff>, Permissions - -=back - -=item CONFIGURE PERL ON CYGWIN - -=over 4 - -=item Stripping Perl Binaries on Cygwin - -=item Optional Libraries for Perl on Cygwin - -C<-lcrypt>, C<-lgdbm_compat> (C<use GDBM_File>), C<-ldb> (C<use DB_File>), -C<cygserver> (C<use IPC::SysV>), C<-lutil> - -=item Configure-time Options for Perl on Cygwin - -C<-Uusedl>, C<-Uusemymalloc>, C<-Uuseperlio>, C<-Dusemultiplicity>, -C<-Duse64bitint>, C<-Duselongdouble>, C<-Dusethreads>, C<-Duselargefiles>, -C<-Dmksymlinks> - -=item Suspicious Warnings on Cygwin - -Win9x and C<d_eofnblk>, Compiler/Preprocessor defines - -=back - -=item MAKE ON CYGWIN - -=item TEST ON CYGWIN - -=over 4 - -=item File Permissions on Cygwin - -=item NDBM_File and ODBM_File do not work on FAT filesystems - -=item C<fork()> failures in io_* tests - -=back - -=item Specific features of the Cygwin port - -=over 4 - -=item Script Portability on Cygwin - -Pathnames, Text/Binary, PerlIO, F<.exe>, Cygwin vs. Windows process ids, -Cygwin vs. Windows errors, C<chown()>, Miscellaneous - -=item Prebuilt methods: - -C<Cwd::cwd>, C<Cygwin::pid_to_winpid>, C<Cygwin::winpid_to_pid>, -C<Cygwin::win_to_posix_path>, C<Cygwin::posix_to_win_path>, -C<Cygwin::mount_table()>, C<Cygwin::mount_flags>, C<Cygwin::is_binmount> - -=back - -=item INSTALL PERL ON CYGWIN - -=item MANIFEST ON CYGWIN - -Documentation, Build, Configure, Make, Install, Tests, Compiled Perl -Source, Compiled Module Source, Perl Modules/Scripts, Perl Module Tests - -=item BUGS ON CYGWIN - -=item AUTHORS - -=item HISTORY - -=back - -=head2 perldgux - Perl under DG/UX. - -=over 4 - -=item SYNOPSIS - -=back - -=over 4 - -=item DESCRIPTION - -=item BUILDING PERL ON DG/UX - -=over 4 - -=item Non-threaded Perl on DG/UX - -=item Threaded Perl on DG/UX - -=item Testing Perl on DG/UX - -=item Installing the built perl on DG/UX - -=back - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 perldos - Perl under DOS, W31, W95. - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Prerequisites for Compiling Perl on DOS - -DJGPP, Pthreads - -=item Shortcomings of Perl under DOS - -=item Building Perl on DOS - -=item Testing Perl on DOS - -=item Installation of Perl on DOS - -=back - -=item BUILDING AND INSTALLING MODULES ON DOS - -=over 4 - -=item Building Prerequisites for Perl on DOS - -=item Unpacking CPAN Modules on DOS - -=item Building Non-XS Modules on DOS - -=item Building XS Modules on DOS - -=back - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 perlepoc, README.epoc - Perl for EPOC - -=over 4 - -=item SYNOPSIS - -=item INTRODUCTION - -=item INSTALLING PERL ON EPOC - -=item STARTING PERL ON EPOC - -=over 4 - -=item Editors on Epoc - -=item Features of Perl on Epoc - -=item Restrictions of Perl on Epoc - -=item Compiling Perl 5 on the EPOC cross compiling environment - -=back - -=item SUPPORT STATUS OF PERL ON EPOC - -=item AUTHOR - -=item LAST UPDATE - -=back - -=head2 perlfreebsd, README.freebsd - Perl version 5 on FreeBSD systems - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item FreeBSD core dumps from readdir_r with ithreads - -=item $^X doesn't always contain a full path in FreeBSD - -=item Perl will no longer be part of "base FreeBSD" - -=back - -=item AUTHOR - -=back - -=head2 perlhaiku, README.haiku - Perl version 5.10+ on Haiku - -=over 4 - -=item DESCRIPTION - -=item BUILD AND INSTALL - -=item KNOWN PROBLEMS - -=item CONTACT - -=back - -=head2 perlhpux, README.hpux - Perl version 5 on Hewlett-Packard Unix -(HP-UX) systems - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Using perl as shipped with HP-UX - -=item Using perl from HP's porting centre - -=item Compiling Perl 5 on HP-UX - -=item PA-RISC - -=item Portability Between PA-RISC Versions - -=item PA-RISC 1.0 - -=item PA-RISC 1.1 - -=item PA-RISC 2.0 - -=item Itanium Processor Family (IPF) and HP-UX - -=item Itanium, Itanium 2 & Madison 6 - -=item HP-UX versions - -=item Building Dynamic Extensions on HP-UX - -=item The HP ANSI C Compiler - -=item The GNU C Compiler - -=item Using Large Files with Perl on HP-UX - -=item Threaded Perl on HP-UX - -=item 64-bit Perl on HP-UX - -=item Oracle on HP-UX - -=item GDBM and Threads on HP-UX - -=item NFS filesystems and utime(2) on HP-UX - -=item HP-UX Kernel Parameters (maxdsiz) for Compiling Perl - -=back - -=item nss_delete core dump from op/pwent or op/grent - -=item Miscellaneous - -=item AUTHOR - -=item DATE - -=back - -=head2 perlhurd, README.hurd - Perl version 5 on Hurd - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Known Problems with Perl on Hurd - -=back - -=item AUTHOR - -=back - -=head2 perlirix, README.irix - Perl version 5 on Irix systems - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Building 32-bit Perl in Irix - -=item Building 64-bit Perl in Irix - -=item About Compiler Versions of Irix - -=item Linker Problems in Irix - -=item Malloc in Irix - -=item Building with threads in Irix - -=item Irix 5.3 - -=back - -=item AUTHOR - -=back - -=head2 perllinux, README.linux - Perl version 5 on Linux systems - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Experimental Support for Sun Studio Compilers for Linux OS - -=back - -=item AUTHOR - -=back - -=head2 perlmachten, README.machten - Perl version 5 on Power MachTen -systems - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Perl version 5.8.x and greater not supported - -=item Compiling Perl 5.6.x on MachTen - -=item Failures during C<make test> on MachTen - -op/lexassign.t, pragma/warnings.t - -=item Building external modules on MachTen - -=back - -=item AUTHOR - -=item DATE - -=back - -=head2 perlmacos, README.macos - Perl under Mac OS (Classic) - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item AUTHOR - -=item DATE - -=back - -=head2 perlmacosx, README.macosx - Perl under Mac OS X - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Installation Prefix - -=item SDK support - -=item Universal Binary support - -=item 64-bit PPC support - -=item libperl and Prebinding - -=item Updating Apple's Perl - -=item Known problems - -=item MacPerl - -=item Carbon - -=item Cocoa - -=back - -=item Starting From Scratch - -=item AUTHOR - -=item DATE - -=back - -=head2 perlmint, README.mint - Perl version 5 on Atari MiNT - -=over 4 - -=item DESCRIPTION - -=item Known problems with Perl on MiNT - -=item AUTHOR - -=back - -=head2 perlmpeix, README.mpeix - Perl/iX for HP e3000 MPE - -=over 4 - -=item SYNOPSIS - -=item NOTE - -=item Binary distribution from HP - -=item What's New in Perl for MPE/iX - -=item Welcome to Perl/iX - -=item System Requirements for Perl/iX - -=item How to Obtain Perl/iX - -=item Perl/iX Distribution Contents Highlights - -README, INSTALL, LIBSHP3K, PERL, .cpan/, lib/, man/, -public_html/feedback.cgi, src/perl-5.6.0-mpe - -=item How to Compile Perl/iX - - 4, 6 - -=item Getting Started with Perl/iX - -=item MPE/iX Implementation Considerations - -=item Known Perl/iX Bugs Under Investigation - -=item Perl/iX To-Do List - -=item Perl/iX Change History - -=item AUTHOR - -=back - -=head2 perlnetware - Perl for NetWare - -=over 4 - -=item DESCRIPTION - -=item BUILD - -=over 4 - -=item Tools & SDK - -=item Setup - -SetNWBld.bat, Buildtype.bat - -=item Make - -=item Interpreter - -=item Extensions - -=back - -=item INSTALL - -=item BUILD NEW EXTENSIONS - -=item ACKNOWLEDGEMENTS - -=item AUTHORS - -=item DATE - -=back - -=head2 perlopenbsd, README.openbsd - Perl version 5 on OpenBSD systems - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item OpenBSD core dumps from getprotobyname_r and getservbyname_r with -ithreads - -=back - -=item AUTHOR - -=back - -=head2 perlos2 - Perl under OS/2, DOS, Win0.3*, Win0.95 and WinNT. - -=over 4 - -=item SYNOPSIS - -=back - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Target - -=item Other OSes - -=item Prerequisites - -EMX, RSX, HPFS, pdksh - -=item Starting Perl programs under OS/2 (and DOS and...) - -=item Starting OS/2 (and DOS) programs under Perl - -=back - -=item Frequently asked questions - -=over 4 - -=item "It does not work" - -=item I cannot run external programs - -=item I cannot embed perl into my program, or use F<perl.dll> from my -program. - -Is your program EMX-compiled with C<-Zmt -Zcrtdll>?, Did you use -L<ExtUtils::Embed>? - -=item C<``> and pipe-C<open> do not work under DOS. - -=item Cannot start C<find.exe "pattern" file> - -=back - -=item INSTALLATION - -=over 4 - -=item Automatic binary installation - -C<PERL_BADLANG>, C<PERL_BADFREE>, F<Config.pm> - -=item Manual binary installation - -Perl VIO and PM executables (dynamically linked), Perl_ VIO executable -(statically linked), Executables for Perl utilities, Main Perl library, -Additional Perl modules, Tools to compile Perl modules, Manpages for Perl -and utilities, Manpages for Perl modules, Source for Perl documentation, -Perl manual in F<.INF> format, Pdksh - -=item B<Warning> - -=back - -=item Accessing documentation - -=over 4 - -=item OS/2 F<.INF> file - -=item Plain text - -=item Manpages - -=item HTML - -=item GNU C<info> files - -=item F<PDF> files - -=item C<LaTeX> docs - -=back - -=item BUILD - -=over 4 - -=item The short story - -=item Prerequisites - -=item Getting perl source - -=item Application of the patches - -=item Hand-editing - -=item Making - -=item Testing - -A lot of C<bad free>, Process terminated by SIGTERM/SIGINT, F<op/fs.t>, -F<op/stat.t> - -=item Installing the built perl - -=item C<a.out>-style build - -=back - -=item Building a binary distribution - -=item Building custom F<.EXE> files - -=over 4 - -=item Making executables with a custom collection of statically loaded -extensions - -=item Making executables with a custom search-paths - -=back - -=item Build FAQ - -=over 4 - -=item Some C</> became C<\> in pdksh. - -=item C<'errno'> - unresolved external - -=item Problems with tr or sed - -=item Some problem (forget which ;-) - -=item Library ... not found - -=item Segfault in make - -=item op/sprintf test failure - -=back - -=item Specific (mis)features of OS/2 port - -=over 4 - -=item C<setpriority>, C<getpriority> - -=item C<system()> - -=item C<extproc> on the first line - -=item Additional modules: - -=item Prebuilt methods: - -C<File::Copy::syscopy>, C<DynaLoader::mod2fname>, C<Cwd::current_drive()>, - C<Cwd::sys_chdir(name)>, C<Cwd::change_drive(name)>, -C<Cwd::sys_is_absolute(name)>, C<Cwd::sys_is_rooted(name)>, -C<Cwd::sys_is_relative(name)>, C<Cwd::sys_cwd(name)>, -C<Cwd::sys_abspath(name, dir)>, C<Cwd::extLibpath([type])>, -C<Cwd::extLibpath_set( path [, type ] )>, -C<OS2::Error(do_harderror,do_exception)>, C<OS2::Errors2Drive(drive)>, -OS2::SysInfo(), OS2::BootDrive(), C<OS2::MorphPM(serve)>, -C<OS2::UnMorphPM(serve)>, C<OS2::Serve_Messages(force)>, -C<OS2::Process_Messages(force [, cnt])>, C<OS2::_control87(new,mask)>, -OS2::get_control87(), C<OS2::set_control87_em(new=MCW_EM,mask=MCW_EM)>, -C<OS2::DLLname([how [, \&xsub]])> - -=item Prebuilt variables: - -$OS2::emx_rev, $OS2::emx_env, $OS2::os_ver, $OS2::is_aout, $OS2::can_fork, -$OS2::nsyserror - -=item Misfeatures - -=item Modifications - -C<popen>, C<tmpnam>, C<tmpfile>, C<ctermid>, C<stat>, C<mkdir>, C<rmdir>, -C<flock> - -=item Identifying DLLs - -=item Centralized management of resources - -C<HAB>, C<HMQ>, Treating errors reported by OS/2 API, -C<CheckOSError(expr)>, C<CheckWinError(expr)>, C<SaveWinError(expr)>, -C<SaveCroakWinError(expr,die,name1,name2)>, C<WinError_2_Perl_rc>, -C<FillWinError>, C<FillOSError(rc)>, Loading DLLs and ordinals in DLLs - -=back - -=item Perl flavors - -=over 4 - -=item F<perl.exe> - -=item F<perl_.exe> - -=item F<perl__.exe> - -=item F<perl___.exe> - -=item Why strange names? - -=item Why dynamic linking? - -=item Why chimera build? - -=back - -=item ENVIRONMENT - -=over 4 - -=item C<PERLLIB_PREFIX> - -=item C<PERL_BADLANG> - -=item C<PERL_BADFREE> - -=item C<PERL_SH_DIR> - -=item C<USE_PERL_FLOCK> - -=item C<TMP> or C<TEMP> - -=back - -=item Evolution - -=over 4 - -=item Text-mode filehandles - -=item Priorities - -=item DLL name mangling: pre 5.6.2 - -=item DLL name mangling: 5.6.2 and beyond - -Global DLLs, specific DLLs, C<BEGINLIBPATH> and C<ENDLIBPATH>, F<.> from -C<LIBPATH> - -=item DLL forwarder generation - -=item Threading - -=item Calls to external programs - -=item Memory allocation - -=item Threads - -C<COND_WAIT>, F<os2.c> - -=back - -=item BUGS - -=back - -=over 4 - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 perlos390, README.os390 - building and installing Perl for OS/390 -and z/OS - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Tools - -=item Unpacking Perl distribution on OS/390 - -=item Setup and utilities for Perl on OS/390 - -=item Configure Perl on OS/390 - -=item Build, Test, Install Perl on OS/390 - -=item Build Anomalies with Perl on OS/390 - -=item Testing Anomalies with Perl on OS/390 - -=item Installation Anomalies with Perl on OS/390 - -=item Usage Hints for Perl on OS/390 - -=item Floating Point Anomalies with Perl on OS/390 - -=item Modules and Extensions for Perl on OS/390 - -=back - -=item AUTHORS - -=item SEE ALSO - -=over 4 - -=item Mailing list for Perl on OS/390 - -=back - -=item HISTORY - -=back - -=head2 perlos400, README.os400 - Perl version 5 on OS/400 - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Compiling Perl for OS/400 PASE - -=item Installing Perl in OS/400 PASE - -=item Using Perl in OS/400 PASE - -=item Known Problems - -=item Perl on ILE - -=back - -=item AUTHORS - -=back - -=head2 perlplan9 - Plan 9-specific documentation for Perl - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Invoking Perl - -=item What's in Plan 9 Perl - -=item What's not in Plan 9 Perl - -=item Perl5 Functions not currently supported in Plan 9 Perl - -=item Signals in Plan 9 Perl - -=back - -=item COMPILING AND INSTALLING PERL ON PLAN 9 - -=over 4 - -=item Installing Perl Documentation on Plan 9 - -=back - -=item BUGS - -=item Revision date - -=item AUTHOR - -=back - -=head2 perlqnx, README.qnx - Perl version 5 on QNX - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Required Software for Compiling Perl on QNX4 - -/bin/sh, ar, nm, cpp, make - -=item Outstanding Issues with Perl on QNX4 - -=item QNX auxiliary files - -qnx/ar, qnx/cpp - -=item Outstanding issues with perl under QNX6 - -=back - -=item AUTHOR - -=back - -=head2 perlriscos, README.riscos - Perl version 5 for RISC OS - -=over 4 - -=item DESCRIPTION - -=item BUILD - -=item AUTHOR - -=back - -=head2 perlsolaris, README.solaris - Perl version 5 on Solaris systems - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Solaris Version Numbers. - -=back - -=item RESOURCES - -Solaris FAQ, Precompiled Binaries, Solaris Documentation - -=item SETTING UP - -=over 4 - -=item File Extraction Problems on Solaris. - -=item Compiler and Related Tools on Solaris. - -=item Environment for Compiling perl on Solaris - -=back - -=item RUN CONFIGURE. - -=over 4 - -=item 64-bit perl on Solaris. - -=item Threads in perl on Solaris. - -=item Malloc Issues with perl on Solaris. - -=back - -=item MAKE PROBLEMS. - -Dynamic Loading Problems With GNU as and GNU ld, ld.so.1: ./perl: fatal: -relocation error:, dlopen: stub interception failed, #error "No -DATAMODEL_NATIVE specified", sh: ar: not found - -=item MAKE TEST - -=over 4 - -=item op/stat.t test 4 in Solaris - -=item nss_delete core dump from op/pwent or op/grent - -=back - -=item PREBUILT BINARIES OF PERL FOR SOLARIS. - -=item RUNTIME ISSUES FOR PERL ON SOLARIS. - -=over 4 - -=item Limits on Numbers of Open Files on Solaris. - -=back - -=item SOLARIS-SPECIFIC MODULES. - -=item SOLARIS-SPECIFIC PROBLEMS WITH MODULES. - -=over 4 - -=item Proc::ProcessTable on Solaris - -=item BSD::Resource on Solaris - -=item Net::SSLeay on Solaris - -=back - -=item SunOS 4.x - -=item AUTHOR - -=back - -=head2 perlsymbian, README.symbian - Perl version 5 on Symbian OS - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Compiling Perl on Symbian - -=item Compilation problems - -=item PerlApp - -=item sisify.pl - -=item Using Perl in Symbian - -=back - -=item TO DO - -=item WARNING - -=item NOTE - -=item AUTHOR - -=item COPYRIGHT - -=item LICENSE - -=item HISTORY - -=back - -=head2 perltru64, README.tru64 - Perl version 5 on Tru64 (formerly known as -Digital UNIX formerly known as DEC OSF/1) systems - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Compiling Perl 5 on Tru64 - -=item Using Large Files with Perl on Tru64 - -=item Threaded Perl on Tru64 - -=item Long Doubles on Tru64 - -=item DB_File tests failing on Tru64 - -=item 64-bit Perl on Tru64 - -=item Warnings about floating-point overflow when compiling Perl on Tru64 - -=back - -=item Testing Perl on Tru64 - -=item ext/ODBM_File/odbm Test Failing With Static Builds - -=item Perl Fails Because Of Unresolved Symbol sockatmark - -=item AUTHOR - -=back - -=head2 perluts - Perl under UTS - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item BUILDING PERL ON UTS - -=item Installing the built perl on UTS - -=item AUTHOR - -=back - -=head2 perlvmesa, README.vmesa - building and installing Perl for VM/ESA. - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Unpacking Perl Distribution on VM/ESA - -=item Setup Perl and utilities on VM/ESA - -=item Configure Perl on VM/ESA - -=item Testing Anomalies of Perl on VM/ESA - -=item Usage Hints for Perl on VM/ESA - -=back - -=item AUTHORS - -=item SEE ALSO - -=over 4 - -=item Mailing list for Perl on VM/ESA - -=back - -=back - -=head2 perlvms - VMS-specific documentation for Perl - -=over 4 - -=item DESCRIPTION - -=item Installation - -=item Organization of Perl Images - -=over 4 - -=item Core Images - -=item Perl Extensions - -=item Installing static extensions - -=item Installing dynamic extensions - -=back - -=item File specifications - -=over 4 - -=item Syntax - -=item Filename Case - -=item Symbolic Links - -=item Wildcard expansion - -=item Pipes - -=back - -=item PERL5LIB and PERLLIB - -=item The Perl Forked Debugger - -=item PERL_VMS_EXCEPTION_DEBUG - -=item Command line - -=over 4 - -=item I/O redirection and backgrounding - -=item Command line switches - --i, -S, -u - -=back - -=item Perl functions - -File tests, backticks, binmode FILEHANDLE, crypt PLAINTEXT, USER, die, -dump, exec LIST, fork, getpwent, getpwnam, getpwuid, gmtime, kill, qx//, -select (system call), stat EXPR, system LIST, time, times, unlink LIST, -utime LIST, waitpid PID,FLAGS - -=item Perl variables - -%ENV, CRTL_ENV, CLISYM_[LOCAL], Any other string, $!, $^E, $?, $| - -=item Standard modules with VMS-specific differences - -=over 4 - -=item SDBM_File - -=back - -=item Revision date - -=item AUTHOR - -=back - -=head2 perlvos, README.vos - Perl for Stratus VOS - -=over 4 - -=item SYNOPSIS - -=item BUILDING PERL FOR VOS - -=item INSTALLING PERL IN VOS - -=item USING PERL IN VOS - -=over 4 - -=item Restrictions of Perl on VOS - -=item Handling of underflow and overflow - -=back - -=item TEST STATUS - -=item SUPPORT STATUS - -=item AUTHOR - -=item LAST UPDATE - -=back - -=head2 perlwin32 - Perl under Windows - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Setting Up Perl on Win32 - -Make, Command Shell, Borland C++, Microsoft Visual C++, Microsoft Visual -C++ 2008 Express Edition, Microsoft Visual C++ 2005 Express Edition, -Microsoft Visual C++ Toolkit 2003, Microsoft Platform SDK 64-bit Compiler, -MinGW release 3 with gcc, MinGW release 1 with gcc - -=item Building - -=item Testing Perl on Win32 - -=item Installation of Perl on Win32 - -=item Usage Hints for Perl on Win32 - -Environment Variables, File Globbing, Using perl from the command line, -Building Extensions, Command-line Wildcard Expansion, Win32 Specific -Extensions, Notes on 64-bit Windows - -=item Running Perl Scripts - -=item Miscellaneous Things - -=back - -=item BUGS AND CAVEATS - -=item ACKNOWLEDGEMENTS - -=item AUTHORS - -Gary Ng E<lt>71564.1743@CompuServe.COME<gt>, Gurusamy Sarathy -E<lt>gsar@activestate.comE<gt>, Nick Ing-Simmons -E<lt>nick@ing-simmons.netE<gt>, Jan Dubois E<lt>jand@activestate.comE<gt>, -Steve Hay E<lt>steve.hay@uk.radan.comE<gt> - -=item SEE ALSO - -=item HISTORY - -=back - -=head1 PRAGMA DOCUMENTATION - -=head2 attrs - set/get attributes of a subroutine (deprecated) - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -method, locked - -=back - -=head2 re - Perl pragma to alter regular expression behaviour - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item 'taint' mode - -=item 'eval' mode - -=item 'debug' mode - -=item 'Debug' mode - -Compile related options, COMPILE, PARSE, OPTIMISE, TRIEC, DUMP, Execute -related options, EXECUTE, MATCH, TRIEE, INTUIT, Extra debugging options, -EXTRA, BUFFERS, TRIEM, STATE, STACK, OPTIMISEM, OFFSETS, OFFSETSDBG, Other -useful flags, ALL, All, MORE, More - -=item Exportable Functions - -is_regexp($ref), regexp_pattern($ref), regmust($ref), regname($name,$all), -regnames($all), regnames_count() - -=back - -=item SEE ALSO - -=back - -=head2 threadshared::shared, threads::shared - Perl extension for sharing -data structures between threads - -=over 4 - -=item VERSION - -=item SYNOPSIS - -=item DESCRIPTION - -=item EXPORT - -=item FUNCTIONS - -share VARIABLE, shared_clone REF, is_shared VARIABLE, lock VARIABLE, -cond_wait VARIABLE, cond_wait CONDVAR, LOCKVAR, cond_timedwait VARIABLE, -ABS_TIMEOUT, cond_timedwait CONDVAR, ABS_TIMEOUT, LOCKVAR, cond_signal -VARIABLE, cond_broadcast VARIABLE - -=item OBJECTS - -=item NOTES - -=item BUGS AND LIMITATIONS - -=item SEE ALSO - -=item AUTHOR - -=item LICENSE - -=back - -=head2 threads - Perl interpreter-based threads - -=over 4 - -=item VERSION - -=item SYNOPSIS - -=item DESCRIPTION - -$thr = threads->create(FUNCTION, ARGS), $thr->join(), $thr->detach(), -threads->detach(), threads->self(), $thr->tid(), threads->tid(), "$thr", -threads->object($tid), threads->yield(), threads->list(), -threads->list(threads::all), threads->list(threads::running), -threads->list(threads::joinable), $thr1->equal($thr2), async BLOCK;, -$thr->error(), $thr->_handle(), threads->_handle() - -=item EXITING A THREAD - -threads->exit(), threads->exit(status), die(), exit(status), use threads -'exit' => 'threads_only', threads->create({'exit' => 'thread_only'}, ...), -$thr->set_thread_exit_only(boolean), threads->set_thread_exit_only(boolean) - -=item THREAD STATE - -$thr->is_running(), $thr->is_joinable(), $thr->is_detached(), -threads->is_detached() - -=item THREAD CONTEXT - -=over 4 - -=item Explicit context - -=item Implicit context - -=item $thr->wantarray() - -=item threads->wantarray() - -=back - -=item THREAD STACK SIZE - -threads->get_stack_size();, $size = $thr->get_stack_size();, $old_size = -threads->set_stack_size($new_size);, use threads ('stack_size' => VALUE);, -$ENV{'PERL5_ITHREADS_STACK_SIZE'}, threads->create({'stack_size' => VALUE}, -FUNCTION, ARGS), $thr2 = $thr1->create(FUNCTION, ARGS) - -=item THREAD SIGNALLING - -$thr->kill('SIG...'); - -=item WARNINGS - -Perl exited with active threads:, Thread creation failed: pthread_create -returned #, Thread # terminated abnormally: .., Using minimum thread stack -size of #, Thread creation failed: pthread_attr_setstacksize(I<SIZE>) -returned 22 - -=item ERRORS - -This Perl not built to support threads, Cannot change stack size of an -existing thread, Cannot signal threads without safe signals, Unrecognized -signal name: .. - -=item BUGS AND LIMITATIONS - -Thread-safe modules, Using non-thread-safe modules, Current working -directory, Environment variables, Parent-child threads, Creating threads -inside special blocks, Unsafe signals, Perl has been built with -C<PERL_OLD_SIGNALS> (see C<perl -V>), The environment variable -C<PERL_SIGNALS> is set to C<unsafe> (see L<perlrun/"PERL_SIGNALS">), The -module L<Perl::Unsafe::Signals> is used, Returning closures from threads, -Returning objects from threads, END blocks in threads, Perl Bugs and the -CPAN Version of L<threads> - -=item REQUIREMENTS - -=item SEE ALSO - -=item AUTHOR - -=item LICENSE - -=item ACKNOWLEDGEMENTS - -=back - -=head2 attributes - get/set subroutine or variable attributes - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item What C<import> does - -=item Built-in Attributes - -locked, method, lvalue - -=item Available Subroutines - -get, reftype - -=item Package-specific Attribute Handling - -FETCH_I<type>_ATTRIBUTES, MODIFY_I<type>_ATTRIBUTES - -=item Syntax of Attribute Lists - -=back - -=item EXPORTS - -=over 4 - -=item Default exports - -=item Available exports - -=item Export tags defined - -=back - -=item EXAMPLES - -=item MORE EXAMPLES - -=item SEE ALSO - -=back - -=head2 autodie - Replace functions with ones that succeed or die with -lexical scope - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item EXCEPTIONS - -=item CATEGORIES - -=item FUNCTION SPECIFIC NOTES - -=over 4 - -=item flock - -=item system/exec - -=back - -=item GOTCHAS - -=item DIAGNOSTICS - -:void cannot be used with lexical scope - -=item BUGS - -=over 4 - -=item REPORTING BUGS - -=back - -=item FEEDBACK - -=item AUTHOR - -=item LICENSE - -=item SEE ALSO - -=item ACKNOWLEDGEMENTS - -=back - -=head2 autodiexception, autodie::exception - Exceptions from autodying -functions. - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Common Methods - -=back - -=back - -=over 4 - -=item Advanced methods - -=back - -=over 4 - -=item SEE ALSO - -=item LICENSE - -=item AUTHOR - -=back - -=head2 autodiexception::system, autodie::exception::system - Exceptions -from autodying system(). - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=over 4 - -=item stringify - -=back - -=over 4 - -=item LICENSE - -=item AUTHOR - -=back - -=head2 autouse - postpone load of modules until a function is used - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item WARNING - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 base - Establish an ISA relationship with base classes at compile -time - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item DIAGNOSTICS - -Base class package "%s" is empty, Class 'Foo' tried to inherit from itself - -=item HISTORY - -=item CAVEATS - -=item SEE ALSO - -=back - -=head2 bigint - Transparent BigInteger support for Perl - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item use integer vs. use bigint - -=item Options - -a or accuracy, p or precision, t or trace, hex, oct, l, lib, try or only, v -or version - -=item Math Library - -=item Internal Format - -=item Sign - -=item Methods - -inf(), NaN(), e, PI, bexp(), bpi(), upgrade(), in_effect() - -=item MATH LIBRARY - -=item Caveat - -=back - -=item CAVAETS - -in_effect(), hex()/oct() - -=item MODULES USED - -=item EXAMPLES - -=item LICENSE - -=item SEE ALSO - -=item AUTHORS - -=back - -=head2 bignum - Transparent BigNumber support for Perl - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Options - -a or accuracy, p or precision, t or trace, l or lib, hex, oct, v or version - -=item Methods - -=item Caveats - -inf(), NaN(), e, PI(), bexp(), bpi(), upgrade(), in_effect() - -=item Math Library - -=item INTERNAL FORMAT - -=item SIGN - -=back - -=item CAVAETS - -in_effect(), hex()/oct() - -=item MODULES USED - -=item EXAMPLES - -=item LICENSE - -=item SEE ALSO - -=item AUTHORS - -=back - -=head2 bigrat - Transparent BigNumber/BigRational support for Perl - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Modules Used - -=item Math Library - -=item Sign - -=item Methods - -inf(), NaN(), e, PI, bexp(), bpi(), upgrade(), in_effect() - -=item MATH LIBRARY - -=item Cavaet - -=item Options - -a or accuracy, p or precision, t or trace, l or lib, hex, oct, v or version - -=back - -=item CAVAETS - -in_effect(), hex()/oct() - -=item EXAMPLES - - perl -Mbigrat -le 'print sqrt(33)' - perl -Mbigrat -le 'print 2*255' - perl -Mbigrat -le 'print 4.5+2*255' - perl -Mbigrat -le 'print 3/7 + 5/7 + 8/3' - perl -Mbigrat -le 'print 12->is_odd()'; - perl -Mbignum=l,GMP -le 'print 7 ** 7777' - -=item LICENSE - -=item SEE ALSO - -=item AUTHORS - -=back - -=head2 blib - Use MakeMaker's uninstalled version of a package - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item BUGS - -=item AUTHOR - -=back - -=head2 bytes - Perl pragma to force byte semantics rather than character -semantics - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item LIMITATIONS - -=item SEE ALSO - -=back - -=head2 charnames - define character names for C<\N{named}> string literal -escapes - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item ALIASES - -=item CUSTOM ALIASES - -=over 4 - -=item Anonymous hashes - -=item Alias file - -=item Alias shortcut - -=back - -=item charnames::viacode(code) - -=item charnames::vianame(name) - -=item CUSTOM TRANSLATORS - -=item ILLEGAL CHARACTERS - -=item BUGS - -=back - -=head2 constant - Perl pragma to declare constants - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item NOTES - -=over 4 - -=item List constants - -=item Defining multiple constants at once - -=item Magic constants - -=back - -=item TECHNICAL NOTES - -=item CAVEATS - -=item SEE ALSO - -=item BUGS - -=item AUTHORS - -=item COPYRIGHT & LICENSE - -=back - -=head2 diagnostics, splain - produce verbose warning diagnostics - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item The C<diagnostics> Pragma - -=item The I<splain> Program - -=back - -=item EXAMPLES - -=item INTERNALS - -=item BUGS - -=item AUTHOR - -=back - -=head2 encoding - allows you to write your script in non-ascii or non-utf8 - -=over 4 - -=item SYNOPSIS - -=item ABSTRACT - -=over 4 - -=item Literal Conversions - -=item PerlIO layers for C<STD(IN|OUT)> - -=item Implicit upgrading for byte strings - -=item Side effects - -=back - -=item FEATURES THAT REQUIRE 5.8.1 - -"NON-EUC" doublebyte encodings, tr//, DATA pseudo-filehandle - -=item USAGE - -use encoding [I<ENCNAME>] ;, use encoding I<ENCNAME> [ STDIN =E<gt> -I<ENCNAME_IN> ...] ;, use encoding I<ENCNAME> Filter=E<gt>1;, no encoding; - -=item The Filter Option - -=over 4 - -=item Filter-related changes at Encode version 1.87 - -=back - -=item CAVEATS - -=over 4 - -=item NOT SCOPED - -=item DO NOT MIX MULTIPLE ENCODINGS - -=item tr/// with ranges - -Legend of characters above - -=back - -=item EXAMPLE - Greekperl - -=item KNOWN PROBLEMS - -literals in regex that are longer than 127 bytes, EBCDIC, format, Thread -safety - -=over 4 - -=item The Logic of :locale - -=back - -=item HISTORY - -=item SEE ALSO - -=back - -=head2 encoding::warnings - Warn on implicit encoding conversions - -=over 4 - -=item VERSION - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Overview of the problem - -=item Detecting the problem - -=item Solving the problem - -Upgrade both sides to unicode-strings, Downgrade both sides to -byte-strings, Specify the encoding for implicit byte-string upgrading, -PerlIO layers for B<STDIN> and B<STDOUT>, Literal conversions, Implicit -upgrading for byte-strings - -=back - -=item CAVEATS - -=back - -=over 4 - -=item SEE ALSO - -=item AUTHORS - -=item COPYRIGHT - -=back - -=head2 feature - Perl pragma to enable new syntactic features - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Lexical effect - -=item C<no feature> - -=item The 'switch' feature - -=item The 'say' feature - -=item the 'state' feature - -=back - -=item FEATURE BUNDLES - -=item IMPLICIT LOADING - -=back - -=head2 fields - compile-time class fields - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -new, phash - -=item SEE ALSO - -=back - -=head2 filetest - Perl pragma to control the filetest permission operators - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Consider this carefully - -=item The "access" sub-pragma - -=item Limitation with regard to C<_> - -=back - -=back - -=head2 if - C<use> a Perl module if a condition holds - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item BUGS - -=item AUTHOR - -=back - -=head2 integer - Perl pragma to use integer arithmetic instead of floating -point - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=head2 less - perl pragma to request less of something - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item FOR MODULE AUTHORS - -=over 4 - -=item C<< BOOLEAN = less->of( FEATURE ) >> - -=item C<< FEATURES = less->of() >> - -=back - -=item CAVEATS - -This probably does nothing, This works only on 5.10+ - -=back - -=head2 lib - manipulate @INC at compile time - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Adding directories to @INC - -=item Deleting directories from @INC - -=item Restoring original @INC - -=back - -=item CAVEATS - -=item NOTES - -=item SEE ALSO - -=item AUTHOR - -=item COPYRIGHT AND LICENSE - -=back - -=head2 locale - Perl pragma to use and avoid POSIX locales for built-in -operations - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=head2 mro - Method Resolution Order - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item OVERVIEW - -=item The C3 MRO - -=over 4 - -=item What is C3? - -=item How does C3 work - -=back - -=item Functions - -=over 4 - -=item mro::get_linear_isa($classname[, $type]) - -=item mro::set_mro($classname, $type) - -=item mro::get_mro($classname) - -=item mro::get_isarev($classname) - -=item mro::is_universal($classname) - -=item mro::invalidate_all_method_caches() - -=item mro::method_changed_in($classname) - -=item mro::get_pkg_gen($classname) - -=item next::method - -=item next::can - -=item maybe::next::method - -=back - -=item SEE ALSO - -=over 4 - -=item The original Dylan paper - -L<http://www.webcom.com/haahr/dylan/linearization-oopsla96.html> - -=item The prototype Perl 6 Object Model uses C3 - -L<http://svn.openfoundry.org/pugs/perl5/Perl6-MetaModel/> - -=item Parrot now uses C3 - -L<http://aspn.activestate.com/ASPN/Mail/Message/perl6-internals/2746631>, -L<http://use.perl.org/~autrijus/journal/25768> - -=item Python 2.3 MRO related links - -L<http://www.python.org/2.3/mro.html>, -L<http://www.python.org/2.2.2/descrintro.html#mro> - -=item C3 for TinyCLOS - -L<http://www.call-with-current-continuation.org/eggs/c3.html> - -=item Class::C3 - -L<Class::C3> - -=back - -=item AUTHOR - -=back - -=head2 open - perl pragma to set default PerlIO layers for input and output - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item NONPERLIO FUNCTIONALITY - -=item IMPLEMENTATION DETAILS - -=item SEE ALSO - -=back - -=head2 ops - Perl pragma to restrict unsafe operations when compiling - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=back - -=head2 overload - Package for overloading Perl operations - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Declaration of overloaded functions - -=item Calling Conventions for Binary Operations - -FALSE, TRUE, C<undef> - -=item Calling Conventions for Unary Operations - -=item Calling Conventions for Mutators - -C<++> and C<-->, C<x=> and other assignment versions - -=item Overloadable Operations - -I<Arithmetic operations>, I<Comparison operations>, I<Bit operations>, -I<Increment and decrement>, I<Transcendental functions>, I<Boolean, string -and numeric conversion>, I<Iteration>, I<Dereferencing>, I<Special> - -=item Inheritance and overloading - -Strings as values of C<use overload> directive, Overloading of an operation -is inherited by derived classes - -=back - -=item SPECIAL SYMBOLS FOR C<use overload> - -=over 4 - -=item Last Resort - -=item Fallback - -C<undef>, TRUE, defined, but FALSE - -=item Smart Match - -=item Copy Constructor - -B<Example> - -=back - -=item MAGIC AUTOGENERATION - -I<Assignment forms of arithmetic operations>, I<Conversion operations>, -I<Increment and decrement>, C<abs($a)>, I<Unary minus>, I<Negation>, -I<Concatenation>, I<Comparison operations>, I<Iterator>, I<Dereferencing>, -I<Copy operator> - -=item Minimal set of overloaded operations - -=item Losing overloading - -=item Run-time Overloading - -=item Public functions - -overload::StrVal(arg), overload::Overloaded(arg), overload::Method(obj,op) - -=item Overloading constants - -integer, float, binary, q, qr - -=item IMPLEMENTATION - -=item Metaphor clash - -=item Cookbook - -=over 4 - -=item Two-face scalars - -=item Two-face references - -=item Symbolic calculator - -=item I<Really> symbolic calculator - -=back - -=item AUTHOR - -=item DIAGNOSTICS - -Odd number of arguments for overload::constant, `%s' is not an overloadable -type, `%s' is not a code reference - -=item BUGS - -=back - -=head2 parent - Establish an ISA relationship with base classes at compile -time - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item DIAGNOSTICS - -Class 'Foo' tried to inherit from itself - -=item HISTORY - -=item CAVEATS - -=item SEE ALSO - -=item AUTHORS AND CONTRIBUTORS - -=item MAINTAINER - -=item LICENSE - -=back - -=head2 sigtrap - Perl pragma to enable simple signal handling - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item OPTIONS - -=over 4 - -=item SIGNAL HANDLERS - -B<stack-trace>, B<die>, B<handler> I<your-handler> - -=item SIGNAL LISTS - -B<normal-signals>, B<error-signals>, B<old-interface-signals> - -=item OTHER - -B<untrapped>, B<any>, I<signal>, I<number> - -=back - -=item EXAMPLES - -=back - -=head2 sort - perl pragma to control sort() behaviour - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item CAVEATS - -=back - -=head2 strict - Perl pragma to restrict unsafe constructs - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -C<strict refs>, C<strict vars>, C<strict subs> - -=item HISTORY - -=back - -=head2 subs - Perl pragma to predeclare sub names - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=head2 threadshared, threads::shared - Perl extension for sharing data -structures between threads - -=over 4 - -=item VERSION - -=item SYNOPSIS - -=item DESCRIPTION - -=item EXPORT - -=item FUNCTIONS - -share VARIABLE, shared_clone REF, is_shared VARIABLE, lock VARIABLE, -cond_wait VARIABLE, cond_wait CONDVAR, LOCKVAR, cond_timedwait VARIABLE, -ABS_TIMEOUT, cond_timedwait CONDVAR, ABS_TIMEOUT, LOCKVAR, cond_signal -VARIABLE, cond_broadcast VARIABLE - -=item OBJECTS - -=item NOTES - -=item BUGS AND LIMITATIONS - -=item SEE ALSO - -=item AUTHOR - -=item LICENSE - -=back - -=head2 utf8 - Perl pragma to enable/disable UTF-8 (or UTF-EBCDIC) in source -code - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Utility functions - -$num_octets = utf8::upgrade($string), $success = utf8::downgrade($string[, -FAIL_OK]), utf8::encode($string), $success = utf8::decode($string), $flag = -utf8::is_utf8(STRING), $flag = utf8::valid(STRING) - -=back - -=item BUGS - -=item SEE ALSO - -=back - -=head2 vars - Perl pragma to predeclare global variable names (obsolete) - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=head2 version - Perl extension for Version Objects - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item BEST PRACTICES - -Be consistent, Be careful - -=item Using modules that use version.pm - -Numeric versions always work, Extended version work sometimes - -=item What IS a version - -Numeric Versions, Extended Versions - -=item Numeric Versions - -=item Extended Versions - -=item Numeric Alpha Versions - -=item Object Methods - -New Operator, qv(), Normal Form, Numification, Stringification, Comparison -operators, Logical Operators - -=item Quoting - -=item What about v-strings? - -=item Types of Versions Objects - -Ordinary versions, Alpha Versions - -=item Replacement UNIVERSAL::VERSION - -=back - -=item SUBCLASSING - -=item EXPORT - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 vmsish - Perl pragma to control VMS-specific language features - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -C<vmsish status>, C<vmsish exit>, C<vmsish time>, C<vmsish hushed> - -=back - -=head2 warnings - Perl pragma to control optional warnings - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -use warnings::register, warnings::enabled(), warnings::enabled($category), -warnings::enabled($object), warnings::warn($message), -warnings::warn($category, $message), warnings::warn($object, $message), -warnings::warnif($message), warnings::warnif($category, $message), -warnings::warnif($object, $message) - -=back - -=head2 warnings::register - warnings import function - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=head1 MODULE DOCUMENTATION - -=head2 AnyDBM_File - provide framework for multiple DBMs - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item DBM Comparisons - -[0], [1], [2], [3] - -=back - -=item SEE ALSO - -=back - -=head2 App::Prove - Implements the C<prove> command. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item SYNOPSIS - -=back - -=over 4 - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=over 4 - -=item Attributes - -C<archive>, C<argv>, C<backwards>, C<blib>, C<color>, C<directives>, -C<dry>, C<exec>, C<extension>, C<failures>, C<fork>, C<formatter>, -C<harness>, C<ignore_exit>, C<includes>, C<jobs>, C<lib>, C<merge>, -C<modules>, C<parse>, C<plugins>, C<quiet>, C<really_quiet>, C<recurse>, -C<rules>, C<show_count>, C<show_help>, C<show_man>, C<show_version>, -C<shuffle>, C<state>, C<taint_fail>, C<taint_warn>, C<test_args>, C<timer>, -C<verbose>, C<warnings_fail>, C<warnings_warn> - -=back - -=head2 App::Prove::State - State storage for the C<prove> command. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item SYNOPSIS - -=back - -=over 4 - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=over 4 - -=item C<result_class> - -=back - -=over 4 - -=item C<extension> - -=back - -=over 4 - -=item C<results> - -=back - -=over 4 - -=item C<commit> - -=back - -=over 4 - -=item Instance Methods - -C<last>, C<failed>, C<passed>, C<all>, C<hot>, C<todo>, C<slow>, C<fast>, -C<new>, C<old>, C<save> - -=back - -=head2 App::Prove::State::Result - Individual test suite results. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item SYNOPSIS - -=back - -=over 4 - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=over 4 - -=item C<state_version> - -=back - -=over 4 - -=item C<test_class> - -=back - -=head2 App::Prove::State::Result::Test - Individual test results. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item SYNOPSIS - -=back - -=over 4 - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=over 4 - -=item Instance Methods - -=back - -=head2 Archive::Extract - A generic archive extracting mechanism - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=over 4 - -=item METHODS - -=over 4 - -=item $ae = Archive::Extract->new(archive => '/path/to/archive',[type => -TYPE]) - -tar, tgz, gz, Z, zip, bz2, tbz, lzma - -=back - -=back - -=over 4 - -=item $ae->extract( [to => '/output/path'] ) - -$ae->extract_path, $ae->files - -=back - -=over 4 - -=item ACCESSORS - -=over 4 - -=item $ae->error([BOOL]) - -=item $ae->extract_path - -=item $ae->files - -=item $ae->archive - -=item $ae->type - -=item $ae->types - -=back - -=back - -=over 4 - -=item $ae->is_tgz - -=item $ae->is_tar - -=item $ae->is_gz - -=item $ae->is_Z - -=item $ae->is_zip - -=item $ae->is_lzma - -=back - -=over 4 - -=item $ae->bin_tar - -=item $ae->bin_gzip - -=item $ae->bin_unzip - -=item $ae->bin_unlzma - -=back - -=over 4 - -=item $bool = $ae->have_old_bunzip2 - -=back - -=over 4 - -=item HOW IT WORKS - -=item CAVEATS - -=over 4 - -=item File Extensions - -=item Supporting Very Large Files - -=item Bunzip2 support of arbitrary extensions. - -=back - -=item GLOBAL VARIABLES - -=over 4 - -=item $Archive::Extract::DEBUG - -=item $Archive::Extract::WARN - -=item $Archive::Extract::PREFER_BIN - -=back - -=item TODO - -Mime magic support - -=item BUG REPORTS - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 Archive::Tar - module for manipulations of tar archives - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Object Methods - -=over 4 - -=item Archive::Tar->new( [$file, $compressed] ) - -=back - -=back - -=over 4 - -=item $tar->read ( $filename|$handle, [$compressed, {opt => 'val'}] ) - -limit, filter, extract - -=back - -=over 4 - -=item $tar->contains_file( $filename ) - -=back - -=over 4 - -=item $tar->extract( [@filenames] ) - -=back - -=over 4 - -=item $tar->extract_file( $file, [$extract_path] ) - -=back - -=over 4 - -=item $tar->list_files( [\@properties] ) - -=back - -=over 4 - -=item $tar->get_files( [@filenames] ) - -=back - -=over 4 - -=item $tar->get_content( $file ) - -=back - -=over 4 - -=item $tar->replace_content( $file, $content ) - -=back - -=over 4 - -=item $tar->rename( $file, $new_name ) - -=back - -=over 4 - -=item $tar->remove (@filenamelist) - -=back - -=over 4 - -=item $tar->clear - -=back - -=over 4 - -=item $tar->write ( [$file, $compressed, $prefix] ) - -=back - -=over 4 - -=item $tar->add_files( @filenamelist ) - -=back - -=over 4 - -=item $tar->add_data ( $filename, $data, [$opthashref] ) - -FILE, HARDLINK, SYMLINK, CHARDEV, BLOCKDEV, DIR, FIFO, SOCKET - -=back - -=over 4 - -=item $tar->error( [$BOOL] ) - -=back - -=over 4 - -=item $tar->setcwd( $cwd ); - -=back - -=over 4 - -=item Class Methods - -=over 4 - -=item Archive::Tar->create_archive($file, $compressed, @filelist) - -=back - -=back - -=over 4 - -=item Archive::Tar->iter( $filename, [ $compressed, {opt => $val} ] ) - -=back - -=over 4 - -=item Archive::Tar->list_archive($file, $compressed, [\@properties]) - -=back - -=over 4 - -=item Archive::Tar->extract_archive($file, $compressed) - -=back - -=over 4 - -=item $bool = Archive::Tar->has_io_string - -=back - -=over 4 - -=item $bool = Archive::Tar->has_perlio - -=back - -=over 4 - -=item $bool = Archive::Tar->has_zlib_support - -=back - -=over 4 - -=item $bool = Archive::Tar->has_bzip2_support - -=back - -=over 4 - -=item Archive::Tar->can_handle_compressed_files - -=back - -=over 4 - -=item GLOBAL VARIABLES - -=over 4 - -=item $Archive::Tar::FOLLOW_SYMLINK - -=item $Archive::Tar::CHOWN - -=item $Archive::Tar::CHMOD - -=item $Archive::Tar::DO_NOT_USE_PREFIX - -=item $Archive::Tar::DEBUG - -=item $Archive::Tar::WARN - -=item $Archive::Tar::error - -=item $Archive::Tar::INSECURE_EXTRACT_MODE - -=item $Archive::Tar::HAS_PERLIO - -=item $Archive::Tar::HAS_IO_STRING - -=back - -=item FAQ - -What's the minimum perl version required to run Archive::Tar?, Isn't -Archive::Tar slow?, Isn't Archive::Tar heavier on memory than /bin/tar?, -Can you lazy-load data instead?, How much memory will an X kb tar file -need?, What do you do with unsupported filetypes in an archive?, I'm using -WinZip, or some other non-POSIX client, and files are not being extracted -properly!, How do I extract only files that have property X from an -archive?, How do I access .tar.Z files?, How do I handle Unicode strings? - -=item TODO - -Check if passed in handles are open for read/write, Allow archives to be -passed in as string, Facilitate processing an opened filehandle of a -compressed archive - -=item SEE ALSO - -The GNU tar specification, The PAX format specication, A comparison of GNU -and POSIX tar standards; -C<http://www.delorie.com/gnu/docs/tar/tar_114.html>, GNU tar intends to -switch to POSIX compatibility, A Comparison between various tar -implementations - -=item AUTHOR - -=item ACKNOWLEDGEMENTS - -=item COPYRIGHT - -=back - -=head2 Archive::Tar::File - a subclass for in-memory extracted file from -Archive::Tar - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Accessors - -name, mode, uid, gid, size, mtime, chksum, type, linkname, magic, version, -uname, gname, devmajor, devminor, prefix, raw - -=back - -=item Methods - -=over 4 - -=item Archive::Tar::File->new( file => $path ) - -=item Archive::Tar::File->new( data => $path, $data, $opt ) - -=item Archive::Tar::File->new( chunk => $chunk ) - -=back - -=back - -=over 4 - -=item $bool = $file->extract( [ $alternative_name ] ) - -=back - -=over 4 - -=item $path = $file->full_path - -=back - -=over 4 - -=item $bool = $file->validate - -=back - -=over 4 - -=item $bool = $file->has_content - -=back - -=over 4 - -=item $content = $file->get_content - -=back - -=over 4 - -=item $cref = $file->get_content_by_ref - -=back - -=over 4 - -=item $bool = $file->replace_content( $content ) - -=back - -=over 4 - -=item $bool = $file->rename( $new_name ) - -=back - -=over 4 - -=item Convenience methods - -$file->is_file, $file->is_dir, $file->is_hardlink, $file->is_symlink, -$file->is_chardev, $file->is_blockdev, $file->is_fifo, $file->is_socket, -$file->is_longlink, $file->is_label, $file->is_unknown - -=back - -=head2 Attribute::Handlers - Simpler definition of attribute handlers - -=over 4 - -=item VERSION - -=item SYNOPSIS - -=item DESCRIPTION - -[0], [1], [2], [3], [4], [5], [6], [7] - -=over 4 - -=item Typed lexicals - -=item Type-specific attribute handlers - -=item Non-interpretive attribute handlers - -=item Phase-specific attribute handlers - -=item Attributes as C<tie> interfaces - -=back - -=item EXAMPLES - -=item DIAGNOSTICS - -C<Bad attribute type: ATTR(%s)>, C<Attribute handler %s doesn't handle %s -attributes>, C<Declaration of %s attribute in package %s may clash with -future reserved word>, C<Can't have two ATTR specifiers on one subroutine>, -C<Can't autotie a %s>, C<Internal error: %s symbol went missing>, C<Won't -be able to apply END handler> - -=item AUTHOR - -=item BUGS - -=item COPYRIGHT AND LICENSE - -=back - -=head2 AutoLoader - load subroutines only on demand - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Subroutine Stubs - -=item Using B<AutoLoader>'s AUTOLOAD Subroutine - -=item Overriding B<AutoLoader>'s AUTOLOAD Subroutine - -=item Package Lexicals - -=item Not Using AutoLoader - -=item B<AutoLoader> vs. B<SelfLoader> - -=back - -=item CAVEATS - -=item SEE ALSO - -=item AUTHOR - -=item COPYRIGHT AND LICENSE - -=back - -=head2 AutoSplit - split a package for autoloading - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -$keep, $check, $modtime - -=over 4 - -=item Multiple packages - -=back - -=item DIAGNOSTICS - -=item AUTHOR - -=item COPYRIGHT AND LICENSE - -=back - -=head2 B - The Perl Compiler - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item OVERVIEW - -=item Utility Functions - -=over 4 - -=item Functions Returning C<B::SV>, C<B::AV>, C<B::HV>, and C<B::CV> -objects - -sv_undef, sv_yes, sv_no, svref_2object(SVREF), amagic_generation, init_av, -check_av, unitcheck_av, begin_av, end_av, comppadlist, regex_padav, main_cv - -=item Functions for Examining the Symbol Table - -walksymtable(SYMREF, METHOD, RECURSE, PREFIX) - -=item Functions Returning C<B::OP> objects or for walking op trees - -main_root, main_start, walkoptree(OP, METHOD), walkoptree_debug(DEBUG) - -=item Miscellaneous Utility Functions - -ppname(OPNUM), hash(STR), cast_I32(I), minus_c, cstring(STR), -perlstring(STR), class(OBJ), threadsv_names - -=item Exported utility variabiles - -@optype, @specialsv_name - -=back - -=item OVERVIEW OF CLASSES - -=over 4 - -=item SV-RELATED CLASSES - -=item B::SV Methods - -REFCNT, FLAGS, object_2svref - -=item B::IV Methods - -IV, IVX, UVX, int_value, needs64bits, packiv - -=item B::NV Methods - -NV, NVX - -=item B::RV Methods - -RV - -=item B::PV Methods - -PV, RV, PVX - -=item B::PVMG Methods - -MAGIC, SvSTASH - -=item B::MAGIC Methods - -MOREMAGIC, precomp, PRIVATE, TYPE, FLAGS, OBJ, PTR, REGEX - -=item B::PVLV Methods - -TARGOFF, TARGLEN, TYPE, TARG - -=item B::BM Methods - -USEFUL, PREVIOUS, RARE, TABLE - -=item B::GV Methods - -is_empty, NAME, SAFENAME, STASH, SV, IO, FORM, AV, HV, EGV, CV, CVGEN, -LINE, FILE, FILEGV, GvREFCNT, FLAGS - -=item B::IO Methods - -LINES, PAGE, PAGE_LEN, LINES_LEFT, TOP_NAME, TOP_GV, FMT_NAME, FMT_GV, -BOTTOM_NAME, BOTTOM_GV, SUBPROCESS, IoTYPE, IoFLAGS, IsSTD - -=item B::AV Methods - -FILL, MAX, ARRAY, ARRAYelt, OFF, AvFLAGS - -=item B::CV Methods - -STASH, START, ROOT, GV, FILE, DEPTH, PADLIST, OUTSIDE, OUTSIDE_SEQ, XSUB, -XSUBANY, CvFLAGS, const_sv - -=item B::HV Methods - -FILL, MAX, KEYS, RITER, NAME, ARRAY, PMROOT - -=item OP-RELATED CLASSES - -=item B::OP Methods - -next, sibling, name, ppaddr, desc, targ, type, opt, flags, private, spare - -=item B::UNOP METHOD - -first - -=item B::BINOP METHOD - -last - -=item B::LOGOP METHOD - -other - -=item B::LISTOP METHOD - -children - -=item B::PMOP Methods - -pmreplroot, pmreplstart, pmnext, pmregexp, pmflags, extflags, precomp, -pmoffset - -=item B::SVOP METHOD - -sv, gv - -=item B::PADOP METHOD - -padix - -=item B::PVOP METHOD - -pv - -=item B::LOOP Methods - -redoop, nextop, lastop - -=item B::COP Methods - -label, stash, stashpv, file, cop_seq, arybase, line, warnings, io, hints, -hints_hash - -=back - -=item AUTHOR - -=back - -=head2 B::Concise - Walk Perl syntax tree, printing concise info about ops - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item EXAMPLE - -=item OPTIONS - -=over 4 - -=item Options for Opcode Ordering - -B<-basic>, B<-exec>, B<-tree> - -=item Options for Line-Style - -B<-concise>, B<-terse>, B<-linenoise>, B<-debug>, B<-env> - -=item Options for tree-specific formatting - -B<-compact>, B<-loose>, B<-vt>, B<-ascii> - -=item Options controlling sequence numbering - -B<-base>I<n>, B<-bigendian>, B<-littleendian> - -=item Other options - -B<-src>, B<-stash="somepackage">, B<-main>, B<-nomain>, B<-nobanner>, -B<-banner>, B<-banneris> => subref - -=item Option Stickiness - -=back - -=item ABBREVIATIONS - -=over 4 - -=item OP class abbreviations - -=item OP flags abbreviations - -=back - -=item FORMATTING SPECIFICATIONS - -=over 4 - -=item Special Patterns - -B<(x(>I<exec_text>B<;>I<basic_text>B<)x)>, B<(*(>I<text>B<)*)>, -B<(*(>I<text1>B<;>I<text2>B<)*)>, B<(?(>I<text1>B<#>I<var>I<Text2>B<)?)>, -B<~> - -=item # Variables - -B<#>I<var>, B<#>I<var>I<N>, B<#>I<Var>, B<#addr>, B<#arg>, B<#class>, -B<#classsym>, B<#coplabel>, B<#exname>, B<#extarg>, B<#firstaddr>, -B<#flags>, B<#flagval>, B<#hints>, B<#hintsval>, B<#hyphseq>, B<#label>, -B<#lastaddr>, B<#name>, B<#NAME>, B<#next>, B<#nextaddr>, B<#noise>, -B<#private>, B<#privval>, B<#seq>, B<#seqnum>, B<#opt>, B<#sibaddr>, -B<#svaddr>, B<#svclass>, B<#svval>, B<#targ>, B<#targarg>, B<#targarglife>, -B<#typenum> - -=back - -=item One-Liner Command tips - -perl -MO=Concise,bar foo.pl, perl -MDigest::MD5=md5 -MO=Concise,md5 -e1, -perl -MPOSIX -MO=Concise,_POSIX_ARG_MAX -e1, perl -MPOSIX -MO=Concise,a -e -'print _POSIX_SAVED_IDS', perl -MPOSIX -MO=Concise,a -e 'sub -a{_POSIX_SAVED_IDS}', perl -MB::Concise -e -'B::Concise::compile("-exec","-src", \%B::Concise::)->()' - -=item Using B::Concise outside of the O framework - -=over 4 - -=item Example: Altering Concise Renderings - -=item set_style() - -=item set_style_standard($name) - -=item add_style() - -=item add_callback() - -=item Running B::Concise::compile() - -=item B::Concise::reset_sequence() - -=item Errors - -=back - -=item AUTHOR - -=back - -=head2 B::Debug - Walk Perl syntax tree, printing debug info about ops - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item OPTIONS - -=item Changes - -=item AUTHOR - -=item LICENSE - -=back - -=head2 B::Deparse - Perl compiler backend to produce perl code - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item OPTIONS - -B<-d>, B<-f>I<FILE>, B<-l>, B<-p>, B<-P>, B<-q>, B<-s>I<LETTERS>, B<C>, -B<i>I<NUMBER>, B<T>, B<v>I<STRING>B<.>, B<-x>I<LEVEL> - -=item USING B::Deparse AS A MODULE - -=over 4 - -=item Synopsis - -=item Description - -=item new - -=item ambient_pragmas - -strict, $[, bytes, utf8, integer, re, warnings, hint_bits, warning_bits, -%^H - -=item coderef2text - -=back - -=item BUGS - -=item AUTHOR - -=back - -=head2 B::Lint - Perl lint - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item OPTIONS AND LINT CHECKS - -B<magic-diamond>, B<context>, B<implicit-read> and B<implicit-write>, -B<bare-subs>, B<dollar-underscore>, B<private-names>, B<undefined-subs>, -B<regexp-variables>, B<all>, B<none> - -=item NON LINT-CHECK OPTIONS - -B<-u Package> - -=item EXTENDING LINT - -=item TODO - -while(<FH>) stomps $_, strict oo, unchecked system calls, more tests, -validate against older perls - -=item BUGS - -=item AUTHOR - -=item ACKNOWLEDGEMENTS - -=back - -=head2 B::Lint::Debug - Adds debugging stringification to B:: - -=over 4 - -=item DESCRIPTION - -=back - -=head2 B::O, O - Generic interface to Perl Compiler backends - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item CONVENTIONS - -=item IMPLEMENTATION - -=item BUGS - -=item AUTHOR - -=back - -=head2 B::Showlex - Show lexical variables used in functions or files - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item EXAMPLES - -=over 4 - -=item OPTIONS - -=back - -=item SEE ALSO - -=item TODO - -=item AUTHOR - -=back - -=head2 B::Terse - Walk Perl syntax tree, printing terse info about ops - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item AUTHOR - -=back - -=head2 B::Xref - Generates cross reference reports for Perl programs - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item OPTIONS - -C<-oFILENAME>, C<-r>, C<-d>, C<-D[tO]> - -=item BUGS - -=item AUTHOR - -=back - -=head2 Benchmark - benchmark running times of Perl code - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Methods - -new, debug, iters - -=item Standard Exports - -timeit(COUNT, CODE), timethis ( COUNT, CODE, [ TITLE, [ STYLE ]] ), -timethese ( COUNT, CODEHASHREF, [ STYLE ] ), timediff ( T1, T2 ), timestr ( -TIMEDIFF, [ STYLE, [ FORMAT ] ] ) - -=item Optional Exports - -clearcache ( COUNT ), clearallcache ( ), cmpthese ( COUNT, CODEHASHREF, [ -STYLE ] ), cmpthese ( RESULTSHASHREF, [ STYLE ] ), countit(TIME, CODE), -disablecache ( ), enablecache ( ), timesum ( T1, T2 ) - -=item :hireswallclock - -=back - -=item NOTES - -=item EXAMPLES - -=item INHERITANCE - -=item CAVEATS - -=item SEE ALSO - -=item AUTHORS - -=item MODIFICATION HISTORY - -=back - -=head2 CGI - Simple Common Gateway Interface Class - -=over 4 - -=item SYNOPSIS - -=item ABSTRACT - -=item DESCRIPTION - -=over 4 - -=item PROGRAMMING STYLE - -=item CALLING CGI.PM ROUTINES - -=item CREATING A NEW QUERY OBJECT (OBJECT-ORIENTED STYLE): - -=item CREATING A NEW QUERY OBJECT FROM AN INPUT FILE - -=item FETCHING A LIST OF KEYWORDS FROM THE QUERY: - -=item FETCHING THE NAMES OF ALL THE PARAMETERS PASSED TO YOUR SCRIPT: - -=item FETCHING THE VALUE OR VALUES OF A SINGLE NAMED PARAMETER: - -=item SETTING THE VALUE(S) OF A NAMED PARAMETER: - -=item APPENDING ADDITIONAL VALUES TO A NAMED PARAMETER: - -=item IMPORTING ALL PARAMETERS INTO A NAMESPACE: - -=item DELETING A PARAMETER COMPLETELY: - -=item DELETING ALL PARAMETERS: - -=item HANDLING NON-URLENCODED ARGUMENTS - -=item DIRECT ACCESS TO THE PARAMETER LIST: - -=item FETCHING THE PARAMETER LIST AS A HASH: - -=item SAVING THE STATE OF THE SCRIPT TO A FILE: - -=item RETRIEVING CGI ERRORS - -=item USING THE FUNCTION-ORIENTED INTERFACE - -B<:cgi>, B<:form>, B<:html2>, B<:html3>, B<:html4>, B<:netscape>, B<:html>, -B<:standard>, B<:all> - -=item PRAGMAS - --any, -compile, -nosticky, -tabindex, -no_undef_params, -no_xhtml, -utf8, --nph, -newstyle_urls, -oldstyle_urls, -autoload, -no_debug, -debug, --private_tempfiles - -=item SPECIAL FORMS FOR IMPORTING HTML-TAG FUNCTIONS - -1. start_table() (generates a <table> tag), 2. end_table() (generates a -</table> tag), 3. start_ul() (generates a <ul> tag), 4. end_ul() (generates -a </ul> tag) - -=back - -=item GENERATING DYNAMIC DOCUMENTS - -=over 4 - -=item CREATING A STANDARD HTTP HEADER: - -=item GENERATING A REDIRECTION HEADER - -=item CREATING THE HTML DOCUMENT HEADER - -B<Parameters:>, 4, 5, 6.. - -=item ENDING THE HTML DOCUMENT: - -=item CREATING A SELF-REFERENCING URL THAT PRESERVES STATE INFORMATION: - -=item OBTAINING THE SCRIPT'S URL - -B<-absolute>, B<-relative>, B<-full>, B<-path> (B<-path_info>), B<-query> -(B<-query_string>), B<-base>, B<-rewrite> - -=item MIXING POST AND URL PARAMETERS - -=back - -=item CREATING STANDARD HTML ELEMENTS: - -=over 4 - -=item PROVIDING ARGUMENTS TO HTML SHORTCUTS - -=item THE DISTRIBUTIVE PROPERTY OF HTML SHORTCUTS - -=item HTML SHORTCUTS AND LIST INTERPOLATION - -=item NON-STANDARD HTML SHORTCUTS - -=item AUTOESCAPING HTML - -$escaped_string = escapeHTML("unescaped string");, $charset = -charset([$charset]);, $flag = autoEscape([$flag]); - -=item PRETTY-PRINTING HTML - -=back - -=item CREATING FILL-OUT FORMS: - -=over 4 - -=item CREATING AN ISINDEX TAG - -=item STARTING AND ENDING A FORM - -B<application/x-www-form-urlencoded>, B<multipart/form-data> - -=item FORM ELEMENTS - -B<-name>, B<-value>, B<-values>, B<-tabindex>, B<-id>, B<-override>, -B<-onChange>, B<-onFocus>, B<-onBlur>, B<-onMouseOver>, B<-onMouseOut>, -B<-onSelect> - -=item CREATING A TEXT FIELD - -B<Parameters> - -=item CREATING A BIG TEXT FIELD - -=item CREATING A PASSWORD FIELD - -=item CREATING A FILE UPLOAD FIELD - -B<Parameters> - -=item CREATING A POPUP MENU - -=item CREATING AN OPTION GROUP - -=item CREATING A SCROLLING LIST - -B<Parameters:> - -=item CREATING A GROUP OF RELATED CHECKBOXES - -B<Parameters:> - -=item CREATING A STANDALONE CHECKBOX - -B<Parameters:> - -=item CREATING A RADIO BUTTON GROUP - -B<Parameters:> - -=item CREATING A SUBMIT BUTTON - -B<Parameters:> - -=item CREATING A RESET BUTTON - -=item CREATING A DEFAULT BUTTON - -=item CREATING A HIDDEN FIELD - -B<Parameters:> - -=item CREATING A CLICKABLE IMAGE BUTTON - -B<Parameters:>, 3. The third option (-align, optional) is an alignment -type, and may be TOP, BOTTOM or MIDDLE - -=item CREATING A JAVASCRIPT ACTION BUTTON - -=back - -=item HTTP COOKIES - -1. an expiration time, 2. a domain, 3. a path, 4. a "secure" flag, -B<-name>, B<-value>, B<-path>, B<-domain>, B<-expires>, B<-secure> - -=item WORKING WITH FRAMES - -1. Create a <Frameset> document, 2. Specify the destination for the -document in the HTTP header, 3. Specify the destination for the document in -the <form> tag - -=item SUPPORT FOR JAVASCRIPT - -B<onLoad>, B<onUnload>, B<onSubmit>, B<onClick>, B<onChange>, B<onFocus>, -B<onBlur>, B<onSelect>, B<onMouseOver>, B<onMouseOut> - -=item LIMITED SUPPORT FOR CASCADING STYLE SHEETS - -=item DEBUGGING - -=over 4 - -=item DUMPING OUT ALL THE NAME/VALUE PAIRS - -=back - -=item FETCHING ENVIRONMENT VARIABLES - -B<Accept()>, B<raw_cookie()>, B<user_agent()>, B<path_info()>, -B<path_translated()>, B<remote_host()>, B<script_name()> Return the script -name as a partial URL, for self-refering scripts, B<referer()>, B<auth_type -()>, B<server_name ()>, B<virtual_host ()>, B<server_port ()>, -B<virtual_port ()>, B<server_software ()>, B<remote_user ()>, B<user_name -()>, B<request_method()>, B<content_type()>, B<http()>, B<https()> - -=item USING NPH SCRIPTS - -In the B<use> statement, By calling the B<nph()> method:, By using B<-nph> -parameters - -=item Server Push - -multipart_init(), multipart_start(), multipart_end(), multipart_final() - -=item Avoiding Denial of Service Attacks - -B<$CGI::POST_MAX>, B<$CGI::DISABLE_UPLOADS>, B<1. On a script-by-script -basis>, B<2. Globally for all scripts> - -=item COMPATIBILITY WITH CGI-LIB.PL - -=item AUTHOR INFORMATION - -=item CREDITS - -Matt Heffron (heffron@falstaff.css.beckman.com), James Taylor -(james.taylor@srs.gov), Scott Anguish <sanguish@digifix.com>, Mike Jewell -(mlj3u@virginia.edu), Timothy Shimmin (tes@kbs.citri.edu.au), Joergen Haegg -(jh@axis.se), Laurent Delfosse (delfosse@delfosse.com), Richard Resnick -(applepi1@aol.com), Craig Bishop (csb@barwonwater.vic.gov.au), Tony Curtis -(tc@vcpc.univie.ac.at), Tim Bunce (Tim.Bunce@ig.co.uk), Tom Christiansen -(tchrist@convex.com), Andreas Koenig (k@franz.ww.TU-Berlin.DE), Tim -MacKenzie (Tim.MacKenzie@fulcrum.com.au), Kevin B. Hendricks -(kbhend@dogwood.tyler.wm.edu), Stephen Dahmen (joyfire@inxpress.net), Ed -Jordan (ed@fidalgo.net), David Alan Pisoni (david@cnation.com), Doug -MacEachern (dougm@opengroup.org), Robin Houston (robin@oneworld.org), -...and many many more.. - -=item A COMPLETE EXAMPLE OF A SIMPLE FORM-BASED SCRIPT - -=item BUGS - -=item SEE ALSO - -=back - -=head2 CGI::Apache - Backward compatibility module for CGI.pm - -=over 4 - -=item SYNOPSIS - -=item ABSTRACT - -=item DESCRIPTION - -=item AUTHOR INFORMATION - -=item BUGS - -=item SEE ALSO - -=back - -=head2 CGI::Carp, B<CGI::Carp> - CGI routines for writing to the HTTPD (or -other) error log - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item REDIRECTING ERROR MESSAGES - -=item MAKING PERL ERRORS APPEAR IN THE BROWSER WINDOW - -=over 4 - -=item Changing the default message - -=back - -=item DOING MORE THAN PRINTING A MESSAGE IN THE EVENT OF PERL ERRORS - -=item MAKING WARNINGS APPEAR AS HTML COMMENTS - -=item OVERRIDING THE NAME OF THE PROGRAM - -=item AUTHORS - -=item SEE ALSO - -=back - -=head2 CGI::Cookie - Interface to Netscape Cookies - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item USING CGI::Cookie - -B<1. expiration date>, B<2. domain>, B<3. path>, B<4. secure flag>, B<4. -httponly flag> - -=over 4 - -=item Creating New Cookies - -=item Sending the Cookie to the Browser - -=item Recovering Previous Cookies - -=item Manipulating Cookies - -B<name()>, B<value()>, B<domain()>, B<path()>, B<expires()> - -=back - -=item AUTHOR INFORMATION - -=item BUGS - -=item SEE ALSO - -=back - -=head2 CGI::Fast - CGI Interface for Fast CGI - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item OTHER PIECES OF THE PUZZLE - -=item WRITING FASTCGI PERL SCRIPTS - -=item INSTALLING FASTCGI SCRIPTS - -=item USING FASTCGI SCRIPTS AS CGI SCRIPTS - -=item EXTERNAL FASTCGI SERVER INVOCATION - -FCGI_SOCKET_PATH, FCGI_LISTEN_QUEUE - -=item CAVEATS - -=item AUTHOR INFORMATION - -=item BUGS - -=item SEE ALSO - -=back - -=head2 CGI::Pretty - module to produce nicely formatted HTML code - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Tags that won't be formatted - -=item Customizing the Indenting - -=back - -=item BUGS - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 CGI::Push - Simple Interface to Server Push - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item USING CGI::Push - --next_page, -last_page, -type, -delay, -cookie, -target, -expires, -nph - -=over 4 - -=item Heterogeneous Pages - -=item Changing the Page Delay on the Fly - -=back - -=item INSTALLING CGI::Push SCRIPTS - -=item AUTHOR INFORMATION - -=item BUGS - -=item SEE ALSO - -=back - -=head2 CGI::Switch - Backward compatibility module for defunct CGI::Switch - -=over 4 - -=item SYNOPSIS - -=item ABSTRACT - -=item DESCRIPTION - -=item AUTHOR INFORMATION - -=item BUGS - -=item SEE ALSO - -=back - -=head2 CGI::Util - Internal utilities used by CGI module - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item AUTHOR INFORMATION - -=item SEE ALSO - -=back - -=head2 CORE - Pseudo-namespace for Perl's core routines - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item OVERRIDING CORE FUNCTIONS - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 CPAN - query, download and build perl modules from CPAN sites - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item CPAN::shell([$prompt, $command]) Starting Interactive Mode - -Searching for authors, bundles, distribution files and modules, C<get>, -C<make>, C<test>, C<install>, C<clean> modules or distributions, C<readme>, -C<perldoc>, C<look> module or distribution, C<ls> author, C<ls> -globbing_expression, C<failed>, Persistence between sessions, The C<force> -and the C<fforce> pragma, Lockfile, Signals - -=item CPAN::Shell - -=item autobundle - -=item hosts - -=item mkmyconfig - -=item recent ***EXPERIMENTAL COMMAND*** - -=item recompile - -=item report Bundle|Distribution|Module - -=item smoke ***EXPERIMENTAL COMMAND*** - -=item upgrade [Module|/Regex/]... - -=item The four C<CPAN::*> Classes: Author, Bundle, Module, Distribution - -=item Integrating local directories - -=item Redirection - -=back - -=item CONFIGURATION - -completion support, displaying some help: o conf help, displaying current -values: o conf [KEY], changing of scalar values: o conf KEY VALUE, changing -of list values: o conf KEY SHIFT|UNSHIFT|PUSH|POP|SPLICE|LIST, reverting to -saved: o conf defaults, saving the config: o conf commit - -=over 4 - -=item Config Variables - -C<o conf E<lt>scalar optionE<gt>>, C<o conf E<lt>scalar optionE<gt> -E<lt>valueE<gt>>, C<o conf E<lt>list optionE<gt>>, C<o conf E<lt>list -optionE<gt> [shift|pop]>, C<o conf E<lt>list optionE<gt> -[unshift|push|splice] E<lt>listE<gt>>, interactive editing: o conf init -[MATCH|LIST] - -=item CPAN::anycwd($path): Note on config variable getcwd - -cwd, getcwd, fastcwd, backtickcwd - -=item Note on the format of the urllist parameter - -=item The urllist parameter has CD-ROM support - -=item Maintaining the urllist parameter - -=item The C<requires> and C<build_requires> dependency declarations - -=item Configuration for individual distributions (I<Distroprefs>) - -=item Filenames - -=item Fallback Data::Dumper and Storable - -=item Blueprint - -=item Language Specs - -comment [scalar], cpanconfig [hash], depends [hash] *** EXPERIMENTAL -FEATURE ***, disabled [boolean], features [array] *** EXPERIMENTAL FEATURE -***, goto [string], install [hash], make [hash], match [hash], patches -[array], pl [hash], test [hash] - -=item Processing Instructions - -args [array], commandline, eexpect [hash], env [hash], expect [array] - -=item Schema verification with C<Kwalify> - -=item Example Distroprefs Files - -=back - -=item PROGRAMMER'S INTERFACE - -expand($type,@things), expandany(@things), Programming Examples - -=over 4 - -=item Methods in the other Classes - -CPAN::Author::as_glimpse(), CPAN::Author::as_string(), -CPAN::Author::email(), CPAN::Author::fullname(), CPAN::Author::name(), -CPAN::Bundle::as_glimpse(), CPAN::Bundle::as_string(), -CPAN::Bundle::clean(), CPAN::Bundle::contains(), -CPAN::Bundle::force($method,@args), CPAN::Bundle::get(), -CPAN::Bundle::inst_file(), CPAN::Bundle::inst_version(), -CPAN::Bundle::uptodate(), CPAN::Bundle::install(), CPAN::Bundle::make(), -CPAN::Bundle::readme(), CPAN::Bundle::test(), -CPAN::Distribution::as_glimpse(), CPAN::Distribution::as_string(), -CPAN::Distribution::author, CPAN::Distribution::pretty_id(), -CPAN::Distribution::base_id(), CPAN::Distribution::clean(), -CPAN::Distribution::containsmods(), CPAN::Distribution::cvs_import(), -CPAN::Distribution::dir(), CPAN::Distribution::force($method,@args), -CPAN::Distribution::get(), CPAN::Distribution::install(), -CPAN::Distribution::install_tested(), CPAN::Distribution::isa_perl(), -CPAN::Distribution::look(), CPAN::Distribution::make(), -CPAN::Distribution::perldoc(), CPAN::Distribution::prefs(), -CPAN::Distribution::prereq_pm(), CPAN::Distribution::readme(), -CPAN::Distribution::reports(), CPAN::Distribution::read_yaml(), -CPAN::Distribution::test(), CPAN::Distribution::uptodate(), -CPAN::Index::force_reload(), CPAN::Index::reload(), CPAN::InfoObj::dump(), -CPAN::Module::as_glimpse(), CPAN::Module::as_string(), -CPAN::Module::clean(), CPAN::Module::cpan_file(), -CPAN::Module::cpan_version(), CPAN::Module::cvs_import(), -CPAN::Module::description(), CPAN::Module::distribution(), -CPAN::Module::dslip_status(), CPAN::Module::force($method,@args), -CPAN::Module::get(), CPAN::Module::inst_file(), -CPAN::Module::available_file(), CPAN::Module::inst_version(), -CPAN::Module::available_version(), CPAN::Module::install(), -CPAN::Module::look(), CPAN::Module::make(), -CPAN::Module::manpage_headline(), CPAN::Module::perldoc(), -CPAN::Module::readme(), CPAN::Module::reports(), CPAN::Module::test(), -CPAN::Module::uptodate(), CPAN::Module::userid() - -=item Cache Manager - -=item Bundles - -=back - -=item PREREQUISITES - -=item UTILITIES - -=over 4 - -=item Finding packages and VERSION - -=item Debugging - -o debug package.., o debug -package.., o debug all, o debug number - -=item Floppy, Zip, Offline Mode - -=item Basic Utilities for Programmers - -has_inst($module), has_usable($module), instance($module) - -=back - -=item SECURITY - -=over 4 - -=item Cryptographically signed modules - -=back - -=item EXPORT - -=item ENVIRONMENT - -=item POPULATE AN INSTALLATION WITH LOTS OF MODULES - -=item WORKING WITH CPAN.pm BEHIND FIREWALLS - -=over 4 - -=item Three basic types of firewalls - -http firewall, ftp firewall, One way visibility, SOCKS, IP Masquerade - -=item Configuring lynx or ncftp for going through a firewall - -=back - -=item FAQ - -1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), -18) - -=item COMPATIBILITY - -=over 4 - -=item OLD PERL VERSIONS - -=item CPANPLUS - -=back - -=item SECURITY ADVICE - -=item BUGS - -=item AUTHOR - -=item LICENSE - -=item TRANSLATIONS - -=item SEE ALSO - -=back - -=head2 CPAN::API::HOWTO - a recipe book for programming with CPAN.pm - -=over 4 - -=item RECIPES - -=over 4 - -=item What distribution contains a particular module? - -=item What modules does a particular distribution contain? - -=back - -=item SEE ALSO - -=item LICENSE - -=item AUTHOR - -=back - -=head2 CPAN::Distroprefs -- read and match distroprefs - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item INTERFACE - -a CPAN::Distroprefs::Result object, C<undef>, indicating that no prefs -files remain to be found - -=item RESULTS - -=over 4 - -=item Common - -=item Errors - -=item Successes - -=back - -=item PREFS - -=item LICENSE - -=back - -=head2 CPAN::FirstTime - Utility for CPAN::Config file Initialization - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -auto_commit, build_cache, build_dir, build_dir_reuse, -build_requires_install_policy, cache_metadata, check_sigs, colorize_output, -colorize_print, colorize_warn, colorize_debug, commandnumber_in_prompt, -connect_to_internet_ok, ftp_passive, ftpstats_period, ftpstats_size, -getcwd, halt_on_failure, histfile, histsize, inactivity_timeout, -index_expire, inhibit_startup_message, keep_source_where, -load_module_verbosity, makepl_arg, make_arg, make_install_arg, -make_install_make_command, mbuildpl_arg, mbuild_arg, mbuild_install_arg, -mbuild_install_build_command, pager, prefer_installer, prefs_dir, -prerequisites_policy, randomize_urllist, scan_cache, shell, -show_unparsable_versions, show_upload_date, show_zero_versions, -tar_verbosity, term_is_latin, term_ornaments, test_report, -perl5lib_verbosity, trust_test_report_history, use_sqlite, yaml_load_code, -yaml_module - -=over 4 - -=item LICENSE - -=back - -=head2 CPAN::Kwalify - Interface between CPAN.pm and Kwalify.pm - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -_validate($schema_name, $data, $file, $doc), yaml($schema_name) - -=item AUTHOR - -=item LICENSE - -=back - -=head2 CPAN::Version - utility functions to compare CPAN versions - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item LICENSE - -=back - -=head2 CPANPLUS - API & CLI access to the CPAN mirrors - -=over 4 - -=item SYNOPSIS - -=item GUIDE TO DOCUMENTATION - -=over 4 - -=item GENERAL USAGE - -=item API REFERENCE - -=back - -=back - -=over 4 - -=item COMMANDLINE TOOLS - -=over 4 - -=item STARTING AN INTERACTIVE SHELL - -=item BUILDING PACKAGES - -=item $bool = install( Module::Name | /A/AU/AUTHOR/Module-Name-1.tgz ) - -=item $where = fetch( Module::Name | /A/AU/AUTHOR/Module-Name-1.tgz ) - -=item $where = get( Module::Name | /A/AU/AUTHOR/Module-Name-1.tgz ) - -=item shell() - -=back - -=item FAQ - -=item BUG REPORTS - -=item AUTHOR - -=item COPYRIGHT - -=item SEE ALSO - -=item CONTACT INFORMATION - -Bug reporting: I<bug-cpanplus@rt.cpan.org>, Questions & suggestions: -I<cpanplus-devel@lists.sourceforge.net> - -=back - -=head2 CPANPLUS::Backend - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item ENVIRONMENT - -=item METHODS - -=over 4 - -=item $cb = CPANPLUS::Backend->new( [CONFIGURE_OBJ] ) - -Provide a valid C<CPANPLUS::Configure> object, No arguments - -=back - -=back - -=over 4 - -=item $href = $cb->module_tree( [@modules_names_list] ) - -=back - -=over 4 - -=item $href = $cb->author_tree( [@author_names_list] ) - -=back - -=over 4 - -=item $conf = $cb->configure_object; - -=back - -=over 4 - -=item $su = $cb->selfupdate_object; - -=back - -=over 4 - -=item @mods = $cb->search( type => TYPE, allow => AREF, [data => AREF, -verbose => BOOL] ) - -=back - -=over 4 - -=item $backend_rv = $cb->fetch( modules => \@mods ) - -=item $backend_rv = $cb->extract( modules => \@mods ) - -=item $backend_rv = $cb->install( modules => \@mods ) - -=item $backend_rv = $cb->readme( modules => \@mods ) - -=item $backend_rv = $cb->files( modules => \@mods ) - -=item $backend_rv = $cb->distributions( modules => \@mods ) - -=back - -=over 4 - -=item $mod_obj = $cb->parse_module( module => -$modname|$distname|$modobj|URI ) - -Text::Bastardize, Text-Bastardize, Text-Bastardize-1.06, -AYRNIEU/Text-Bastardize, AYRNIEU/Text-Bastardize-1.06, -AYRNIEU/Text-Bastardize-1.06.tar.gz, -http://example.com/Text-Bastardize-1.06.tar.gz, -file:///tmp/Text-Bastardize-1.06.tar.gz - -=back - -=over 4 - -=item $bool = $cb->reload_indices( [update_source => BOOL, verbose => BOOL] -); - -=back - -=over 4 - -=item $bool = $cb->flush(CACHE_NAME) - -C<methods>, C<hosts>, C<modules>, C<lib>, C<load>, C<all> - -=back - -=over 4 - -=item @mods = $cb->installed() - -=back - -=over 4 - -=item $bool = $cb->local_mirror([path => '/dir/to/save/to', index_files => -BOOL, force => BOOL, verbose => BOOL] ) - -path, index_files, force, verbose - -=back - -=over 4 - -=item $file = $cb->autobundle([path => OUTPUT_PATH, force => BOOL, verbose -=> BOOL]) - -=back - -=over 4 - -=item CUSTOM MODULE SOURCES - -=over 4 - -=item %files = $cb->list_custom_sources - -=back - -=back - -=over 4 - -=item $local_index = $cb->add_custom_source( uri => URI, [verbose => BOOL] -); - -=back - -=over 4 - -=item $local_index = $cb->remove_custom_source( uri => URI, [verbose => -BOOL] ); - -=back - -=over 4 - -=item $bool = $cb->update_custom_source( [remote => URI] ); - -=back - -=over 4 - -=item $file = $cb->write_custom_source_index( path => -/path/to/package/root, [to => /path/to/index/file, verbose => BOOL] ); - -=back - -=over 4 - -=item BUG REPORTS - -=item AUTHOR - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 CPANPLUS::Backend::RV - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item new( ok => BOOL, args => DATA, rv => DATA, [function => $method_name] -) - -ok, args, rv, function - -=back - -=back - -=over 4 - -=item BUG REPORTS - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 CPANPLUS::Config - -=over 4 - -=item DESCRIPTION - -=item CONFIGURATION - -=back - -=over 4 - -=item Section 'conf' - -hosts - -=back - -base - -buildflags - -cpantest - -cpantest_mx - -debug - -dist_type - -email - -extractdir - -fetchdir - -flush - -force - -lib - -makeflags - -makemakerflags - -md5 - -no_update - -passive - -prefer_bin - -prefer_makefile - -prereqs - -shell - -show_startup_tip - -signature - -skiptest - -storable - -timeout - -verbose - -write_install_log - -editor - -make - -pager - -shell - -sudo - -perlwrapper - -=over 4 - -=item BUG REPORTS - -=item AUTHOR - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 CPANPLUS::Configure - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item $Configure = CPANPLUS::Configure->new( load_configs => BOOL ) - -=back - -=back - -=over 4 - -=item $bool = $Configure->init( [rescan => BOOL]) - -=back - -=over 4 - -=item can_save( [$config_location] ) - -=back - -=over 4 - -=item $file = $conf->save( [$package_name] ) - -=back - -=over 4 - -=item options( type => TYPE ) - -=back - -=over 4 - -=item ACCESSORS - -=over 4 - -=item get_SOMETHING( ITEM, [ITEM, ITEM, ... ] ); - -=item set_SOMETHING( ITEM => VAL, [ITEM => VAL, ITEM => VAL, ... ] ); - -=item add_SOMETHING( ITEM => VAL, [ITEM => VAL, ITEM => VAL, ... ] ); - -set|get_conf, set|get_program, _set|_get_build, _set|_get_source, -_set|_get_mirror, _set|_get_fetch - -=back - -=back - -=over 4 - -=item BUG REPORTS - -=item AUTHOR - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 CPANPLUS::Dist - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item ACCESSORS - -parent(), status() - -=item STATUS ACCESSORS - -created(), installed(), uninstalled(), dist() - -=back - -=over 4 - -=item $dist = CPANPLUS::Dist->new( module => MODOBJ, [format => DIST_TYPE] -); - -=back - -=over 4 - -=item @dists = CPANPLUS::Dist->dist_types; - -=back - -=over 4 - -=item prereq_satisfied( modobj => $modobj, version => $version_spec ) - -=back - -=over 4 - -=item _resolve_prereqs - -=back - -=head2 CPANPLUS::Dist::Base - Base class for custom distribution classes - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item FLOW - -=item METHODS - -=back - -=over 4 - -=item $bool = $Class->format_available - -=back - -=over 4 - -=item $bool = $dist->init - -=back - -=over 4 - -=item $bool = $dist->prepare - -=back - -=over 4 - -=item $bool = $dist->create - -=back - -=over 4 - -=item $bool = $dist->install - -=back - -=over 4 - -=item $bool = $dist->uninstall - -=back - -=head2 CPANPLUS::Dist::Build - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item ACCESSORS - -parent(), status() - -=item STATUS ACCESSORS - -build_pl (), build (), test (), prepared (), distdir (), created (), -installed (), uninstalled (), _create_args (), _install_args (), _mb_object -() - -=back - -=over 4 - -=item METHODS - -=over 4 - -=item $bool = CPANPLUS::Dist::Build->format_available(); - -=back - -=back - -=over 4 - -=item $bool = $dist->init(); - -=back - -=over 4 - -=item $bool = $dist->prepare([perl => '/path/to/perl', buildflags => -'EXTRA=FLAGS', force => BOOL, verbose => BOOL]) - -=back - -=over 4 - -=item $dist->create([perl => '/path/to/perl', buildflags => 'EXTRA=FLAGS', -prereq_target => TARGET, force => BOOL, verbose => BOOL, skiptest => BOOL]) - -=back - -=over 4 - -=item $dist->install([verbose => BOOL, perl => /path/to/perl]) - -=back - -=over 4 - -=item KNOWN ISSUES - -Module::Build can not be upgraded using its own API (#13169), Module::Build -does not provide access to install history (#9793) - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 CPANPLUS::Dist::MM - -=over 4 - -=item SYNOPSIS - -=item ACCESSORS - -parent(), status() - -=item STATUS ACCESSORS - -makefile (), make (), test (), prepared (), distdir (), created (), -installed (), uninstalled (), _create_args (), _install_args () - -=back - -=over 4 - -=item METHODS - -=over 4 - -=item $bool = $dist->format_available(); - -=back - -=back - -=over 4 - -=item $href = $dist->_find_prereqs( file => '/path/to/Makefile', [verbose -=> BOOL]) - -=back - -=over 4 - -=item $bool = $dist->create([perl => '/path/to/perl', make => -'/path/to/make', makeflags => 'EXTRA=FLAGS', prereq_target => TARGET, -skiptest => BOOL, force => BOOL, verbose => BOOL]) - -=back - -=over 4 - -=item $bool = $dist->install([make => '/path/to/make', makemakerflags => -'EXTRA=FLAGS', force => BOOL, verbose => BOOL]) - -=back - -=over 4 - -=item $bool = $dist->write_makefile_pl([force => BOOL, verbose => BOOL]) - -=back - -=head2 CPANPLUS::Dist::Sample -- Sample code to create your own Dist::* -plugin - -=over 4 - -=item Description. - -=back - -=head2 CPANPLUS::Error - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item FUNCTIONS - -=over 4 - -=item cp_msg("message string" [,VERBOSE]) - -=item msg() - -=item cp_error("error string" [,VERBOSE]) - -=item error() - -=back - -=item CLASS METHODS - -=over 4 - -=item CPANPLUS::Error->stack() - -=item CPANPLUS::Error->stack_as_string([TRACE]) - -=item CPANPLUS::Error->flush() - -=back - -=back - -=over 4 - -=item GLOBAL VARIABLES - -$ERROR_FH, $MSG_FH - -=back - -=head2 CPANPLUS::FAQ - -=over 4 - -=item DESCRIPTION - -=item BUG REPORTS - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 CPANPLUS::Hacking - -=over 4 - -=item DESCRIPTION - -=item OBTAINING CPANPLUS - -=item INSTALLING CPANPLUS - -=item CONFIGURING CPANPLUS - -=item RUNNING CPANPLUS FROM DEVELOPMENT ENVIRONMENT - -=item RUNNING CPANPLUS TESTS - -=item FINDING BUGS - -Problem description, Program demonstrating the bug, [OPTIONAL] A patch to -the test suite to test for the bug, [OPTIONAL] A patch to the code + tests -+ documentation - -=item SUPPLYING PATCHES - -In C<diff -u> or C<diff -c> format, From the root of the snapshot, -Including patches for code + tests + docs, Sent per mail to -cpanplus-devel@lists.sourceforge.net, With subject containing C<[PATCH]> + -description of the patch - -=back - -=head2 CPANPLUS::Internals - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item ACCESSORS - -_conf, _id, _lib, _perl5lib - -=back - -=over 4 - -=item METHODS - -=over 4 - -=item $internals = CPANPLUS::Internals->_init( _conf => CONFIG_OBJ ) - -=back - -=back - -=over 4 - -=item $bool = $internals->_flush( list => \@caches ) - -=back - -=over 4 - -=item $bool = $internals->_register_callback( name => CALLBACK_NAME, code -=> CODEREF ); - -install_prerequisite, send_test_report, munge_test_report, -edit_test_report, proceed_on_test_failure, munge_dist_metafile - -=back - -=over 4 - -=item $bool = $internals->_add_to_includepath( directories => \@dirs ) - -=back - -=over 4 - -=item $id = CPANPLUS::Internals->_last_id - -=item $id = CPANPLUS::Internals->_store_id( $internals ) - -=item $obj = CPANPLUS::Internals->_retrieve_id( $ID ) - -=item CPANPLUS::Internals->_remove_id( $ID ) - -=item @objs = CPANPLUS::Internals->_return_all_objects - -=back - -=head2 CPANPLUS::Internals::Extract - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item $dir = _extract( module => $modobj, [perl => '/path/to/perl', -extractdir => '/path/to/extract/to', prefer_bin => BOOL, verbose => BOOL, -force => BOOL] ) - -module, extractdir, prefer_bin, perl, verbose, force - -=back - -=back - -=head2 CPANPLUS::Internals::Fetch - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=back - -=over 4 - -=item $path = _fetch( module => $modobj, [fetchdir => '/path/to/save/to', -fetch_from => 'scheme://path/to/fetch/from', verbose => BOOL, force => -BOOL, prefer_bin => BOOL] ) - -=back - -=over 4 - -=item _add_fail_host( host => $host_hashref ) - -=item _host_ok( host => $host_hashref ) - -=back - -=head2 CPANPLUS::Internals::Report - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item $bool = $cb->_have_query_report_modules - -=item $bool = $cb->_have_send_report_modules - -=back - -=back - -=over 4 - -=item @list = $cb->_query_report( module => $modobj, [all_versions => BOOL, -verbose => BOOL] ) - -=back - -=over 4 - -=item $bool = $cb->_send_report( module => $modobj, buffer => $make_output, -failed => BOOL, [save => BOOL, address => $email_to, dontcc => BOOL, -verbose => BOOL, force => BOOL]); - -module, buffer, failed, save, address, dontcc, verbose, force - -=back - -=head2 CPANPLUS::Internals::Search - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item _search_module_tree( type => TYPE, allow => \@regexex, [data => -\@previous_results ] ) - -type, allow, data - -=back - -=back - -=over 4 - -=item _search_author_tree( type => TYPE, allow => \@regexex, [data => -\@previous_results ] ) - -type, allow, data - -=back - -=over 4 - -=item _all_installed() - -=back - -=head2 CPANPLUS::Internals::Source - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=back - -=over 4 - -=item $cb->_check_trees( [update_source => BOOL, path => PATH, verbose => -BOOL] ) - -update_source, path, verbose - -=back - -=over 4 - -=item $cb->__check_uptodate( file => $file, name => $name, [update_source -=> BOOL, verbose => BOOL] ) - -file, name, update_source, verbose - -=back - -=over 4 - -=item $cb->_update_source( name => $name, [path => $path, verbose => BOOL] -) - -name, path, verbose - -=back - -=over 4 - -=item $cb->_build_trees( uptodate => BOOL, [use_stored => BOOL, path => -$path, verbose => BOOL] ) - -uptodate, path, verbose, use_stored - -=back - -=over 4 - -=item $cb->__retrieve_source(name => $name, [path => $path, uptodate => -BOOL, verbose => BOOL]) - -name, uptodate, path, verbose - -=back - -=over 4 - -=item $cb->_save_source([verbose => BOOL, path => $path]) - -path, verbose - -=back - -=over 4 - -=item $cb->__create_author_tree([path => $path, uptodate => BOOL, verbose -=> BOOL]) - -uptodate, path, verbose - -=back - -=over 4 - -=item $cb->_create_mod_tree([path => $path, uptodate => BOOL, verbose => -BOOL]) - -uptodate, path, verbose - -=back - -=over 4 - -=item $cb->__create_dslip_tree([path => $path, uptodate => BOOL, verbose => -BOOL]) - -uptodate, path, verbose - -=back - -=over 4 - -=item $cb->_dslip_defs () - -=back - -=over 4 - -=item $file = $cb->_add_custom_module_source( uri => URI, [verbose => BOOL] -); - -=back - -=over 4 - -=item $index = $cb->__custom_module_source_index_file( uri => $uri ); - -=back - -=over 4 - -=item $file = $cb->_remove_custom_module_source( uri => URI, [verbose => -BOOL] ); - -=back - -=over 4 - -=item %files = $cb->__list_custom_module_sources - -=back - -=over 4 - -=item $bool = $cb->__update_custom_module_sources( [verbose => BOOL] ); - -=back - -=over 4 - -=item $ok = $cb->__update_custom_module_source - -=back - -=over 4 - -=item $bool = $cb->__write_custom_module_index( path => /path/to/packages, -[to => /path/to/index/file, verbose => BOOL] ) - -=back - -=over 4 - -=item $bool = $cb->__create_custom_module_entries( [verbose => BOOL] ) - -=back - -=head2 CPANPLUS::Internals::Utils - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item $cb->_mkdir( dir => '/some/dir' ) - -=back - -=back - -=over 4 - -=item $cb->_chdir( dir => '/some/dir' ) - -=back - -=over 4 - -=item $cb->_rmdir( dir => '/some/dir' ); - -=back - -=over 4 - -=item $cb->_perl_version ( perl => 'some/perl/binary' ); - -=back - -=over 4 - -=item $cb->_version_to_number( version => $version ); - -=back - -=over 4 - -=item $cb->_whoami - -=back - -=over 4 - -=item _get_file_contents( file => $file ); - -=back - -=over 4 - -=item $cb->_mode_plus_w( file => '/path/to/file' ); - -=back - -=over 4 - -=item $uri = $cb->_host_to_uri( scheme => SCHEME, host => HOST, path => -PATH ); - -=back - -=over 4 - -=item $cb->_vcmp( VERSION, VERSION ); - -=back - -=over 4 - -=item $cb->_home_dir - -=back - -=over 4 - -=item $path = $cb->_safe_path( path => $path ); - -=back - -=over 4 - -=item ($pkg, $version, $ext) = $cb->_split_package_string( package => -PACKAGE_STRING ); - -=back - -=head2 CPANPLUS::Module - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=over 4 - -=item CLASS METHODS - -=over 4 - -=item accessors () - -=back - -=back - -=over 4 - -=item ACCESSORS - -name, module, version, path, comment, package, description, dslip - -=back - -status, author, parent - -=over 4 - -=item STATUS ACCESSORS - -installer_type, dist_cpan, dist, prereqs, signature, extract, fetch, -readme, uninstall, created, installed, checksums, checksum_ok, -checksum_value - -=item METHODS - -=over 4 - -=item $self = CPANPLUS::Module::new( OPTIONS ) - -=back - -=back - -=over 4 - -=item $mod->package_name - -=item $mod->package_version - -=item $mod->package_extension - -=item $mod->package_is_perl_core - -=item $mod->module_is_supplied_with_perl_core( [version => $]] ) - -=item $mod->is_bundle - -=item $mod->is_third_party - -=item $mod->third_party_information - -=back - -=over 4 - -=item $clone = $self->clone - -=back - -=over 4 - -=item $where = $self->fetch - -=back - -=over 4 - -=item $path = $self->extract - -=back - -=over 4 - -=item $type = $self->get_installer_type([prefer_makefile => BOOL]) - -=back - -=over 4 - -=item $dist = $self->dist([target => 'prepare|create', format => -DISTRIBUTION_TYPE, args => {key => val}]); - -=back - -=over 4 - -=item $bool = $mod->prepare( ) - -Convenience method around C<install()> that prepares a module -without actually building it. This is equivalent to invoking C<install> -with C<target> set to C<prepare> - -=back - -=over 4 - -=item $bool = $mod->create( ) - -=back - -=over 4 - -=item $bool = $mod->test( ) - -=back - -=over 4 - -=item $bool = $self->install([ target => 'prepare|create|install', format -=> FORMAT_TYPE, extractdir => DIRECTORY, fetchdir => DIRECTORY, prefer_bin -=> BOOL, force => BOOL, verbose => BOOL, ..... ]); - -=back - -=over 4 - -=item $text = $self->readme - -=back - -=over 4 - -=item $version = $self->installed_version() - -=item $where = $self->installed_file() - -=item $bool = $self->is_uptodate([version => VERSION_NUMBER]) - -=back - -=over 4 - -=item $href = $self->details() - -=back - -=over 4 - -=item @list = $self->contains() - -=back - -=over 4 - -=item @list_of_hrefs = $self->fetch_report() - -=back - -=over 4 - -=item $bool = $self->uninstall([type => [all|man|prog]) - -=back - -=over 4 - -=item @modobj = $self->distributions() - -=back - -=over 4 - -=item @list = $self->files () - -=back - -=over 4 - -=item @list = $self->directory_tree () - -=back - -=over 4 - -=item @list = $self->packlist () - -=back - -=over 4 - -=item @list = $self->validate () - -=back - -=over 4 - -=item $bool = $self->add_to_includepath; - -=item $path = $self->best_path_to_module_build(); - -=back - -=over 4 - -=item BUG REPORTS - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 CPANPLUS::Module::Author - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item ACCESSORS - -author, cpanid, email, parent - -=back - -=over 4 - -=item METHODS - -=over 4 - -=item $auth = CPANPLUS::Module::Author->new( author => AUTHOR_NAME, cpanid -=> CPAN_ID, _id => INTERNALS_ID [, email => AUTHOR_EMAIL] ) - -=back - -=back - -=over 4 - -=item @mod_objs = $auth->modules() - -=back - -=over 4 - -=item @dists = $auth->distributions() - -=back - -=over 4 - -=item CLASS METHODS - -=over 4 - -=item accessors () - -=back - -=back - -=head2 CPANPLUS::Module::Author::Fake - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item new( _id => DIGIT ) - -=back - -=back - -=head2 CPANPLUS::Module::Checksums - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item $mod->checksums - -=back - -=back - -=head2 CPANPLUS::Module::Fake - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item new( module => $mod, path => $path, package => $pkg, [_id => DIGIT] ) - -=back - -=back - -=head2 CPANPLUS::inc - -=over 4 - -=item DESCRIPTION - -=back - -=head2 CPANPLUS::inc - runtime inclusion of privately bundled modules - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -Put a coderef at the beginning of C<@INC>, Add the full path to the -C<CPANPLUS/inc> directory to C<$ENV{PERL5LIB> - -=item METHODS - -=over 4 - -=item CPANPLUS::inc->inc_path() - -=item CPANPLUS::inc->my_path() - -=item CPANPLUS::inc->installer_path() - -=back - -=back - -=over 4 - -=item CPANPLUS::inc->original_perl5lib - -=item CPANPLUS::inc->original_perl5opt - -=item CPANPLUS::inc->original_inc - -=item CPANPLUS::inc->limited_perl5opt(@modules); - -=back - -=over 4 - -=item CPANPLUS::inc->interesting_modules() - -=back - -=over 4 - -=item INTERESTING MODULES - -Loop over your @INC, Check the version on every suitable module found in -@INC - -=back - -=over 4 - -=item DEBUG - -=item CAVEATS - -On multiple C<use lib> calls, our coderef may not be the first in @INC, -Non-directories in @INC - -=back - -=head2 CPANPLUSelfupdate, CPANPLUS::Selfupdate - -=over 4 - -=item SYNOPSIS - -=back - -=over 4 - -=item METHODS - -=over 4 - -=item $self = CPANPLUS::Selfupdate->new( $backend_object ); - -=back - -=back - -=over 4 - -=item %list = $self->list_modules_to_update( update => -"core|dependencies|enabled_features|features|all", [latest => BOOL] ) - -List which modules C<selfupdate> would upgrade. You can update either -the core (CPANPLUS itself), the core dependencies, all features you have -currently turned on, or all features available, or everything. - -=back - -=over 4 - -=item @features = $self->list_features - -=back - -=over 4 - -=item @features = $self->list_enabled_features - -=back - -=over 4 - -=item @mods = $self->modules_for_feature( FEATURE [,AS_HASH] ) - -=back - -=over 4 - -=item @mods = $self->list_core_dependencies( [AS_HASH] ) - -=back - -=over 4 - -=item @mods = $self->list_core_modules( [AS_HASH] ) - -=back - -=over 4 - -=item CPANPLUS::Selfupdate::Module - -=back - -=over 4 - -=item $version = $mod->version_required - -=back - -=over 4 - -=item $bool = $mod->is_installed_version_sufficient - -=back - -=over 4 - -=item BUG REPORTS - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 CPANPLUShell, CPANPLUS::Shell - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=over 4 - -=item BUG REPORTS - -=item AUTHOR - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 CPANPLUShell::Classic, CPANPLUS::Shell::Classic - CPAN.pm emulation -for CPANPLUS - -=over 4 - -=item DESCRIPTION - -=item BUG REPORTS - -=item AUTHOR - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=over 4 - -=item SEE ALSO - -=back - -=head2 CPANPLUShell::Default, CPANPLUS::Shell::Default - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=over 4 - -=item BUG REPORTS - -=item AUTHOR - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 CPANPLUShell::Default::Plugins::CustomSource, -CPANPLUS::Shell::Default::Plugins::CustomSource - -=over 4 - -=item SYNOPSIS - - ### elaborate help text - CPAN Terminal> /? cs - -=item DESCRIPTION - -=back - -=head2 CPANPLUShell::Default::Plugins::HOWTO, -CPANPLUS::Shell::Default::Plugins::HOWTO -- documentation on how to write -your own plugins - -=over 4 - -=item SYNOPSIS - -=item HOWTO - -=over 4 - -=item Registering Plugin Modules - -=item Registering Plugin Commands - -=item Registering Plugin Help - -=item Arguments to Plugin Commands - -Classname -- The name of your plugin class, Shell -- The -CPANPLUS::Shell::Default object, Backend -- The CPANPLUS::Backend object, -Command -- The command issued by the user, Input -- The input string -from the user, Options -- A hashref of options provided by the user - -=back - -=item BUG REPORTS - -=item AUTHOR - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 CPANPLUShell::Default::Plugins::Remote, -CPANPLUS::Shell::Default::Plugins::Remote - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=over 4 - -=item BUG REPORTS - -=item AUTHOR - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 CPANPLUShell::Default::Plugins::Source, -CPANPLUS::Shell::Default::Plugins::Source - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=over 4 - -=item BUG REPORTS - -=item AUTHOR - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 CPANox, CPAN::Nox - Wrapper around CPAN.pm without using any XS -module - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item LICENSE - -=item SEE ALSO - -=back - -=head2 Carp, carp - warn of errors (from perspective of caller) - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Forcing a Stack Trace - -=back - -=item GLOBAL VARIABLES - -=over 4 - -=item $Carp::MaxEvalLen - -=item $Carp::MaxArgLen - -=item $Carp::MaxArgNums - -=item $Carp::Verbose - -=item %Carp::Internal - -=item %Carp::CarpInternal - -=item $Carp::CarpLevel - -=back - -=item BUGS - -=back - -=head2 Carp::Heavy - heavy machinery, no user serviceable parts inside - -=head2 Class::ISA -- report the search path for a class's ISA tree - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item FUNCTIONS - -the function Class::ISA::super_path($CLASS), the function -Class::ISA::self_and_super_path($CLASS), the function -Class::ISA::self_and_super_versions($CLASS) - -=item CAUTIONARY NOTES - -=item COPYRIGHT - -=item AUTHOR - -=back - -=head2 Class::Struct - declare struct-like datatypes as Perl classes - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item The C<struct()> function - -=item Class Creation at Compile Time - -=item Element Types and Accessor Methods - -Scalar (C<'$'> or C<'*$'>), Array (C<'@'> or C<'*@'>), Hash (C<'%'> or -C<'*%'>), Class (C<'Class_Name'> or C<'*Class_Name'>) - -=item Initializing with C<new> - -=back - -=item EXAMPLES - -Example 1, Example 2, Example 3 - -=item Author and Modification History - -=back - -=head2 Compress::Raw::Zlib - Low-Level Interface to zlib compression -library - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Compress::Raw::Zlib::Deflate - -=over 4 - -=item B<($d, $status) = new Compress::Raw::Zlib::Deflate( [OPT] ) > - -B<-Level>, B<-Method>, B<-WindowBits>, B<-MemLevel>, B<-Strategy>, -B<-Dictionary>, B<-Bufsize>, B<-AppendOutput>, B<-CRC32>, B<-ADLER32> - -=item B<$status = $d-E<gt>deflate($input, $output)> - -=item B<$status = $d-E<gt>flush($output [, $flush_type]) > - -=item B<$status = $d-E<gt>deflateParams([OPT])> - -B<-Level>, B<-Strategy>, B<-BufSize> - -=item B<$status = $d-E<gt>deflateTune($good_length, $max_lazy, -$nice_length, $max_chain)> - -=item B<$d-E<gt>dict_adler()> - -=item B<$d-E<gt>crc32()> - -=item B<$d-E<gt>adler32()> - -=item B<$d-E<gt>msg()> - -=item B<$d-E<gt>total_in()> - -=item B<$d-E<gt>total_out()> - -=item B<$d-E<gt>get_Strategy()> - -=item B<$d-E<gt>get_Level()> - -=item B<$d-E<gt>get_BufSize()> - -=item Example - -=back - -=item Compress::Raw::Zlib::Inflate - -=over 4 - -=item B< ($i, $status) = new Compress::Raw::Zlib::Inflate( [OPT] ) > - -B<-WindowBits>, B<-Bufsize>, B<-Dictionary>, B<-AppendOutput>, B<-CRC32>, -B<-ADLER32>, B<-ConsumeInput> - -=item B< $status = $i-E<gt>inflate($input, $output [,$eof]) > - -=item B<$status = $i-E<gt>inflateSync($input)> - -=item B<$i-E<gt>dict_adler()> - -=item B<$i-E<gt>crc32()> - -=item B<$i-E<gt>adler32()> - -=item B<$i-E<gt>msg()> - -=item B<$i-E<gt>total_in()> - -=item B<$i-E<gt>total_out()> - -=item B<$d-E<gt>get_BufSize()> - -=item Example - -=back - -=item CHECKSUM FUNCTIONS - -=item ACCESSING ZIP FILES - -=item CONSTANTS - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 Compress::Raw::Zlib::Compress::Raw::Zlib, Compress::Raw::Zlib - -Low-Level Interface to zlib compression library - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Compress::Raw::Zlib::Deflate - -=over 4 - -=item B<($d, $status) = new Compress::Raw::Zlib::Deflate( [OPT] ) > - -B<-Level>, B<-Method>, B<-WindowBits>, B<-MemLevel>, B<-Strategy>, -B<-Dictionary>, B<-Bufsize>, B<-AppendOutput>, B<-CRC32>, B<-ADLER32> - -=item B<$status = $d-E<gt>deflate($input, $output)> - -=item B<$status = $d-E<gt>flush($output [, $flush_type]) > - -=item B<$status = $d-E<gt>deflateParams([OPT])> - -B<-Level>, B<-Strategy>, B<-BufSize> - -=item B<$status = $d-E<gt>deflateTune($good_length, $max_lazy, -$nice_length, $max_chain)> - -=item B<$d-E<gt>dict_adler()> - -=item B<$d-E<gt>crc32()> - -=item B<$d-E<gt>adler32()> - -=item B<$d-E<gt>msg()> - -=item B<$d-E<gt>total_in()> - -=item B<$d-E<gt>total_out()> - -=item B<$d-E<gt>get_Strategy()> - -=item B<$d-E<gt>get_Level()> - -=item B<$d-E<gt>get_BufSize()> - -=item Example - -=back - -=item Compress::Raw::Zlib::Inflate - -=over 4 - -=item B< ($i, $status) = new Compress::Raw::Zlib::Inflate( [OPT] ) > - -B<-WindowBits>, B<-Bufsize>, B<-Dictionary>, B<-AppendOutput>, B<-CRC32>, -B<-ADLER32>, B<-ConsumeInput> - -=item B< $status = $i-E<gt>inflate($input, $output [,$eof]) > - -=item B<$status = $i-E<gt>inflateSync($input)> - -=item B<$i-E<gt>dict_adler()> - -=item B<$i-E<gt>crc32()> - -=item B<$i-E<gt>adler32()> - -=item B<$i-E<gt>msg()> - -=item B<$i-E<gt>total_in()> - -=item B<$i-E<gt>total_out()> - -=item B<$d-E<gt>get_BufSize()> - -=item Example - -=back - -=item CHECKSUM FUNCTIONS - -=item ACCESSING ZIP FILES - -=item CONSTANTS - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 Compress::Raw::Zlib::pod::FAQ, Compress::Raw::Zlib::FAQ -- -Frequently Asked Questions about Compress::Raw::Zlib - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Compatibility with Unix compress/uncompress. - -=item Accessing .tar.Z files - -=item Accessing Zip Files - -=item Zlib Library Version Support - -=back - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 Compress::Zlib - Interface to zlib compression library - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Notes for users of Compress::Zlib version 1 - -=back - -=item GZIP INTERFACE - -B<$gz = gzopen($filename, $mode)>, B<$gz = gzopen($filehandle, $mode)>, -B<$bytesread = $gz-E<gt>gzread($buffer [, $size]) ;>, B<$bytesread = -$gz-E<gt>gzreadline($line) ;>, B<$byteswritten = $gz-E<gt>gzwrite($buffer) -;>, B<$status = $gz-E<gt>gzflush($flush_type) ;>, B<$offset = -$gz-E<gt>gztell() ;>, B<$status = $gz-E<gt>gzseek($offset, $whence) ;>, -B<$gz-E<gt>gzclose>, B<$gz-E<gt>gzsetparams($level, $strategy>, B<$level>, -B<$strategy>, B<$gz-E<gt>gzerror>, B<$gzerrno> - -=over 4 - -=item Examples - -=item Compress::Zlib::memGzip - -=item Compress::Zlib::memGunzip - -=back - -=item COMPRESS/UNCOMPRESS - -B<$dest = compress($source [, $level] ) ;>, B<$dest = uncompress($source) -;> - -=item Deflate Interface - -=over 4 - -=item B<($d, $status) = deflateInit( [OPT] )> - -B<-Level>, B<-Method>, B<-WindowBits>, B<-MemLevel>, B<-Strategy>, -B<-Dictionary>, B<-Bufsize> - -=item B<($out, $status) = $d-E<gt>deflate($buffer)> - -=item B<($out, $status) = $d-E<gt>flush()> -=head2 B<($out, $status) = $d-E<gt>flush($flush_type)> - -=item B<$status = $d-E<gt>deflateParams([OPT])> - -B<-Level>, B<-Strategy> - -=item B<$d-E<gt>dict_adler()> - -=item B<$d-E<gt>msg()> - -=item B<$d-E<gt>total_in()> - -=item B<$d-E<gt>total_out()> - -=item Example - -=back - -=item Inflate Interface - -=over 4 - -=item B<($i, $status) = inflateInit()> - -B<-WindowBits>, B<-Bufsize>, B<-Dictionary> - -=item B<($out, $status) = $i-E<gt>inflate($buffer)> - -=item B<$status = $i-E<gt>inflateSync($buffer)> - -=item B<$i-E<gt>dict_adler()> - -=item B<$i-E<gt>msg()> - -=item B<$i-E<gt>total_in()> - -=item B<$i-E<gt>total_out()> - -=item Example - -=back - -=item CHECKSUM FUNCTIONS - -=item CONSTANTS - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 Compress::Zlib::Compress::Zlib, Compress::Zlib - Interface to zlib -compression library - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Notes for users of Compress::Zlib version 1 - -=back - -=item GZIP INTERFACE - -B<$gz = gzopen($filename, $mode)>, B<$gz = gzopen($filehandle, $mode)>, -B<$bytesread = $gz-E<gt>gzread($buffer [, $size]) ;>, B<$bytesread = -$gz-E<gt>gzreadline($line) ;>, B<$byteswritten = $gz-E<gt>gzwrite($buffer) -;>, B<$status = $gz-E<gt>gzflush($flush_type) ;>, B<$offset = -$gz-E<gt>gztell() ;>, B<$status = $gz-E<gt>gzseek($offset, $whence) ;>, -B<$gz-E<gt>gzclose>, B<$gz-E<gt>gzsetparams($level, $strategy>, B<$level>, -B<$strategy>, B<$gz-E<gt>gzerror>, B<$gzerrno> - -=over 4 - -=item Examples - -=item Compress::Zlib::memGzip - -=item Compress::Zlib::memGunzip - -=back - -=item COMPRESS/UNCOMPRESS - -B<$dest = compress($source [, $level] ) ;>, B<$dest = uncompress($source) -;> - -=item Deflate Interface - -=over 4 - -=item B<($d, $status) = deflateInit( [OPT] )> - -B<-Level>, B<-Method>, B<-WindowBits>, B<-MemLevel>, B<-Strategy>, -B<-Dictionary>, B<-Bufsize> - -=item B<($out, $status) = $d-E<gt>deflate($buffer)> - -=item B<($out, $status) = $d-E<gt>flush()> -=head2 B<($out, $status) = $d-E<gt>flush($flush_type)> - -=item B<$status = $d-E<gt>deflateParams([OPT])> - -B<-Level>, B<-Strategy> - -=item B<$d-E<gt>dict_adler()> - -=item B<$d-E<gt>msg()> - -=item B<$d-E<gt>total_in()> - -=item B<$d-E<gt>total_out()> - -=item Example - -=back - -=item Inflate Interface - -=over 4 - -=item B<($i, $status) = inflateInit()> - -B<-WindowBits>, B<-Bufsize>, B<-Dictionary> - -=item B<($out, $status) = $i-E<gt>inflate($buffer)> - -=item B<$status = $i-E<gt>inflateSync($buffer)> - -=item B<$i-E<gt>dict_adler()> - -=item B<$i-E<gt>msg()> - -=item B<$i-E<gt>total_in()> - -=item B<$i-E<gt>total_out()> - -=item Example - -=back - -=item CHECKSUM FUNCTIONS - -=item CONSTANTS - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 Compress::Zlib::pod::FAQ, Compress::Zlib::FAQ -- Frequently Asked -Questions about Compress::Zlib - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Compatibility with Unix compress/uncompress. - -=item Accessing .tar.Z files - -=item Accessing Zip Files - -=back - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 Config - access Perl configuration information - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -myconfig(), config_sh(), config_re($regex), config_vars(@names) - -=item EXAMPLE - -=item WARNING - -=item GLOSSARY - -=back - -=over 4 - -=item _ - -=back - -C<_a>, C<_exe>, C<_o> - -=over 4 - -=item a - -=back - -C<afs>, C<afsroot>, C<alignbytes>, C<ansi2knr>, C<aphostname>, -C<api_revision>, C<api_subversion>, C<api_version>, C<api_versionstring>, -C<ar>, C<archlib>, C<archlibexp>, C<archname>, C<archname64>, C<archobjs>, -C<asctime_r_proto>, C<awk> - -=over 4 - -=item b - -=back - -C<baserev>, C<bash>, C<bin>, C<binexp>, C<bison>, C<byacc>, C<byteorder> - -=over 4 - -=item c - -=back - -C<c>, C<castflags>, C<cat>, C<cc>, C<cccdlflags>, C<ccdlflags>, C<ccflags>, -C<ccflags_uselargefiles>, C<ccname>, C<ccsymbols>, C<ccversion>, C<cf_by>, -C<cf_email>, C<cf_time>, C<chgrp>, C<chmod>, C<chown>, C<clocktype>, -C<comm>, C<compress>, C<contains>, C<cp>, C<cpio>, C<cpp>, C<cpp_stuff>, -C<cppccsymbols>, C<cppflags>, C<cpplast>, C<cppminus>, C<cpprun>, -C<cppstdin>, C<cppsymbols>, C<crypt_r_proto>, C<cryptlib>, C<csh>, -C<ctermid_r_proto>, C<ctime_r_proto> - -=over 4 - -=item d - -=back - -C<d__fwalk>, C<d_access>, C<d_accessx>, C<d_aintl>, C<d_alarm>, -C<d_archlib>, C<d_asctime64>, C<d_asctime_r>, C<d_atolf>, C<d_atoll>, -C<d_attribute_deprecated>, C<d_attribute_format>, C<d_attribute_malloc>, -C<d_attribute_nonnull>, C<d_attribute_noreturn>, C<d_attribute_pure>, -C<d_attribute_unused>, C<d_attribute_warn_unused_result>, C<d_bcmp>, -C<d_bcopy>, C<d_bsd>, C<d_bsdgetpgrp>, C<d_bsdsetpgrp>, -C<d_builtin_choose_expr>, C<d_builtin_expect>, C<d_bzero>, -C<d_c99_variadic_macros>, C<d_casti32>, C<d_castneg>, C<d_charvspr>, -C<d_chown>, C<d_chroot>, C<d_chsize>, C<d_class>, C<d_clearenv>, -C<d_closedir>, C<d_cmsghdr_s>, C<d_const>, C<d_copysignl>, C<d_cplusplus>, -C<d_crypt>, C<d_crypt_r>, C<d_csh>, C<d_ctermid>, C<d_ctermid_r>, -C<d_ctime64>, C<d_ctime_r>, C<d_cuserid>, C<d_dbl_dig>, C<d_dbminitproto>, -C<d_difftime>, C<d_difftime64>, C<d_dir_dd_fd>, C<d_dirfd>, C<d_dirnamlen>, -C<d_dlerror>, C<d_dlopen>, C<d_dlsymun>, C<d_dosuid>, C<d_drand48_r>, -C<d_drand48proto>, C<d_dup2>, C<d_eaccess>, C<d_endgrent>, C<d_endgrent_r>, -C<d_endhent>, C<d_endhostent_r>, C<d_endnent>, C<d_endnetent_r>, -C<d_endpent>, C<d_endprotoent_r>, C<d_endpwent>, C<d_endpwent_r>, -C<d_endsent>, C<d_endservent_r>, C<d_eofnblk>, C<d_eunice>, C<d_faststdio>, -C<d_fchdir>, C<d_fchmod>, C<d_fchown>, C<d_fcntl>, C<d_fcntl_can_lock>, -C<d_fd_macros>, C<d_fd_set>, C<d_fds_bits>, C<d_fgetpos>, C<d_finite>, -C<d_finitel>, C<d_flexfnam>, C<d_flock>, C<d_flockproto>, C<d_fork>, -C<d_fp_class>, C<d_fpathconf>, C<d_fpclass>, C<d_fpclassify>, -C<d_fpclassl>, 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_fsync>, C<d_ftello>, -C<d_ftime>, C<d_futimes>, C<d_Gconvert>, C<d_gdbm_ndbm_h_uses_prototypes>, -C<d_gdbmndbm_h_uses_prototypes>, C<d_getcwd>, C<d_getespwnam>, -C<d_getfsstat>, C<d_getgrent>, C<d_getgrent_r>, C<d_getgrgid_r>, -C<d_getgrnam_r>, C<d_getgrps>, C<d_gethbyaddr>, C<d_gethbyname>, -C<d_gethent>, C<d_gethname>, C<d_gethostbyaddr_r>, C<d_gethostbyname_r>, -C<d_gethostent_r>, C<d_gethostprotos>, C<d_getitimer>, C<d_getlogin>, -C<d_getlogin_r>, C<d_getmnt>, C<d_getmntent>, C<d_getnbyaddr>, -C<d_getnbyname>, C<d_getnent>, C<d_getnetbyaddr_r>, C<d_getnetbyname_r>, -C<d_getnetent_r>, C<d_getnetprotos>, C<d_getpagsz>, C<d_getpbyname>, -C<d_getpbynumber>, C<d_getpent>, C<d_getpgid>, C<d_getpgrp>, C<d_getpgrp2>, -C<d_getppid>, C<d_getprior>, C<d_getprotobyname_r>, -C<d_getprotobynumber_r>, C<d_getprotoent_r>, C<d_getprotoprotos>, -C<d_getprpwnam>, C<d_getpwent>, C<d_getpwent_r>, C<d_getpwnam_r>, -C<d_getpwuid_r>, C<d_getsbyname>, C<d_getsbyport>, C<d_getsent>, -C<d_getservbyname_r>, C<d_getservbyport_r>, C<d_getservent_r>, -C<d_getservprotos>, C<d_getspnam>, C<d_getspnam_r>, C<d_gettimeod>, -C<d_gmtime64>, C<d_gmtime_r>, C<d_gnulibc>, C<d_grpasswd>, C<d_hasmntopt>, -C<d_htonl>, C<d_ilogbl>, C<d_inc_version_list>, C<d_index>, C<d_inetaton>, -C<d_int64_t>, C<d_isascii>, C<d_isfinite>, C<d_isinf>, C<d_isnan>, -C<d_isnanl>, C<d_killpg>, C<d_lchown>, C<d_ldbl_dig>, -C<d_libm_lib_version>, C<d_link>, C<d_localtime64>, C<d_localtime_r>, -C<d_localtime_r_needs_tzset>, C<d_locconv>, C<d_lockf>, C<d_longdbl>, -C<d_longlong>, C<d_lseekproto>, C<d_lstat>, C<d_madvise>, -C<d_malloc_good_size>, C<d_malloc_size>, 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_mktime64>, C<d_mmap>, C<d_modfl>, -C<d_modfl_pow32_bug>, C<d_modflproto>, 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_msghdr_s>, C<d_msgrcv>, -C<d_msgsnd>, C<d_msync>, C<d_munmap>, C<d_mymalloc>, C<d_ndbm>, -C<d_ndbm_h_uses_prototypes>, C<d_nice>, C<d_nl_langinfo>, -C<d_nv_preserves_uv>, C<d_nv_zero_is_allbits_zero>, 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_PRIEUldbl>, C<d_PRIfldbl>, C<d_PRIFUldbl>, -C<d_PRIgldbl>, C<d_PRIGUldbl>, C<d_PRIi64>, C<d_printf_format_null>, -C<d_PRIo64>, C<d_PRIu64>, C<d_PRIx64>, C<d_PRIXU64>, C<d_procselfexe>, -C<d_pseudofork>, C<d_pthread_atfork>, C<d_pthread_attr_setscope>, -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_random_r>, C<d_readdir>, C<d_readdir64_r>, -C<d_readdir_r>, C<d_readlink>, C<d_readv>, C<d_recvmsg>, C<d_rename>, -C<d_rewinddir>, C<d_rmdir>, C<d_safebcpy>, C<d_safemcpy>, C<d_sanemcmp>, -C<d_sbrkproto>, C<d_scalbnl>, C<d_sched_yield>, C<d_scm_rights>, -C<d_SCNfldbl>, 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_sendmsg>, C<d_setegid>, C<d_seteuid>, C<d_setgrent>, C<d_setgrent_r>, -C<d_setgrps>, C<d_sethent>, C<d_sethostent_r>, C<d_setitimer>, -C<d_setlinebuf>, C<d_setlocale>, C<d_setlocale_r>, C<d_setnent>, -C<d_setnetent_r>, C<d_setpent>, C<d_setpgid>, C<d_setpgrp>, C<d_setpgrp2>, -C<d_setprior>, C<d_setproctitle>, C<d_setprotoent_r>, C<d_setpwent>, -C<d_setpwent_r>, C<d_setregid>, C<d_setresgid>, C<d_setresuid>, -C<d_setreuid>, C<d_setrgid>, C<d_setruid>, C<d_setsent>, C<d_setservent_r>, -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_signbit>, C<d_sigprocmask>, C<d_sigsetjmp>, C<d_sitearch>, -C<d_snprintf>, C<d_sockatmark>, C<d_sockatmarkproto>, C<d_socket>, -C<d_socklen_t>, C<d_sockpair>, C<d_socks5_init>, -C<d_sprintf_returns_strlen>, C<d_sqrtl>, C<d_srand48_r>, C<d_srandom_r>, -C<d_sresgproto>, C<d_sresuproto>, 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_ptr_lval_nochange_cnt>, C<d_stdio_ptr_lval_sets_cnt>, -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_strerror_r>, -C<d_strftime>, C<d_strlcat>, C<d_strlcpy>, C<d_strtod>, C<d_strtol>, -C<d_strtold>, C<d_strtoll>, C<d_strtoq>, C<d_strtoul>, C<d_strtoull>, -C<d_strtouq>, C<d_strxfrm>, C<d_suidsafe>, C<d_symlink>, C<d_syscall>, -C<d_syscallproto>, 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_timegm>, C<d_times>, C<d_tm_tm_gmtoff>, -C<d_tm_tm_zone>, C<d_tmpnam_r>, C<d_truncate>, C<d_ttyname_r>, C<d_tzname>, -C<d_u32align>, C<d_ualarm>, C<d_umask>, C<d_uname>, C<d_union_semun>, -C<d_unordered>, C<d_unsetenv>, C<d_usleep>, C<d_usleepproto>, C<d_ustat>, -C<d_vendorarch>, C<d_vendorbin>, C<d_vendorlib>, C<d_vendorscript>, -C<d_vfork>, C<d_void_closedir>, C<d_voidsig>, C<d_voidtty>, C<d_volatile>, -C<d_vprintf>, C<d_vsnprintf>, C<d_wait4>, C<d_waitpid>, C<d_wcstombs>, -C<d_wctomb>, C<d_writev>, C<d_xenix>, C<date>, C<db_hashtype>, -C<db_prefixtype>, C<db_version_major>, C<db_version_minor>, -C<db_version_patch>, C<defvoidused>, C<direntrytype>, C<dlext>, C<dlsrc>, -C<doublesize>, C<drand01>, C<drand48_r_proto>, C<dtrace>, C<dynamic_ext> - -=over 4 - -=item e - -=back - -C<eagain>, C<ebcdic>, C<echo>, C<egrep>, C<emacs>, C<endgrent_r_proto>, -C<endhostent_r_proto>, C<endnetent_r_proto>, C<endprotoent_r_proto>, -C<endpwent_r_proto>, C<endservent_r_proto>, C<eunicefix>, C<exe_ext>, -C<expr>, C<extensions>, C<extern_C>, C<extras> - -=over 4 - -=item f - -=back - -C<fflushall>, C<fflushNULL>, C<find>, C<firstmakefile>, C<flex>, -C<fpossize>, C<fpostype>, C<freetype>, C<from>, C<full_ar>, C<full_csh>, -C<full_sed> - -=over 4 - -=item g - -=back - -C<gccansipedantic>, C<gccosandvers>, C<gccversion>, C<getgrent_r_proto>, -C<getgrgid_r_proto>, C<getgrnam_r_proto>, C<gethostbyaddr_r_proto>, -C<gethostbyname_r_proto>, C<gethostent_r_proto>, C<getlogin_r_proto>, -C<getnetbyaddr_r_proto>, C<getnetbyname_r_proto>, C<getnetent_r_proto>, -C<getprotobyname_r_proto>, C<getprotobynumber_r_proto>, -C<getprotoent_r_proto>, C<getpwent_r_proto>, C<getpwnam_r_proto>, -C<getpwuid_r_proto>, C<getservbyname_r_proto>, C<getservbyport_r_proto>, -C<getservent_r_proto>, C<getspnam_r_proto>, C<gidformat>, C<gidsign>, -C<gidsize>, C<gidtype>, C<glibpth>, C<gmake>, C<gmtime_r_proto>, -C<gnulibc_version>, C<grep>, C<groupcat>, C<groupstype>, C<gzip> - -=over 4 - -=item h - -=back - -C<h_fcntl>, C<h_sysfile>, C<hint>, C<hostcat>, C<html1dir>, C<html1direxp>, -C<html3dir>, C<html3direxp> - -=over 4 - -=item i - -=back - -C<i16size>, C<i16type>, C<i32size>, C<i32type>, C<i64size>, C<i64type>, -C<i8size>, C<i8type>, C<i_arpainet>, C<i_assert>, C<i_bsdioctl>, -C<i_crypt>, C<i_db>, C<i_dbm>, C<i_dirent>, C<i_dld>, C<i_dlfcn>, -C<i_fcntl>, C<i_float>, C<i_fp>, C<i_fp_class>, C<i_gdbm>, C<i_gdbm_ndbm>, -C<i_gdbmndbm>, C<i_grp>, C<i_ieeefp>, C<i_inttypes>, C<i_langinfo>, -C<i_libutil>, C<i_limits>, C<i_locale>, C<i_machcthr>, C<i_malloc>, -C<i_mallocmalloc>, 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_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_syspoll>, -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>, C<i_values>, C<i_varargs>, -C<i_varhdr>, C<i_vfork>, C<ignore_versioned_solibs>, C<inc_version_list>, -C<inc_version_list_init>, C<incpath>, C<inews>, C<initialinstalllocation>, -C<installarchlib>, C<installbin>, C<installhtml1dir>, C<installhtml3dir>, -C<installman1dir>, C<installman3dir>, C<installprefix>, -C<installprefixexp>, C<installprivlib>, C<installscript>, -C<installsitearch>, C<installsitebin>, C<installsitehtml1dir>, -C<installsitehtml3dir>, C<installsitelib>, C<installsiteman1dir>, -C<installsiteman3dir>, C<installsitescript>, C<installstyle>, -C<installusrbinperl>, C<installvendorarch>, C<installvendorbin>, -C<installvendorhtml1dir>, C<installvendorhtml3dir>, C<installvendorlib>, -C<installvendorman1dir>, C<installvendorman3dir>, C<installvendorscript>, -C<intsize>, C<issymlink>, C<ivdformat>, C<ivsize>, C<ivtype> - -=over 4 - -=item k - -=back - -C<known_extensions>, C<ksh> - -=over 4 - -=item l - -=back - -C<ld>, C<lddlflags>, C<ldflags>, C<ldflags_uselargefiles>, C<ldlibpthname>, -C<less>, C<lib_ext>, C<libc>, C<libperl>, C<libpth>, C<libs>, C<libsdirs>, -C<libsfiles>, C<libsfound>, C<libspath>, C<libswanted>, -C<libswanted_uselargefiles>, C<line>, C<lint>, C<lkflags>, C<ln>, C<lns>, -C<localtime_r_proto>, C<locincpth>, C<loclibpth>, C<longdblsize>, -C<longlongsize>, C<longsize>, C<lp>, C<lpr>, C<ls>, C<lseeksize>, -C<lseektype> - -=over 4 - -=item m - -=back - -C<mad>, C<madlyh>, C<madlyobj>, C<madlysrc>, C<mail>, C<mailx>, C<make>, -C<make_set_make>, C<mallocobj>, C<mallocsrc>, C<malloctype>, C<man1dir>, -C<man1direxp>, C<man1ext>, C<man3dir>, C<man3direxp>, C<man3ext>, -C<mips_type>, C<mistrustnm>, C<mkdir>, C<mmaptype>, C<modetype>, C<more>, -C<multiarch>, C<mv>, C<myarchname>, C<mydomain>, C<myhostname>, C<myuname> - -=over 4 - -=item n - -=back - -C<n>, C<need_va_copy>, C<netdb_hlen_type>, C<netdb_host_type>, -C<netdb_name_type>, C<netdb_net_type>, C<nm>, C<nm_opt>, C<nm_so_opt>, -C<nonxs_ext>, C<nroff>, C<nv_overflows_integers_at>, -C<nv_preserves_uv_bits>, C<nveformat>, C<nvEUformat>, C<nvfformat>, -C<nvFUformat>, C<nvgformat>, C<nvGUformat>, C<nvsize>, C<nvtype> - -=over 4 - -=item o - -=back - -C<o_nonblock>, C<obj_ext>, C<old_pthread_create_joinable>, C<optimize>, -C<orderlib>, C<osname>, C<osvers>, C<otherlibdirs> - -=over 4 - -=item p - -=back - -C<package>, C<pager>, C<passcat>, C<patchlevel>, C<path_sep>, C<perl>, -C<perl5> - -=over 4 - -=item P - -=back - -C<PERL_API_REVISION>, C<PERL_API_SUBVERSION>, C<PERL_API_VERSION>, -C<PERL_CONFIG_SH>, C<PERL_PATCHLEVEL>, C<perl_patchlevel>, -C<PERL_REVISION>, C<PERL_SUBVERSION>, C<PERL_VERSION>, C<perladmin>, -C<perllibs>, C<perlpath>, C<pg>, C<phostname>, C<pidtype>, C<plibpth>, -C<pmake>, C<pr>, C<prefix>, C<prefixexp>, C<privlib>, C<privlibexp>, -C<procselfexe>, C<prototype>, C<ptrsize> - -=over 4 - -=item q - -=back - -C<quadkind>, C<quadtype> - -=over 4 - -=item r - -=back - -C<randbits>, C<randfunc>, C<random_r_proto>, C<randseedtype>, C<ranlib>, -C<rd_nodata>, C<readdir64_r_proto>, C<readdir_r_proto>, C<revision>, C<rm>, -C<rm_try>, C<rmail>, C<run>, C<runnm> - -=over 4 - -=item s - -=back - -C<sched_yield>, C<scriptdir>, C<scriptdirexp>, C<sed>, C<seedfunc>, -C<selectminbits>, C<selecttype>, C<sendmail>, C<setgrent_r_proto>, -C<sethostent_r_proto>, C<setlocale_r_proto>, C<setnetent_r_proto>, -C<setprotoent_r_proto>, C<setpwent_r_proto>, C<setservent_r_proto>, -C<sGMTIME_max>, C<sGMTIME_min>, C<sh>, C<shar>, C<sharpbang>, C<shmattype>, -C<shortsize>, C<shrpenv>, C<shsharp>, C<sig_count>, C<sig_name>, -C<sig_name_init>, C<sig_num>, C<sig_num_init>, C<sig_size>, C<signal_t>, -C<sitearch>, C<sitearchexp>, C<sitebin>, C<sitebinexp>, C<sitehtml1dir>, -C<sitehtml1direxp>, C<sitehtml3dir>, C<sitehtml3direxp>, C<sitelib>, -C<sitelib_stem>, C<sitelibexp>, C<siteman1dir>, C<siteman1direxp>, -C<siteman3dir>, C<siteman3direxp>, C<siteprefix>, C<siteprefixexp>, -C<sitescript>, C<sitescriptexp>, C<sizesize>, C<sizetype>, C<sleep>, -C<sLOCALTIME_max>, C<sLOCALTIME_min>, C<smail>, C<so>, C<sockethdr>, -C<socketlib>, C<socksizetype>, C<sort>, C<spackage>, C<spitshell>, -C<sPRId64>, C<sPRIeldbl>, C<sPRIEUldbl>, C<sPRIfldbl>, C<sPRIFUldbl>, -C<sPRIgldbl>, C<sPRIGUldbl>, C<sPRIi64>, C<sPRIo64>, C<sPRIu64>, -C<sPRIx64>, C<sPRIXU64>, C<srand48_r_proto>, C<srandom_r_proto>, C<src>, -C<sSCNfldbl>, C<ssizetype>, C<startperl>, C<startsh>, C<static_ext>, -C<stdchar>, C<stdio_base>, C<stdio_bufsiz>, C<stdio_cnt>, C<stdio_filbuf>, -C<stdio_ptr>, C<stdio_stream_array>, C<strerror_r_proto>, C<strings>, -C<submit>, C<subversion>, C<sysman> - -=over 4 - -=item t - -=back - -C<tail>, C<tar>, C<targetarch>, C<tbl>, C<tee>, C<test>, C<timeincl>, -C<timetype>, C<tmpnam_r_proto>, C<to>, C<touch>, C<tr>, C<trnl>, C<troff>, -C<ttyname_r_proto> - -=over 4 - -=item u - -=back - -C<u16size>, C<u16type>, C<u32size>, C<u32type>, C<u64size>, C<u64type>, -C<u8size>, C<u8type>, C<uidformat>, C<uidsign>, C<uidsize>, C<uidtype>, -C<uname>, C<uniq>, C<uquadtype>, C<use5005threads>, C<use64bitall>, -C<use64bitint>, C<usecrosscompile>, C<usedevel>, C<usedl>, C<usedtrace>, -C<usefaststdio>, C<useithreads>, C<uselargefiles>, C<uselongdouble>, -C<usemallocwrap>, C<usemorebits>, C<usemultiplicity>, C<usemymalloc>, -C<usenm>, C<useopcode>, C<useperlio>, C<useposix>, C<usereentrant>, -C<userelocatableinc>, C<usesfio>, C<useshrplib>, C<usesitecustomize>, -C<usesocks>, C<usethreads>, C<usevendorprefix>, C<usevfork>, C<usrinc>, -C<uuname>, C<uvoformat>, C<uvsize>, C<uvtype>, C<uvuformat>, C<uvxformat>, -C<uvXUformat> - -=over 4 - -=item v - -=back - -C<vendorarch>, C<vendorarchexp>, C<vendorbin>, C<vendorbinexp>, -C<vendorhtml1dir>, C<vendorhtml1direxp>, C<vendorhtml3dir>, -C<vendorhtml3direxp>, C<vendorlib>, C<vendorlib_stem>, C<vendorlibexp>, -C<vendorman1dir>, C<vendorman1direxp>, C<vendorman3dir>, -C<vendorman3direxp>, C<vendorprefix>, C<vendorprefixexp>, C<vendorscript>, -C<vendorscriptexp>, C<version>, C<version_patchlevel_string>, -C<versiononly>, C<vi>, C<voidflags> - -=over 4 - -=item x - -=back - -C<xlibpth> - -=over 4 - -=item y - -=back - -C<yacc>, C<yaccflags> - -=over 4 - -=item z - -=back - -C<zcat>, C<zip> - -=over 4 - -=item NOTE - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -dynamic, nonxs, static - -=item AUTHOR - -=back - -=head2 Cwd - get pathname of current working directory - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item getcwd and friends - -getcwd, cwd, fastcwd, fastgetcwd, getdcwd - -=item abs_path and friends - -abs_path, realpath, fast_abs_path - -=item $ENV{PWD} - -=back - -=item NOTES - -=item AUTHOR - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 DB - programmatic interface to the Perl debugging API - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Global Variables - - $DB::sub, %DB::sub, $DB::single, $DB::signal, $DB::trace, @DB::args, -@DB::dbline, %DB::dbline, $DB::package, $DB::filename, $DB::subname, -$DB::lineno - -=item API Methods - -CLIENT->register(), CLIENT->evalcode(STRING), CLIENT->skippkg('D::hide'), -CLIENT->run(), CLIENT->step(), CLIENT->next(), CLIENT->done() - -=item Client Callback Methods - -CLIENT->init(), CLIENT->prestop([STRING]), CLIENT->stop(), CLIENT->idle(), -CLIENT->poststop([STRING]), CLIENT->evalcode(STRING), CLIENT->cleanup(), -CLIENT->output(LIST) - -=back - -=item BUGS - -=item AUTHOR - -=back - -=head2 DBM_Filter -- Filter DBM keys/values - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item What is a DBM Filter? - -=over 4 - -=item So what's new? - -=back - -=item METHODS - -=over 4 - -=item $db->Filter_Push() - -=item $db->Filter_Key_Push() - -=item $db->Filter_Value_Push() - -Filter_Push, Filter_Key_Push, Filter_Value_Push - -=item $db->Filter_Pop() - -=item $db->Filtered() - -=back - -=item Writing a Filter - -=over 4 - -=item Immediate Filters - -=item Canned Filters - -"name", params - -=back - -=item Filters Included - -utf8, encode, compress, int32, null - -=item NOTES - -=over 4 - -=item Maintain Round Trip Integrity - -=item Don't mix filtered & non-filtered data in the same database file. - -=back - -=item EXAMPLE - -=item SEE ALSO - -=item AUTHOR - -=back - -=head2 DBM_Filter::compress - filter for DBM_Filter - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=item AUTHOR - -=back - -=head2 DBM_Filter::encode - filter for DBM_Filter - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=item AUTHOR - -=back - -=head2 DBM_Filter::int32 - filter for DBM_Filter - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=item AUTHOR - -=back - -=head2 DBM_Filter::null - filter for DBM_Filter - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=item AUTHOR - -=back - -=head2 DBM_Filter::utf8 - filter for DBM_Filter - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=item AUTHOR - -=back - -=head2 DB_File - Perl5 access to Berkeley DB version 1.x - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -B<DB_HASH>, B<DB_BTREE>, B<DB_RECNO> - -=over 4 - -=item Using DB_File with Berkeley DB version 2 or greater - -=item Interface to Berkeley DB - -=item Opening a Berkeley DB Database File - -=item Default Parameters - -=item In Memory Databases - -=back - -=item DB_HASH - -=over 4 - -=item A Simple Example - -=back - -=item DB_BTREE - -=over 4 - -=item Changing the BTREE sort order - -=item Handling Duplicate Keys - -=item The get_dup() Method - -=item The find_dup() Method - -=item The del_dup() Method - -=item Matching Partial Keys - -=back - -=item DB_RECNO - -=over 4 - -=item The 'bval' Option - -=item A Simple Example - -=item Extra RECNO Methods - -B<$X-E<gt>push(list) ;>, B<$value = $X-E<gt>pop ;>, B<$X-E<gt>shift>, -B<$X-E<gt>unshift(list) ;>, B<$X-E<gt>length>, B<$X-E<gt>splice(offset, -length, elements);> - -=item Another Example - -=back - -=item THE API INTERFACE - -B<$status = $X-E<gt>get($key, $value [, $flags]) ;>, B<$status = -$X-E<gt>put($key, $value [, $flags]) ;>, B<$status = $X-E<gt>del($key [, -$flags]) ;>, B<$status = $X-E<gt>fd ;>, B<$status = $X-E<gt>seq($key, -$value, $flags) ;>, B<$status = $X-E<gt>sync([$flags]) ;> - -=item DBM FILTERS - -B<filter_store_key>, B<filter_store_value>, B<filter_fetch_key>, -B<filter_fetch_value> - -=over 4 - -=item The Filter - -=item An Example -- the NULL termination problem. - -=item Another Example -- Key is a C int. - -=back - -=item HINTS AND TIPS - -=over 4 - -=item Locking: The Trouble with fd - -=item Safe ways to lock a database - -B<Tie::DB_Lock>, B<Tie::DB_LockFile>, B<DB_File::Lock> - -=item Sharing Databases With C Applications - -=item The untie() Gotcha - -=back - -=item COMMON QUESTIONS - -=over 4 - -=item Why is there Perl source in my database? - -=item How do I store complex data structures with DB_File? - -=item What does "Invalid Argument" mean? - -=item What does "Bareword 'DB_File' not allowed" mean? - -=back - -=item REFERENCES - -=item HISTORY - -=item BUGS - -=item AVAILABILITY - -=item COPYRIGHT - -=item SEE ALSO - -=item AUTHOR - -=back - -=head2 Data::Dumper - stringified perl data structures, suitable for both -printing and C<eval> - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Methods - -I<PACKAGE>->new(I<ARRAYREF [>, I<ARRAYREF]>), I<$OBJ>->Dump I<or> -I<PACKAGE>->Dump(I<ARRAYREF [>, I<ARRAYREF]>), I<$OBJ>->Seen(I<[HASHREF]>), -I<$OBJ>->Values(I<[ARRAYREF]>), I<$OBJ>->Names(I<[ARRAYREF]>), -I<$OBJ>->Reset - -=item Functions - -Dumper(I<LIST>) - -=item Configuration Variables or Methods - -=item Exports - -Dumper - -=back - -=item EXAMPLES - -=item BUGS - -=over 4 - -=item NOTE - -=back - -=item AUTHOR - -=item VERSION - -=item SEE ALSO - -=back - -=head2 Devel::DProf - a Perl code profiler - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item PROFILE FORMAT - -=item AUTOLOAD - -=item ENVIRONMENT - -=item BUGS - -=item SEE ALSO - -=back - -=head2 Devel::InnerPackage - find all the inner packages of a package - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item list_packages <package name> - -=back - -=back - -=over 4 - -=item AUTHOR - -=item COPYING - -=item BUGS - -=back - -=head2 Devel::PPPort - Perl/Pollution/Portability - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Why use ppport.h? - -=item How to use ppport.h - -=item Running ppport.h - -=back - -=item FUNCTIONS - -=over 4 - -=item WriteFile - -=back - -=item COMPATIBILITY - -=over 4 - -=item Provided Perl compatibility API - -=item Perl API not supported by ppport.h - -perl 5.11.0, perl 5.10.0, perl 5.9.5, perl 5.9.4, perl 5.9.3, perl 5.9.2, -perl 5.9.1, perl 5.9.0, perl 5.8.3, perl 5.8.1, perl 5.8.0, perl 5.7.3, -perl 5.7.2, perl 5.7.1, perl 5.6.1, perl 5.6.0, perl 5.005_03, perl 5.005, -perl 5.004_05, perl 5.004 - -=back - -=item BUGS - -=item AUTHORS - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 Devel::Peek - A data debugging tool for the XS programmer - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Runtime debugging - -=item Memory footprint debugging - -=back - -=item EXAMPLES - -=over 4 - -=item A simple scalar string - -=item A simple scalar number - -=item A simple scalar with an extra reference - -=item A reference to a simple scalar - -=item A reference to an array - -=item A reference to a hash - -=item Dumping a large array or hash - -=item A reference to an SV which holds a C pointer - -=item A reference to a subroutine - -=back - -=item EXPORTS - -=item BUGS - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 Devel::SelfStubber - generate stubs for a SelfLoading module - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=head2 Digest - Modules that calculate message digests - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -I<binary>, I<hex>, I<base64> - -=item OO INTERFACE - -$ctx = Digest->XXX($arg,...), $ctx = Digest->new(XXX => $arg,...), $ctx = -Digest::XXX->new($arg,...), $other_ctx = $ctx->clone, $ctx->reset, -$ctx->add( $data ), $ctx->add( $chunk1, $chunk2, ... ), $ctx->addfile( -$io_handle ), $ctx->add_bits( $data, $nbits ), $ctx->add_bits( $bitstring -), $ctx->digest, $ctx->hexdigest, $ctx->b64digest - -=item Digest speed - -=item SEE ALSO - -=item AUTHOR - -=back - -=head2 Digest::MD5 - Perl interface to the MD5 Algorithm - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item FUNCTIONS - -md5($data,...), md5_hex($data,...), md5_base64($data,...) - -=item METHODS - -$md5 = Digest::MD5->new, $md5->reset, $md5->clone, $md5->add($data,...), -$md5->addfile($io_handle), $md5->add_bits($data, $nbits), -$md5->add_bits($bitstring), $md5->digest, $md5->hexdigest, $md5->b64digest - -=item EXAMPLES - -=item SEE ALSO - -=item COPYRIGHT - -=item AUTHORS - -=back - -=head2 Digest::SHA - Perl extension for SHA-1/224/256/384/512 - -=over 4 - -=item SYNOPSIS - -=item SYNOPSIS (HMAC-SHA) - -=item ABSTRACT - -=item DESCRIPTION - -=item NIST STATEMENT ON SHA-1 - -=item PADDING OF BASE64 DIGESTS - -=item EXPORT - -=item EXPORTABLE FUNCTIONS - -B<sha1($data, ...)>, B<sha224($data, ...)>, B<sha256($data, ...)>, -B<sha384($data, ...)>, B<sha512($data, ...)>, B<sha1_hex($data, ...)>, -B<sha224_hex($data, ...)>, B<sha256_hex($data, ...)>, B<sha384_hex($data, -...)>, B<sha512_hex($data, ...)>, B<sha1_base64($data, ...)>, -B<sha224_base64($data, ...)>, B<sha256_base64($data, ...)>, -B<sha384_base64($data, ...)>, B<sha512_base64($data, ...)>, B<new($alg)>, -B<reset($alg)>, B<hashsize>, B<algorithm>, B<clone>, B<add($data, ...)>, -B<add_bits($data, $nbits)>, B<add_bits($bits)>, B<addfile(*FILE)>, -B<addfile($filename [, $mode])>, B<dump($filename)>, B<load($filename)>, -B<digest>, B<hexdigest>, B<b64digest>, B<hmac_sha1($data, $key)>, -B<hmac_sha224($data, $key)>, B<hmac_sha256($data, $key)>, -B<hmac_sha384($data, $key)>, B<hmac_sha512($data, $key)>, -B<hmac_sha1_hex($data, $key)>, B<hmac_sha224_hex($data, $key)>, -B<hmac_sha256_hex($data, $key)>, B<hmac_sha384_hex($data, $key)>, -B<hmac_sha512_hex($data, $key)>, B<hmac_sha1_base64($data, $key)>, -B<hmac_sha224_base64($data, $key)>, B<hmac_sha256_base64($data, $key)>, -B<hmac_sha384_base64($data, $key)>, B<hmac_sha512_base64($data, $key)> - -=item SEE ALSO - -=item AUTHOR - -=item ACKNOWLEDGMENTS - -=item COPYRIGHT AND LICENSE - -=back - -=head2 Digest::SHA::lib::Digest::SHA, Digest::SHA - Perl extension for -SHA-1/224/256/384/512 - -=over 4 - -=item SYNOPSIS - -=item SYNOPSIS (HMAC-SHA) - -=item ABSTRACT - -=item DESCRIPTION - -=item NIST STATEMENT ON SHA-1 - -=item PADDING OF BASE64 DIGESTS - -=item EXPORT - -=item EXPORTABLE FUNCTIONS - -B<sha1($data, ...)>, B<sha224($data, ...)>, B<sha256($data, ...)>, -B<sha384($data, ...)>, B<sha512($data, ...)>, B<sha1_hex($data, ...)>, -B<sha224_hex($data, ...)>, B<sha256_hex($data, ...)>, B<sha384_hex($data, -...)>, B<sha512_hex($data, ...)>, B<sha1_base64($data, ...)>, -B<sha224_base64($data, ...)>, B<sha256_base64($data, ...)>, -B<sha384_base64($data, ...)>, B<sha512_base64($data, ...)>, B<new($alg)>, -B<reset($alg)>, B<hashsize>, B<algorithm>, B<clone>, B<add($data, ...)>, -B<add_bits($data, $nbits)>, B<add_bits($bits)>, B<addfile(*FILE)>, -B<addfile($filename [, $mode])>, B<dump($filename)>, B<load($filename)>, -B<digest>, B<hexdigest>, B<b64digest>, B<hmac_sha1($data, $key)>, -B<hmac_sha224($data, $key)>, B<hmac_sha256($data, $key)>, -B<hmac_sha384($data, $key)>, B<hmac_sha512($data, $key)>, -B<hmac_sha1_hex($data, $key)>, B<hmac_sha224_hex($data, $key)>, -B<hmac_sha256_hex($data, $key)>, B<hmac_sha384_hex($data, $key)>, -B<hmac_sha512_hex($data, $key)>, B<hmac_sha1_base64($data, $key)>, -B<hmac_sha224_base64($data, $key)>, B<hmac_sha256_base64($data, $key)>, -B<hmac_sha384_base64($data, $key)>, B<hmac_sha512_base64($data, $key)> - -=item SEE ALSO - -=item AUTHOR - -=item ACKNOWLEDGMENTS - -=item COPYRIGHT AND LICENSE - -=back - -=head2 Digest::base - Digest base class - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=back - -=head2 Digest::file - Calculate digests of files - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -digest_file( $file, $algorithm, [$arg,...] ), digest_file_hex( $file, -$algorithm, [$arg,...] ), digest_file_base64( $file, $algorithm, [$arg,...] -) - -=item SEE ALSO - -=back - -=head2 DirHandle - supply object methods for directory handles - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item NOTES - -=back - -=head2 Dumpvalue - provides screen dump of Perl data. - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Creation - -C<arrayDepth>, C<hashDepth>, C<compactDump>, C<veryCompact>, C<globPrint>, -C<dumpDBFiles>, C<dumpPackages>, C<dumpReused>, C<tick>, C<quoteHighBit>, -C<printUndef>, C<usageOnly>, unctrl, subdump, bareStringify, quoteHighBit, -stopDbSignal - -=item Methods - -dumpValue, dumpValues, stringify, dumpvars, set_quote, set_unctrl, -compactDump, veryCompact, set, get - -=back - -=back - -=head2 DynaLoader - Dynamically load C libraries into Perl code - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -@dl_library_path, @dl_resolve_using, @dl_require_symbols, @dl_librefs, -@dl_modules, @dl_shared_objects, dl_error(), $dl_debug, dl_findfile(), -dl_expandspec(), dl_load_file(), dl_unload_file(), dl_load_flags(), -dl_find_symbol(), dl_find_symbol_anywhere(), dl_undef_symbols(), -dl_install_xsub(), bootstrap() - -=item AUTHOR - -=back - -=head2 DynaLoader::XSLoader, XSLoader - Dynamically load C libraries into -Perl code - -=over 4 - -=item VERSION - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Migration from C<DynaLoader> - -=item Backward compatible boilerplate - -=back - -=item Order of initialization: early load() - -=over 4 - -=item The most hairy case - -=back - -=item DIAGNOSTICS - -C<Can't find '%s' symbol in %s>, C<Can't load '%s' for module %s: %s>, -C<Undefined symbols present after loading %s: %s>, -C<XSLoader::load('Your::Module', $Your::Module::VERSION)> - -=item LIMITATIONS - -=item BUGS - -=item SEE ALSO - -=item AUTHORS - -=item COPYRIGHT & LICENSE - -=back - -=head2 Encode - character encodings - -=over 4 - -=item SYNOPSIS - -=over 4 - -=item Table of Contents - -=back - -=item DESCRIPTION - -=over 4 - -=item TERMINOLOGY - -=back - -=item PERL ENCODING API - -$octets = encode(ENCODING, $string [, CHECK]), $string = decode(ENCODING, -$octets [, CHECK]), [$obj =] find_encoding(ENCODING), [$length =] -from_to($octets, FROM_ENC, TO_ENC [, CHECK]), $octets = -encode_utf8($string);, $string = decode_utf8($octets [, CHECK]); - -=over 4 - -=item Listing available encodings - -=item Defining Aliases - -=item Finding IANA Character Set Registry names - -=back - -=item Encoding via PerlIO - -=item Handling Malformed Data - -B<NOTE:> Not all encoding support this feature, I<CHECK> = -Encode::FB_DEFAULT ( == 0), I<CHECK> = Encode::FB_CROAK ( == 1), I<CHECK> = -Encode::FB_QUIET, I<CHECK> = Encode::FB_WARN, perlqq mode (I<CHECK> = -Encode::FB_PERLQQ), HTML charref mode (I<CHECK> = Encode::FB_HTMLCREF), XML -charref mode (I<CHECK> = Encode::FB_XMLCREF), The bitmask, -Encode::LEAVE_SRC - -=over 4 - -=item coderef for CHECK - -=back - -=item Defining Encodings - -=item The UTF8 flag - -Goal #1:, Goal #2:, Goal #3:, Goal #4: - -=over 4 - -=item Messing with Perl's Internals - -is_utf8(STRING [, CHECK]), _utf8_on(STRING), _utf8_off(STRING) - -=back - -=item UTF-8 vs. utf8 vs. UTF8 - -=item SEE ALSO - -=item MAINTAINER - -=item COPYRIGHT - -=back - -=head2 Encode::Alias - alias definitions to encodings - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -As a simple string, As a qr// compiled regular expression, e.g.:, As a code -reference, e.g.: - -=over 4 - -=item Alias overloading - -=back - -=item SEE ALSO - -=back - -=head2 Encode::Byte - Single Byte Encodings - -=over 4 - -=item SYNOPSIS - -=item ABSTRACT - -=item DESCRIPTION - -=item SEE ALSO - -=back - -=head2 Encode::CJKConstants -- Internally used by Encode::??::ISO_2022_* - -=head2 Encode::CN - China-based Chinese Encodings - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item NOTES - -=item BUGS - -=item SEE ALSO - -=back - -=head2 Encode::CN::HZ -- internally used by Encode::CN - -=head2 Encode::Config -- internally used by Encode - -=head2 Encode::EBCDIC - EBCDIC Encodings - -=over 4 - -=item SYNOPSIS - -=item ABSTRACT - -=item DESCRIPTION - -=item SEE ALSO - -=back - -=head2 Encode::Encoding - Encode Implementation Base Class - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Methods you should implement - --E<gt>encode($string [,$check]), -E<gt>decode($octets [,$check]), --E<gt>cat_decode($destination, $octets, $offset, $terminator [,$check]) - -=item Other methods defined in Encode::Encodings - --E<gt>name, -E<gt>mime_name, -E<gt>renew, -E<gt>renewed, -E<gt>perlio_ok(), --E<gt>needs_lines() - -=item Example: Encode::ROT13 - -=back - -=item Why the heck Encode API is different? - -=over 4 - -=item Compiled Encodings - -=back - -=item SEE ALSO - -Scheme 1, Scheme 2, Other Schemes - -=back - -=head2 Encode::GSM0338 -- ESTI GSM 03.38 Encoding - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item NOTES - -=item BUGS - -=item SEE ALSO - -=back - -=head2 Encode::Guess -- Guesses encoding from data - -=over 4 - -=item SYNOPSIS - -=item ABSTRACT - -=item DESCRIPTION - -Encode::Guess->set_suspects, Encode::Guess->add_suspects, -Encode::decode("Guess" ...), Encode::Guess->guess($data), -guess_encoding($data, [, I<list of suspects>]) - -=item CAVEATS - -=item TO DO - -=item SEE ALSO - -=back - -=head2 Encode::JP - Japanese Encodings - -=over 4 - -=item SYNOPSIS - -=item ABSTRACT - -=item DESCRIPTION - -=item Note on ISO-2022-JP(-1)? - -=item BUGS - -=item SEE ALSO - -=back - -=head2 Encode::JP::H2Z -- internally used by Encode::JP::2022_JP* - -=head2 Encode::JP::JIS7 -- internally used by Encode::JP - -=head2 Encode::KR - Korean Encodings - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item BUGS - -=item SEE ALSO - -=back - -=head2 Encode::KR::2022_KR -- internally used by Encode::KR - -=head2 Encode::MIME::Header -- MIME 'B' and 'Q' header encoding - -=over 4 - -=item SYNOPSIS - -=item ABSTRACT - -=item DESCRIPTION - -=item BUGS - -=item SEE ALSO - -=back - -=head2 Encode::MIME::Name, Encode::MIME::NAME -- internally used by Encode - -=over 4 - -=item SEE ALSO - -=back - -=head2 Encode::PerlIO -- a detailed document on Encode and PerlIO - -=over 4 - -=item Overview - -=item How does it work? - -=item Line Buffering - -=over 4 - -=item How can I tell whether my encoding fully supports PerlIO ? - -=back - -=item SEE ALSO - -=back - -=head2 Encode::Supported -- Encodings supported by Encode - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Encoding Names - -=back - -=item Supported Encodings - -=over 4 - -=item Built-in Encodings - -=item Encode::Unicode -- other Unicode encodings - -=item Encode::Byte -- Extended ASCII - -ISO-8859 and corresponding vendor mappings, KOI8 - De Facto Standard for -the Cyrillic world - -=item gsm0338 - Hentai Latin 1 - -gsm0338 support before 2.19 - -=item CJK: Chinese, Japanese, Korean (Multibyte) - -Encode::CN -- Continental China, Encode::JP -- Japan, Encode::KR -- Korea, -Encode::TW -- Taiwan, Encode::HanExtra -- More Chinese via CPAN, -Encode::JIS2K -- JIS X 0213 encodings via CPAN - -=item Miscellaneous encodings - -Encode::EBCDIC, Encode::Symbols, Encode::MIME::Header, Encode::Guess - -=back - -=item Unsupported encodings - - ISO-2022-JP-2 [RFC1554], ISO-2022-CN [RFC1922], Various HP-UX encodings, -Cyrillic encoding ISO-IR-111, ISO-8859-8-1 [Hebrew], ISIRI 3342, Iran -System, ISIRI 2900 [Farsi], Thai encoding TCVN, Vietnamese encodings VPS, -Various Mac encodings, (Mac) Indic encodings - -=item Encoding vs. Charset -- terminology - -=item Encoding Classification (by Anton Tagunov and Dan Kogai) - -=over 4 - -=item Microsoft-related naming mess - -KS_C_5601-1987, GB2312, Big5, Shift_JIS - -=back - -=item Glossary - -character repertoire, coded character set (CCS), character encoding scheme -(CES), charset (in MIME context), EUC, ISO-2022, UCS, UCS-2, Unicode, UTF, -UTF-16 - -=item See Also - -=item References - -ECMA, ECMA-035 (eq C<ISO-2022>), IANA, Assigned Charset Names by IANA, ISO, -RFC, UC, Unicode Glossary - -=over 4 - -=item Other Notable Sites - -czyborra.com, CJK.inf, Jungshik Shin's Hangul FAQ, debian.org: -"Introduction to i18n" - -=item Offline sources - -C<CJKV Information Processing> by Ken Lunde - -=back - -=back - -=head2 Encode::Symbol - Symbol Encodings - -=over 4 - -=item SYNOPSIS - -=item ABSTRACT - -=item DESCRIPTION - -=item SEE ALSO - -=back - -=head2 Encode::TW - Taiwan-based Chinese Encodings - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item NOTES - -=item BUGS - -=item SEE ALSO - -=back - -=head2 Encode::Unicode -- Various Unicode Transformation Formats - -=over 4 - -=item SYNOPSIS - -=item ABSTRACT - -L<http://www.unicode.org/glossary/> says:, Quick Reference - -=item Size, Endianness, and BOM - -=over 4 - -=item by size - -=item by endianness - -BOM as integer when fetched in network byte order - -=back - -=item Surrogate Pairs - -=item Error Checking - -=item SEE ALSO - -=back - -=head2 Encode::Unicode::UTF7 -- UTF-7 encoding - -=over 4 - -=item SYNOPSIS - -=item ABSTRACT - -=item In Practice - -=item SEE ALSO - -=back - -=head2 Encode::lib::Encode::Alias, Encode::Alias - alias definitions to -encodings - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -As a simple string, As a qr// compiled regular expression, e.g.:, As a code -reference, e.g.: - -=over 4 - -=item Alias overloading - -=back - -=item SEE ALSO - -=back - -=head2 Encode::lib::Encode::CJKConstants, Encode::CJKConstants.pm -- -Internally used by Encode::??::ISO_2022_* - -=head2 Encode::lib::Encode::CN::HZ, Encode::CN::HZ -- internally used by -Encode::CN - -=head2 Encode::lib::Encode::Config, Encode::Config -- internally used by -Encode - -=head2 Encode::lib::Encode::Encoding, Encode::Encoding - Encode -Implementation Base Class - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Methods you should implement - --E<gt>encode($string [,$check]), -E<gt>decode($octets [,$check]), --E<gt>cat_decode($destination, $octets, $offset, $terminator [,$check]) - -=item Other methods defined in Encode::Encodings - --E<gt>name, -E<gt>mime_name, -E<gt>renew, -E<gt>renewed, -E<gt>perlio_ok(), --E<gt>needs_lines() - -=item Example: Encode::ROT13 - -=back - -=item Why the heck Encode API is different? - -=over 4 - -=item Compiled Encodings - -=back - -=item SEE ALSO - -Scheme 1, Scheme 2, Other Schemes - -=back - -=head2 Encode::lib::Encode::GSM0338, Encode::GSM0338 -- ESTI GSM 03.38 -Encoding - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item NOTES - -=item BUGS - -=item SEE ALSO - -=back - -=head2 Encode::lib::Encode::Guess, Encode::Guess -- Guesses encoding from -data - -=over 4 - -=item SYNOPSIS - -=item ABSTRACT - -=item DESCRIPTION - -Encode::Guess->set_suspects, Encode::Guess->add_suspects, -Encode::decode("Guess" ...), Encode::Guess->guess($data), -guess_encoding($data, [, I<list of suspects>]) - -=item CAVEATS - -=item TO DO - -=item SEE ALSO - -=back - -=head2 Encode::lib::Encode::JP::H2Z, Encode::JP::H2Z -- internally used by -Encode::JP::2022_JP* - -=head2 Encode::lib::Encode::JP::JIS7, Encode::JP::JIS7 -- internally used -by Encode::JP - -=head2 Encode::lib::Encode::KR::2022_KR, Encode::KR::2022_KR -- internally -used by Encode::KR - -=head2 Encode::lib::Encode::MIME::Header, Encode::MIME::Header -- MIME 'B' -and 'Q' header encoding - -=over 4 - -=item SYNOPSIS - -=item ABSTRACT - -=item DESCRIPTION - -=item BUGS - -=item SEE ALSO - -=back - -=head2 Encode::lib::Encode::MIME::Name, Encode::MIME::NAME -- internally -used by Encode - -=over 4 - -=item SEE ALSO - -=back - -=head2 Encode::lib::Encode::PerlIO, Encode::PerlIO -- a detailed document -on Encode and PerlIO - -=over 4 - -=item Overview - -=item How does it work? - -=item Line Buffering - -=over 4 - -=item How can I tell whether my encoding fully supports PerlIO ? - -=back - -=item SEE ALSO - -=back - -=head2 Encode::lib::Encode::Supported, Encode::Supported -- Encodings -supported by Encode - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Encoding Names - -=back - -=item Supported Encodings - -=over 4 - -=item Built-in Encodings - -=item Encode::Unicode -- other Unicode encodings - -=item Encode::Byte -- Extended ASCII - -ISO-8859 and corresponding vendor mappings, KOI8 - De Facto Standard for -the Cyrillic world - -=item gsm0338 - Hentai Latin 1 - -gsm0338 support before 2.19 - -=item CJK: Chinese, Japanese, Korean (Multibyte) - -Encode::CN -- Continental China, Encode::JP -- Japan, Encode::KR -- Korea, -Encode::TW -- Taiwan, Encode::HanExtra -- More Chinese via CPAN, -Encode::JIS2K -- JIS X 0213 encodings via CPAN - -=item Miscellaneous encodings - -Encode::EBCDIC, Encode::Symbols, Encode::MIME::Header, Encode::Guess - -=back - -=item Unsupported encodings - - ISO-2022-JP-2 [RFC1554], ISO-2022-CN [RFC1922], Various HP-UX encodings, -Cyrillic encoding ISO-IR-111, ISO-8859-8-1 [Hebrew], ISIRI 3342, Iran -System, ISIRI 2900 [Farsi], Thai encoding TCVN, Vietnamese encodings VPS, -Various Mac encodings, (Mac) Indic encodings - -=item Encoding vs. Charset -- terminology - -=item Encoding Classification (by Anton Tagunov and Dan Kogai) - -=over 4 - -=item Microsoft-related naming mess - -KS_C_5601-1987, GB2312, Big5, Shift_JIS - -=back - -=item Glossary - -character repertoire, coded character set (CCS), character encoding scheme -(CES), charset (in MIME context), EUC, ISO-2022, UCS, UCS-2, Unicode, UTF, -UTF-16 - -=item See Also - -=item References - -ECMA, ECMA-035 (eq C<ISO-2022>), IANA, Assigned Charset Names by IANA, ISO, -RFC, UC, Unicode Glossary - -=over 4 - -=item Other Notable Sites - -czyborra.com, CJK.inf, Jungshik Shin's Hangul FAQ, debian.org: -"Introduction to i18n" - -=item Offline sources - -C<CJKV Information Processing> by Ken Lunde - -=back - -=back - -=head2 Encode::lib::Encode::Unicode::UTF7, Encode::Unicode::UTF7 -- UTF-7 -encoding - -=over 4 - -=item SYNOPSIS - -=item ABSTRACT - -=item In Practice - -=item SEE ALSO - -=back - -=head2 Encode::lib::Encoder, Encode::Encoder -- Object Oriented Encoder - -=over 4 - -=item SYNOPSIS - -=item ABSTRACT - -=item Description - -=over 4 - -=item Predefined Methods - -$e = Encode::Encoder-E<gt>new([$data, $encoding]);, encoder(), -$e-E<gt>data([$data]), $e-E<gt>encoding([$encoding]), -$e-E<gt>bytes([$encoding]) - -=item Example: base64 transcoder - -=item Operator Overloading - -=back - -=item SEE ALSO - -=back - -=head2 Encodencoding, encoding - allows you to write your script in -non-ascii or non-utf8 - -=over 4 - -=item SYNOPSIS - -=item ABSTRACT - -=over 4 - -=item Literal Conversions - -=item PerlIO layers for C<STD(IN|OUT)> - -=item Implicit upgrading for byte strings - -=item Side effects - -=back - -=item FEATURES THAT REQUIRE 5.8.1 - -"NON-EUC" doublebyte encodings, tr//, DATA pseudo-filehandle - -=item USAGE - -use encoding [I<ENCNAME>] ;, use encoding I<ENCNAME> [ STDIN =E<gt> -I<ENCNAME_IN> ...] ;, use encoding I<ENCNAME> Filter=E<gt>1;, no encoding; - -=item The Filter Option - -=over 4 - -=item Filter-related changes at Encode version 1.87 - -=back - -=item CAVEATS - -=over 4 - -=item NOT SCOPED - -=item DO NOT MIX MULTIPLE ENCODINGS - -=item tr/// with ranges - -Legend of characters above - -=back - -=item EXAMPLE - Greekperl - -=item KNOWN PROBLEMS - -literals in regex that are longer than 127 bytes, EBCDIC, format, Thread -safety - -=over 4 - -=item The Logic of :locale - -=back - -=item HISTORY - -=item SEE ALSO - -=back - -=head2 Encoder, Encode::Encoder -- Object Oriented Encoder - -=over 4 - -=item SYNOPSIS - -=item ABSTRACT - -=item Description - -=over 4 - -=item Predefined Methods - -$e = Encode::Encoder-E<gt>new([$data, $encoding]);, encoder(), -$e-E<gt>data([$data]), $e-E<gt>encoding([$encoding]), -$e-E<gt>bytes([$encoding]) - -=item Example: base64 transcoder - -=item Operator Overloading - -=back - -=item SEE ALSO - -=back - -=head2 English - use nice English (or awk) names for ugly punctuation -variables - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item PERFORMANCE - -=back - -=head2 Env - perl module that imports environment variables as scalars or -arrays - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item LIMITATIONS - -=item AUTHOR - -=back - -=head2 Errno - System errno constants - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item CAVEATS - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 Exporter - Implements default import method for modules - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item How to Export - -=item Selecting What To Export - -=item How to Import - -C<use YourModule;>, C<use YourModule ();>, C<use YourModule qw(...);> - -=back - -=item Advanced features - -=over 4 - -=item Specialised Import Lists - -=item Exporting without using Exporter's import method - -=item Exporting without inheriting from Exporter - -=item Module Version Checking - -=item Managing Unknown Symbols - -=item Tag Handling Utility Functions - -=item Generating combined tags - -=item C<AUTOLOAD>ed Constants - -=back - -=item Good Practices - -=over 4 - -=item Declaring C<@EXPORT_OK> and Friends - -=item Playing Safe - -=item What not to Export - -=back - -=item SEE ALSO - -=item LICENSE - -=back - -=head2 Exporter::Heavy - Exporter guts - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=head2 ExtUtils::CBuilder - Compile and link C code for Perl modules - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -new, have_compiler, compile, C<object_file>, C<include_dirs>, -C<extra_compiler_flags>, link, lib_file, module_name, extra_linker_flags, -link_executable, exe_file, object_file, lib_file, exe_file, prelink, -need_prelink, extra_link_args_after_prelink - -=item TO DO - -=item HISTORY - -=item AUTHOR - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 ExtUtils::CBuilder::Platform::Windows - Builder class for Windows -platforms - -=over 4 - -=item DESCRIPTION - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 ExtUtils::Command - utilities to replace common UNIX commands in -Makefiles etc. - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item FUNCTIONS - -=back - -=back - -cat - -eqtime - -rm_rf - -rm_f - -touch - -mv - -cp - -chmod - -mkpath - -test_f - -test_d - -dos2unix - -=over 4 - -=item SEE ALSO - -=item AUTHOR - -=back - -=head2 ExtUtils::Command::MM - Commands for the MM's to use in Makefiles - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -B<test_harness> - -=back - -B<pod2man> - -B<warn_if_old_packlist> - -B<perllocal_install> - -B<uninstall> - -=head2 ExtUtils::Constant - generate XS code to import C header constants - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item USAGE - -IV, UV, NV, PV, PVN, SV, YES, NO, UNDEF - -=item FUNCTIONS - -=back - -constant_types - -XS_constant PACKAGE, TYPES, XS_SUBNAME, C_SUBNAME - -autoload PACKAGE, VERSION, AUTOLOADER - -WriteMakefileSnippet - -WriteConstants ATTRIBUTE =E<gt> VALUE [, ...], NAME, DEFAULT_TYPE, -BREAKOUT_AT, NAMES, PROXYSUBS, C_FH, C_FILE, XS_FH, XS_FILE, XS_SUBNAME, -C_SUBNAME - -=over 4 - -=item AUTHOR - -=back - -=head2 ExtUtils::Constant::Base - base class for ExtUtils::Constant objects - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item USAGE - -=back - -header - -memEQ_clause args_hashref - -dump_names arg_hashref, ITEM.. - -assign arg_hashref, VALUE.. - -return_clause arg_hashref, ITEM - -switch_clause arg_hashref, NAMELEN, ITEMHASH, ITEM.. - -params WHAT - -dogfood arg_hashref, ITEM.. - -normalise_items args, default_type, seen_types, seen_items, ITEM.. - -C_constant arg_hashref, ITEM.., name, type, value, macro, default, pre, -post, def_pre, def_post, utf8, weight - -=over 4 - -=item BUGS - -=item AUTHOR - -=back - -=head2 ExtUtils::Constant::Utils - helper functions for ExtUtils::Constant - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item USAGE - -C_stringify NAME - -=back - -perl_stringify NAME - -=over 4 - -=item AUTHOR - -=back - -=head2 ExtUtils::Constant::XS, ExtUtils::Constant::Base - base class for -ExtUtils::Constant objects - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item BUGS - -=item AUTHOR - -=back - -=head2 ExtUtils::Embed - Utilities for embedding Perl in C/C++ applications - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item @EXPORT - -=item FUNCTIONS - -xsinit(), Examples, ldopts(), Examples, perl_inc(), ccflags(), ccdlflags(), -ccopts(), xsi_header(), xsi_protos(@modules), xsi_body(@modules) - -=item EXAMPLES - -=item SEE ALSO - -=item AUTHOR - -=back - -=head2 ExtUtils::Install - install files from here to there - -=over 4 - -=item SYNOPSIS - -=back - -=over 4 - -=item DESCRIPTION - -_chmod($$;$), _warnonce(@), _choke(@) - -=back - -_move_file_at_boot( $file, $target, $moan ) - -_unlink_or_rename( $file, $tryhard, $installing ) - -=over 4 - -=item Functions - -_get_install_skip - -=back - -_have_write_access - -_can_write_dir(C<$dir>) - -_mkpath($dir,$show,$mode,$verbose,$dry_run) - -_copy($from,$to,$verbose,$dry_run) - -_chdir($from) - -B<install> - -_do_cleanup - -install_rooted_file( $file ), install_rooted_dir( $dir ) - -forceunlink( $file, $tryhard ) - -directory_not_empty( $dir ) - -B<install_default> I<DISCOURAGED> - -B<uninstall> - -inc_uninstall($filepath,$libdir,$verbose,$dry_run,$ignore,$results) - -run_filter($cmd,$src,$dest) - -B<pm_to_blib> - -_autosplit - -_invokant - -=over 4 - -=item ENVIRONMENT - -B<PERL_INSTALL_ROOT>, B<EU_INSTALL_IGNORE_SKIP>, -B<EU_INSTALL_SITE_SKIPFILE>, B<EU_INSTALL_ALWAYS_COPY> - -=item AUTHOR - -=item LICENSE - -=back - -=head2 ExtUtils::Installed - Inventory management of installed modules - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item USAGE - -=item FUNCTIONS - -new(), modules(), files(), directories(), directory_tree(), validate(), -packlist(), version() - -=item EXAMPLE - -=item AUTHOR - -=back - -=head2 ExtUtils::Liblist - determine libraries to use and how to use them - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -For static extensions, For dynamic extensions at build/link time, For -dynamic extensions at load time - -=over 4 - -=item EXTRALIBS - -=item LDLOADLIBS and LD_RUN_PATH - -=item BSLOADLIBS - -=back - -=item PORTABILITY - -=over 4 - -=item VMS implementation - -=item Win32 implementation - -=back - -=item SEE ALSO - -=back - -=head2 ExtUtils::MM - OS adjusted ExtUtils::MakeMaker subclass - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=head2 ExtUtils::MM_AIX - AIX specific subclass of ExtUtils::MM_Unix - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Overridden methods - -=back - -=back - -=over 4 - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 ExtUtils::MM_Any - Platform-agnostic MM methods - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Cross-platform helper methods - -=back - -=back - -=over 4 - -=item Targets - -=back - -=over 4 - -=item Init methods - -=back - -=over 4 - -=item Tools - -=back - -=over 4 - -=item File::Spec wrappers - -=back - -=over 4 - -=item Misc - -=back - -=over 4 - -=item AUTHOR - -=back - -=head2 ExtUtils::MM_BeOS - methods to override UN*X behaviour in -ExtUtils::MakeMaker - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -os_flavor - -init_linker - -=head2 ExtUtils::MM_Cygwin - methods to override UN*X behaviour in -ExtUtils::MakeMaker - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -os_flavor - -=back - -cflags - -replace_manpage_separator - -init_linker - -=head2 ExtUtils::MM_DOS - DOS specific subclass of ExtUtils::MM_Unix - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Overridden methods - -os_flavor - -=back - -=back - -B<replace_manpage_separator> - -=over 4 - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 ExtUtils::MM_Darwin - special behaviors for OS X - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Overriden Methods - -=back - -=back - -=head2 ExtUtils::MM_Haiku - methods to override UN*X behaviour in -ExtUtils::MakeMaker - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -os_flavor - -init_linker - -=head2 ExtUtils::MM_MacOS - once produced Makefiles for MacOS Classic - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=head2 ExtUtils::MM_NW5 - methods to override UN*X behaviour in -ExtUtils::MakeMaker - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -os_flavor - -init_platform, platform_constants - -const_cccmd - -static_lib - -dynamic_lib - -=head2 ExtUtils::MM_OS2 - methods to override UN*X behaviour in -ExtUtils::MakeMaker - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -init_dist - -=back - -init_linker - -os_flavor - -=head2 ExtUtils::MM_QNX - QNX specific subclass of ExtUtils::MM_Unix - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Overridden methods - -=back - -=back - -=over 4 - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 ExtUtils::MM_UWIN - U/WIN specific subclass of ExtUtils::MM_Unix - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Overridden methods - -os_flavor - -=back - -=back - -B<replace_manpage_separator> - -=over 4 - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 ExtUtils::MM_Unix - methods used by ExtUtils::MakeMaker - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=back - -=over 4 - -=item Methods - -os_flavor - -=back - -c_o (o) - -cflags (o) - -const_cccmd (o) - -const_config (o) - -const_loadlibs (o) - -constants (o) - -depend (o) - -init_DEST - -init_dist - -dist (o) - -dist_basics (o) - -dist_ci (o) - -dist_core (o) - -B<dist_target> - -B<tardist_target> - -B<zipdist_target> - -B<tarfile_target> - -zipfile_target - -uutardist_target - -shdist_target - -dlsyms (o) - -dynamic_bs (o) - -dynamic_lib (o) - -exescan - -extliblist - -find_perl - -fixin - -force (o) - -guess_name - -has_link_code - -init_dirscan - -init_MANPODS - -init_MAN1PODS - -init_MAN3PODS - -init_PM - -init_DIRFILESEP - -init_main - -init_others - -init_linker - -init_lib2arch - -init_PERL - -init_platform, platform_constants - -init_PERM - -init_xs - -install (o) - -installbin (o) - -linkext (o) - -lsdir - -macro (o) - -makeaperl (o) - -makefile (o) - -maybe_command - -needs_linking (o) - -parse_abstract - -parse_version - -pasthru (o) - -perl_script - -perldepend (o) - -perm_rw (o) - -perm_rwx (o) - -pm_to_blib - -post_constants (o) - -post_initialize (o) - -postamble (o) - -ppd - -prefixify - -processPL (o) - -quote_paren - -replace_manpage_separator - -cd - -oneliner - -quote_literal - -escape_newlines - -max_exec_len - -static (o) - -static_lib (o) - -staticmake (o) - -subdir_x (o) - -subdirs (o) - -test (o) - -test_via_harness (override) - -test_via_script (override) - -tools_other (o) - -tool_xsubpp (o) - -all_target - -top_targets (o) - -writedoc - -xs_c (o) - -xs_cpp (o) - -xs_o (o) - -=over 4 - -=item SEE ALSO - -=back - -=head2 ExtUtils::MM_VMS - methods to override UN*X behaviour in -ExtUtils::MakeMaker - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Methods always loaded - -wraplist - -=back - -=back - -=over 4 - -=item Methods - -guess_name (override) - -=back - -find_perl (override) - -maybe_command (override) - -pasthru (override) - -pm_to_blib (override) - -perl_script (override) - -replace_manpage_separator - -init_DEST - -init_DIRFILESEP - -init_main (override) - -init_others (override) - -init_platform (override) - -platform_constants - -init_VERSION (override) - -constants (override) - -special_targets - -cflags (override) - -const_cccmd (override) - -tools_other (override) - -init_dist (override) - -c_o (override) - -xs_c (override) - -xs_o (override) - -dlsyms (override) - -dynamic_lib (override) - -static_lib (override) - -extra_clean_files - -zipfile_target, tarfile_target, shdist_target - -install (override) - -perldepend (override) - -makeaperl (override) - -maketext_filter (override) - -prefixify (override) - -cd - -oneliner - -B<echo> - -quote_literal - -escape_newlines - -max_exec_len - -init_linker - -eliminate_macros - -fixpath - -os_flavor - -=over 4 - -=item AUTHOR - -=back - -=head2 ExtUtils::MM_VOS - VOS specific subclass of ExtUtils::MM_Unix - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Overridden methods - -=back - -=back - -=over 4 - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 ExtUtils::MM_Win32 - methods to override UN*X behaviour in -ExtUtils::MakeMaker - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=over 4 - -=item Overridden methods - -B<dlsyms> - -=back - -replace_manpage_separator - -B<maybe_command> - -B<init_DIRFILESEP> - -B<init_others> - -init_platform, platform_constants - -special_targets - -static_lib - -dynamic_lib - -extra_clean_files - -init_linker - -perl_script - -xs_o - -pasthru - -oneliner - -cd - -max_exec_len - -os_flavor - -cflags - -=head2 ExtUtils::MM_Win95 - method to customize MakeMaker for Win9X - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Overridden methods - -xs_c - -=back - -=back - -xs_cpp - -xs_o - -max_exec_len - -os_flavor - -=over 4 - -=item AUTHOR - -=back - -=head2 ExtUtils::MY - ExtUtils::MakeMaker subclass for customization - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=head2 ExtUtils::MakeMaker - Create a module Makefile - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item How To Write A Makefile.PL - -=item Default Makefile Behaviour - -=item make test - -=item make testdb - -=item make install - -=item INSTALL_BASE - -=item PREFIX and LIB attribute - -=item AFS users - -=item Static Linking of a new Perl Binary - -=item Determination of Perl Library and Installation Locations - -=item Which architecture dependent directory? - -=item Using Attributes and Parameters - -ABSTRACT, ABSTRACT_FROM, AUTHOR, BINARY_LOCATION, C, CCFLAGS, CONFIG, -CONFIGURE, DEFINE, DESTDIR, DIR, DISTNAME, DISTVNAME, DL_FUNCS, DL_VARS, -EXCLUDE_EXT, EXE_FILES, FIRST_MAKEFILE, FULLPERL, FULLPERLRUN, -FULLPERLRUNINST, FUNCLIST, H, IMPORTS, INC, INCLUDE_EXT, INSTALLARCHLIB, -INSTALLBIN, INSTALLDIRS, INSTALLMAN1DIR, INSTALLMAN3DIR, INSTALLPRIVLIB, -INSTALLSCRIPT, INSTALLSITEARCH, INSTALLSITEBIN, INSTALLSITELIB, -INSTALLSITEMAN1DIR, INSTALLSITEMAN3DIR, INSTALLSITESCRIPT, -INSTALLVENDORARCH, INSTALLVENDORBIN, INSTALLVENDORLIB, -INSTALLVENDORMAN1DIR, INSTALLVENDORMAN3DIR, INSTALLVENDORSCRIPT, -INST_ARCHLIB, INST_BIN, INST_LIB, INST_MAN1DIR, INST_MAN3DIR, INST_SCRIPT, -LD, LDDLFLAGS, LDFROM, LIB, LIBPERL_A, LIBS, LICENSE, LINKTYPE, MAKE, -MAKEAPERL, MAKEFILE_OLD, MAN1PODS, MAN3PODS, MAP_TARGET, META_ADD, -META_MERGE, MIN_PERL_VERSION, MYEXTLIB, NAME, NEEDS_LINKING, NOECHO, -NORECURS, NO_META, NO_VC, OBJECT, OPTIMIZE, PERL, PERL_CORE, PERLMAINCC, -PERL_ARCHLIB, PERL_LIB, PERL_MALLOC_OK, PERLPREFIX, PERLRUN, PERLRUNINST, -PERL_SRC, PERM_RW, PERM_RWX, PL_FILES, PM, PMLIBDIRS, PM_FILTER, POLLUTE, -PPM_INSTALL_EXEC, PPM_INSTALL_SCRIPT, PREFIX, PREREQ_FATAL, PREREQ_PM, -PREREQ_PRINT, PRINT_PREREQ, SITEPREFIX, SIGN, SKIP, TYPEMAPS, VENDORPREFIX, -VERBINST, VERSION, VERSION_FROM, VERSION_SYM, XS, XSOPT, XSPROTOARG, -XS_VERSION - -=item Additional lowercase attributes - -clean, depend, dist, dynamic_lib, linkext, macro, postamble, realclean, -test, tool_autosplit - -=item Overriding MakeMaker Methods - -=item The End Of Cargo Cult Programming - -C<< MAN3PODS => ' ' >> - -=item Hintsfile support - -=item Distribution Support - - make distcheck, make skipcheck, make distclean, make manifest, - make distdir, make disttest, make tardist, make dist, make -uutardist, make shdist, make zipdist, make ci - -=item Module Meta-Data - -=item Disabling an extension - -=item Other Handy Functions - -prompt - -=back - -=item ENVIRONMENT - -PERL_MM_OPT, PERL_MM_USE_DEFAULT, PERL_CORE - -=item SEE ALSO - -=item AUTHORS - -=item LICENSE - -=back - -=head2 ExtUtils::MakeMaker::Config - Wrapper around Config.pm - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=head2 ExtUtils::MakeMaker::FAQ - Frequently Asked Questions About -MakeMaker - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Module Installation - -How do I install a module into my home directory?, How do I get MakeMaker -and Module::Build to install to the same place?, How do I keep from -installing man pages?, How do I use a module without installing it?, PREFIX -vs INSTALL_BASE from Module::Build::Cookbook - -=item Philosophy and History - -Why not just use <insert other build config tool here>?, What is -Module::Build and how does it relate to MakeMaker?, pure perl. no make, no -shell commands, easier to customize, cleaner internals, less cruft - -=item Module Writing - -How do I keep my $VERSION up to date without resetting it manually?, What's -this F<META.yml> thing and how did it get in my F<MANIFEST>?!, How do I -delete everything not in my F<MANIFEST>? - -=item XS - -How to I prevent "object version X.XX does not match bootstrap parameter -Y.YY" errors?, How do I make two or more XS files coexist in the same -directory? - -=back - -=item PATCHING - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 ExtUtils::MakeMaker::Tutorial - Writing a module with MakeMaker - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item The Mantra - -=item The Layout - -Makefile.PL, MANIFEST, lib/, t/, Changes, README, INSTALL, MANIFEST.SKIP, -bin/ - -=back - -=item SEE ALSO - -=back - -=head2 ExtUtils::MakeMaker::bytes - Version-agnostic bytes.pm - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=head2 ExtUtils::MakeMaker::vmsish - Platform-agnostic vmsish.pm - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=head2 ExtUtils::Manifest - utilities to write and check a MANIFEST file - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Functions - -mkmanifest - -=back - -=back - -manifind - -manicheck - -filecheck - -fullcheck - -skipcheck - -maniread - -maniskip - -manicopy - -maniadd - -=over 4 - -=item MANIFEST - -=item MANIFEST.SKIP - -#!include_default, #!include /Path/to/another/manifest.skip - -=item EXPORT_OK - -=item GLOBAL VARIABLES - -=back - -=over 4 - -=item DIAGNOSTICS - -C<Not in MANIFEST:> I<file>, C<Skipping> I<file>, C<No such file:> I<file>, -C<MANIFEST:> I<$!>, C<Added to MANIFEST:> I<file> - -=item ENVIRONMENT - -B<PERL_MM_MANIFEST_DEBUG> - -=item SEE ALSO - -=item AUTHOR - -=back - -=head2 ExtUtils::Miniperl, writemain - write the C code for perlmain.c - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=back - -=head2 ExtUtils::Mkbootstrap - make a bootstrap file for use by DynaLoader - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=head2 ExtUtils::Mksymlists - write linker options files for dynamic -extension - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -DLBASE, DL_FUNCS, DL_VARS, FILE, FUNCLIST, IMPORTS, NAME - -=item AUTHOR - -=item REVISION - -mkfh() - -=back - -__find_relocations - -=head2 ExtUtils::Packlist - manage .packlist files - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item USAGE - -=item FUNCTIONS - -new(), read(), write(), validate(), packlist_file() - -=item EXAMPLE - -=item AUTHOR - -=back - -=head2 ExtUtils::ParseXS - converts Perl XS code into C code - -=over 4 - -=item SYNOPSIS - -=item EXPORT - -=item FUNCTIONS - -process_xs(), B<C++>, B<hiertype>, B<except>, B<typemap>, B<prototypes>, -B<versioncheck>, B<linenumbers>, B<optimize>, B<inout>, B<argtypes>, B<s>, -errors() - -=item AUTHOR - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 ExtUtils::testlib - add blib/* directories to @INC - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=head2 Fatal - Replace functions with equivalents which succeed or die - -=over 4 - -=item SYNOPSIS - -=item BEST PRACTICE - -=item DESCRIPTION - -=item DIAGNOSTICS - -Bad subroutine name for Fatal: %s, %s is not a Perl subroutine, %s is -neither a builtin, nor a Perl subroutine, Cannot make the non-overridable -%s fatal, Internal error: %s - -=item BUGS - -=item AUTHOR - -=item LICENSE - -=item SEE ALSO - -=back - -=head2 Fcntl - load the C Fcntl.h defines - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item NOTE - -=item EXPORTED SYMBOLS - -=back - -=head2 File::Basename - Parse file paths into directory, filename and -suffix. - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -C<fileparse> X<fileparse> - -C<basename> X<basename> X<filename> - -C<dirname> X<dirname> - -C<fileparse_set_fstype> X<filesystem> - -=over 4 - -=item SEE ALSO - -=back - -=head2 File::CheckTree - run many filetest checks on a tree - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item AUTHOR - -=item HISTORY - -=back - -=head2 File::Compare - Compare files or filehandles - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item RETURN - -=item AUTHOR - -=back - -=head2 File::Copy - Copy files or filehandles - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -copy X<copy> X<cp>, move X<move> X<mv> X<rename>, syscopy X<syscopy>, -rmscopy($from,$to[,$date_flag]) X<rmscopy> - -=item RETURN - -=item NOTES - -=item AUTHOR - -=back - -=head2 File::DosGlob - DOS like globbing and then some - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item NOTES - -=item EXPORTS (by request only) - -=item BUGS - -=item AUTHOR - -=item HISTORY - -=item SEE ALSO - -=back - -=head2 File::Fetch - A generic file fetching mechanism - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item ACCESSORS - -$ff->uri, $ff->scheme, $ff->host, $ff->vol, $ff->share, $ff->path, -$ff->file - -=back - -$ff->output_file - -=over 4 - -=item METHODS - -=over 4 - -=item $ff = File::Fetch->new( uri => 'http://some.where.com/dir/file.txt' -); - -=back - -=back - -=over 4 - -=item $ff->fetch( [to => /my/output/dir/] ) - -=back - -=over 4 - -=item $ff->error([BOOL]) - -=back - -=over 4 - -=item HOW IT WORKS - -=item GLOBAL VARIABLES - -=over 4 - -=item $File::Fetch::FROM_EMAIL - -=item $File::Fetch::USER_AGENT - -=item $File::Fetch::FTP_PASSIVE - -=item $File::Fetch::TIMEOUT - -=item $File::Fetch::WARN - -=item $File::Fetch::DEBUG - -=item $File::Fetch::BLACKLIST - -=item $File::Fetch::METHOD_FAIL - -=back - -=item MAPPING - -=item FREQUENTLY ASKED QUESTIONS - -=over 4 - -=item So how do I use a proxy with File::Fetch? - -=item I used 'lynx' to fetch a file, but its contents is all wrong! - -=item Files I'm trying to fetch have reserved characters or non-ASCII -characters in them. What do I do? - -=back - -=item TODO - -Implement $PREFER_BIN - -=item BUG REPORTS - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 File::Find - Traverse a directory tree. - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -B<find>, B<finddepth> - -=over 4 - -=item %options - -C<wanted>, C<bydepth>, C<preprocess>, C<postprocess>, C<follow>, -C<follow_fast>, C<follow_skip>, C<dangling_symlinks>, C<no_chdir>, -C<untaint>, C<untaint_pattern>, C<untaint_skip> - -=item The wanted function - -C<$File::Find::dir> is the current directory name,, C<$_> is the current -filename within that directory, C<$File::Find::name> is the complete -pathname to the file - -=back - -=item WARNINGS - -=item CAVEAT - -$dont_use_nlink, symlinks - -=item NOTES - -=item BUGS AND CAVEATS - -=item HISTORY - -=back - -=head2 File::Glob - Perl extension for BSD glob routine - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item META CHARACTERS - -=item POSIX FLAGS - -C<GLOB_ERR>, C<GLOB_LIMIT>, C<GLOB_MARK>, C<GLOB_NOCASE>, C<GLOB_NOCHECK>, -C<GLOB_NOSORT>, C<GLOB_BRACE>, C<GLOB_NOMAGIC>, C<GLOB_QUOTE>, -C<GLOB_TILDE>, C<GLOB_CSH>, C<GLOB_ALPHASORT> - -=back - -=item DIAGNOSTICS - -C<GLOB_NOSPACE>, C<GLOB_ABEND> - -=item NOTES - -=item SEE ALSO - -=item AUTHOR - -=back - -=head2 File::GlobMapper - Extend File Glob to Allow Input and Output Files - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Behind The Scenes - -=item Limitations - -=item Input File Glob - -B<~>, B<~user>, B<.>, B<*>, B<?>, B<\>, B<[]>, B<{,}>, B<()> - -=item Output File Glob - -"*", #1 - -=item Returned Data - -=back - -=item EXAMPLES - -=over 4 - -=item A Rename script - -=item A few example globmaps - -=back - -=item SEE ALSO - -=item AUTHOR - -=item COPYRIGHT AND LICENSE - -=back - -=head2 File::Path - Create or remove directory trees - -=over 4 - -=item VERSION - -=item SYNOPSIS - -=item DESCRIPTION - -make_path( $dir1, $dir2, .... ), make_path( $dir1, $dir2, ...., \%opts ), -mode => $num, verbose => $bool, error => \$err, mkpath( $dir ), mkpath( -$dir, $verbose, $mode ), mkpath( [$dir1, $dir2,...], $verbose, $mode ), -mkpath( $dir1, $dir2,..., \%opt ), remove_tree( $dir1, $dir2, .... ), -remove_tree( $dir1, $dir2, ...., \%opts ), verbose => $bool, safe => $bool, -keep_root => $bool, result => \$res, error => \$err, rmtree( $dir ), -rmtree( $dir, $verbose, $safe ), rmtree( [$dir1, $dir2,...], $verbose, -$safe ), rmtree( $dir1, $dir2,..., \%opt ) - -=over 4 - -=item ERROR HANDLING - -B<NOTE:> - -=item NOTES - -=back - -=item DIAGNOSTICS - -mkdir [path]: [errmsg] (SEVERE), No root path(s) specified, No such file or -directory, cannot fetch initial working directory: [errmsg], cannot stat -initial working directory: [errmsg], cannot chdir to [dir]: [errmsg], -directory [dir] changed before chdir, expected dev=[n] ino=[n], actual -dev=[n] ino=[n], aborting. (FATAL), cannot make directory [dir] -read+writeable: [errmsg], cannot read [dir]: [errmsg], cannot reset chmod -[dir]: [errmsg], cannot remove [dir] when cwd is [dir], cannot chdir to -[parent-dir] from [child-dir]: [errmsg], aborting. (FATAL), cannot stat -prior working directory [dir]: [errmsg], aborting. (FATAL), previous -directory [parent-dir] changed before entering [child-dir], expected -dev=[n] ino=[n], actual dev=[n] ino=[n], aborting. (FATAL), cannot make -directory [dir] writeable: [errmsg], cannot remove directory [dir]: -[errmsg], cannot restore permissions of [dir] to [0nnn]: [errmsg], cannot -make file [file] writeable: [errmsg], cannot unlink file [file]: [errmsg], -cannot restore permissions of [file] to [0nnn]: [errmsg] - -=item SEE ALSO - -=item BUGS - -=item ACKNOWLEDGEMENTS - -=item AUTHORS - -=item COPYRIGHT - -=item LICENSE - -=back - -=head2 File::Spec - portably perform operations on file names - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -canonpath X<canonpath>, catdir X<catdir>, catfile X<catfile>, curdir -X<curdir>, devnull X<devnull>, rootdir X<rootdir>, tmpdir X<tmpdir>, updir -X<updir>, no_upwards, case_tolerant, file_name_is_absolute, path X<path>, -join X<join, path>, splitpath X<splitpath> X<split, path>, splitdir -X<splitdir> X<split, dir>, catpath(), abs2rel X<abs2rel> X<absolute, path> -X<relative, path>, rel2abs() X<rel2abs> X<absolute, path> X<relative, path> - -=item SEE ALSO - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 File::Spec::Cygwin - methods for Cygwin file specs - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -canonpath - -file_name_is_absolute - -tmpdir (override) - -case_tolerant - -=over 4 - -=item COPYRIGHT - -=back - -=head2 File::Spec::Epoc - methods for Epoc file specs - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -canonpath() - -=over 4 - -=item AUTHOR - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 File::Spec::Functions - portably perform operations on file names - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Exports - -=back - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 File::Spec::Mac - File::Spec for Mac OS (Classic) - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -canonpath - -=back - -catdir() - -catfile - -curdir - -devnull - -rootdir - -tmpdir - -updir - -file_name_is_absolute - -path - -splitpath - -splitdir - -catpath - -abs2rel - -rel2abs - -=over 4 - -=item AUTHORS - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 File::Spec::OS2 - methods for OS/2 file specs - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -tmpdir, splitpath - -=item COPYRIGHT - -=back - -=head2 File::Spec::Unix - File::Spec for Unix, base for other File::Spec -modules - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -canonpath() - -=back - -catdir() - -catfile - -curdir - -devnull - -rootdir - -tmpdir - -updir - -no_upwards - -case_tolerant - -file_name_is_absolute - -path - -join - -splitpath - -splitdir - -catpath() - -abs2rel - -rel2abs() - -=over 4 - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 File::Spec::VMS - methods for VMS file specs - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -canonpath (override) - -=back - -catdir (override) - -catfile (override) - -curdir (override) - -devnull (override) - -rootdir (override) - -tmpdir (override) - -updir (override) - -case_tolerant (override) - -path (override) - -file_name_is_absolute (override) - -splitpath (override) - -splitdir (override) - -catpath (override) - -abs2rel (override) - -rel2abs (override) - -=over 4 - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 File::Spec::Win32 - methods for Win32 file specs - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -devnull - -=back - -tmpdir - -case_tolerant - -file_name_is_absolute - -catfile - -canonpath - -splitpath - -splitdir - -catpath - -=over 4 - -=item Note For File::Spec::Win32 Maintainers - -=back - -=over 4 - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 File::Temp - return name and handle of a temporary file safely - -=over 4 - -=item PORTABILITY - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=over 4 - -=item OBJECT-ORIENTED INTERFACE - -B<new> - -=back - -B<newdir> - -B<filename> - -B<dirname>, B<unlink_on_destroy> - -B<DESTROY> - -=over 4 - -=item FUNCTIONS - -B<tempfile> - -=back - -B<tempdir> - -=over 4 - -=item MKTEMP FUNCTIONS - -B<mkstemp> - -=back - -B<mkstemps> - -B<mkdtemp> - -B<mktemp> - -=over 4 - -=item POSIX FUNCTIONS - -B<tmpnam> - -=back - -B<tmpfile> - -=over 4 - -=item ADDITIONAL FUNCTIONS - -B<tempnam> - -=back - -=over 4 - -=item UTILITY FUNCTIONS - -B<unlink0> - -=back - -B<cmpstat> - -B<unlink1> - -B<cleanup> - -=over 4 - -=item PACKAGE VARIABLES - -B<safe_level>, STANDARD, MEDIUM, HIGH - -=back - -TopSystemUID - -B<$KEEP_ALL>, B<$DEBUG> - -=over 4 - -=item WARNING - -=over 4 - -=item Temporary files and NFS - -=item Forking - -=item Directory removal - -=item BINMODE - -=back - -=item HISTORY - -=item SEE ALSO - -=item AUTHOR - -=back - -=head2 File::stat - by-name interface to Perl's built-in stat() functions - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item BUGS - -=item NOTE - -=item AUTHOR - -=back - -=head2 FileCache - keep more files open than the system permits - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -cacheout EXPR, cacheout MODE, EXPR - -=item CAVEATS - -=item BUGS - -=back - -=head2 FileHandle - supply object methods for filehandles - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -$fh->print, $fh->printf, $fh->getline, $fh->getlines - -=item SEE ALSO - -=back - -=head2 Filter::Simple - Simplified source filtering - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item The Problem - -=item A Solution - -=item Disabling or changing <no> behaviour - -=item All-in-one interface - -=item Filtering only specific components of source code - -C<"code">, C<"code_no_comments">, C<"executable">, -C<"executable_no_comments">, C<"quotelike">, C<"string">, C<"regex">, -C<"all"> - -=item Filtering only the code parts of source code - -Most source code ceases to be grammatically correct when it is broken up -into the pieces between string literals and regexes. So the C<'code'> -and C<'code_no_comments'> component filter behave slightly differently -from the other partial filters described in the previous section. - -=item Using Filter::Simple with an explicit C<import> subroutine - -=item Using Filter::Simple and Exporter together - -=item How it works - -=back - -=item AUTHOR - -=item CONTACT - -=item COPYRIGHT AND LICENSE - -=back - -=head2 Filter::Util::Call - Perl Source Filter Utility Module - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item B<use Filter::Util::Call> - -=item B<import()> - -=item B<filter() and anonymous sub> - -B<$_>, B<$status>, B<filter_read> and B<filter_read_exact>, B<filter_del> - -=back - -=item EXAMPLES - -=over 4 - -=item Example 1: A simple filter. - -=item Example 2: Using the context - -=item Example 3: Using the context within the filter - -=item Example 4: Using filter_del - -=back - -=item Filter::Simple - -=item AUTHOR - -=item DATE - -=back - -=head2 FindBin - Locate directory of original perl script - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item EXPORTABLE VARIABLES - -=item KNOWN ISSUES - -=item KNOWN BUGS - -=item AUTHORS - -=item COPYRIGHT - -=back - -=head2 GDBM_File - Perl5 access to the gdbm library. - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item AVAILABILITY - -=item BUGS - -=item SEE ALSO - -=back - -=head2 Getopt::Long - Extended processing of command line options - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Command Line Options, an Introduction - -=item Getting Started with Getopt::Long - -=over 4 - -=item Simple options - -=item A little bit less simple options - -=item Mixing command line option with other arguments - -=item Options with values - -=item Options with multiple values - -=item Options with hash values - -=item User-defined subroutines to handle options - -=item Options with multiple names - -=item Case and abbreviations - -=item Summary of Option Specifications - -!, +, s, i, o, f, : I<type> [ I<desttype> ], : I<number> [ I<desttype> ], : -+ [ I<desttype> ] - -=back - -=item Advanced Possibilities - -=over 4 - -=item Object oriented interface - -=item Thread Safety - -=item Documentation and help texts - -=item Parsing options from an arbitrary array - -=item Parsing options from an arbitrary string - -=item Storing options values in a hash - -=item Bundling - -=item The lonesome dash - -=item Argument callback - -=back - -=item Configuring Getopt::Long - -default, posix_default, auto_abbrev, getopt_compat, gnu_compat, gnu_getopt, -require_order, permute, bundling (default: disabled), bundling_override -(default: disabled), ignore_case (default: enabled), ignore_case_always -(default: disabled), auto_version (default:disabled), auto_help -(default:disabled), pass_through (default: disabled), prefix, -prefix_pattern, long_prefix_pattern, debug (default: disabled) - -=item Exportable Methods - -VersionMessage, C<-message>, C<-msg>, C<-exitval>, C<-output>, HelpMessage - -=item Return values and Errors - -=item Legacy - -=over 4 - -=item Default destinations - -=item Alternative option starters - -=item Configuration variables - -=back - -=item Tips and Techniques - -=over 4 - -=item Pushing multiple values in a hash option - -=back - -=item Trouble Shooting - -=over 4 - -=item GetOptions does not return a false result when an option is not -supplied - -=item GetOptions does not split the command line correctly - -=item Undefined subroutine &main::GetOptions called - -=item How do I put a "-?" option into a Getopt::Long? - -=back - -=item AUTHOR - -=item COPYRIGHT AND DISCLAIMER - -=back - -=head2 Getopt::Std, getopt, getopts - Process single-character switches -with switch clustering - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item C<--help> and C<--version> - -=back - -=head2 Hash::Util - A selection of general-utility hash subroutines - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Restricted hashes - -B<lock_keys>, B<unlock_keys> - -=back - -=back - -B<lock_keys_plus> - -B<lock_value>, B<unlock_value> - -B<lock_hash>, B<unlock_hash> - -B<lock_hash_recurse>, B<unlock_hash_recurse> - -B<hash_unlocked> - -B<legal_keys>, B<hidden_keys>, B<all_keys>, B<hash_seed> - -B<hv_store> - -=over 4 - -=item Operating on references to hashes. - -lock_ref_keys, unlock_ref_keys, lock_ref_keys_plus, lock_ref_value, -unlock_ref_value, lock_hashref, unlock_hashref, lock_hashref_recurse, -unlock_hashref_recurse, hash_ref_unlocked, legal_ref_keys, hidden_ref_keys - -=back - -=over 4 - -=item CAVEATS - -=item BUGS - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 Hash::Util::FieldHash - Support for Inside-Out Classes - -=over 4 - -=item SYNOPSIS - -=item FUNCTIONS - -id, id_2obj, register, idhash, idhashes, fieldhash, fieldhashes - -=item DESCRIPTION - -=over 4 - -=item The Inside-out Technique - -=item Problems of Inside-out - -=item Solutions - -=item More Problems - -=item The Generic Object - -=item How to use Field Hashes - -=item Garbage-Collected Hashes - -=back - -=item EXAMPLES - -C<init()>, C<first()>, C<last()>, C<name()>, C<Name_hash>, C<Name_id>, -C<Name_idhash>, C<Name_id_reg>, C<Name_idhash_reg>, C<Name_fieldhash> - -=over 4 - -=item Example 1 - -=item Example 2 - -=back - -=item GUTS - -=over 4 - -=item The C<PERL_MAGIC_uvar> interface for hashes - -=item Weakrefs call uvar magic - -=item How field hashes work - -=item Internal function Hash::Util::FieldHash::_fieldhash - -=back - -=item AUTHOR - -=item COPYRIGHT AND LICENSE - -=back - -=head2 Hash::Util::FieldHash::lib::Hash::Util::FieldHash, -Hash::Util::FieldHash - Support for Inside-Out Classes - -=over 4 - -=item SYNOPSIS - -=item FUNCTIONS - -id, id_2obj, register, idhash, idhashes, fieldhash, fieldhashes - -=item DESCRIPTION - -=over 4 - -=item The Inside-out Technique - -=item Problems of Inside-out - -=item Solutions - -=item More Problems - -=item The Generic Object - -=item How to use Field Hashes - -=item Garbage-Collected Hashes - -=back - -=item EXAMPLES - -C<init()>, C<first()>, C<last()>, C<name()>, C<Name_hash>, C<Name_id>, -C<Name_idhash>, C<Name_id_reg>, C<Name_idhash_reg>, C<Name_fieldhash> - -=over 4 - -=item Example 1 - -=item Example 2 - -=back - -=item GUTS - -=over 4 - -=item The C<PERL_MAGIC_uvar> interface for hashes - -=item Weakrefs call uvar magic - -=item How field hashes work - -=item Internal function Hash::Util::FieldHash::_fieldhash - -=back - -=item AUTHOR - -=item COPYRIGHT AND LICENSE - -=back - -=head2 Hash::Utilib::Hash::Util, Hash::Util - A selection of -general-utility hash subroutines - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Restricted hashes - -B<lock_keys>, B<unlock_keys> - -=back - -=back - -B<lock_keys_plus> - -B<lock_value>, B<unlock_value> - -B<lock_hash>, B<unlock_hash> - -B<lock_hash_recurse>, B<unlock_hash_recurse> - -B<hash_unlocked> - -B<legal_keys>, B<hidden_keys>, B<all_keys>, B<hash_seed> - -B<hv_store> - -=over 4 - -=item Operating on references to hashes. - -lock_ref_keys, unlock_ref_keys, lock_ref_keys_plus, lock_ref_value, -unlock_ref_value, lock_hashref, unlock_hashref, lock_hashref_recurse, -unlock_hashref_recurse, hash_ref_unlocked, legal_ref_keys, hidden_ref_keys - -=back - -=over 4 - -=item CAVEATS - -=item BUGS - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 I18N::Collate - compare 8-bit scalar data according to the current -locale - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=head2 I18N::LangTags - functions for dealing with RFC3066-style language -tags - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -the function is_language_tag($lang1) - -the function extract_language_tags($whatever) - -the function same_language_tag($lang1, $lang2) - -the function similarity_language_tag($lang1, $lang2) - -the function is_dialect_of($lang1, $lang2) - -the function super_languages($lang1) - -the function locale2language_tag($locale_identifier) - -the function encode_language_tag($lang1) - -the function alternate_language_tags($lang1) - -the function @langs = panic_languages(@accept_languages) - -the function implicate_supers( ...languages... ), the function -implicate_supers_strictly( ...languages... ) - -=over 4 - -=item ABOUT LOWERCASING - -=item ABOUT UNICODE PLAINTEXT LANGUAGE TAGS - -=item SEE ALSO - -=item COPYRIGHT - -=item AUTHOR - -=back - -=head2 I18N::LangTags::Detect - detect the user's language preferences - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item FUNCTIONS - -=item ENVIRONMENT - -=item SEE ALSO - -=item COPYRIGHT - -=item AUTHOR - -=back - -=head2 I18N::LangTags::List -- tags and names for human languages - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item ABOUT LANGUAGE TAGS - -=item LIST OF LANGUAGES - -{ab} : Abkhazian, {ace} : Achinese, {ach} : Acoli, {ada} : Adangme, {ady} : -Adyghe, {aa} : Afar, {afh} : Afrihili, {af} : Afrikaans, [{afa} : -Afro-Asiatic (Other)], {ak} : Akan, {akk} : Akkadian, {sq} : Albanian, -{ale} : Aleut, [{alg} : Algonquian languages], [{tut} : Altaic (Other)], -{am} : Amharic, {i-ami} : Ami, [{apa} : Apache languages], {ar} : Arabic, -{arc} : Aramaic, {arp} : Arapaho, {arn} : Araucanian, {arw} : Arawak, {hy} -: Armenian, {an} : Aragonese, [{art} : Artificial (Other)], {ast} : -Asturian, {as} : Assamese, [{ath} : Athapascan languages], [{aus} : -Australian languages], [{map} : Austronesian (Other)], {av} : Avaric, {ae} -: Avestan, {awa} : Awadhi, {ay} : Aymara, {az} : Azerbaijani, {ban} : -Balinese, [{bat} : Baltic (Other)], {bal} : Baluchi, {bm} : Bambara, [{bai} -: Bamileke languages], {bad} : Banda, [{bnt} : Bantu (Other)], {bas} : -Basa, {ba} : Bashkir, {eu} : Basque, {btk} : Batak (Indonesia), {bej} : -Beja, {be} : Belarusian, {bem} : Bemba, {bn} : Bengali, [{ber} : Berber -(Other)], {bho} : Bhojpuri, {bh} : Bihari, {bik} : Bikol, {bin} : Bini, -{bi} : Bislama, {bs} : Bosnian, {bra} : Braj, {br} : Breton, {bug} : -Buginese, {bg} : Bulgarian, {i-bnn} : Bunun, {bua} : Buriat, {my} : -Burmese, {cad} : Caddo, {car} : Carib, {ca} : Catalan, [{cau} : Caucasian -(Other)], {ceb} : Cebuano, [{cel} : Celtic (Other)], [{cai} : Central -American Indian (Other)], {chg} : Chagatai, [{cmc} : Chamic languages], -{ch} : Chamorro, {ce} : Chechen, {chr} : Cherokee, {chy} : Cheyenne, {chb} -: Chibcha, {ny} : Chichewa, {zh} : Chinese, {chn} : Chinook Jargon, {chp} : -Chipewyan, {cho} : Choctaw, {cu} : Church Slavic, {chk} : Chuukese, {cv} : -Chuvash, {cop} : Coptic, {kw} : Cornish, {co} : Corsican, {cr} : Cree, -{mus} : Creek, [{cpe} : English-based Creoles and pidgins (Other)], [{cpf} -: French-based Creoles and pidgins (Other)], [{cpp} : Portuguese-based -Creoles and pidgins (Other)], [{crp} : Creoles and pidgins (Other)], {hr} : -Croatian, [{cus} : Cushitic (Other)], {cs} : Czech, {dak} : Dakota, {da} : -Danish, {dar} : Dargwa, {day} : Dayak, {i-default} : Default (Fallthru) -Language, {del} : Delaware, {din} : Dinka, {dv} : Divehi, {doi} : Dogri, -{dgr} : Dogrib, [{dra} : Dravidian (Other)], {dua} : Duala, {nl} : Dutch, -{dum} : Middle Dutch (ca.1050-1350), {dyu} : Dyula, {dz} : Dzongkha, {efi} -: Efik, {egy} : Ancient Egyptian, {eka} : Ekajuk, {elx} : Elamite, {en} : -English, {enm} : Old English (1100-1500), {ang} : Old English -(ca.450-1100), {i-enochian} : Enochian (Artificial), {myv} : Erzya, {eo} : -Esperanto, {et} : Estonian, {ee} : Ewe, {ewo} : Ewondo, {fan} : Fang, {fat} -: Fanti, {fo} : Faroese, {fj} : Fijian, {fi} : Finnish, [{fiu} : -Finno-Ugrian (Other)], {fon} : Fon, {fr} : French, {frm} : Middle French -(ca.1400-1600), {fro} : Old French (842-ca.1400), {fy} : Frisian, {fur} : -Friulian, {ff} : Fulah, {gaa} : Ga, {gd} : Scots Gaelic, {gl} : Gallegan, -{lg} : Ganda, {gay} : Gayo, {gba} : Gbaya, {gez} : Geez, {ka} : Georgian, -{de} : German, {gmh} : Middle High German (ca.1050-1500), {goh} : Old High -German (ca.750-1050), [{gem} : Germanic (Other)], {gil} : Gilbertese, {gon} -: Gondi, {gor} : Gorontalo, {got} : Gothic, {grb} : Grebo, {grc} : Ancient -Greek, {el} : Modern Greek, {gn} : Guarani, {gu} : Gujarati, {gwi} : -Gwich'in, {hai} : Haida, {ht} : Haitian, {ha} : Hausa, {haw} : Hawaiian, -{he} : Hebrew, {hz} : Herero, {hil} : Hiligaynon, {him} : Himachali, {hi} : -Hindi, {ho} : Hiri Motu, {hit} : Hittite, {hmn} : Hmong, {hu} : Hungarian, -{hup} : Hupa, {iba} : Iban, {is} : Icelandic, {io} : Ido, {ig} : Igbo, -{ijo} : Ijo, {ilo} : Iloko, [{inc} : Indic (Other)], [{ine} : Indo-European -(Other)], {id} : Indonesian, {inh} : Ingush, {ia} : Interlingua -(International Auxiliary Language Association), {ie} : Interlingue, {iu} : -Inuktitut, {ik} : Inupiaq, [{ira} : Iranian (Other)], {ga} : Irish, {mga} : -Middle Irish (900-1200), {sga} : Old Irish (to 900), [{iro} : Iroquoian -languages], {it} : Italian, {ja} : Japanese, {jv} : Javanese, {jrb} : -Judeo-Arabic, {jpr} : Judeo-Persian, {kbd} : Kabardian, {kab} : Kabyle, -{kac} : Kachin, {kl} : Kalaallisut, {xal} : Kalmyk, {kam} : Kamba, {kn} : -Kannada, {kr} : Kanuri, {krc} : Karachay-Balkar, {kaa} : Kara-Kalpak, {kar} -: Karen, {ks} : Kashmiri, {csb} : Kashubian, {kaw} : Kawi, {kk} : Kazakh, -{kha} : Khasi, {km} : Khmer, [{khi} : Khoisan (Other)], {kho} : Khotanese, -{ki} : Kikuyu, {kmb} : Kimbundu, {rw} : Kinyarwanda, {ky} : Kirghiz, -{i-klingon} : Klingon, {kv} : Komi, {kg} : Kongo, {kok} : Konkani, {ko} : -Korean, {kos} : Kosraean, {kpe} : Kpelle, {kro} : Kru, {kj} : Kuanyama, -{kum} : Kumyk, {ku} : Kurdish, {kru} : Kurukh, {kut} : Kutenai, {lad} : -Ladino, {lah} : Lahnda, {lam} : Lamba, {lo} : Lao, {la} : Latin, {lv} : -Latvian, {lb} : Letzeburgesch, {lez} : Lezghian, {li} : Limburgish, {ln} : -Lingala, {lt} : Lithuanian, {nds} : Low German, {art-lojban} : Lojban -(Artificial), {loz} : Lozi, {lu} : Luba-Katanga, {lua} : Luba-Lulua, {lui} -: Luiseno, {lun} : Lunda, {luo} : Luo (Kenya and Tanzania), {lus} : Lushai, -{mk} : Macedonian, {mad} : Madurese, {mag} : Magahi, {mai} : Maithili, -{mak} : Makasar, {mg} : Malagasy, {ms} : Malay, {ml} : Malayalam, {mt} : -Maltese, {mnc} : Manchu, {mdr} : Mandar, {man} : Mandingo, {mni} : -Manipuri, [{mno} : Manobo languages], {gv} : Manx, {mi} : Maori, {mr} : -Marathi, {chm} : Mari, {mh} : Marshall, {mwr} : Marwari, {mas} : Masai, -[{myn} : Mayan languages], {men} : Mende, {mic} : Micmac, {min} : -Minangkabau, {i-mingo} : Mingo, [{mis} : Miscellaneous languages], {moh} : -Mohawk, {mdf} : Moksha, {mo} : Moldavian, [{mkh} : Mon-Khmer (Other)], -{lol} : Mongo, {mn} : Mongolian, {mos} : Mossi, [{mul} : Multiple -languages], [{mun} : Munda languages], {nah} : Nahuatl, {nap} : Neapolitan, -{na} : Nauru, {nv} : Navajo, {nd} : North Ndebele, {nr} : South Ndebele, -{ng} : Ndonga, {ne} : Nepali, {new} : Newari, {nia} : Nias, [{nic} : -Niger-Kordofanian (Other)], [{ssa} : Nilo-Saharan (Other)], {niu} : Niuean, -{nog} : Nogai, {non} : Old Norse, [{nai} : North American Indian], {no} : -Norwegian, {nb} : Norwegian Bokmal, {nn} : Norwegian Nynorsk, [{nub} : -Nubian languages], {nym} : Nyamwezi, {nyn} : Nyankole, {nyo} : Nyoro, {nzi} -: Nzima, {oc} : Occitan (post 1500), {oj} : Ojibwa, {or} : Oriya, {om} : -Oromo, {osa} : Osage, {os} : Ossetian; Ossetic, [{oto} : Otomian -languages], {pal} : Pahlavi, {i-pwn} : Paiwan, {pau} : Palauan, {pi} : -Pali, {pam} : Pampanga, {pag} : Pangasinan, {pa} : Panjabi, {pap} : -Papiamento, [{paa} : Papuan (Other)], {fa} : Persian, {peo} : Old Persian -(ca.600-400 B.C.), [{phi} : Philippine (Other)], {phn} : Phoenician, {pon} -: Pohnpeian, {pl} : Polish, {pt} : Portuguese, [{pra} : Prakrit languages], -{pro} : Old Provencal (to 1500), {ps} : Pushto, {qu} : Quechua, {rm} : -Raeto-Romance, {raj} : Rajasthani, {rap} : Rapanui, {rar} : Rarotongan, -[{qaa - qtz} : Reserved for local use.], [{roa} : Romance (Other)], {ro} : -Romanian, {rom} : Romany, {rn} : Rundi, {ru} : Russian, [{sal} : Salishan -languages], {sam} : Samaritan Aramaic, {se} : Northern Sami, {sma} : -Southern Sami, {smn} : Inari Sami, {smj} : Lule Sami, {sms} : Skolt Sami, -[{smi} : Sami languages (Other)], {sm} : Samoan, {sad} : Sandawe, {sg} : -Sango, {sa} : Sanskrit, {sat} : Santali, {sc} : Sardinian, {sas} : Sasak, -{sco} : Scots, {sel} : Selkup, [{sem} : Semitic (Other)], {sr} : Serbian, -{srr} : Serer, {shn} : Shan, {sn} : Shona, {sid} : Sidamo, {sgn-...} : Sign -Languages, {bla} : Siksika, {sd} : Sindhi, {si} : Sinhalese, [{sit} : -Sino-Tibetan (Other)], [{sio} : Siouan languages], {den} : Slave -(Athapascan), [{sla} : Slavic (Other)], {sk} : Slovak, {sl} : Slovenian, -{sog} : Sogdian, {so} : Somali, {son} : Songhai, {snk} : Soninke, {wen} : -Sorbian languages, {nso} : Northern Sotho, {st} : Southern Sotho, [{sai} : -South American Indian (Other)], {es} : Spanish, {suk} : Sukuma, {sux} : -Sumerian, {su} : Sundanese, {sus} : Susu, {sw} : Swahili, {ss} : Swati, -{sv} : Swedish, {syr} : Syriac, {tl} : Tagalog, {ty} : Tahitian, [{tai} : -Tai (Other)], {tg} : Tajik, {tmh} : Tamashek, {ta} : Tamil, {i-tao} : Tao, -{tt} : Tatar, {i-tay} : Tayal, {te} : Telugu, {ter} : Tereno, {tet} : -Tetum, {th} : Thai, {bo} : Tibetan, {tig} : Tigre, {ti} : Tigrinya, {tem} : -Timne, {tiv} : Tiv, {tli} : Tlingit, {tpi} : Tok Pisin, {tkl} : Tokelau, -{tog} : Tonga (Nyasa), {to} : Tonga (Tonga Islands), {tsi} : Tsimshian, -{ts} : Tsonga, {i-tsu} : Tsou, {tn} : Tswana, {tum} : Tumbuka, [{tup} : -Tupi languages], {tr} : Turkish, {ota} : Ottoman Turkish (1500-1928), {crh} -: Crimean Turkish, {tk} : Turkmen, {tvl} : Tuvalu, {tyv} : Tuvinian, {tw} : -Twi, {udm} : Udmurt, {uga} : Ugaritic, {ug} : Uighur, {uk} : Ukrainian, -{umb} : Umbundu, {und} : Undetermined, {ur} : Urdu, {uz} : Uzbek, {vai} : -Vai, {ve} : Venda, {vi} : Vietnamese, {vo} : Volapuk, {vot} : Votic, [{wak} -: Wakashan languages], {wa} : Walloon, {wal} : Walamo, {war} : Waray, {was} -: Washo, {cy} : Welsh, {wo} : Wolof, {x-...} : Unregistered (Semi-Private -Use), {xh} : Xhosa, {sah} : Yakut, {yao} : Yao, {yap} : Yapese, {ii} : -Sichuan Yi, {yi} : Yiddish, {yo} : Yoruba, [{ypk} : Yupik languages], {znd} -: Zande, [{zap} : Zapotec], {zen} : Zenaga, {za} : Zhuang, {zu} : Zulu, -{zun} : Zuni - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMER - -=item AUTHOR - -=back - -=head2 I18N::Langinfo - query locale information - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item EXPORT - -=back - -=item SEE ALSO - -=item AUTHOR - -=item COPYRIGHT AND LICENSE - -=back - -=head2 IO - load various IO modules - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item DEPRECATED - -=back - -=head2 IO::Compress::Base - Base Class for IO::Compress modules - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 IO::Compress::Deflate - Write RFC 1950 files/buffers - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Functional Interface - -=over 4 - -=item deflate $input => $output [, OPTS] - -A filename, A filehandle, A scalar reference, An array reference, An Input -FileGlob string, A filename, A filehandle, A scalar reference, An Array -Reference, An Output FileGlob - -=item Notes - -=item Optional Parameters - -C<< AutoClose => 0|1 >>, C<< BinModeIn => 0|1 >>, C<< Append => 0|1 >> - -=item Examples - -=back - -=item OO Interface - -=over 4 - -=item Constructor - -A filename, A filehandle, A scalar reference - -=item Constructor Options - -C<< AutoClose => 0|1 >>, C<< Append => 0|1 >>, A Buffer, A Filename, A -Filehandle, C<< Merge => 0|1 >>, -Level, -Strategy, C<< Strict => 0|1 >> - -=item Examples - -=back - -=item Methods - -=over 4 - -=item print - -=item printf - -=item syswrite - -=item write - -=item flush - -=item tell - -=item eof - -=item seek - -=item binmode - -=item opened - -=item autoflush - -=item input_line_number - -=item fileno - -=item close - -=item newStream([OPTS]) - -=item deflateParams - -=back - -=item Importing - -:all, :constants, :flush, :level, :strategy - -=item EXAMPLES - -=over 4 - -=item Apache::GZip Revisited - -=item Working with Net::FTP - -=back - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 IO::Compress::Gzip - Write RFC 1952 files/buffers - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Functional Interface - -=over 4 - -=item gzip $input => $output [, OPTS] - -A filename, A filehandle, A scalar reference, An array reference, An Input -FileGlob string, A filename, A filehandle, A scalar reference, An Array -Reference, An Output FileGlob - -=item Notes - -=item Optional Parameters - -C<< AutoClose => 0|1 >>, C<< BinModeIn => 0|1 >>, C<< Append => 0|1 >> - -=item Examples - -=back - -=item OO Interface - -=over 4 - -=item Constructor - -A filename, A filehandle, A scalar reference - -=item Constructor Options - -C<< AutoClose => 0|1 >>, C<< Append => 0|1 >>, A Buffer, A Filename, A -Filehandle, C<< Merge => 0|1 >>, -Level, -Strategy, C<< Minimal => 0|1 >>, -C<< Comment => $comment >>, C<< Name => $string >>, C<< Time => $number >>, -C<< TextFlag => 0|1 >>, C<< HeaderCRC => 0|1 >>, C<< OS_Code => $value >>, -C<< ExtraField => $data >>, C<< ExtraFlags => $value >>, C<< Strict => 0|1 ->> - -=item Examples - -=back - -=item Methods - -=over 4 - -=item print - -=item printf - -=item syswrite - -=item write - -=item flush - -=item tell - -=item eof - -=item seek - -=item binmode - -=item opened - -=item autoflush - -=item input_line_number - -=item fileno - -=item close - -=item newStream([OPTS]) - -=item deflateParams - -=back - -=item Importing - -:all, :constants, :flush, :level, :strategy - -=item EXAMPLES - -=over 4 - -=item Apache::GZip Revisited - -=item Working with Net::FTP - -=back - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 IO::Compress::RawDeflate - Write RFC 1951 files/buffers - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Functional Interface - -=over 4 - -=item rawdeflate $input => $output [, OPTS] - -A filename, A filehandle, A scalar reference, An array reference, An Input -FileGlob string, A filename, A filehandle, A scalar reference, An Array -Reference, An Output FileGlob - -=item Notes - -=item Optional Parameters - -C<< AutoClose => 0|1 >>, C<< BinModeIn => 0|1 >>, C<< Append => 0|1 >> - -=item Examples - -=back - -=item OO Interface - -=over 4 - -=item Constructor - -A filename, A filehandle, A scalar reference - -=item Constructor Options - -C<< AutoClose => 0|1 >>, C<< Append => 0|1 >>, A Buffer, A Filename, A -Filehandle, C<< Merge => 0|1 >>, -Level, -Strategy, C<< Strict => 0|1 >> - -=item Examples - -=back - -=item Methods - -=over 4 - -=item print - -=item printf - -=item syswrite - -=item write - -=item flush - -=item tell - -=item eof - -=item seek - -=item binmode - -=item opened - -=item autoflush - -=item input_line_number - -=item fileno - -=item close - -=item newStream([OPTS]) - -=item deflateParams - -=back - -=item Importing - -:all, :constants, :flush, :level, :strategy - -=item EXAMPLES - -=over 4 - -=item Apache::GZip Revisited - -=item Working with Net::FTP - -=back - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 IO::Compress::Zip - Write zip files/buffers - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Functional Interface - -=over 4 - -=item zip $input => $output [, OPTS] - -A filename, A filehandle, A scalar reference, An array reference, An Input -FileGlob string, A filename, A filehandle, A scalar reference, An Array -Reference, An Output FileGlob - -=item Notes - -=item Optional Parameters - -C<< AutoClose => 0|1 >>, C<< BinModeIn => 0|1 >>, C<< Append => 0|1 >> - -=item Examples - -=back - -=item OO Interface - -=over 4 - -=item Constructor - -A filename, A filehandle, A scalar reference - -=item Constructor Options - -C<< AutoClose => 0|1 >>, C<< Append => 0|1 >>, A Buffer, A Filename, A -Filehandle, C<< Name => $string >>, C<< Time => $number >>, C<< ExtAttr => -$attr >>, C<< exTime => [$atime, $mtime, $ctime] >>, C<< exUnix2 => [$uid, -$gid] >>, C<< Comment => $comment >>, C<< ZipComment => $comment >>, C<< -Method => $method >>, C<< Stream => 0|1 >>, C<< Zip64 => 0|1 >>, C<< -TextFlag => 0|1 >>, C<< ExtraFieldLocal => $data >> =item C<< -ExtraFieldCentral => $data >>, C<< Minimal => 1|0 >>, C<< BlockSize100K => -number >>, C<< WorkFactor => number >>, -Level, -Strategy, C<< Strict => -0|1 >> - -=item Examples - -=back - -=item Methods - -=over 4 - -=item print - -=item printf - -=item syswrite - -=item write - -=item flush - -=item tell - -=item eof - -=item seek - -=item binmode - -=item opened - -=item autoflush - -=item input_line_number - -=item fileno - -=item close - -=item newStream([OPTS]) - -=item deflateParams - -=back - -=item Importing - -:all, :constants, :flush, :level, :strategy, :zip_method - -=item EXAMPLES - -=over 4 - -=item Apache::GZip Revisited - -=item Working with Net::FTP - -=back - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 IO::Dir - supply object methods for directory handles - -=over 4 - -=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 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item CONSTRUCTOR - -new ( FILENAME [,MODE [,PERMS]] ), new_tmpfile - -=item METHODS - -open( FILENAME [,MODE [,PERMS]] ), open( FILENAME, IOLAYERS ), binmode( -[LAYER] ) - -=item NOTE - -=item SEE ALSO - -=item HISTORY - -=back - -=head2 IO::Handle - supply object methods for I/O handles - -=over 4 - -=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 4 - -=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 4 - -=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 4 - -=item SYNOPSIS - -=item DESCRIPTION - -$io->getpos, $io->setpos, $io->seek ( POS, WHENCE ), WHENCE=0 (SEEK_SET), -WHENCE=1 (SEEK_CUR), WHENCE=2 (SEEK_END), $io->sysseek( POS, WHENCE ), -$io->tell - -=item SEE ALSO - -=item HISTORY - -=back - -=head2 IO::Select - OO interface to the select system call - -=over 4 - -=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, EXCEPTION [, TIMEOUT ] ) - -=item EXAMPLE - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 IO::Socket - Object interface to socket communications - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item CONSTRUCTOR - -new ( [ARGS] ) - -=item METHODS - -accept([PKG]), socketpair(DOMAIN, TYPE, PROTOCOL), atmark, connected, -protocol, sockdomain, sockopt(OPT [, VAL]), socktype, timeout([VAL]) - -=item SEE ALSO - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 IO::Socket::INET - Object interface for AF_INET domain sockets - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item CONSTRUCTOR - -new ( [ARGS] ) - -=over 4 - -=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 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item CONSTRUCTOR - -new ( [ARGS] ) - -=item METHODS - -hostpath(), peerpath() - -=item SEE ALSO - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 IO::Uncompress::AnyInflate - Uncompress zlib-based (zip, gzip) -file/buffer - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -RFC 1950, RFC 1951 (optionally), gzip (RFC 1952), zip - -=item Functional Interface - -=over 4 - -=item anyinflate $input => $output [, OPTS] - -A filename, A filehandle, A scalar reference, An array reference, An Input -FileGlob string, A filename, A filehandle, A scalar reference, An Array -Reference, An Output FileGlob - -=item Notes - -=item Optional Parameters - -C<< AutoClose => 0|1 >>, C<< BinModeOut => 0|1 >>, C<< Append => 0|1 >>, -C<< MultiStream => 0|1 >>, C<< TrailingData => $scalar >> - -=item Examples - -=back - -=item OO Interface - -=over 4 - -=item Constructor - -A filename, A filehandle, A scalar reference - -=item Constructor Options - -C<< AutoClose => 0|1 >>, C<< MultiStream => 0|1 >>, C<< Prime => $string ->>, C<< Transparent => 0|1 >>, C<< BlockSize => $num >>, C<< InputLength => -$size >>, C<< Append => 0|1 >>, C<< Strict => 0|1 >>, C<< RawInflate => 0|1 ->>, C<< ParseExtra => 0|1 >> If the gzip FEXTRA header field is present and -this option is set, it will force the module to check that it conforms to -the sub-field structure as defined in RFC 1952 - -=item Examples - -=back - -=item Methods - -=over 4 - -=item read - -=item read - -=item getline - -=item getc - -=item ungetc - -=item inflateSync - -=item getHeaderInfo - -=item tell - -=item eof - -=item seek - -=item binmode - -=item opened - -=item autoflush - -=item input_line_number - -=item fileno - -=item close - -=item nextStream - -=item trailingData - -=back - -=item Importing - -:all - -=item EXAMPLES - -=over 4 - -=item Working with Net::FTP - -=back - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 IO::Uncompress::AnyUncompress - Uncompress gzip, zip, bzip2 or lzop -file/buffer - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -RFC 1950, RFC 1951 (optionally), gzip (RFC 1952), zip, bzip2, lzop, lzf - -=item Functional Interface - -=over 4 - -=item anyuncompress $input => $output [, OPTS] - -A filename, A filehandle, A scalar reference, An array reference, An Input -FileGlob string, A filename, A filehandle, A scalar reference, An Array -Reference, An Output FileGlob - -=item Notes - -=item Optional Parameters - -C<< AutoClose => 0|1 >>, C<< BinModeOut => 0|1 >>, C<< Append => 0|1 >>, -C<< MultiStream => 0|1 >>, C<< TrailingData => $scalar >> - -=item Examples - -=back - -=item OO Interface - -=over 4 - -=item Constructor - -A filename, A filehandle, A scalar reference - -=item Constructor Options - -C<< AutoClose => 0|1 >>, C<< MultiStream => 0|1 >>, C<< Prime => $string ->>, C<< Transparent => 0|1 >>, C<< BlockSize => $num >>, C<< InputLength => -$size >>, C<< Append => 0|1 >>, C<< Strict => 0|1 >>, C<< RawInflate => 0|1 ->> - -=item Examples - -=back - -=item Methods - -=over 4 - -=item read - -=item read - -=item getline - -=item getc - -=item ungetc - -=item getHeaderInfo - -=item tell - -=item eof - -=item seek - -=item binmode - -=item opened - -=item autoflush - -=item input_line_number - -=item fileno - -=item close - -=item nextStream - -=item trailingData - -=back - -=item Importing - -:all - -=item EXAMPLES - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 IO::Uncompress::Base - Base Class for IO::Uncompress modules - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 IO::Uncompress::Gunzip - Read RFC 1952 files/buffers - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Functional Interface - -=over 4 - -=item gunzip $input => $output [, OPTS] - -A filename, A filehandle, A scalar reference, An array reference, An Input -FileGlob string, A filename, A filehandle, A scalar reference, An Array -Reference, An Output FileGlob - -=item Notes - -=item Optional Parameters - -C<< AutoClose => 0|1 >>, C<< BinModeOut => 0|1 >>, C<< Append => 0|1 >>, -C<< MultiStream => 0|1 >>, C<< TrailingData => $scalar >> - -=item Examples - -=back - -=item OO Interface - -=over 4 - -=item Constructor - -A filename, A filehandle, A scalar reference - -=item Constructor Options - -C<< AutoClose => 0|1 >>, C<< MultiStream => 0|1 >>, C<< Prime => $string ->>, C<< Transparent => 0|1 >>, C<< BlockSize => $num >>, C<< InputLength => -$size >>, C<< Append => 0|1 >>, C<< Strict => 0|1 >>, C<< ParseExtra => 0|1 ->> If the gzip FEXTRA header field is present and this option is set, it -will force the module to check that it conforms to the sub-field structure -as defined in RFC 1952 - -=item Examples - -=back - -=item Methods - -=over 4 - -=item read - -=item read - -=item getline - -=item getc - -=item ungetc - -=item inflateSync - -=item getHeaderInfo - -Name, Comment - -=item tell - -=item eof - -=item seek - -=item binmode - -=item opened - -=item autoflush - -=item input_line_number - -=item fileno - -=item close - -=item nextStream - -=item trailingData - -=back - -=item Importing - -:all - -=item EXAMPLES - -=over 4 - -=item Working with Net::FTP - -=back - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 IO::Uncompress::Inflate - Read RFC 1950 files/buffers - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Functional Interface - -=over 4 - -=item inflate $input => $output [, OPTS] - -A filename, A filehandle, A scalar reference, An array reference, An Input -FileGlob string, A filename, A filehandle, A scalar reference, An Array -Reference, An Output FileGlob - -=item Notes - -=item Optional Parameters - -C<< AutoClose => 0|1 >>, C<< BinModeOut => 0|1 >>, C<< Append => 0|1 >>, -C<< MultiStream => 0|1 >>, C<< TrailingData => $scalar >> - -=item Examples - -=back - -=item OO Interface - -=over 4 - -=item Constructor - -A filename, A filehandle, A scalar reference - -=item Constructor Options - -C<< AutoClose => 0|1 >>, C<< MultiStream => 0|1 >>, C<< Prime => $string ->>, C<< Transparent => 0|1 >>, C<< BlockSize => $num >>, C<< InputLength => -$size >>, C<< Append => 0|1 >>, C<< Strict => 0|1 >> - -=item Examples - -=back - -=item Methods - -=over 4 - -=item read - -=item read - -=item getline - -=item getc - -=item ungetc - -=item inflateSync - -=item getHeaderInfo - -=item tell - -=item eof - -=item seek - -=item binmode - -=item opened - -=item autoflush - -=item input_line_number - -=item fileno - -=item close - -=item nextStream - -=item trailingData - -=back - -=item Importing - -:all - -=item EXAMPLES - -=over 4 - -=item Working with Net::FTP - -=back - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 IO::Uncompress::RawInflate - Read RFC 1951 files/buffers - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Functional Interface - -=over 4 - -=item rawinflate $input => $output [, OPTS] - -A filename, A filehandle, A scalar reference, An array reference, An Input -FileGlob string, A filename, A filehandle, A scalar reference, An Array -Reference, An Output FileGlob - -=item Notes - -=item Optional Parameters - -C<< AutoClose => 0|1 >>, C<< BinModeOut => 0|1 >>, C<< Append => 0|1 >>, -C<< MultiStream => 0|1 >>, C<< TrailingData => $scalar >> - -=item Examples - -=back - -=item OO Interface - -=over 4 - -=item Constructor - -A filename, A filehandle, A scalar reference - -=item Constructor Options - -C<< AutoClose => 0|1 >>, C<< MultiStream => 0|1 >>, C<< Prime => $string ->>, C<< Transparent => 0|1 >>, C<< BlockSize => $num >>, C<< InputLength => -$size >>, C<< Append => 0|1 >>, C<< Strict => 0|1 >> - -=item Examples - -=back - -=item Methods - -=over 4 - -=item read - -=item read - -=item getline - -=item getc - -=item ungetc - -=item inflateSync - -=item getHeaderInfo - -=item tell - -=item eof - -=item seek - -=item binmode - -=item opened - -=item autoflush - -=item input_line_number - -=item fileno - -=item close - -=item nextStream - -=item trailingData - -=back - -=item Importing - -:all - -=item EXAMPLES - -=over 4 - -=item Working with Net::FTP - -=back - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 IO::Uncompress::Unzip - Read zip files/buffers - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Functional Interface - -=over 4 - -=item unzip $input => $output [, OPTS] - -A filename, A filehandle, A scalar reference, An array reference, An Input -FileGlob string, A filename, A filehandle, A scalar reference, An Array -Reference, An Output FileGlob - -=item Notes - -=item Optional Parameters - -C<< AutoClose => 0|1 >>, C<< BinModeOut => 0|1 >>, C<< Append => 0|1 >>, -C<< MultiStream => 0|1 >>, C<< TrailingData => $scalar >> - -=item Examples - -=back - -=item OO Interface - -=over 4 - -=item Constructor - -A filename, A filehandle, A scalar reference - -=item Constructor Options - -C<< AutoClose => 0|1 >>, C<< MultiStream => 0|1 >>, C<< Prime => $string ->>, C<< Transparent => 0|1 >>, C<< BlockSize => $num >>, C<< InputLength => -$size >>, C<< Append => 0|1 >>, C<< Strict => 0|1 >> - -=item Examples - -=back - -=item Methods - -=over 4 - -=item read - -=item read - -=item getline - -=item getc - -=item ungetc - -=item inflateSync - -=item getHeaderInfo - -=item tell - -=item eof - -=item seek - -=item binmode - -=item opened - -=item autoflush - -=item input_line_number - -=item fileno - -=item close - -=item nextStream - -=item trailingData - -=back - -=item Importing - -:all - -=item EXAMPLES - -=over 4 - -=item Working with Net::FTP - -=item Walking through a zip file - -=back - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 IO::Zlib - IO:: style interface to L<Compress::Zlib> - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item CONSTRUCTOR - -new ( [ARGS] ) - -=item OBJECT METHODS - -open ( FILENAME, MODE ), opened, close, getc, getline, getlines, print ( -ARGS... ), read ( BUF, NBYTES, [OFFSET] ), eof, seek ( OFFSET, WHENCE ), -tell, setpos ( POS ), getpos ( POS ) - -=item USING THE EXTERNAL GZIP - -=item CLASS METHODS - -has_Compress_Zlib, gzip_external, gzip_used, gzip_read_open, -gzip_write_open - -=item DIAGNOSTICS - -IO::Zlib::getlines: must be called in list context, -IO::Zlib::gzopen_external: mode '...' is illegal, IO::Zlib::import: '...' -is illegal, IO::Zlib::import: ':gzip_external' requires an argument, -IO::Zlib::import: 'gzip_read_open' requires an argument, IO::Zlib::import: -'gzip_read' '...' is illegal, IO::Zlib::import: 'gzip_write_open' requires -an argument, IO::Zlib::import: 'gzip_write_open' '...' is illegal, -IO::Zlib::import: no Compress::Zlib and no external gzip, IO::Zlib::open: -needs a filename, IO::Zlib::READ: NBYTES must be specified, -IO::Zlib::WRITE: too long LENGTH - -=item SEE ALSO - -=item HISTORY - -=item COPYRIGHT - -=back - -=head2 IO::lib::IO::Dir, IO::Dir - supply object methods for directory -handles - -=over 4 - -=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::lib::IO::File, IO::File - supply object methods for filehandles - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item CONSTRUCTOR - -new ( FILENAME [,MODE [,PERMS]] ), new_tmpfile - -=item METHODS - -open( FILENAME [,MODE [,PERMS]] ), open( FILENAME, IOLAYERS ), binmode( -[LAYER] ) - -=item NOTE - -=item SEE ALSO - -=item HISTORY - -=back - -=head2 IO::lib::IO::Handle, IO::Handle - supply object methods for I/O -handles - -=over 4 - -=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::lib::IO::Pipe, IO::Pipe - supply object methods for pipes - -=over 4 - -=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::lib::IO::Poll, IO::Poll - Object interface to system poll call - -=over 4 - -=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::lib::IO::Seekable, IO::Seekable - supply seek based methods for -I/O objects - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -$io->getpos, $io->setpos, $io->seek ( POS, WHENCE ), WHENCE=0 (SEEK_SET), -WHENCE=1 (SEEK_CUR), WHENCE=2 (SEEK_END), $io->sysseek( POS, WHENCE ), -$io->tell - -=item SEE ALSO - -=item HISTORY - -=back - -=head2 IO::lib::IO::Select, IO::Select - OO interface to the select system -call - -=over 4 - -=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, EXCEPTION [, TIMEOUT ] ) - -=item EXAMPLE - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 IO::lib::IO::Socket, IO::Socket - Object interface to socket -communications - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item CONSTRUCTOR - -new ( [ARGS] ) - -=item METHODS - -accept([PKG]), socketpair(DOMAIN, TYPE, PROTOCOL), atmark, connected, -protocol, sockdomain, sockopt(OPT [, VAL]), socktype, timeout([VAL]) - -=item SEE ALSO - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 IO::lib::IO::Socket::INET, IO::Socket::INET - Object interface for -AF_INET domain sockets - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item CONSTRUCTOR - -new ( [ARGS] ) - -=over 4 - -=item METHODS - -sockaddr (), sockport (), sockhost (), peeraddr (), peerport (), peerhost -() - -=back - -=item SEE ALSO - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 IO::lib::IO::Socket::UNIX, IO::Socket::UNIX - Object interface for -AF_UNIX domain sockets - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item CONSTRUCTOR - -new ( [ARGS] ) - -=item METHODS - -hostpath(), peerpath() - -=item SEE ALSO - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 IO_Compress_Base::lib::File::GlobMapper, File::GlobMapper - Extend -File Glob to Allow Input and Output Files - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Behind The Scenes - -=item Limitations - -=item Input File Glob - -B<~>, B<~user>, B<.>, B<*>, B<?>, B<\>, B<[]>, B<{,}>, B<()> - -=item Output File Glob - -"*", #1 - -=item Returned Data - -=back - -=item EXAMPLES - -=over 4 - -=item A Rename script - -=item A few example globmaps - -=back - -=item SEE ALSO - -=item AUTHOR - -=item COPYRIGHT AND LICENSE - -=back - -=head2 IO_Compress_Base::lib::IO::Compress::Base, IO::Compress::Base - Base -Class for IO::Compress modules - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 IO_Compress_Base::lib::IO::Uncompress::AnyUncompress, -IO::Uncompress::AnyUncompress - Uncompress gzip, zip, bzip2 or lzop -file/buffer - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -RFC 1950, RFC 1951 (optionally), gzip (RFC 1952), zip, bzip2, lzop, lzf - -=item Functional Interface - -=over 4 - -=item anyuncompress $input => $output [, OPTS] - -A filename, A filehandle, A scalar reference, An array reference, An Input -FileGlob string, A filename, A filehandle, A scalar reference, An Array -Reference, An Output FileGlob - -=item Notes - -=item Optional Parameters - -C<< AutoClose => 0|1 >>, C<< BinModeOut => 0|1 >>, C<< Append => 0|1 >>, -C<< MultiStream => 0|1 >>, C<< TrailingData => $scalar >> - -=item Examples - -=back - -=item OO Interface - -=over 4 - -=item Constructor - -A filename, A filehandle, A scalar reference - -=item Constructor Options - -C<< AutoClose => 0|1 >>, C<< MultiStream => 0|1 >>, C<< Prime => $string ->>, C<< Transparent => 0|1 >>, C<< BlockSize => $num >>, C<< InputLength => -$size >>, C<< Append => 0|1 >>, C<< Strict => 0|1 >>, C<< RawInflate => 0|1 ->> - -=item Examples - -=back - -=item Methods - -=over 4 - -=item read - -=item read - -=item getline - -=item getc - -=item ungetc - -=item getHeaderInfo - -=item tell - -=item eof - -=item seek - -=item binmode - -=item opened - -=item autoflush - -=item input_line_number - -=item fileno - -=item close - -=item nextStream - -=item trailingData - -=back - -=item Importing - -:all - -=item EXAMPLES - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 IO_Compress_Base::lib::IO::Uncompress::Base, IO::Uncompress::Base - -Base Class for IO::Uncompress modules - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 IO_Compress_Base::pod::FAQ, IO::Compress::Base::FAQ -- Frequently -Asked Questions about IO::Compress::Base - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Compatibility with Unix compress/uncompress. - -=item Accessing .tar.Z files - -=item Accessing Zip Files - -=item Compressed files and Net::FTP - -=item How do I recompress using a different compression? - -=item Using C<InputLength> to uncompress data embedded in a larger -file/buffer. - -=back - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 IO_Compress_Zlib::IO::Compress::Deflate, IO::Compress::Deflate - -Write RFC 1950 files/buffers - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Functional Interface - -=over 4 - -=item deflate $input => $output [, OPTS] - -A filename, A filehandle, A scalar reference, An array reference, An Input -FileGlob string, A filename, A filehandle, A scalar reference, An Array -Reference, An Output FileGlob - -=item Notes - -=item Optional Parameters - -C<< AutoClose => 0|1 >>, C<< BinModeIn => 0|1 >>, C<< Append => 0|1 >> - -=item Examples - -=back - -=item OO Interface - -=over 4 - -=item Constructor - -A filename, A filehandle, A scalar reference - -=item Constructor Options - -C<< AutoClose => 0|1 >>, C<< Append => 0|1 >>, A Buffer, A Filename, A -Filehandle, C<< Merge => 0|1 >>, -Level, -Strategy, C<< Strict => 0|1 >> - -=item Examples - -=back - -=item Methods - -=over 4 - -=item print - -=item printf - -=item syswrite - -=item write - -=item flush - -=item tell - -=item eof - -=item seek - -=item binmode - -=item opened - -=item autoflush - -=item input_line_number - -=item fileno - -=item close - -=item newStream([OPTS]) - -=item deflateParams - -=back - -=item Importing - -:all, :constants, :flush, :level, :strategy - -=item EXAMPLES - -=over 4 - -=item Apache::GZip Revisited - -=item Working with Net::FTP - -=back - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 IO_Compress_Zlib::IO::Compress::Gzip, IO::Compress::Gzip - Write RFC -1952 files/buffers - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Functional Interface - -=over 4 - -=item gzip $input => $output [, OPTS] - -A filename, A filehandle, A scalar reference, An array reference, An Input -FileGlob string, A filename, A filehandle, A scalar reference, An Array -Reference, An Output FileGlob - -=item Notes - -=item Optional Parameters - -C<< AutoClose => 0|1 >>, C<< BinModeIn => 0|1 >>, C<< Append => 0|1 >> - -=item Examples - -=back - -=item OO Interface - -=over 4 - -=item Constructor - -A filename, A filehandle, A scalar reference - -=item Constructor Options - -C<< AutoClose => 0|1 >>, C<< Append => 0|1 >>, A Buffer, A Filename, A -Filehandle, C<< Merge => 0|1 >>, -Level, -Strategy, C<< Minimal => 0|1 >>, -C<< Comment => $comment >>, C<< Name => $string >>, C<< Time => $number >>, -C<< TextFlag => 0|1 >>, C<< HeaderCRC => 0|1 >>, C<< OS_Code => $value >>, -C<< ExtraField => $data >>, C<< ExtraFlags => $value >>, C<< Strict => 0|1 ->> - -=item Examples - -=back - -=item Methods - -=over 4 - -=item print - -=item printf - -=item syswrite - -=item write - -=item flush - -=item tell - -=item eof - -=item seek - -=item binmode - -=item opened - -=item autoflush - -=item input_line_number - -=item fileno - -=item close - -=item newStream([OPTS]) - -=item deflateParams - -=back - -=item Importing - -:all, :constants, :flush, :level, :strategy - -=item EXAMPLES - -=over 4 - -=item Apache::GZip Revisited - -=item Working with Net::FTP - -=back - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 IO_Compress_Zlib::IO::Compress::RawDeflate, IO::Compress::RawDeflate -- Write RFC 1951 files/buffers - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Functional Interface - -=over 4 - -=item rawdeflate $input => $output [, OPTS] - -A filename, A filehandle, A scalar reference, An array reference, An Input -FileGlob string, A filename, A filehandle, A scalar reference, An Array -Reference, An Output FileGlob - -=item Notes - -=item Optional Parameters - -C<< AutoClose => 0|1 >>, C<< BinModeIn => 0|1 >>, C<< Append => 0|1 >> - -=item Examples - -=back - -=item OO Interface - -=over 4 - -=item Constructor - -A filename, A filehandle, A scalar reference - -=item Constructor Options - -C<< AutoClose => 0|1 >>, C<< Append => 0|1 >>, A Buffer, A Filename, A -Filehandle, C<< Merge => 0|1 >>, -Level, -Strategy, C<< Strict => 0|1 >> - -=item Examples - -=back - -=item Methods - -=over 4 - -=item print - -=item printf - -=item syswrite - -=item write - -=item flush - -=item tell - -=item eof - -=item seek - -=item binmode - -=item opened - -=item autoflush - -=item input_line_number - -=item fileno - -=item close - -=item newStream([OPTS]) - -=item deflateParams - -=back - -=item Importing - -:all, :constants, :flush, :level, :strategy - -=item EXAMPLES - -=over 4 - -=item Apache::GZip Revisited - -=item Working with Net::FTP - -=back - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 IO_Compress_Zlib::IO::Compress::Zip, IO::Compress::Zip - Write zip -files/buffers - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Functional Interface - -=over 4 - -=item zip $input => $output [, OPTS] - -A filename, A filehandle, A scalar reference, An array reference, An Input -FileGlob string, A filename, A filehandle, A scalar reference, An Array -Reference, An Output FileGlob - -=item Notes - -=item Optional Parameters - -C<< AutoClose => 0|1 >>, C<< BinModeIn => 0|1 >>, C<< Append => 0|1 >> - -=item Examples - -=back - -=item OO Interface - -=over 4 - -=item Constructor - -A filename, A filehandle, A scalar reference - -=item Constructor Options - -C<< AutoClose => 0|1 >>, C<< Append => 0|1 >>, A Buffer, A Filename, A -Filehandle, C<< Name => $string >>, C<< Time => $number >>, C<< ExtAttr => -$attr >>, C<< exTime => [$atime, $mtime, $ctime] >>, C<< exUnix2 => [$uid, -$gid] >>, C<< Comment => $comment >>, C<< ZipComment => $comment >>, C<< -Method => $method >>, C<< Stream => 0|1 >>, C<< Zip64 => 0|1 >>, C<< -TextFlag => 0|1 >>, C<< ExtraFieldLocal => $data >> =item C<< -ExtraFieldCentral => $data >>, C<< Minimal => 1|0 >>, C<< BlockSize100K => -number >>, C<< WorkFactor => number >>, -Level, -Strategy, C<< Strict => -0|1 >> - -=item Examples - -=back - -=item Methods - -=over 4 - -=item print - -=item printf - -=item syswrite - -=item write - -=item flush - -=item tell - -=item eof - -=item seek - -=item binmode - -=item opened - -=item autoflush - -=item input_line_number - -=item fileno - -=item close - -=item newStream([OPTS]) - -=item deflateParams - -=back - -=item Importing - -:all, :constants, :flush, :level, :strategy, :zip_method - -=item EXAMPLES - -=over 4 - -=item Apache::GZip Revisited - -=item Working with Net::FTP - -=back - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 IO_Compress_Zlib::IO::Uncompress::AnyInflate, -IO::Uncompress::AnyInflate - Uncompress zlib-based (zip, gzip) file/buffer - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -RFC 1950, RFC 1951 (optionally), gzip (RFC 1952), zip - -=item Functional Interface - -=over 4 - -=item anyinflate $input => $output [, OPTS] - -A filename, A filehandle, A scalar reference, An array reference, An Input -FileGlob string, A filename, A filehandle, A scalar reference, An Array -Reference, An Output FileGlob - -=item Notes - -=item Optional Parameters - -C<< AutoClose => 0|1 >>, C<< BinModeOut => 0|1 >>, C<< Append => 0|1 >>, -C<< MultiStream => 0|1 >>, C<< TrailingData => $scalar >> - -=item Examples - -=back - -=item OO Interface - -=over 4 - -=item Constructor - -A filename, A filehandle, A scalar reference - -=item Constructor Options - -C<< AutoClose => 0|1 >>, C<< MultiStream => 0|1 >>, C<< Prime => $string ->>, C<< Transparent => 0|1 >>, C<< BlockSize => $num >>, C<< InputLength => -$size >>, C<< Append => 0|1 >>, C<< Strict => 0|1 >>, C<< RawInflate => 0|1 ->>, C<< ParseExtra => 0|1 >> If the gzip FEXTRA header field is present and -this option is set, it will force the module to check that it conforms to -the sub-field structure as defined in RFC 1952 - -=item Examples - -=back - -=item Methods - -=over 4 - -=item read - -=item read - -=item getline - -=item getc - -=item ungetc - -=item inflateSync - -=item getHeaderInfo - -=item tell - -=item eof - -=item seek - -=item binmode - -=item opened - -=item autoflush - -=item input_line_number - -=item fileno - -=item close - -=item nextStream - -=item trailingData - -=back - -=item Importing - -:all - -=item EXAMPLES - -=over 4 - -=item Working with Net::FTP - -=back - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 IO_Compress_Zlib::IO::Uncompress::Gunzip, IO::Uncompress::Gunzip - -Read RFC 1952 files/buffers - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Functional Interface - -=over 4 - -=item gunzip $input => $output [, OPTS] - -A filename, A filehandle, A scalar reference, An array reference, An Input -FileGlob string, A filename, A filehandle, A scalar reference, An Array -Reference, An Output FileGlob - -=item Notes - -=item Optional Parameters - -C<< AutoClose => 0|1 >>, C<< BinModeOut => 0|1 >>, C<< Append => 0|1 >>, -C<< MultiStream => 0|1 >>, C<< TrailingData => $scalar >> - -=item Examples - -=back - -=item OO Interface - -=over 4 - -=item Constructor - -A filename, A filehandle, A scalar reference - -=item Constructor Options - -C<< AutoClose => 0|1 >>, C<< MultiStream => 0|1 >>, C<< Prime => $string ->>, C<< Transparent => 0|1 >>, C<< BlockSize => $num >>, C<< InputLength => -$size >>, C<< Append => 0|1 >>, C<< Strict => 0|1 >>, C<< ParseExtra => 0|1 ->> If the gzip FEXTRA header field is present and this option is set, it -will force the module to check that it conforms to the sub-field structure -as defined in RFC 1952 - -=item Examples - -=back - -=item Methods - -=over 4 - -=item read - -=item read - -=item getline - -=item getc - -=item ungetc - -=item inflateSync - -=item getHeaderInfo - -Name, Comment - -=item tell - -=item eof - -=item seek - -=item binmode - -=item opened - -=item autoflush - -=item input_line_number - -=item fileno - -=item close - -=item nextStream - -=item trailingData - -=back - -=item Importing - -:all - -=item EXAMPLES - -=over 4 - -=item Working with Net::FTP - -=back - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 IO_Compress_Zlib::IO::Uncompress::Inflate, IO::Uncompress::Inflate - -Read RFC 1950 files/buffers - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Functional Interface - -=over 4 - -=item inflate $input => $output [, OPTS] - -A filename, A filehandle, A scalar reference, An array reference, An Input -FileGlob string, A filename, A filehandle, A scalar reference, An Array -Reference, An Output FileGlob - -=item Notes - -=item Optional Parameters - -C<< AutoClose => 0|1 >>, C<< BinModeOut => 0|1 >>, C<< Append => 0|1 >>, -C<< MultiStream => 0|1 >>, C<< TrailingData => $scalar >> - -=item Examples - -=back - -=item OO Interface - -=over 4 - -=item Constructor - -A filename, A filehandle, A scalar reference - -=item Constructor Options - -C<< AutoClose => 0|1 >>, C<< MultiStream => 0|1 >>, C<< Prime => $string ->>, C<< Transparent => 0|1 >>, C<< BlockSize => $num >>, C<< InputLength => -$size >>, C<< Append => 0|1 >>, C<< Strict => 0|1 >> - -=item Examples - -=back - -=item Methods - -=over 4 - -=item read - -=item read - -=item getline - -=item getc - -=item ungetc - -=item inflateSync - -=item getHeaderInfo - -=item tell - -=item eof - -=item seek - -=item binmode - -=item opened - -=item autoflush - -=item input_line_number - -=item fileno - -=item close - -=item nextStream - -=item trailingData - -=back - -=item Importing - -:all - -=item EXAMPLES - -=over 4 - -=item Working with Net::FTP - -=back - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 IO_Compress_Zlib::IO::Uncompress::RawInflate, -IO::Uncompress::RawInflate - Read RFC 1951 files/buffers - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Functional Interface - -=over 4 - -=item rawinflate $input => $output [, OPTS] - -A filename, A filehandle, A scalar reference, An array reference, An Input -FileGlob string, A filename, A filehandle, A scalar reference, An Array -Reference, An Output FileGlob - -=item Notes - -=item Optional Parameters - -C<< AutoClose => 0|1 >>, C<< BinModeOut => 0|1 >>, C<< Append => 0|1 >>, -C<< MultiStream => 0|1 >>, C<< TrailingData => $scalar >> - -=item Examples - -=back - -=item OO Interface - -=over 4 - -=item Constructor - -A filename, A filehandle, A scalar reference - -=item Constructor Options - -C<< AutoClose => 0|1 >>, C<< MultiStream => 0|1 >>, C<< Prime => $string ->>, C<< Transparent => 0|1 >>, C<< BlockSize => $num >>, C<< InputLength => -$size >>, C<< Append => 0|1 >>, C<< Strict => 0|1 >> - -=item Examples - -=back - -=item Methods - -=over 4 - -=item read - -=item read - -=item getline - -=item getc - -=item ungetc - -=item inflateSync - -=item getHeaderInfo - -=item tell - -=item eof - -=item seek - -=item binmode - -=item opened - -=item autoflush - -=item input_line_number - -=item fileno - -=item close - -=item nextStream - -=item trailingData - -=back - -=item Importing - -:all - -=item EXAMPLES - -=over 4 - -=item Working with Net::FTP - -=back - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 IO_Compress_Zlib::IO::Uncompress::Unzip, IO::Uncompress::Unzip - -Read zip files/buffers - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Functional Interface - -=over 4 - -=item unzip $input => $output [, OPTS] - -A filename, A filehandle, A scalar reference, An array reference, An Input -FileGlob string, A filename, A filehandle, A scalar reference, An Array -Reference, An Output FileGlob - -=item Notes - -=item Optional Parameters - -C<< AutoClose => 0|1 >>, C<< BinModeOut => 0|1 >>, C<< Append => 0|1 >>, -C<< MultiStream => 0|1 >>, C<< TrailingData => $scalar >> - -=item Examples - -=back - -=item OO Interface - -=over 4 - -=item Constructor - -A filename, A filehandle, A scalar reference - -=item Constructor Options - -C<< AutoClose => 0|1 >>, C<< MultiStream => 0|1 >>, C<< Prime => $string ->>, C<< Transparent => 0|1 >>, C<< BlockSize => $num >>, C<< InputLength => -$size >>, C<< Append => 0|1 >>, C<< Strict => 0|1 >> - -=item Examples - -=back - -=item Methods - -=over 4 - -=item read - -=item read - -=item getline - -=item getc - -=item ungetc - -=item inflateSync - -=item getHeaderInfo - -=item tell - -=item eof - -=item seek - -=item binmode - -=item opened - -=item autoflush - -=item input_line_number - -=item fileno - -=item close - -=item nextStream - -=item trailingData - -=back - -=item Importing - -:all - -=item EXAMPLES - -=over 4 - -=item Working with Net::FTP - -=item Walking through a zip file - -=back - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 IO_Compress_Zlib::pod::FAQ, IO::Compress::Zlib::FAQ -- Frequently -Asked Questions about IO::Compress::Zlib - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Compatibility with Unix compress/uncompress. - -=item Accessing .tar.Z files - -=item Accessing Zip Files - -=item Compressed files and Net::FTP - -=item How do I recompress using a different compression? - -=item Apache::GZip Revisited - -=item Using C<InputLength> to uncompress data embedded in a larger -file/buffer. - -=back - -=item SEE ALSO - -=item AUTHOR - -=item MODIFICATION HISTORY - -=item COPYRIGHT AND LICENSE - -=back - -=head2 IPC::Msg - SysV Msg IPC object class - -=over 4 - -=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 AUTHORS - -=item COPYRIGHT - -=back - -=head2 IPC::Open2, open2 - open a process for both reading and writing - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item WARNING - -=item SEE ALSO - -=back - -=head2 IPC::Open3, open3 - open a process for reading, writing, and error -handling - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item See Also - -L<IPC::Open2>, L<IPC::Run> - -=item WARNING - -=back - -=head2 IPC::Semaphore - SysV Semaphore IPC object class - -=over 4 - -=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 AUTHORS - -=item COPYRIGHT - -=back - -=head2 IPC::SharedMem - SysV Shared Memory IPC object class - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -new ( KEY , SIZE , FLAGS ), id, read ( POS, SIZE ), write ( STRING, POS, -SIZE ), remove, is_removed, stat, attach ( [FLAG] ), detach, addr - -=item SEE ALSO - -=item AUTHORS - -=item COPYRIGHT - -=back - -=head2 IPC::SysV - System V IPC constants and system calls - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -ftok( PATH ), ftok( PATH, ID ), shmat( ID, ADDR, FLAG ), shmdt( ADDR ), -memread( ADDR, VAR, POS, SIZE ), memwrite( ADDR, STRING, POS, SIZE ) - -=item SEE ALSO - -=item AUTHORS - -=item COPYRIGHT - -=back - -=head2 IPC::SysV::lib::IPC::Msg, IPC::Msg - SysV Msg IPC object class - -=over 4 - -=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 AUTHORS - -=item COPYRIGHT - -=back - -=head2 IPC::SysV::lib::IPC::Semaphore, IPC::Semaphore - SysV Semaphore IPC -object class - -=over 4 - -=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 AUTHORS - -=item COPYRIGHT - -=back - -=head2 IPC::SysV::lib::IPC::SharedMem, IPC::SharedMem - SysV Shared Memory -IPC object class - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -new ( KEY , SIZE , FLAGS ), id, read ( POS, SIZE ), write ( STRING, POS, -SIZE ), remove, is_removed, stat, attach ( [FLAG] ), detach, addr - -=item SEE ALSO - -=item AUTHORS - -=item COPYRIGHT - -=back - -=head2 IPC::SysV::lib::IPC::SysV, IPC::SysV - System V IPC constants and -system calls - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -ftok( PATH ), ftok( PATH, ID ), shmat( ID, ADDR, FLAG ), shmdt( ADDR ), -memread( ADDR, VAR, POS, SIZE ), memwrite( ADDR, STRING, POS, SIZE ) - -=item SEE ALSO - -=item AUTHORS - -=item COPYRIGHT - -=back - -=head2 IPCmd, IPC::Cmd - finding and running system commands made easy - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item CLASS METHODS - -=over 4 - -=item $ipc_run_version = IPC::Cmd->can_use_ipc_run( [VERBOSE] ) - -=back - -=back - -=over 4 - -=item $ipc_open3_version = IPC::Cmd->can_use_ipc_open3( [VERBOSE] ) - -=back - -=over 4 - -=item $bool = IPC::Cmd->can_capture_buffer - -=back - -=over 4 - -=item FUNCTIONS - -=over 4 - -=item $path = can_run( PROGRAM ); - -=back - -=back - -=over 4 - -=item $ok | ($ok, $err, $full_buf, $stdout_buff, $stderr_buff) = run( -command => COMMAND, [verbose => BOOL, buffer => \$SCALAR, timeout => DIGIT] -); - -command, verbose, buffer, timeout, success, error message, full_buffer, -out_buffer, error_buffer - -=back - -=over 4 - -=item $q = QUOTE - -=back - -=over 4 - -=item HOW IT WORKS - -=item Global Variables - -=over 4 - -=item $IPC::Cmd::VERBOSE - -=item $IPC::Cmd::USE_IPC_RUN - -=item $IPC::Cmd::USE_IPC_OPEN3 - -=item $IPC::Cmd::WARN - -=back - -=item Caveats - -Whitespace and IPC::Open3 / system(), Whitespace and IPC::Run, IO Redirect, -Interleaving STDOUT/STDERR - -=item See Also - -=item ACKNOWLEDGEMENTS - -=item BUG REPORTS - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 List::Util - A selection of general-utility list subroutines - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -first BLOCK LIST, max LIST, maxstr LIST, min LIST, minstr LIST, reduce -BLOCK LIST, shuffle LIST, sum LIST - -=item KNOWN BUGS - -=item SUGGESTED ADDITIONS - -=item SEE ALSO - -=item COPYRIGHT - -=back - -=head2 List::Utilib::List::Util, List::Util - A selection of -general-utility list subroutines - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -first BLOCK LIST, max LIST, maxstr LIST, min LIST, minstr LIST, reduce -BLOCK LIST, shuffle LIST, sum LIST - -=item KNOWN BUGS - -=item SUGGESTED ADDITIONS - -=item SEE ALSO - -=item COPYRIGHT - -=back - -=head2 List::Utilib::Scalar::Util, Scalar::Util - A selection of -general-utility scalar subroutines - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -blessed EXPR, dualvar NUM, STRING, isvstring EXPR, isweak EXPR, -looks_like_number EXPR, openhandle FH, refaddr EXPR, reftype EXPR, -set_prototype CODEREF, PROTOTYPE, tainted EXPR, weaken REF - -=item KNOWN BUGS - -=item SEE ALSO - -=item COPYRIGHT - -=back - -=head2 Locale::Constants - constants for Locale codes - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item KNOWN BUGS AND LIMITATIONS - -=item SEE ALSO - -Locale::Language, Locale::Country, Locale::Script, Locale::Currency - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 Locale::Country - ISO codes for country identification (ISO 3166) - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -B<alpha-2>, B<alpha-3>, B<numeric> - -=item CONVERSION ROUTINES - -code2country( CODE, [ CODESET ] ), country2code( STRING, [ CODESET ] ), -country_code2code( CODE, CODESET, CODESET ) - -=item QUERY ROUTINES - -C<all_country_codes( [ CODESET ] )>, C<all_country_names( [ CODESET ] )> - -=item SEMI-PRIVATE ROUTINES - -=over 4 - -=item alias_code - -=item rename_country - -=back - -=item EXAMPLES - -=item DOMAIN NAMES - -=item KNOWN BUGS AND LIMITATIONS - -=item SEE ALSO - -Locale::Language, Locale::Script, Locale::Currency, Locale::SubCountry, ISO -3166-1, http://www.iso.org/iso/en/prods-services/iso3166ma/index.html, -http://www.egt.ie/standards/iso3166/iso3166-1-en.html, -http://www.cia.gov/cia/publications/factbook/docs/app-d-1.html - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 Locale::Currency - ISO three letter codes for currency -identification (ISO 4217) - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -XTS, XXX - -=item CONVERSION ROUTINES - -code2currency(), currency2code() - -=item QUERY ROUTINES - -C<all_currency_codes()>, C<all_currency_names()> - -=item EXAMPLES - -=item KNOWN BUGS AND LIMITATIONS - -=item SEE ALSO - -Locale::Country, Locale::Script, ISO 4217:1995, -http://www.bsi-global.com/iso4217currency - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 Locale::Language - ISO two letter codes for language identification -(ISO 639) - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item CONVERSION ROUTINES - -code2language(), language2code() - -=item QUERY ROUTINES - -C<all_language_codes()>, C<all_language_names()> - -=item EXAMPLES - -=item KNOWN BUGS AND LIMITATIONS - -=item SEE ALSO - -Locale::Country, Locale::Script, Locale::Currency, ISO 639:1988 (E/F), -http://lcweb.loc.gov/standards/iso639-2/langhome.html - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 Locale::Maketext - framework for localization - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item QUICK OVERVIEW - -=item METHODS - -=over 4 - -=item Construction Methods - -=item The "maketext" Method - -$lh->fail_with I<or> $lh->fail_with(I<PARAM>), $lh->failure_handler_auto - -=item Utility Methods - -$language->quant($number, $singular), $language->quant($number, $singular, -$plural), $language->quant($number, $singular, $plural, $negative), -$language->numf($number), $language->sprintf($format, @items), -$language->language_tag(), $language->encoding() - -=item Language Handle Attributes and Internals - -=back - -=item LANGUAGE CLASS HIERARCHIES - -=item ENTRIES IN EACH LEXICON - -=item BRACKET NOTATION - -=item AUTO LEXICONS - -=item CONTROLLING LOOKUP FAILURE - -=item HOW TO USE MAKETEXT - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMER - -=item AUTHOR - -=back - -=head2 Locale::Maketext::Simple - Simple interface to -Locale::Maketext::Lexicon - -=over 4 - -=item VERSION - -=item SYNOPSIS - -=item DESCRIPTION - -=item OPTIONS - -=over 4 - -=item Class - -=item Path - -=item Style - -=item Export - -=item Subclass - -=item Decode - -=item Encoding - -=back - -=back - -=over 4 - -=item ACKNOWLEDGMENTS - -=item SEE ALSO - -=item AUTHORS - -=item COPYRIGHT - -=over 4 - -=item The "MIT" License - -=back - -=back - -=head2 Locale::Maketext::TPJ13 -- article about software localization - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Localization and Perl: gettext breaks, Maketext fixes - -=over 4 - -=item A Localization Horror Story: It Could Happen To You - -=item The Linguistic View - -=item Breaking gettext - -=item Replacing gettext - -=item Buzzwords: Abstraction and Encapsulation - -=item Buzzword: Isomorphism - -=item Buzzword: Inheritance - -=item Buzzword: Concision - -=item The Devil in the Details - -=item The Proof in the Pudding: Localizing Web Sites - -=item References - -=back - -=back - -=head2 Locale::Script - ISO codes for script identification (ISO 15924) - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -B<alpha-2>, B<alpha-3>, B<numeric> - -=over 4 - -=item SPECIAL CODES - -=back - -=item CONVERSION ROUTINES - -code2script( CODE, [ CODESET ] ), script2code( STRING, [ CODESET ] ), -script_code2code( CODE, CODESET, CODESET ) - -=item QUERY ROUTINES - -C<all_script_codes ( [ CODESET ] )>, C<all_script_names ( [ CODESET ] )> - -=item EXAMPLES - -=item KNOWN BUGS AND LIMITATIONS - -=item SEE ALSO - -Locale::Language, Locale::Currency, Locale::Country, ISO 15924, -http://www.evertype.com/standards/iso15924/ - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 Log::Message - A generic message storing mechanism; - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Hierarchy - -Log::Message, Log::Message::Item, Log::Message::Handlers, -Log::Message::Config - -=item Options - -config, private, verbose, tag, level, remove, chrono - -=back - -=over 4 - -=item Methods - -=over 4 - -=item new - -=back - -=back - -=over 4 - -=item store - -message, tag, level, extra - -=back - -=over 4 - -=item retrieve - -tag, level, message, amount, chrono, remove - -=back - -=over 4 - -=item first - -=back - -=over 4 - -=item last - -=back - -=over 4 - -=item flush - -=back - -=over 4 - -=item SEE ALSO - -=item AUTHOR - -=item Acknowledgements - -=item COPYRIGHT - -=back - -=head2 Log::Message::Config - Configuration options for Log::Message - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=item AUTHOR - -=item Acknowledgements - -=item COPYRIGHT - -=back - -=head2 Log::Message::Handlers - Message handlers for Log::Message - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Default Handlers - -=over 4 - -=item log - -=back - -=back - -=over 4 - -=item carp - -=back - -=over 4 - -=item croak - -=back - -=over 4 - -=item cluck - -=back - -=over 4 - -=item confess - -=back - -=over 4 - -=item die - -=back - -=over 4 - -=item warn - -=back - -=over 4 - -=item trace - -=back - -=over 4 - -=item Custom Handlers - -=item SEE ALSO - -=item AUTHOR - -=item Acknowledgements - -=item COPYRIGHT - -=back - -=head2 Log::Message::Item - Message objects for Log::Message - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Methods and Accessors - -=over 4 - -=item remove - -=item id - -=item when - -=item message - -=item level - -=item tag - -=item shortmess - -=item longmess - -=item parent - -=back - -=item SEE ALSO - -=item AUTHOR - -=item Acknowledgements - -=item COPYRIGHT - -=back - -=head2 Log::Message::Simple - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item FUNCTIONS - -=over 4 - -=item msg("message string" [,VERBOSE]) - -=item debug("message string" [,VERBOSE]) - -=item error("error string" [,VERBOSE]) - -=back - -=back - -=over 4 - -=item carp(); - -=item croak(); - -=item confess(); - -=item cluck(); - -=back - -=over 4 - -=item CLASS METHODS - -=over 4 - -=item Log::Message::Simple->stack() - -=item Log::Message::Simple->stack_as_string([TRACE]) - -=item Log::Message::Simple->flush() - -=back - -=back - -=over 4 - -=item GLOBAL VARIABLES - -$ERROR_FH, $MSG_FH, $DEBUG_FH, $STACKTRACE_ON_ERROR - -=back - -=head2 MIME::Base64 - Encoding and decoding of base64 strings - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -encode_base64($str), encode_base64($str, $eol);, decode_base64($str) - -=item DIAGNOSTICS - -Premature end of base64 data, Premature padding of base64 data, Wide -character in subroutine entry - -=item EXAMPLES - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 MIME::Base64::QuotedPrint, MIME::QuotedPrint - Encoding and decoding -of quoted-printable strings - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -encode_qp($str), encode_qp($str, $eol), encode_qp($str, $eol, $binmode), -decode_qp($str); - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 MIME::QuotedPrint - Encoding and decoding of quoted-printable -strings - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -encode_qp($str), encode_qp($str, $eol), encode_qp($str, $eol, $binmode), -decode_qp($str); - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 Math::BigFloat - Arbitrary size floating point math package - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Canonical notation - -=item Output - -=item C<mantissa()>, C<exponent()> and C<parts()> - -=item Accuracy vs. Precision - -=item Rounding - -ffround ( +$scale ), ffround ( -$scale ), ffround ( 0 ), fround ( +$scale -), fround ( -$scale ) and fround ( 0 ) - -=back - -=item METHODS - -=over 4 - -=item accuracy - -=item precision() - -=item bexp() - -=item bnok() - -=item bpi() - -=item bcos() - -=item bsin() - -=item batan2() - -=item batan() - -=item bmuladd() - -=back - -=item Autocreating constants - -=over 4 - -=item Math library - -=item Using Math::BigInt::Lite - -=back - -=item EXPORTS - -=item BUGS - -=item CAVEATS - -stringify, bstr(), bdiv, brsft, Modifying and =, bpow, precision() vs. -accuracy() - -=item SEE ALSO - -=item LICENSE - -=item AUTHORS - -=back - -=head2 Math::BigInt - Arbitrary size integer/float math package - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -Input, Output - -=item METHODS - -=over 4 - -=item config() - -=item accuracy() - -=item precision() - -=item brsft() - -=item new() - -=item from_oct() - -=item from_hex() - -=item from_bin() - -=item bnan() - -=item bzero() - -=item binf() - -=item bone() - -=item is_one()/is_zero()/is_nan()/is_inf() - -=item is_pos()/is_neg()/is_positive()/is_negative() - - $x->is_pos(); # true if > 0 - $x->is_neg(); # true if < 0 - -=item is_odd()/is_even()/is_int() - -=item bcmp() - -=item bacmp() - -=item sign() - -=item digit() - -=item bneg() - -=item babs() - -=item bnorm() - -=item bnot() - -=item binc() - -=item bdec() - -=item badd() - -=item bsub() - -=item bmul() - -=item bmuladd() - -=item bdiv() - -=item bmod() - -=item bmodinv() - -=item bmodpow() - -=item bpow() - -=item blog() - -=item bexp() - -=item bnok() - -=item bpi() - -=item bcos() - -=item bsin() - -=item batan2() - -=item batan() - -=item blsft() - -=item brsft() - -=item band() - -=item bior() - -=item bxor() - -=item bnot() - -=item bsqrt() - -=item broot() - -=item bfac() - -=item round() - -=item bround() - -=item bfround() - -=item bfloor() - -=item bceil() - -=item bgcd() - -=item blcm() - -=item exponent() - -=item mantissa() - -=item parts() - -=item copy() - -=item as_int()/as_number() - -=item bsstr() - -=item as_hex() - -=item as_bin() - -=item as_oct() - -=item numify() - -=item modify() - -=item upgrade()/downgrade() - -=item div_scale() - -=item round_mode() - -=back - -=item ACCURACY and PRECISION - -=over 4 - -=item Precision P - -=item Accuracy A - -=item Fallback F - -=item Rounding mode R - -'trunc', 'even', 'odd', '+inf', '-inf', 'zero', 'common', Precision, -Accuracy (significant digits), Setting/Accessing, Creating numbers, Usage, -Precedence, Overriding globals, Local settings, Rounding, Default values, -Remarks - -=back - -=item Infinity and Not a Number - -oct()/hex(), log(-inf), exp(), cos(), sin(), atan2() - -=item INTERNALS - -=over 4 - -=item MATH LIBRARY - -=item SIGN - -=item mantissa(), exponent() and parts() - -=back - -=item EXAMPLES - - use Math::BigInt; - -=item Autocreating constants - -=item PERFORMANCE - -=over 4 - -=item Alternative math libraries - -=item SUBCLASSING - -=back - -=item Subclassing Math::BigInt - -=item UPGRADING - -=over 4 - -=item Auto-upgrade - -bsqrt(), div(), blog(), bexp() - -=back - -=item EXPORTS - -=item CAVEATS - -bstr(), bsstr() and 'cmp', int(), length, bdiv, infinity handling, -Modifying and =, bpow, Overloading -$x, Mixing different object types, -bsqrt(), brsft() - -=item LICENSE - -=item SEE ALSO - -=item AUTHORS - -=back - -=head2 Math::BigInt::Calc - Pure Perl module to support Math::BigInt - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item STORAGE - -=item METHODS - -=item WRAP YOUR OWN - -=item LICENSE - -This program is free software; you may redistribute it and/or modify it -under -the same terms as Perl itself. - -=item AUTHORS - -=item SEE ALSO - -=back - -=head2 Math::BigInt::CalcEmu - Emulate low-level math with BigInt code - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item __emu_bxor - -=item __emu_band - -=item __emu_bior - -=back - -=item LICENSE - -This program is free software; you may redistribute it and/or modify it -under -the same terms as Perl itself. - -=item AUTHORS - -=item SEE ALSO - -=back - -=head2 Math::BigInt::FastCalc - Math::BigInt::Calc with some XS for more -speed - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item STORAGE - -=item METHODS - -=item LICENSE - -This program is free software; you may redistribute it and/or modify it -under -the same terms as Perl itself. - -=item AUTHORS - -=item SEE ALSO - -=back - -=head2 Math::BigRat - Arbitrary big rational numbers - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item MATH LIBRARY - -=back - -=item METHODS - -=over 4 - -=item new() - -=item numerator() - -=item denominator() - - $d = $x->denominator(); - -=item parts() - -=item numify() - -=item as_int()/as_number() - -=item as_float() - -=item as_hex() - -=item as_bin() - -=item as_oct() - -=item from_hex()/from_bin()/from_oct() - -=item length() - -=item digit() - -=item bnorm() - -=item bfac() - -=item bround()/round()/bfround() - -=item bmod() - -=item bneg() - -=item is_one() - -=item is_zero() - -=item is_pos()/is_positive() - -=item is_neg()/is_negative() - -=item is_int() - -=item is_odd() - -=item is_even() - -=item bceil() - -=item bfloor() - - $x->bfloor(); - -=item bsqrt() - - $x->bsqrt(); - -=item broot() - - $x->broot($n); - -=item badd()/bmul()/bsub()/bdiv()/bdec()/binc() - -=item copy() - -=item bstr()/bsstr() - -=item bacmp()/bcmp() - -=item blsft()/brsft() - -=item bpow() - -=item bexp() - -=item bnok() - -=item config() - -=item objectify() - -=back - -=item BUGS - -inf handling (partial), NaN handling (partial), rounding (not implemented -except for bceil/bfloor), $x ** $y where $y is not an integer, bmod(), -blog(), bmodinv() and bmodpow() (partial) - -=item LICENSE - -=item SEE ALSO - -=item AUTHORS - -=back - -=head2 Math::Complex - complex numbers and associated mathematical -functions - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item OPERATIONS - -=item CREATION - -=item DISPLAYING - -=over 4 - -=item CHANGED IN PERL 5.6 - -=back - -=item USAGE - -=item CONSTANTS - -=over 4 - -=item PI - -=item Inf - -=back - -=item ERRORS DUE TO DIVISION BY ZERO OR LOGARITHM OF ZERO - -=item ERRORS DUE TO INDIGESTIBLE ARGUMENTS - -=item BUGS - -=item SEE ALSO - -=item AUTHORS - -=item LICENSE - -=back - -=head2 Math::Trig - trigonometric functions - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item TRIGONOMETRIC FUNCTIONS - -B<tan> - -=over 4 - -=item ERRORS DUE TO DIVISION BY ZERO - -=item SIMPLE (REAL) ARGUMENTS, COMPLEX RESULTS - -=back - -=item PLANE ANGLE CONVERSIONS - -deg2rad, grad2rad, rad2deg, grad2deg, deg2grad, rad2grad, rad2rad, deg2deg, -grad2grad - -=item RADIAL COORDINATE CONVERSIONS - -=over 4 - -=item COORDINATE SYSTEMS - -=item 3-D ANGLE CONVERSIONS - -cartesian_to_cylindrical, cartesian_to_spherical, cylindrical_to_cartesian, -cylindrical_to_spherical, spherical_to_cartesian, spherical_to_cylindrical - -=back - -=item GREAT CIRCLE DISTANCES AND DIRECTIONS - -=over 4 - -=item great_circle_distance - -=item great_circle_direction - -=item great_circle_bearing - -=item great_circle_destination - -=item great_circle_midpoint - -=item great_circle_waypoint - -=back - -=item EXAMPLES - -=over 4 - -=item CAVEAT FOR GREAT CIRCLE FORMULAS - -=item Real-valued asin and acos - -asin_real, acos_real - -=back - -=item BUGS - -=item AUTHORS - -=item LICENSE - -=back - -=head2 Memoize - Make functions faster by trading space for time - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item DETAILS - -=item OPTIONS - -=over 4 - -=item INSTALL - -=item NORMALIZER - -=item C<SCALAR_CACHE>, C<LIST_CACHE> - -C<MEMORY>, C<HASH>, C<TIE>, C<FAULT>, C<MERGE> - -=back - -=item OTHER FACILITIES - -=over 4 - -=item C<unmemoize> - -=item C<flush_cache> - -=back - -=item CAVEATS - -=item PERSISTENT CACHE SUPPORT - -=item EXPIRATION SUPPORT - -=item BUGS - -=item MAILING LIST - -=item AUTHOR - -=item COPYRIGHT AND LICENSE - -=item THANK YOU - -=back - -=head2 Memoize::AnyDBM_File - glue to provide EXISTS for AnyDBM_File for -Storable use - -=over 4 - -=item DESCRIPTION - -=back - -=head2 Memoize::Expire - Plug-in module for automatic expiration of -memoized values - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item INTERFACE - - TIEHASH, EXISTS, STORE - -=item ALTERNATIVES - -=item CAVEATS - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 Memoize::ExpireFile - test for Memoize expiration semantics - -=over 4 - -=item DESCRIPTION - -=back - -=head2 Memoize::ExpireTest - test for Memoize expiration semantics - -=over 4 - -=item DESCRIPTION - -=back - -=head2 Memoize::NDBM_File - glue to provide EXISTS for NDBM_File for -Storable use - -=over 4 - -=item DESCRIPTION - -=back - -=head2 Memoize::SDBM_File - glue to provide EXISTS for SDBM_File for -Storable use - -=over 4 - -=item DESCRIPTION - -=back - -=head2 Memoize::Storable - store Memoized data in Storable database - -=over 4 - -=item DESCRIPTION - -=back - -=head2 Module::Build - Build and install Perl modules - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item GUIDE TO DOCUMENTATION - -General Usage (L<Module::Build>), Authoring Reference -(L<Module::Build::Authoring>), API Reference (L<Module::Build::API>), -Cookbook (L<Module::Build::Cookbook>) - -=item ACTIONS - -build, clean, code, config_data, diff, dist, distcheck, distclean, distdir, -distmeta, distsign, disttest, docs, fakeinstall, help, html, install, -manifest, manpages, pardist, ppd, ppmdist, prereq_report, pure_install, -realclean, retest, skipcheck, test, testall, testcover, testdb, testpod, -testpodcoverage, versioninstall - -=item OPTIONS - -=over 4 - -=item Command Line Options - -quiet, use_rcfile, verbose, allow_mb_mismatch - -=item Default Options File (F<.modulebuildrc>) - -=back - -=item INSTALL PATHS - -lib, arch, script, bin, bindoc, libdoc, binhtml, libhtml, installdirs, -install_path, install_base, destdir, prefix - -=item MOTIVATIONS - -+, + - -=item TO DO - -=item AUTHOR - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 Module::Build::API - API Reference for Module Authors - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item CONSTRUCTORS - -current(), new(), add_to_cleanup, auto_features, autosplit, build_class, -build_requires, create_packlist, c_source, conflicts, create_makefile_pl, -create_readme, dist_abstract, dist_author, dist_name, dist_version, -dist_version_from, dynamic_config, extra_compiler_flags, -extra_linker_flags, get_options, type, store, default, include_dirs, -install_path, installdirs, license, apache, artistic, artistic_2, bsd, gpl, -lgpl, mit, mozilla, open_source, perl, restrictive, unrestricted, meta_add, -meta_merge, module_name, PL_files, pm_files, pod_files, recommends, -recursive_test_files, requires, script_files, sign, test_files, -use_tap_harness, tap_harness_args, xs_files, new_from_context(%args), -resume(), subclass() - -=item METHODS - -add_build_element($type), add_to_cleanup(@files), args(), -autosplit_file($from, $to), base_dir(), build_requires(), cbuilder(), -check_installed_status($module, $version), check_installed_version($module, -$version), compare_versions($v1, $op, $v2), config($key), config($key, -$value), config() [deprecated], config_data($name), config_data($name => -$value), conflicts(), contains_pod($file), copy_if_modified(%parameters), -create_build_script(), current_action(), depends_on(@actions), -dir_contains($first_dir, $second_dir), dispatch($action, %args), -dist_dir(), dist_name(), dist_version(), do_system($cmd, @args), -feature($name), feature($name => $value), fix_shebang_line(@files), -have_c_compiler(), install_base_relpaths(), install_base_relpaths($type), -install_base_relpaths($type => $path), install_destination($type), -install_path(), install_path($type), install_path($type => $path), -install_types(), invoked_action(), notes(), notes($key), notes($key => -$value), orig_dir(), os_type(), is_vmsish(), is_windowsish(), is_unixish(), -prefix_relpaths(), prefix_relpaths($installdirs), -prefix_relpaths($installdirs, $type), prefix_relpaths($installdirs, $type -=> $path), prepare_metadata(), prereq_failures(), prereq_report(), -prompt($message, $default), recommends(), requires(), rscan_dir($dir, -$pattern), runtime_params(), runtime_params($key), script_files(), -up_to_date($source_file, $derived_file), up_to_date(\@source_files, -\@derived_files), y_n($message, $default) - -=item Autogenerated Accessors - -PL_files(), allow_mb_mismatch(), autosplit(), base_dir(), bindoc_dirs(), -blib(), build_bat(), build_class(), build_elements(), build_requires(), -build_script(), c_source(), config_dir(), configure_requires(), -conflicts(), create_makefile_pl(), create_packlist(), create_readme(), -debugger(), destdir(), get_options(), html_css(), include_dirs(), -install_base(), install_sets(), installdirs(), libdoc_dirs(), license(), -magic_number(), mb_version(), meta_add(), meta_merge(), metafile(), -module_name(), orig_dir(), original_prefix(), perl(), pm_files(), -pod_files(), pollute(), prefix(), prereq_action_types(), program_name(), -quiet(), recommends(), recurse_into(), recursive_test_files(), requires(), -scripts(), sign(), tap_harness_args(), test_file_exts(), use_rcfile(), -use_tap_harness(), verbose(), xs_files() - -=back - -=item MODULE METADATA - -keywords, resources - -=item AUTHOR - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 Module::Build::Authoring - Authoring Module::Build modules - -=over 4 - -=item DESCRIPTION - -=item STRUCTURE - -=item SUBCLASSING - -=item PREREQUISITES - -=over 4 - -=item Types of prerequisites - -configure_requires, build_requires, requires, recommends, conflicts - -=item Format of prerequisites - -=item XS Extensions - -=back - -=item SAVING CONFIGURATION INFORMATION - -=item STARTING MODULE DEVELOPMENT - -=item AUTOMATION - -=item MIGRATION - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 Module::Build::Base - Default methods for Module::Build - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item AUTHOR - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 Module::Build::Compat - Compatibility with ExtUtils::MakeMaker - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -create_makefile_pl($style, $build), small, passthrough, traditional, -run_build_pl(args => \@ARGV), args, script, write_makefile(), makefile - -=item SCENARIOS - -=item AUTHOR - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 Module::Build::ConfigData - Configuration for Module::Build - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -config($name), feature($name), set_config($name, $value), -set_feature($name, $value), config_names(), feature_names(), -auto_feature_names(), write() - -=item AUTHOR - -=back - -=head2 Module::Build::Cookbook - Examples of Module::Build Usage - -=over 4 - -=item DESCRIPTION - -=item BASIC RECIPES - -=over 4 - -=item Installing modules that use Module::Build - -=item Modifying Config.pm values - -=item Installing modules using the programmatic interface - -=item Installing to a temporary directory - -=item Installing to a non-standard directory - -=item Installing in the same location as ExtUtils::MakeMaker - -=item Running a single test file - -=back - -=item ADVANCED RECIPES - -=over 4 - -=item Making a CPAN.pm-compatible distribution - -=item Changing the order of the build process - -=item Adding new file types to the build process - -=item Adding new elements to the install process - -=back - -=item EXAMPLES ON CPAN - -=over 4 - -=item SVN-Notify-Mirror - -1. Using C<auto_features>, I check to see whether two optional modules are -available - SVN::Notify::Config and Net::SSH;, 2. If the S::N::Config -module is loaded, I automatically generate testfiles for it during Build -(using the C<PL_files> property), 3. If the C<ssh_feature> is available, I -ask if the user wishes to perform the ssh tests (since it requires a little -preliminary setup);, 4. Only if the user has C<ssh_feature> and answers yes -to the testing, do I generate a test file - -=item Modifying an action - -=back - -=item AUTHOR - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 Module::Build::ModuleInfo, ModuleInfo - Gather package and POD -information from a perl module files - -=over 4 - -=item DESCRIPTION - -new_from_file($filename, collect_pod => 1), new_from_module($module, -collect_pod => 1, inc => \@dirs), name(), version($package), filename(), -packages_inside(), pod_inside(), contains_pod(), pod($section), -find_module_by_name($module, \@dirs), find_module_dir_by_name($module, -\@dirs) - -=item AUTHOR - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 Module::Build::Notes, $notes_name - Configuration for $module_name - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -config(\$name), feature(\$name), set_config(\$name, \$value), -set_feature(\$name, \$value), config_names(), feature_names(), -auto_feature_names(), write() - -=item AUTHOR - -=back - -=head2 Module::Build::PPMMaker - Perl Package Manager file creation - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item AUTHOR - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 Module::Build::Platform::Amiga - Builder class for Amiga platforms - -=over 4 - -=item DESCRIPTION - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 Module::Build::Platform::Default - Stub class for unknown platforms - -=over 4 - -=item DESCRIPTION - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 Module::Build::Platform::EBCDIC - Builder class for EBCDIC platforms - -=over 4 - -=item DESCRIPTION - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 Module::Build::Platform::MPEiX - Builder class for MPEiX platforms - -=over 4 - -=item DESCRIPTION - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 Module::Build::Platform::MacOS - Builder class for MacOS platforms - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Overriden Methods - -new(), make_executable(), dispatch(), ACTION_realclean() - -=back - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 Module::Build::Platform::RiscOS - Builder class for RiscOS platforms - -=over 4 - -=item DESCRIPTION - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 Module::Build::Platform::Unix - Builder class for Unix platforms - -=over 4 - -=item DESCRIPTION - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 Module::Build::Platform::VMS - Builder class for VMS platforms - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Overridden Methods - -_set_defaults - -=back - -=back - -cull_args - -manpage_separator - -prefixify - -_quote_args - -have_forkpipe - -_backticks - -do_system - -_infer_xs_spec - -rscan_dir - -dist_dir - -man3page_name - -expand_test_dir - -_detildefy - -find_perl_interpreter - -localize_file_path - -localize_dir_path - -=over 4 - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 Module::Build::Platform::VOS - Builder class for VOS platforms - -=over 4 - -=item DESCRIPTION - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 Module::Build::Platform::Windows - Builder class for Windows -platforms - -=over 4 - -=item DESCRIPTION - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 Module::Build::Platform::aix - Builder class for AIX platform - -=over 4 - -=item DESCRIPTION - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 Module::Build::Platform::cygwin - Builder class for Cygwin platform - -=over 4 - -=item DESCRIPTION - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 Module::Build::Platform::darwin - Builder class for Mac OS X -platform - -=over 4 - -=item DESCRIPTION - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 Module::Build::Platform::os2 - Builder class for OS/2 platform - -=over 4 - -=item DESCRIPTION - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 Module::Build::YAML - Provides just enough YAML support so that -Module::Build works even if YAML.pm is not installed - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 Module::CoreList - what modules shipped with versions of perl - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item CAVEATS - -=item HISTORY - -=item AUTHOR - -=item COPYRIGHT - -=item SEE ALSO - -=back - -=head2 Module::Load - runtime require of both modules and files - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Rules - -=item Caveats - -=item ACKNOWLEDGEMENTS - -=item BUG REPORTS - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 Module::Load::Conditional - Looking up module information / loading -at runtime - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Methods - -=item $href = check_install( module => NAME [, version => VERSION, verbose -=> BOOL ] ); - -module, version, verbose, file, dir, version, uptodate - -=back - -=over 4 - -=item $bool = can_load( modules => { NAME => VERSION [,NAME => VERSION] }, -[verbose => BOOL, nocache => BOOL] ) - -modules, verbose, nocache - -=back - -=over 4 - -=item @list = requires( MODULE ); - -=back - -=over 4 - -=item Global Variables - -=over 4 - -=item $Module::Load::Conditional::VERBOSE - -=item $Module::Load::Conditional::FIND_VERSION - -=item $Module::Load::Conditional::CHECK_INC_HASH - -=item $Module::Load::Conditional::CACHE - -=item $Module::Load::Conditional::ERROR - -=back - -=item See Also - -=item BUG REPORTS - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 Module::Loaded - mark modules as loaded or unloaded - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item FUNCTIONS - -=over 4 - -=item $bool = mark_as_loaded( PACKAGE ); - -=back - -=back - -=over 4 - -=item $bool = mark_as_unloaded( PACKAGE ); - -=back - -=over 4 - -=item $loc = is_loaded( PACKAGE ); - -=back - -=over 4 - -=item BUG REPORTS - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 Module::Pluggable - automatically give your module the ability to -have plugins - -=over 4 - -=item SYNOPSIS - -=item EXAMPLE - -=item DESCRIPTION - -=item ADVANCED USAGE - -=item INNER PACKAGES - -=item OPTIONS - -=over 4 - -=item sub_name - -=item search_path - -=item search_dirs - -=item instantiate - -=item require - -=item inner - -=item only - -=item except - -=item package - -=item file_regex - -=item include_editor_junk - -=back - -=item METHODs - -=over 4 - -=item search_path - -=back - -=item FUTURE PLANS - -=item AUTHOR - -=item COPYING - -=item BUGS - -=item SEE ALSO - -=back - -=head2 Module::Pluggable::Object - automatically give your module the -ability to have plugins - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item OPTIONS - -=item AUTHOR - -=item COPYING - -=item BUGS - -=item SEE ALSO - -=back - -=head2 Module::Pluggable::lib::Devel::InnerPackage, Devel::InnerPackage - -find all the inner packages of a package - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item list_packages <package name> - -=back - -=back - -=over 4 - -=item AUTHOR - -=item COPYING - -=item BUGS - -=back - -=head2 Module::Pluggable::lib::Module::Pluggable, Module::Pluggable - -automatically give your module the ability to have plugins - -=over 4 - -=item SYNOPSIS - -=item EXAMPLE - -=item DESCRIPTION - -=item ADVANCED USAGE - -=item INNER PACKAGES - -=item OPTIONS - -=over 4 - -=item sub_name - -=item search_path - -=item search_dirs - -=item instantiate - -=item require - -=item inner - -=item only - -=item except - -=item package - -=item file_regex - -=item include_editor_junk - -=back - -=item METHODs - -=over 4 - -=item search_path - -=back - -=item FUTURE PLANS - -=item AUTHOR - -=item COPYING - -=item BUGS - -=item SEE ALSO - -=back - -=head2 Module::Pluggable::lib::Module::Pluggable::Object, -Module::Pluggable::Object - automatically give your module the ability to -have plugins - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item OPTIONS - -=item AUTHOR - -=item COPYING - -=item BUGS - -=item SEE ALSO - -=back - -=head2 NDBM_File - Tied access to ndbm files - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -C<O_RDONLY>, C<O_WRONLY>, C<O_RDWR> - -=item DIAGNOSTICS - -=over 4 - -=item C<ndbm store returned -1, errno 22, key "..." at ...> - -=back - -=item BUGS AND WARNINGS - -=back - -=head2 NEXT - Provide a pseudo-class NEXT (et al) that allows method -redispatch - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Enforcing redispatch - -=item Avoiding repetitions - -=item Invoking all versions of a method with a single call - -=item Using C<EVERY> methods - -=back - -=item AUTHOR - -=item BUGS AND IRRITATIONS - -=item COPYRIGHT - -=back - -=head2 Net::Cmd - Network Command class (as used by FTP, SMTP etc) - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item USER METHODS - -debug ( VALUE ), message (), code (), ok (), status (), datasend ( DATA ), -dataend () - -=item CLASS METHODS - -debug_print ( DIR, TEXT ), debug_text ( TEXT ), command ( CMD [, ARGS, ... -]), unsupported (), response (), parse_response ( TEXT ), getline (), -ungetline ( TEXT ), rawdatasend ( DATA ), read_until_dot (), tied_fh () - -=item EXPORTS - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 Net::Config - Local configuration data for libnet - -=over 4 - -=item SYNOPSYS - -=item DESCRIPTION - -=item METHODS - -requires_firewall HOST - -=item NetConfig VALUES - -nntp_hosts, snpp_hosts, pop3_hosts, smtp_hosts, ph_hosts, daytime_hosts, -time_hosts, inet_domain, ftp_firewall, ftp_firewall_type, ftp_ext_passive, -ftp_int_passive, local_netmask, test_hosts, test_exists - -=back - -=head2 Net::Domain - Attempt to evaluate the current host's internet name -and domain - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -hostfqdn (), domainname (), hostname (), hostdomain () - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 Net::FTP - FTP Client class - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item OVERVIEW - -=item CONSTRUCTOR - -new ([ HOST ] [, OPTIONS ]) - -=item METHODS - -login ([LOGIN [,PASSWORD [, ACCOUNT] ] ]), authorize ( [AUTH [, RESP]]), -site (ARGS), ascii, binary, rename ( OLDNAME, NEWNAME ), delete ( FILENAME -), cwd ( [ DIR ] ), cdup (), pwd (), restart ( WHERE ), rmdir ( DIR [, -RECURSE ]), mkdir ( DIR [, RECURSE ]), alloc ( SIZE [, RECORD_SIZE] ), ls ( -[ DIR ] ), dir ( [ DIR ] ), get ( REMOTE_FILE [, LOCAL_FILE [, WHERE]] ), -put ( LOCAL_FILE [, REMOTE_FILE ] ), put_unique ( LOCAL_FILE [, REMOTE_FILE -] ), append ( LOCAL_FILE [, REMOTE_FILE ] ), unique_name (), mdtm ( FILE ), -size ( FILE ), supported ( CMD ), hash ( [FILEHANDLE_GLOB_REF],[ -BYTES_PER_HASH_MARK] ), feature ( NAME ), nlst ( [ DIR ] ), list ( [ DIR ] -), retr ( FILE ), stor ( FILE ), stou ( FILE ), appe ( FILE ), port ( [ -PORT ] ), pasv (), pasv_xfer ( SRC_FILE, DEST_SERVER [, DEST_FILE ] ), -pasv_xfer_unique ( SRC_FILE, DEST_SERVER [, DEST_FILE ] ), pasv_wait ( -NON_PASV_SERVER ), abort (), quit () - -=over 4 - -=item Methods for the adventurous - -quot (CMD [,ARGS]) - -=back - -=item THE dataconn CLASS - -read ( BUFFER, SIZE [, TIMEOUT ] ), write ( BUFFER, SIZE [, TIMEOUT ] ), -bytes_read (), abort (), close () - -=item UNIMPLEMENTED - -B<SMNT>, B<HELP>, B<MODE>, B<SYST>, B<STAT>, B<STRU>, B<REIN> - -=item REPORTING BUGS - -=item AUTHOR - -=item SEE ALSO - -=item USE EXAMPLES - -http://www.csh.rit.edu/~adam/Progs/ - -=item CREDITS - -=item COPYRIGHT - -=back - -=head2 Net::NNTP - NNTP Client class - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item CONSTRUCTOR - -new ( [ HOST ] [, OPTIONS ]) - -=item METHODS - -article ( [ MSGID|MSGNUM ], [FH] ), body ( [ MSGID|MSGNUM ], [FH] ), head ( -[ MSGID|MSGNUM ], [FH] ), articlefh ( [ MSGID|MSGNUM ] ), bodyfh ( [ -MSGID|MSGNUM ] ), headfh ( [ MSGID|MSGNUM ] ), nntpstat ( [ MSGID|MSGNUM ] -), group ( [ GROUP ] ), ihave ( MSGID [, MESSAGE ]), last (), date (), -postok (), authinfo ( USER, PASS ), list (), newgroups ( SINCE [, -DISTRIBUTIONS ]), newnews ( SINCE [, GROUPS [, DISTRIBUTIONS ]]), next (), -post ( [ MESSAGE ] ), postfh (), slave (), quit () - -=over 4 - -=item Extension methods - -newsgroups ( [ PATTERN ] ), distributions (), subscriptions (), -overview_fmt (), active_times (), active ( [ PATTERN ] ), xgtitle ( PATTERN -), xhdr ( HEADER, MESSAGE-SPEC ), xover ( MESSAGE-SPEC ), xpath ( -MESSAGE-ID ), xpat ( HEADER, PATTERN, MESSAGE-SPEC), xrover, listgroup ( [ -GROUP ] ), reader - -=back - -=item UNSUPPORTED - -=item DEFINITIONS - -MESSAGE-SPEC, PATTERN, Examples, C<[^]-]>, C<*bdc>, C<[0-9a-zA-Z]>, C<a??d> - -=item SEE ALSO - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 Net::POP3 - Post Office Protocol 3 Client class (RFC1939) - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item CONSTRUCTOR - -new ( [ HOST ] [, OPTIONS ] 0 - -=item METHODS - -auth ( USERNAME, PASSWORD ), user ( USER ), pass ( PASS ), login ( [ USER -[, PASS ]] ), apop ( [ USER [, PASS ]] ), banner (), capa (), capabilities -(), top ( MSGNUM [, NUMLINES ] ), list ( [ MSGNUM ] ), get ( MSGNUM [, FH ] -), getfh ( MSGNUM ), last (), popstat (), ping ( USER ), uidl ( [ MSGNUM ] -), delete ( MSGNUM ), reset (), quit () - -=item NOTES - -=item SEE ALSO - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 Net::Ping - check a remote host for reachability - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Functions - -Net::Ping->new([$proto [, $def_timeout [, $bytes [, $device [, $tos -]]]]]);, $p->ping($host [, $timeout]);, $p->source_verify( { 0 | 1 } );, -$p->service_check( { 0 | 1 } );, $p->tcp_service_check( { 0 | 1 } );, -$p->hires( { 0 | 1 } );, $p->bind($local_addr);, $p->open($host);, $p->ack( -[ $host ] );, $p->nack( $failed_ack_host );, $p->close();, -$p->port_number([$port_number]), pingecho($host [, $timeout]); - -=back - -=item NOTES - -=item INSTALL - -=item BUGS - -=item AUTHORS - -=item COPYRIGHT - -=back - -=head2 Net::SMTP - Simple Mail Transfer Protocol Client - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item EXAMPLES - -=item CONSTRUCTOR - -new ( [ HOST ] [, OPTIONS ] ) - -=item METHODS - -banner (), domain (), hello ( DOMAIN ), host (), etrn ( DOMAIN ), auth ( -USERNAME, PASSWORD ), mail ( ADDRESS [, OPTIONS] ), send ( ADDRESS ), -send_or_mail ( ADDRESS ), send_and_mail ( ADDRESS ), reset (), recipient ( -ADDRESS [, ADDRESS, [...]] [, OPTIONS ] ), to ( ADDRESS [, ADDRESS [...]] -), cc ( ADDRESS [, ADDRESS [...]] ), bcc ( ADDRESS [, ADDRESS [...]] ), -data ( [ DATA ] ), expand ( ADDRESS ), verify ( ADDRESS ), help ( [ -$subject ] ), quit () - -=item ADDRESSES - -=item SEE ALSO - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 Net::Time - time and daytime network client interface - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -inet_time ( [HOST [, PROTOCOL [, TIMEOUT]]]), inet_daytime ( [HOST [, -PROTOCOL [, TIMEOUT]]]) - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 Net::hostent - by-name interface to Perl's built-in gethost*() -functions - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item EXAMPLES - -=item NOTE - -=item AUTHOR - -=back - -=head2 Net::libnetFAQ, libnetFAQ - libnet Frequently Asked Questions - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Where to get this document - -=item How to contribute to this document - -=back - -=item Author and Copyright Information - -=over 4 - -=item Disclaimer - -=back - -=item Obtaining and installing libnet - -=over 4 - -=item What is libnet ? - -=item Which version of perl do I need ? - -=item What other modules do I need ? - -=item What machines support libnet ? - -=item Where can I get the latest libnet release - -=back - -=item Using Net::FTP - -=over 4 - -=item How do I download files from an FTP server ? - -=item How do I transfer files in binary mode ? - -=item How can I get the size of a file on a remote FTP server ? - -=item How can I get the modification time of a file on a remote FTP server -? - -=item How can I change the permissions of a file on a remote server ? - -=item Can I do a reget operation like the ftp command ? - -=item How do I get a directory listing from an FTP server ? - -=item Changing directory to "" does not fail ? - -=item I am behind a SOCKS firewall, but the Firewall option does not work ? - -=item I am behind an FTP proxy firewall, but cannot access machines outside -? - -=item My ftp proxy firewall does not listen on port 21 - -=item Is it possible to change the file permissions of a file on an FTP -server ? - -=item I have seen scripts call a method message, but cannot find it -documented ? - -=item Why does Net::FTP not implement mput and mget methods - -=back - -=item Using Net::SMTP - -=over 4 - -=item Why can't the part of an Email address after the @ be used as the -hostname ? - -=item Why does Net::SMTP not do DNS MX lookups ? - -=item The verify method always returns true ? - -=back - -=item Debugging scripts - -=over 4 - -=item How can I debug my scripts that use Net::* modules ? - -=back - -=item AUTHOR AND COPYRIGHT - -=back - -=head2 Net::netent - by-name interface to Perl's built-in getnet*() -functions - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item EXAMPLES - -=item NOTE - -=item AUTHOR - -=back - -=head2 Net::protoent - by-name interface to Perl's built-in getproto*() -functions - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item NOTE - -=item AUTHOR - -=back - -=head2 Net::servent - by-name interface to Perl's built-in getserv*() -functions - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item EXAMPLES - -=item NOTE - -=item AUTHOR - -=back - -=head2 Netrc, Net::Netrc - OO interface to users netrc file - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item THE .netrc FILE - -machine name, default, login name, password string, account string, macdef -name - -=item CONSTRUCTOR - -lookup ( MACHINE [, LOGIN ]) - -=item METHODS - -login (), password (), account (), lpa () - -=item AUTHOR - -=item SEE ALSO - -=item COPYRIGHT - -=back - -=head2 O - Generic interface to Perl Compiler backends - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item CONVENTIONS - -=item IMPLEMENTATION - -=item BUGS - -=item AUTHOR - -=back - -=head2 ODBM_File - Tied access to odbm files - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -C<O_RDONLY>, C<O_WRONLY>, C<O_RDWR> - -=item DIAGNOSTICS - -=over 4 - -=item C<odbm store returned -1, errno 22, key "..." at ...> - -=back - -=item BUGS AND WARNINGS - -=back - -=head2 Object::Accessor - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item $object = Object::Accessor->new( [ARGS] ); - -=back - -=back - -=over 4 - -=item $bool = $object->mk_accessors( @ACCESSORS | \%ACCESSOR_MAP ); - -=back - -=over 4 - -=item @list = $self->ls_accessors; - -=back - -=over 4 - -=item $ref = $self->ls_allow(KEY) - -=back - -=over 4 - -=item $bool = $self->mk_aliases( alias => method, [alias2 => method2, ...] -); - -=back - -=over 4 - -=item $clone = $self->mk_clone; - -=back - -=over 4 - -=item $bool = $self->mk_flush; - -=back - -=over 4 - -=item $bool = $self->mk_verify; - -=back - -=over 4 - -=item $bool = $self->register_callback( sub { ... } ); - -=back - -=over 4 - -=item $bool = $self->can( METHOD_NAME ) - -=back - -=over 4 - -=item $val = $self->___get( METHOD_NAME ); - -=back - -=over 4 - -=item $bool = $self->___set( METHOD_NAME => VALUE ); - -=back - -=over 4 - -=item $bool = $self->___alias( ALIAS => METHOD ); - -=back - -=over 4 - -=item LVALUE ACCESSORS - -=over 4 - -=item CAVEATS - -Allow handlers, Callbacks - -=back - -=back - -=over 4 - -=item GLOBAL VARIABLES - -=over 4 - -=item $Object::Accessor::FATAL - -=item $Object::Accessor::DEBUG - -=back - -=item TODO - -=over 4 - -=item Create read-only accessors - -=back - -=item CAVEATS - -=item BUG REPORTS - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 Opcode - Disable named opcodes when compiling perl code - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item NOTE - -=item WARNING - -=item Operator Names and Operator Lists - -an operator name (opname), an operator tag name (optag), a negated opname -or optag, an operator set (opset) - -=item Opcode Functions - -opcodes, opset (OP, ...), opset_to_ops (OPSET), opset_to_hex (OPSET), -full_opset, empty_opset, invert_opset (OPSET), verify_opset (OPSET, ...), -define_optag (OPTAG, OPSET), opmask_add (OPSET), opmask, opdesc (OP, ...), -opdump (PAT) - -=item Manipulating Opsets - -=item TO DO (maybe) - -=back - -=over 4 - -=item Predefined Opcode Tags - -:base_core, :base_mem, :base_loop, :base_io, :base_orig, :base_math, -:base_thread, :default, :filesys_read, :sys_db, :browse, :filesys_open, -:filesys_write, :subprocess, :ownprocess, :others, :load, -:still_to_be_decided, :dangerous - -=item SEE ALSO - -=item AUTHORS - -=back - -=head2 Opcode::Safe, Safe - Compile and execute code in restricted -compartments - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -a new namespace, an operator mask - -=item WARNING - -=over 4 - -=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, STRICT), rdo -(FILENAME), root (NAMESPACE), mask (MASK) - -=item Some Safety Issues - -Memory, CPU, Snooping, Signals, State Changes - -=item AUTHOR - -=back - -=back - -=head2 Opcode::ops, ops - Perl pragma to restrict unsafe operations when -compiling - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=back - -=head2 POSIX - Perl interface to IEEE Std 1003.1 - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item NOTE - -=item CAVEATS - -=item FUNCTIONS - -_exit, abort, abs, access, acos, alarm, asctime, asin, assert, atan, atan2, -atexit, atof, atoi, atol, bsearch, calloc, ceil, chdir, chmod, chown, -clearerr, clock, close, closedir, cos, cosh, creat, ctermid, ctime, -cuserid, difftime, div, dup, dup2, errno, execl, execle, execlp, execv, -execve, execvp, exit, exp, fabs, fclose, fcntl, fdopen, feof, ferror, -fflush, fgetc, fgetpos, fgets, fileno, floor, fmod, fopen, fork, fpathconf, -fprintf, fputc, fputs, fread, free, freopen, frexp, fscanf, fseek, fsetpos, -fstat, fsync, ftell, fwrite, getc, getchar, getcwd, getegid, getenv, -geteuid, getgid, getgrgid, getgrnam, getgroups, getlogin, getpgrp, getpid, -getppid, getpwnam, getpwuid, gets, getuid, gmtime, isalnum, isalpha, -isatty, iscntrl, isdigit, isgraph, islower, isprint, ispunct, isspace, -isupper, isxdigit, kill, labs, ldexp, ldiv, link, localeconv, localtime, -log, log10, longjmp, lseek, malloc, mblen, mbstowcs, mbtowc, memchr, -memcmp, memcpy, memmove, memset, mkdir, mkfifo, mktime, modf, nice, -offsetof, open, opendir, pathconf, pause, perror, pipe, pow, printf, putc, -putchar, puts, qsort, raise, rand, read, readdir, realloc, remove, rename, -rewind, rewinddir, rmdir, scanf, setgid, setjmp, setlocale, setpgid, -setsid, setuid, sigaction, siglongjmp, sigpending, sigprocmask, sigsetjmp, -sigsuspend, sin, sinh, sleep, sprintf, sqrt, srand, sscanf, stat, strcat, -strchr, strcmp, strcoll, strcpy, strcspn, strerror, strftime, strlen, -strncat, strncmp, strncpy, strpbrk, strrchr, strspn, strstr, strtod, -strtok, strtol, strtoul, strxfrm, sysconf, system, tan, tanh, tcdrain, -tcflow, tcflush, tcgetpgrp, tcsendbreak, tcsetpgrp, time, times, tmpfile, -tmpnam, tolower, toupper, ttyname, tzname, tzset, umask, uname, ungetc, -unlink, utime, vfprintf, vprintf, vsprintf, wait, waitpid, wcstombs, -wctomb, write - -=item CLASSES - -=over 4 - -=item POSIX::SigAction - -new, handler, mask, flags, safe - -=item POSIX::SigRt - -%SIGRT, SIGRTMIN, SIGRTMAX - -=item POSIX::SigSet - -new, addset, delset, emptyset, fillset, ismember - -=item POSIX::Termios - -new, getattr, getcc, getcflag, getiflag, getispeed, getlflag, getoflag, -getospeed, setattr, setcc, setcflag, setiflag, setispeed, setlflag, -setoflag, setospeed, Baud rate values, Terminal interface values, c_cc -field values, c_cflag field values, c_iflag field values, c_lflag field -values, c_oflag field values - -=back - -=item PATHNAME CONSTANTS - -Constants - -=item POSIX CONSTANTS - -Constants - -=item SYSTEM CONFIGURATION - -Constants - -=item ERRNO - -Constants - -=item FCNTL - -Constants - -=item FLOAT - -Constants - -=item LIMITS - -Constants - -=item LOCALE - -Constants - -=item MATH - -Constants - -=item SIGNAL - -Constants - -=item STAT - -Constants, Macros - -=item STDLIB - -Constants - -=item STDIO - -Constants - -=item TIME - -Constants - -=item UNISTD - -Constants - -=item WAIT - -Constants, WNOHANG, WUNTRACED, Macros, WIFEXITED, WEXITSTATUS, WIFSIGNALED, -WTERMSIG, WIFSTOPPED, WSTOPSIG - -=back - -=head2 Package::Constants - List all constants declared in a package - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item CLASS METHODS - -=over 4 - -=item @const = Package::Constants->list( PACKAGE_NAME ); - -=back - -=back - -=over 4 - -=item GLOBAL VARIABLES - -=over 4 - -=item $Package::Constants::DEBUG - -=back - -=back - -=over 4 - -=item BUG REPORTS - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 Params::Check - A generic input parsing/checking mechanism. - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Template - -default, required, strict_type, defined, no_override, store, allow - -=item Functions - -=over 4 - -=item check( \%tmpl, \%args, [$verbose] ); - -Template, Arguments, Verbose - -=back - -=back - -=over 4 - -=item allow( $test_me, \@criteria ); - -string, regexp, subroutine, array ref - -=back - -=over 4 - -=item last_error() - -=back - -=over 4 - -=item Global Variables - -=over 4 - -=item $Params::Check::VERBOSE - -=item $Params::Check::STRICT_TYPE - -=item $Params::Check::ALLOW_UNKNOWN - -=item $Params::Check::STRIP_LEADING_DASHES - -=item $Params::Check::NO_DUPLICATES - -=item $Params::Check::PRESERVE_CASE - -=item $Params::Check::ONLY_ALLOW_DEFINED - -=item $Params::Check::SANITY_CHECK_TEMPLATE - -=item $Params::Check::WARNINGS_FATAL - -=item $Params::Check::CALLER_DEPTH - -=back - -=item AUTHOR - -=item Acknowledgements - -=item COPYRIGHT - -=back - -=head2 PerlIO - On demand loader for PerlIO layers and root of PerlIO::* -name space - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -:unix, :stdio, :perlio, :crlf, :mmap, :utf8, :bytes, :raw, :pop, :win32 - -=over 4 - -=item Custom Layers - -:encoding, :via - -=item Alternatives to raw - -=item Defaults and how to override them - -=item Querying the layers of filehandles - -=back - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 PerlIO::encoding - encoding layer - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=back - -=head2 PerlIO::scalar - in-memory IO, scalar IO - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item IMPLEMENTATION NOTE - -=back - -=head2 PerlIO::via - Helper class for PerlIO layers implemented in perl - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item EXPECTED METHODS - -$class->PUSHED([$mode[,$fh]]), $obj->POPPED([$fh]), -$obj->UTF8($bellowFlag,[$fh]), $obj->OPEN($path,$mode[,$fh]), -$obj->BINMODE([,$fh]), $obj->FDOPEN($fd[,$fh]), -$obj->SYSOPEN($path,$imode,$perm,[,$fh]), $obj->FILENO($fh), -$obj->READ($buffer,$len,$fh), $obj->WRITE($buffer,$fh), $obj->FILL($fh), -$obj->CLOSE($fh), $obj->SEEK($posn,$whence,$fh), $obj->TELL($fh), -$obj->UNREAD($buffer,$fh), $obj->FLUSH($fh), $obj->SETLINEBUF($fh), -$obj->CLEARERR($fh), $obj->ERROR($fh), $obj->EOF($fh) - -=item EXAMPLES - -=over 4 - -=item Example - a Hexadecimal Handle - -=back - -=back - -=head2 PerlIO::via::QuotedPrint - PerlIO layer for quoted-printable strings - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item REQUIRED MODULES - -=item SEE ALSO - -=item ACKNOWLEDGEMENTS - -=item COPYRIGHT - -=back - -=head2 Pod::Checker, podchecker() - check pod documents for syntax errors - -=over 4 - -=item SYNOPSIS - -=item OPTIONS/ARGUMENTS - -=over 4 - -=item podchecker() - -B<-warnings> =E<gt> I<val> - -=back - -=item DESCRIPTION - -=item DIAGNOSTICS - -=over 4 - -=item Errors - -empty =headn, =over on line I<N> without closing =back, =item without -previous =over, =back without previous =over, No argument for =begin, =end -without =begin, Nested =begin's, =for without formatter specification, -unresolved internal link I<NAME>, Unknown command "I<CMD>", Unknown -interior-sequence "I<SEQ>", nested commands -I<CMD>E<lt>...I<CMD>E<lt>...E<gt>...E<gt>, garbled entity I<STRING>, Entity -number out of range, malformed link LE<lt>E<gt>, nonempty ZE<lt>E<gt>, -empty XE<lt>E<gt>, Spurious text after =pod / =cut, Spurious character(s) -after =back - -=item Warnings - -multiple occurrence of link target I<name>, line containing nothing but -whitespace in paragraph, file does not start with =head, previous =item has -no contents, preceding non-item paragraph(s), =item type mismatch (I<one> -vs. I<two>), I<N> unescaped C<E<lt>E<gt>> in paragraph, Unknown entity, No -items in =over, No argument for =item, empty section in previous paragraph, -Verbatim paragraph in NAME section, =headI<n> without preceding higher -level - -=item Hyperlinks - -ignoring leading/trailing whitespace in link, (section) in '$page' -deprecated, alternative text/node '%s' contains non-escaped | or / - -=back - -=item RETURN VALUE - -=item EXAMPLES - -=item INTERFACE - -=back - -C<Pod::Checker-E<gt>new( %options )> - -C<$checker-E<gt>poderror( @args )>, C<$checker-E<gt>poderror( {%opts}, -@args )> - -C<$checker-E<gt>num_errors()> - -C<$checker-E<gt>num_warnings()> - -C<$checker-E<gt>name()> - -C<$checker-E<gt>node()> - -C<$checker-E<gt>idx()> - -C<$checker-E<gt>hyperlink()> - -=over 4 - -=item AUTHOR - -=back - -=head2 Pod::Escapes -- for resolving Pod EE<lt>...E<gt> sequences - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item GOODIES - -e2char($e_content), e2charnum($e_content), $Name2character{I<name>}, -$Name2character_number{I<name>}, $Latin1Code_to_fallback{I<integer>}, -$Latin1Char_to_fallback{I<character>}, $Code2USASCII{I<integer>} - -=item CAVEATS - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::Find - find POD documents in directory trees - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=over 4 - -=item C<pod_find( { %opts } , @directories )> - -C<-verbose =E<gt> 1>, C<-perl =E<gt> 1>, C<-script =E<gt> 1>, C<-inc =E<gt> -1> - -=back - -=over 4 - -=item C<simplify_name( $str )> - -=back - -=over 4 - -=item C<pod_where( { %opts }, $pod )> - -C<-inc =E<gt> 1>, C<-dirs =E<gt> [ $dir1, $dir2, ... ]>, C<-verbose =E<gt> -1> - -=back - -=over 4 - -=item C<contains_pod( $file , $verbose )> - -=back - -=over 4 - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 Pod::Html - module to convert pod files to HTML - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item FUNCTIONS - -=over 4 - -=item pod2html - -backlink, cachedir, css, flush, header, help, hiddendirs, htmldir, -htmlroot, index, infile, libpods, netscape, outfile, podpath, podroot, -quiet, recurse, title, verbose - -=item htmlify - -=item anchorify - -=back - -=item ENVIRONMENT - -=item AUTHOR - -=item SEE ALSO - -=item COPYRIGHT - -=back - -=head2 Pod::InputObjects - objects representing POD input paragraphs, -commands, etc. - -=over 4 - -=item SYNOPSIS - -=item REQUIRES - -=item EXPORTS - -=item DESCRIPTION - -package B<Pod::InputSource>, package B<Pod::Paragraph>, package -B<Pod::InteriorSequence>, package B<Pod::ParseTree> - -=back - -=over 4 - -=item B<Pod::InputSource> - -=back - -=over 4 - -=item B<new()> - -=back - -=over 4 - -=item B<name()> - -=back - -=over 4 - -=item B<handle()> - -=back - -=over 4 - -=item B<was_cutting()> - -=back - -=over 4 - -=item B<Pod::Paragraph> - -=back - -=over 4 - -=item Pod::Paragraph-E<gt>B<new()> - -=back - -=over 4 - -=item $pod_para-E<gt>B<cmd_name()> - -=back - -=over 4 - -=item $pod_para-E<gt>B<text()> - -=back - -=over 4 - -=item $pod_para-E<gt>B<raw_text()> - -=back - -=over 4 - -=item $pod_para-E<gt>B<cmd_prefix()> - -=back - -=over 4 - -=item $pod_para-E<gt>B<cmd_separator()> - -=back - -=over 4 - -=item $pod_para-E<gt>B<parse_tree()> - -=back - -=over 4 - -=item $pod_para-E<gt>B<file_line()> - -=back - -=over 4 - -=item B<Pod::InteriorSequence> - -=back - -=over 4 - -=item Pod::InteriorSequence-E<gt>B<new()> - -=back - -=over 4 - -=item $pod_seq-E<gt>B<cmd_name()> - -=back - -=over 4 - -=item $pod_seq-E<gt>B<prepend()> - -=back - -=over 4 - -=item $pod_seq-E<gt>B<append()> - -=back - -=over 4 - -=item $pod_seq-E<gt>B<nested()> - -=back - -=over 4 - -=item $pod_seq-E<gt>B<raw_text()> - -=back - -=over 4 - -=item $pod_seq-E<gt>B<left_delimiter()> - -=back - -=over 4 - -=item $pod_seq-E<gt>B<right_delimiter()> - -=back - -=over 4 - -=item $pod_seq-E<gt>B<parse_tree()> - -=back - -=over 4 - -=item $pod_seq-E<gt>B<file_line()> - -=back - -=over 4 - -=item Pod::InteriorSequence::B<DESTROY()> - -=back - -=over 4 - -=item B<Pod::ParseTree> - -=back - -=over 4 - -=item Pod::ParseTree-E<gt>B<new()> - -=back - -=over 4 - -=item $ptree-E<gt>B<top()> - -=back - -=over 4 - -=item $ptree-E<gt>B<children()> - -=back - -=over 4 - -=item $ptree-E<gt>B<prepend()> - -=back - -=over 4 - -=item $ptree-E<gt>B<append()> - -=back - -=over 4 - -=item $ptree-E<gt>B<raw_text()> - -=back - -=over 4 - -=item Pod::ParseTree::B<DESTROY()> - -=back - -=over 4 - -=item SEE ALSO - -=item AUTHOR - -=back - -=head2 Pod::LaTeX - Convert Pod data to formatted Latex - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=over 4 - -=item OBJECT METHODS - -C<initialize> - -=back - -=over 4 - -=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 4 - -=item Subclassed methods - -=back - -B<begin_pod> - -B<end_pod> - -B<command> - -B<verbatim> - -B<textblock> - -B<interior_sequence> - -=over 4 - -=item List Methods - -B<begin_list> - -=back - -B<end_list> - -B<add_item> - -=over 4 - -=item Methods for headings - -B<head> - -=back - -=over 4 - -=item Internal methods - -B<_output> - -=back - -B<_replace_special_chars> - -B<_replace_special_chars_late> - -B<_create_label> - -B<_create_index> - -B<_clean_latex_commands> - -B<_split_delimited> - -=over 4 - -=item NOTES - -=item SEE ALSO - -=item AUTHORS - -=item COPYRIGHT - -=item REVISION - -=back - -=head2 Pod::Man - Convert POD data to formatted *roff input - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -center, date, fixed, fixedbold, fixeditalic, fixedbolditalic, name, quotes, -release, section, stderr, utf8 - -=item DIAGNOSTICS - -roff font should be 1 or 2 chars, not "%s", Invalid quote specification -"%s" - -=item BUGS - -=item CAVEATS - -=item AUTHOR - -=item COPYRIGHT AND LICENSE - -=item SEE ALSO - -=back - -=head2 Pod::ParseLink - Parse an LE<lt>E<gt> formatting code in POD text - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=item AUTHOR - -=item COPYRIGHT AND LICENSE - -=back - -=head2 Pod::ParseUtils - helpers for POD parsing and conversion - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=over 4 - -=item Pod::List - -Pod::List-E<gt>new() - -=back - -$list-E<gt>file() - -$list-E<gt>start() - -$list-E<gt>indent() - -$list-E<gt>type() - -$list-E<gt>rx() - -$list-E<gt>item() - -$list-E<gt>parent() - -$list-E<gt>tag() - -=over 4 - -=item Pod::Hyperlink - -Pod::Hyperlink-E<gt>new() - -=back - -$link-E<gt>parse($string) - -$link-E<gt>markup($string) - -$link-E<gt>text() - -$link-E<gt>warning() - -$link-E<gt>file(), $link-E<gt>line() - -$link-E<gt>page() - -$link-E<gt>node() - -$link-E<gt>alttext() - -$link-E<gt>type() - -$link-E<gt>link() - -=over 4 - -=item Pod::Cache - -Pod::Cache-E<gt>new() - -=back - -$cache-E<gt>item() - -$cache-E<gt>find_page($name) - -=over 4 - -=item Pod::Cache::Item - -Pod::Cache::Item-E<gt>new() - -=back - -$cacheitem-E<gt>page() - -$cacheitem-E<gt>description() - -$cacheitem-E<gt>path() - -$cacheitem-E<gt>file() - -$cacheitem-E<gt>nodes() - -$cacheitem-E<gt>find_node($name) - -$cacheitem-E<gt>idx() - -=over 4 - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 Pod::Parser - base class for creating POD filters and translators - -=over 4 - -=item SYNOPSIS - -=item REQUIRES - -=item EXPORTS - -=item DESCRIPTION - -=item QUICK OVERVIEW - -=item PARSING OPTIONS - -B<-want_nonPODs> (default: unset), B<-process_cut_cmd> (default: unset), -B<-warnings> (default: unset) - -=back - -=over 4 - -=item RECOMMENDED SUBROUTINE/METHOD OVERRIDES - -=back - -=over 4 - -=item B<command()> - -C<$cmd>, C<$text>, C<$line_num>, C<$pod_para> - -=back - -=over 4 - -=item B<verbatim()> - -C<$text>, C<$line_num>, C<$pod_para> - -=back - -=over 4 - -=item B<textblock()> - -C<$text>, C<$line_num>, C<$pod_para> - -=back - -=over 4 - -=item B<interior_sequence()> - -=back - -=over 4 - -=item OPTIONAL SUBROUTINE/METHOD OVERRIDES - -=back - -=over 4 - -=item B<new()> - -=back - -=over 4 - -=item B<initialize()> - -=back - -=over 4 - -=item B<begin_pod()> - -=back - -=over 4 - -=item B<begin_input()> - -=back - -=over 4 - -=item B<end_input()> - -=back - -=over 4 - -=item B<end_pod()> - -=back - -=over 4 - -=item B<preprocess_line()> - -=back - -=over 4 - -=item B<preprocess_paragraph()> - -=back - -=over 4 - -=item METHODS FOR PARSING AND PROCESSING - -=back - -=over 4 - -=item B<parse_text()> - -B<-expand_seq> =E<gt> I<code-ref>|I<method-name>, B<-expand_text> =E<gt> -I<code-ref>|I<method-name>, B<-expand_ptree> =E<gt> -I<code-ref>|I<method-name> - -=back - -=over 4 - -=item B<interpolate()> - -=back - -=over 4 - -=item B<parse_paragraph()> - -=back - -=over 4 - -=item B<parse_from_filehandle()> - -=back - -=over 4 - -=item B<parse_from_file()> - -=back - -=over 4 - -=item ACCESSOR METHODS - -=back - -=over 4 - -=item B<errorsub()> - -=back - -=over 4 - -=item B<cutting()> - -=back - -=over 4 - -=item B<parseopts()> - -=back - -=over 4 - -=item B<output_file()> - -=back - -=over 4 - -=item B<output_handle()> - -=back - -=over 4 - -=item B<input_file()> - -=back - -=over 4 - -=item B<input_handle()> - -=back - -=over 4 - -=item B<input_streams()> - -=back - -=over 4 - -=item B<top_stream()> - -=back - -=over 4 - -=item PRIVATE METHODS AND DATA - -=back - -=over 4 - -=item B<_push_input_stream()> - -=back - -=over 4 - -=item B<_pop_input_stream()> - -=back - -=over 4 - -=item TREE-BASED PARSING - -=item CAVEATS - -=item SEE ALSO - -=item AUTHOR - -=back - -=head2 Pod::Perldoc - Look up Perl documentation in Pod format. - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::Perldoc::BaseTo - Base for Pod::Perldoc formatters - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::Perldoc::GetOptsOO - Customized option parser for Pod::Perldoc - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::Perldoc::ToChecker - let Perldoc check Pod for errors - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::Perldoc::ToMan - let Perldoc render Pod as man pages - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item CAVEAT - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::Perldoc::ToNroff - let Perldoc convert Pod to nroff - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item CAVEAT - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::Perldoc::ToPod - let Perldoc render Pod as ... Pod! - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::Perldoc::ToRtf - let Perldoc render Pod as RTF - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::Perldoc::ToText - let Perldoc render Pod as plaintext - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item CAVEAT - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::Perldoc::ToTk - let Perldoc use Tk::Pod to render Pod - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=item AUTHOR - -=back - -=head2 Pod::Perldoc::ToXml - let Perldoc render Pod as XML - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::PlainText - Convert POD data to formatted ASCII text - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -alt, indent, loose, sentence, width - -=item DIAGNOSTICS - -Bizarre space in item, Can't open %s for reading: %s, Unknown escape: %s, -Unknown sequence: %s, Unmatched =back - -=item RESTRICTIONS - -=item NOTES - -=item SEE ALSO - -=item AUTHOR - -=back - -=head2 Pod::Plainer - Perl extension for converting Pod to old style Pod. - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item EXPORT - -=back - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 Pod::Select, podselect() - extract selected sections of POD from -input - -=over 4 - -=item SYNOPSIS - -=item REQUIRES - -=item EXPORTS - -=item DESCRIPTION - -=item SECTION SPECIFICATIONS - -=item RANGE SPECIFICATIONS - -=back - -=over 4 - -=item OBJECT METHODS - -=back - -=over 4 - -=item B<curr_headings()> - -=back - -=over 4 - -=item B<select()> - -=back - -=over 4 - -=item B<add_selection()> - -=back - -=over 4 - -=item B<clear_selections()> - -=back - -=over 4 - -=item B<match_section()> - -=back - -=over 4 - -=item B<is_selected()> - -=back - -=over 4 - -=item EXPORTED FUNCTIONS - -=back - -=over 4 - -=item B<podselect()> - -B<-output>, B<-sections>, B<-ranges> - -=back - -=over 4 - -=item PRIVATE METHODS AND DATA - -=back - -=over 4 - -=item B<_compile_section_spec()> - -=back - -=over 4 - -=item $self->{_SECTION_HEADINGS} - -=back - -=over 4 - -=item $self->{_SELECTED_SECTIONS} - -=back - -=over 4 - -=item SEE ALSO - -=item AUTHOR - -=back - -=head2 Pod::Simple - framework for parsing Pod - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item MAIN METHODS - -C<< $parser = I<SomeClass>->new(); >>, C<< $parser->output_fh( *OUT ); >>, -C<< $parser->output_string( \$somestring ); >>, C<< $parser->parse_file( -I<$some_filename> ); >>, C<< $parser->parse_file( *INPUT_FH ); >>, C<< -$parser->parse_string_document( I<$all_content> ); >>, C<< -$parser->parse_lines( I<...@lines...>, undef ); >>, C<< -$parser->content_seen >>, C<< I<SomeClass>->filter( I<$filename> ); >>, C<< -I<SomeClass>->filter( I<*INPUT_FH> ); >>, C<< I<SomeClass>->filter( -I<\$document_content> ); >> - -=item SECONDARY METHODS - -C<< $parser->no_whining( I<SOMEVALUE> ) >>, C<< $parser->no_errata_section( -I<SOMEVALUE> ) >>, C<< $parser->complain_stderr( I<SOMEVALUE> ) >>, C<< -$parser->source_filename >>, C<< $parser->doc_has_started >>, C<< -$parser->source_dead >> - -=item CAVEATS - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -Allison Randal C<allison@perl.org>, Hans Dieter Pearcey C<hdp@cpan.org> - -=back - -=head2 Pod::Simple::Checker -- check the Pod syntax of a document - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::Simple::Debug -- put Pod::Simple into trace/debug mode - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item CAVEATS - -=item GUTS - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::Simple::DumpAsText -- dump Pod-parsing events as text - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::Simple::DumpAsXML -- turn Pod into XML - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::Simple::HTML - convert Pod to HTML - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item CALLING FROM THE COMMAND LINE - -=item CALLING FROM PERL - -=item METHODS - -=item SUBCLASSING - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::Simple::HTMLBatch - convert several Pod files to several HTML -files - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item FROM THE COMMAND LINE - -=back - -=item MAIN METHODS - -$batchconv = Pod::Simple::HTMLBatch->new;, $batchconv->batch_convert( -I<indirs>, I<outdir> );, $batchconv->batch_convert( undef , ...);, -$batchconv->batch_convert( q{@INC}, ...);, $batchconv->batch_convert( -\@dirs , ...);, $batchconv->batch_convert( "somedir" , ...);, -$batchconv->batch_convert( 'somedir:someother:also' , ...);, -$batchconv->batch_convert( ... , undef );, $batchconv->batch_convert( ... , -'somedir' ); - -=over 4 - -=item ACCESSOR METHODS - -$batchconv->verbose( I<nonnegative_integer> );, $batchconv->index( -I<true-or-false> );, $batchconv->contents_file( I<filename> );, -$batchconv->contents_page_start( I<HTML_string> );, -$batchconv->contents_page_end( I<HTML_string> );, $batchconv->add_css( $url -);, $batchconv->add_javascript( $url );, $batchconv->css_flurry( -I<true-or-false> );, $batchconv->javascript_flurry( I<true-or-false> );, -$batchconv->no_contents_links( I<true-or-false> );, -$batchconv->html_render_class( I<classname> ); - -=back - -=item NOTES ON CUSTOMIZATION - -=item ASK ME! - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::Simple::LinkSection -- represent "section" attributes of L -codes - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::Simple::Methody -- turn Pod::Simple events into method calls - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHOD CALLING - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::Simple::PullParser -- a pull-parser interface to parsing Pod - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -my $token = $parser->get_token, $parser->unget_token( $token ), -$parser->unget_token( $token1, $token2, ... ), $parser->set_source( -$filename ), $parser->set_source( $filehandle_object ), -$parser->set_source( \$document_source ), $parser->set_source( -\@document_lines ), $parser->parse_file(...), -$parser->parse_string_document(...), $parser->filter(...), -$parser->parse_from_file(...), my $title_string = $parser->get_title, my -$title_string = $parser->get_short_title, $author_name = -$parser->get_author, $description_name = $parser->get_description, -$version_block = $parser->get_version - -=item NOTE - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::Simple::PullParserEndToken -- end-tokens from -Pod::Simple::PullParser - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -$token->tagname, $token->tagname(I<somestring>), $token->tag(...), -$token->is_tag(I<somestring>) or $token->is_tagname(I<somestring>) - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::Simple::PullParserStartToken -- start-tokens from -Pod::Simple::PullParser - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -$token->tagname, $token->tagname(I<somestring>), $token->tag(...), -$token->is_tag(I<somestring>) or $token->is_tagname(I<somestring>), -$token->attr(I<attrname>), $token->attr(I<attrname>, I<newvalue>), -$token->attr_hash - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::Simple::PullParserTextToken -- text-tokens from -Pod::Simple::PullParser - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -$token->text, $token->text(I<somestring>), $token->text_r() - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::Simple::PullParserToken -- tokens from Pod::Simple::PullParser - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -$token->type, $token->is_start, $token->is_text, $token->is_end, -$token->dump - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::Simple::RTF -- format Pod as RTF - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item FORMAT CONTROL ATTRIBUTES - -$parser->head1_halfpoint_size( I<halfpoint_integer> );, -$parser->head2_halfpoint_size( I<halfpoint_integer> );, -$parser->head3_halfpoint_size( I<halfpoint_integer> );, -$parser->head4_halfpoint_size( I<halfpoint_integer> );, -$parser->codeblock_halfpoint_size( I<halfpoint_integer> );, -$parser->header_halfpoint_size( I<halfpoint_integer> );, -$parser->normal_halfpoint_size( I<halfpoint_integer> );, -$parser->no_proofing_exemptions( I<true_or_false> );, $parser->doc_lang( -I<microsoft_decimal_language_code> ) - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::Simple::Search - find POD documents in directory trees - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item CONSTRUCTOR - -=item ACCESSORS - -$search->inc( I<true-or-false> );, $search->verbose( I<nonnegative-number> -);, $search->limit_glob( I<some-glob-string> );, $search->callback( -I<\&some_routine> );, $search->laborious( I<true-or-false> );, -$search->shadows( I<true-or-false> );, $search->limit_re( I<some-regxp> );, -$search->dir_prefix( I<some-string-value> );, $search->progress( -I<some-progress-object> );, $name2path = $self->name2path;, $path2name = -$self->path2name; - -=item MAIN SEARCH METHODS - -=over 4 - -=item C<< $search->survey( @directories ) >> - -C<name2path>, C<path2name> - -=item C<< $search->simplify_name( $str ) >> - -=item C<< $search->find( $pod ) >> - -=item C<< $search->find( $pod, @search_dirs ) >> - -=item C<< $self->contains_pod( $file ) >> - -=back - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 Pod::Simple::Subclassing -- write a formatter as a Pod::Simple -subclass - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Events - -C<< $parser->_handle_element_start( I<element_name>, I<attr_hashref> ) >>, -C<< $parser->_handle_element_end( I<element_name> ) >>, C<< -$parser->_handle_text( I<text_string> ) >>, events with an element_name -of Document, events with an element_name of Para, events with an -element_name of B, C, F, or I, events with an element_name of S, events -with an element_name of X, events with an element_name of L, events with an -element_name of E or Z, events with an element_name of Verbatim, events -with an element_name of head1 .. head4, events with an element_name of -over-bullet, events with an element_name of over-number, events with an -element_name of over-text, events with an element_name of over-block, -events with an element_name of item-bullet, events with an element_name of -item-number, events with an element_name of item-text, events with an -element_name of for, events with an element_name of Data - -=item More Pod::Simple Methods - -C<< $parser->accept_targets( I<SOMEVALUE> ) >>, C<< -$parser->accept_targets_as_text( I<SOMEVALUE> ) >>, C<< -$parser->accept_codes( I<Codename>, I<Codename>... ) >>, C<< -$parser->accept_directive_as_data( I<directive_name> ) >>, C<< -$parser->accept_directive_as_verbatim( I<directive_name> ) >>, C<< -$parser->accept_directive_as_processed( I<directive_name> ) >>, C<< -$parser->nbsp_for_S( I<BOOLEAN> ); >>, C<< $parser->version_report() >>, -C<< $parser->pod_para_count() >>, C<< $parser->line_count() >>, C<< -$parser->nix_X_codes( I<SOMEVALUE> ) >>, C<< $parser->merge_text( -I<SOMEVALUE> ) >>, C<< $parser->code_handler( I<CODE_REF> ) >>, C<< -$parser->cut_handler( I<CODE_REF> ) >>, C<< $parser->whine( -I<linenumber>, I<complaint string> ) >>, C<< $parser->scream( -I<linenumber>, I<complaint string> ) >>, C<< $parser->source_dead(1) >>, -C<< $parser->hide_line_numbers( I<SOMEVALUE> ) >>, C<< $parser->no_whining( -I<SOMEVALUE> ) >>, C<< $parser->no_errata_section( I<SOMEVALUE> ) >>, C<< -$parser->complain_stderr( I<SOMEVALUE> ) >>, C<< $parser->bare_output( -I<SOMEVALUE> ) >>, C<< $parser->preserve_whitespace( I<SOMEVALUE> ) >> - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::Simple::Text -- format Pod as plaintext - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::Simple::TextContent -- get the text content of Pod - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::Simple::XHTML -- format Pod as validating XHTML - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=over 4 - -=item METHODS - -=over 4 - -=item perldoc_url_prefix - -=item perldoc_url_postfix - -=item title_prefix, title_postfix - -=item html_css - -=item html_javascript - -=item html_doctype - -=item html_header_tags - -=item default_title - -=item force_title - -=item html_header, html_footer - -=item index - -=back - -=back - -=over 4 - -=item SUBCLASSING - -=back - -=over 4 - -=item handle_text - -=back - -=over 4 - -=item SEE ALSO - -=item COPYRIGHT - -=item AUTHOR - -=back - -=head2 Pod::Simple::XMLOutStream -- turn Pod into XML - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=item ABOUT EXTENDING POD - -=item ASK ME! - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::SimpleTree, Pod::Simple::SimpleTree -- parse Pod into a simple -parse tree - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=item Tree Contents - -=item SEE ALSO - -=item COPYRIGHT AND DISCLAIMERS - -=item AUTHOR - -=back - -=head2 Pod::Text - Convert POD data to formatted ASCII text - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -alt, code, indent, loose, margin, quotes, sentence, stderr, utf8, width - -=item DIAGNOSTICS - -Bizarre space in item, Item called without tag, Can't open %s for reading: -%s, Invalid quote specification "%s" - -=item BUGS - -=item CAVEATS - -=item NOTES - -=item SEE ALSO - -=item AUTHOR - -=item COPYRIGHT AND LICENSE - -=back - -=head2 Pod::Text::Color - Convert POD data to formatted color ASCII text - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item BUGS - -=item SEE ALSO - -=item AUTHOR - -=item COPYRIGHT AND LICENSE - -=back - -=head2 Pod::Text::Overstrike, =for stopwords -overstrike - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item BUGS - -=item SEE ALSO - -=item AUTHOR - -=item COPYRIGHT AND LICENSE - -=back - -=head2 Pod::Text::Termcap - Convert POD data to ASCII text with format -escapes - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item NOTES - -=item SEE ALSO - -=item AUTHOR - -=item COPYRIGHT AND LICENSE - -=back - -=head2 Pod::Usage, pod2usage() - print a usage message from embedded pod -documentation - -=over 4 - -=item SYNOPSIS - -=item ARGUMENTS - -C<-message>, C<-msg>, C<-exitval>, C<-verbose>, C<-sections>, C<-output>, -C<-input>, C<-pathlist>, C<-noperldoc> - -=item DESCRIPTION - -=item EXAMPLES - -=over 4 - -=item Recommended Use - -=back - -=item CAVEATS - -=item AUTHOR - -=item ACKNOWLEDGMENTS - -=back - -=head2 SDBM_File - Tied access to sdbm files - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -C<O_RDONLY>, C<O_WRONLY>, C<O_RDWR> - -=item DIAGNOSTICS - -=over 4 - -=item C<sdbm store returned -1, errno 22, key "..." at ...> - -=back - -=item BUGS AND WARNINGS - -=back - -=head2 Safe - Compile and execute code in restricted compartments - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -a new namespace, an operator mask - -=item WARNING - -=over 4 - -=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, STRICT), rdo -(FILENAME), root (NAMESPACE), mask (MASK) - -=item Some Safety Issues - -Memory, CPU, Snooping, Signals, State Changes - -=item AUTHOR - -=back - -=back - -=head2 Scalar::Util - A selection of general-utility scalar subroutines - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -blessed EXPR, dualvar NUM, STRING, isvstring EXPR, isweak EXPR, -looks_like_number EXPR, openhandle FH, refaddr EXPR, reftype EXPR, -set_prototype CODEREF, PROTOTYPE, tainted EXPR, weaken REF - -=item KNOWN BUGS - -=item SEE ALSO - -=item COPYRIGHT - -=back - -=head2 Search::Dict, look - search for key in dictionary file - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=head2 SelectSaver - save and restore selected file handle - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=head2 SelfLoader - load functions only on demand - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item The __DATA__ token - -=item SelfLoader autoloading - -=item Autoloading and package lexicals - -=item SelfLoader and AutoLoader - -=item __DATA__, __END__, and the FOOBAR::DATA filehandle. - -=item Classes and inherited methods. - -=back - -=item Multiple packages and fully qualified subroutine names - -=item AUTHOR - -=item COPYRIGHT AND LICENSE - -=back - -B<_make_cmd> - -=head2 Shell - run shell commands transparently within perl - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Caveats - -=item Escaping Magic Characters - -=item Configuration - -=back - -=item BUGS - -=item AUTHOR - -=back - -=head2 Socket, sockaddr_in, sockaddr_un, inet_aton, inet_ntoa - load the C -socket.h defines and structure manipulators - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -inet_aton HOSTNAME, inet_ntoa IP_ADDRESS, INADDR_ANY, INADDR_BROADCAST, -INADDR_LOOPBACK, INADDR_NONE, sockaddr_family SOCKADDR, sockaddr_in PORT, -ADDRESS, sockaddr_in SOCKADDR_IN, pack_sockaddr_in PORT, IP_ADDRESS, -unpack_sockaddr_in SOCKADDR_IN, sockaddr_un PATHNAME, sockaddr_un -SOCKADDR_UN, pack_sockaddr_un PATH, unpack_sockaddr_un SOCKADDR_UN - -=back - -=head2 Storable - persistence for Perl data structures - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item MEMORY STORE - -=item ADVISORY LOCKING - -=item SPEED - -=item CANONICAL REPRESENTATION - -=item CODE REFERENCES - -=item FORWARD COMPATIBILITY - -utf8 data, restricted hashes, files from future versions of Storable - -=item ERROR REPORTING - -=item WIZARDS ONLY - -=over 4 - -=item Hooks - -C<STORABLE_freeze> I<obj>, I<cloning>, C<STORABLE_thaw> I<obj>, I<cloning>, -I<serialized>, .., C<STORABLE_attach> I<class>, I<cloning>, I<serialized> - -=item Predicates - -C<Storable::last_op_in_netorder>, C<Storable::is_storing>, -C<Storable::is_retrieving> - -=item Recursion - -=item Deep Cloning - -=back - -=item Storable magic - -$info = Storable::file_magic( $filename ), C<version>, C<version_nv>, -C<major>, C<minor>, C<hdrsize>, C<netorder>, C<byteorder>, C<intsize>, -C<longsize>, C<ptrsize>, C<nvsize>, C<file>, $info = Storable::read_magic( -$buffer ), $info = Storable::read_magic( $buffer, $must_be_file ) - -=item EXAMPLES - -=item WARNING - -=item BUGS - -=over 4 - -=item 64 bit data in perl 5.6.0 and 5.6.1 - -=back - -=item CREDITS - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 Switch - A switch statement for Perl - -=over 4 - -=item VERSION - -=item SYNOPSIS - -=item BACKGROUND - -=item DESCRIPTION - -=over 4 - -=item Allowing fall-through - -=item Automating fall-through - -=item Alternative syntax - -=item Higher-order Operations - -=back - -=item DEPENDENCIES - -=item AUTHOR - -=item BUGS - -=item LIMITATIONS - -=item COPYRIGHT - -=back - -=head2 Symbol - manipulate Perl symbols and their names - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item BUGS - -=back - -=head2 Sys::Hostname - Try every conceivable way to get hostname - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item AUTHOR - -=back - -=head2 Syslog, Sys::Syslog - Perl interface to the UNIX syslog(3) calls - -=over 4 - -=item VERSION - -=item SYNOPSIS - -=item DESCRIPTION - -=item EXPORTS - -=item FUNCTIONS - -B<openlog($ident, $logopt, $facility)>, B<syslog($priority, $message)>, -B<syslog($priority, $format, @args)>, B<Note>, -B<setlogmask($mask_priority)>, B<setlogsock($sock_type)>, -B<setlogsock($sock_type, $stream_location)> (added in Perl 5.004_02), -B<setlogsock($sock_type, $stream_location, $sock_timeout)> (added in 0.25), -B<Note>, B<closelog()> - -=item THE RULES OF SYS::SYSLOG - -=item EXAMPLES - -=item CONSTANTS - -=over 4 - -=item Facilities - -=item Levels - -=back - -=item DIAGNOSTICS - -C<Invalid argument passed to setlogsock>, C<eventlog passed to setlogsock, -but no Win32 API available>, C<no connection to syslog available>, C<stream -passed to setlogsock, but %s is not writable>, C<stream passed to -setlogsock, but could not find any device>, C<tcp passed to setlogsock, but -tcp service unavailable>, C<syslog: expecting argument %s>, C<syslog: -invalid level/facility: %s>, C<syslog: too many levels given: %s>, -C<syslog: too many facilities given: %s>, C<syslog: level must be given>, -C<udp passed to setlogsock, but udp service unavailable>, C<unix passed to -setlogsock, but path not available> - -=item SEE ALSO - -=over 4 - -=item Manual Pages - -=item RFCs - -=item Articles - -=item Event Log - -=back - -=item AUTHORS & ACKNOWLEDGEMENTS - -=item BUGS - -=item SUPPORT - -AnnoCPAN: Annotated CPAN documentation, CPAN Ratings, RT: CPAN's request -tracker, Search CPAN, Kobes' CPAN Search, Perl Documentation - -=item COPYRIGHT - -=item LICENSE - -=back - -=head2 Syslog::Syslog, Sys::Syslog - Perl interface to the UNIX syslog(3) -calls - -=over 4 - -=item VERSION - -=item SYNOPSIS - -=item DESCRIPTION - -=item EXPORTS - -=item FUNCTIONS - -B<openlog($ident, $logopt, $facility)>, B<syslog($priority, $message)>, -B<syslog($priority, $format, @args)>, B<Note>, -B<setlogmask($mask_priority)>, B<setlogsock($sock_type)>, -B<setlogsock($sock_type, $stream_location)> (added in Perl 5.004_02), -B<setlogsock($sock_type, $stream_location, $sock_timeout)> (added in 0.25), -B<Note>, B<closelog()> - -=item THE RULES OF SYS::SYSLOG - -=item EXAMPLES - -=item CONSTANTS - -=over 4 - -=item Facilities - -=item Levels - -=back - -=item DIAGNOSTICS - -C<Invalid argument passed to setlogsock>, C<eventlog passed to setlogsock, -but no Win32 API available>, C<no connection to syslog available>, C<stream -passed to setlogsock, but %s is not writable>, C<stream passed to -setlogsock, but could not find any device>, C<tcp passed to setlogsock, but -tcp service unavailable>, C<syslog: expecting argument %s>, C<syslog: -invalid level/facility: %s>, C<syslog: too many levels given: %s>, -C<syslog: too many facilities given: %s>, C<syslog: level must be given>, -C<udp passed to setlogsock, but udp service unavailable>, C<unix passed to -setlogsock, but path not available> - -=item SEE ALSO - -=over 4 - -=item Manual Pages - -=item RFCs - -=item Articles - -=item Event Log - -=back - -=item AUTHORS & ACKNOWLEDGEMENTS - -=item BUGS - -=item SUPPORT - -AnnoCPAN: Annotated CPAN documentation, CPAN Ratings, RT: CPAN's request -tracker, Search CPAN, Kobes' CPAN Search, Perl Documentation - -=item COPYRIGHT - -=item LICENSE - -=back - -=head2 Syslog::win32::Win32, Sys::Syslog::Win32 - Win32 support for -Sys::Syslog - -=over 4 - -=item DESCRIPTION - -=item SEE ALSO - -=item AUTHORS - -=item LICENSE - -=back - -=head2 TAP::Base - Base class that provides common functionality to -L<TAP::Parser> and L<TAP::Harness> - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=head2 TAP::Formatter::Color - Run Perl test scripts with color - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item SYNOPSIS - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=head2 TAP::Formatter::Console - Harness output delegate for default -console output - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item SYNOPSIS - -=back - -=over 4 - -=item METHODS - -=over 4 - -=item Class Methods - -C<verbosity>, C<verbose>, C<timer>, C<failures>, C<quiet>, C<really_quiet>, -C<silent>, C<errors>, C<directives>, C<stdout>, C<color>, C<jobs>, -C<show_count> - -=back - -=back - -=head2 TAP::Formatter::Console::ParallelSession - Harness output delegate -for parallel console output - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item SYNOPSIS - -=back - -=over 4 - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=head2 TAP::Formatter::Console::Session - Harness output delegate for -default console output - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item SYNOPSIS - -=back - -=over 4 - -=item METHODS - -=over 4 - -=item Class Methods - -C<formatter>, C<parser>, C<name>, C<show_count> - -=back - -=back - -=head2 TAP::Harness - Run test scripts with statistics - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item SYNOPSIS - -=back - -=over 4 - -=item METHODS - -=over 4 - -=item Class Methods - -C<verbosity>, C<timer>, C<failures>, C<show_count>, C<lib>, C<switches>, -C<test_args>, C<color>, C<exec>, C<merge>, C<aggregator_class>, -C<formatter_class>, C<multiplexer_class>, C<parser_class>, -C<scheduler_class>, C<formatter>, C<errors>, C<directives>, C<ignore_exit>, -C<jobs>, C<fork>, C<rules>, C<stdout> - -=back - -=back - -=over 4 - -=item Instance Methods - -=back - -the file name of a test script to run, a reference to a [ file name, -display name ] array - -=over 4 - -=item SUBCLASSING - -=over 4 - -=item Methods - -C<start>, C<tests> - -=back - -=back - -=over 4 - -=item REPLACING - -=item SEE ALSO - -=back - -=head2 TAP::Object - Base class that provides common functionality to all -C<TAP::*> modules - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=over 4 - -=item Instance Methods - -=back - -=head2 TAParser, TAP::Parser - Parse L<TAP|Test::Harness::TAP> output - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -C<source>, C<tap>, C<exec>, C<callback>, C<switches>, C<test_args>, -C<spool>, C<merge>, C<source_class>, C<perl_source_class>, -C<grammar_class>, C<iterator_factory_class>, C<result_factory_class> - -=back - -=back - -=over 4 - -=item Instance Methods - -=back - -=over 4 - -=item INDIVIDUAL RESULTS - -=over 4 - -=item Result types - -Version, Plan, Pragma, Test, Comment, Bailout, Unknown - -=item Common type methods - -=item C<plan> methods - -=item C<pragma> methods - -=item C<bailout> methods - -=item C<unknown> methods - -=item C<test> methods - -=back - -=item TOTAL RESULTS - -=over 4 - -=item Individual Results - -=back - -=back - -=over 4 - -=item Pragmas - -=back - -=over 4 - -=item Summary Results - -=back - -=over 4 - -=item C<ignore_exit> - -=back - -Misplaced plan, No plan, More than one plan, Test numbers out of sequence - -=over 4 - -=item CALLBACKS - -C<test>, C<version>, C<plan>, C<comment>, C<bailout>, C<yaml>, C<unknown>, -C<ELSE>, C<ALL>, C<EOF> - -=item TAP GRAMMAR - -=item BACKWARDS COMPATABILITY - -=over 4 - -=item Differences - -TODO plans, 'Missing' tests - -=back - -=item SUBCLASSING - -=over 4 - -=item Parser Components - -option 1, option 2 - -=back - -=item ACKNOWLEDGEMENTS - -Michael Schwern, Andy Lester, chromatic, GEOFFR, Shlomi Fish, Torsten -Schoenfeld, Jerry Gay, Aristotle, Adam Kennedy, Yves Orton, Adrian Howard, -Sean & Lil, Andreas J. Koenig, Florian Ragwitz, Corion, Mark Stosberg, Matt -Kraai, David Wheeler, Alex Vandiver - -=item AUTHORS - -=item BUGS - -=item COPYRIGHT & LICENSE - -=back - -=head2 TAParser::Aggregator, TAP::Parser::Aggregator - Aggregate -TAP::Parser results - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=over 4 - -=item Instance Methods - -=back - -=over 4 - -=item Summary methods - -failed, parse_errors, passed, skipped, todo, todo_passed, wait, exit - -=back - -Failed tests, Parse erros, Bad exit or wait status - -=over 4 - -=item See Also - -=back - -=head2 TAParser::Grammar, TAP::Parser::Grammar - A grammar for the Test -Anything Protocol. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=over 4 - -=item Instance Methods - -=back - -=over 4 - -=item TAP GRAMMAR - -=item SUBCLASSING - -=item SEE ALSO - -=back - -=head2 TAParser::Iterator, TAP::Parser::Iterator - Internal base class for -TAP::Parser Iterators - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=item Instance Methods - -=back - -=back - -=over 4 - -=item SUBCLASSING - -=over 4 - -=item Example - -=back - -=item SEE ALSO - -=back - -=head2 TAParser::Iterator::Array, TAP::Parser::Iterator::Array - Internal -TAP::Parser array Iterator - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=item Instance Methods - -=back - -=back - -=over 4 - -=item ATTRIBUTION - -=item SEE ALSO - -=back - -=head2 TAParser::Iterator::Process, TAP::Parser::Iterator::Process - -Internal TAP::Parser Iterator - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=item Instance Methods - -=back - -=back - -=over 4 - -=item ATTRIBUTION - -=item SEE ALSO - -=back - -=head2 TAParser::Iterator::Stream, TAP::Parser::Iterator::Stream - Internal -TAP::Parser Iterator - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=over 4 - -=item Instance Methods - -=back - -=over 4 - -=item ATTRIBUTION - -=item SEE ALSO - -=back - -=head2 TAParser::IteratorFactory, TAP::Parser::IteratorFactory - Internal -TAP::Parser Iterator - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=over 4 - -=item SUBCLASSING - -=over 4 - -=item Example - -=back - -=item ATTRIBUTION - -=item SEE ALSO - -=back - -=head2 TAParser::Multiplexer, TAP::Parser::Multiplexer - Multiplex multiple -TAP::Parsers - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=over 4 - -=item Instance Methods - -=back - -=over 4 - -=item See Also - -=back - -=head2 TAParser::Result, TAP::Parser::Result - Base class for TAP::Parser -output objects - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=over 4 - -=item DESCRIPTION - -=item METHODS - -=back - -=back - -=over 4 - -=item Boolean methods - -C<is_plan>, C<is_pragma>, C<is_test>, C<is_comment>, C<is_bailout>, -C<is_version>, C<is_unknown>, C<is_yaml> - -=back - -=over 4 - -=item SUBCLASSING - -=over 4 - -=item Example - -=back - -=item SEE ALSO - -=back - -=head2 TAParser::Result::Bailout, TAP::Parser::Result::Bailout - Bailout -result token. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item OVERRIDDEN METHODS - -C<as_string> - -=back - -=over 4 - -=item Instance Methods - -=back - -=head2 TAParser::Result::Comment, TAP::Parser::Result::Comment - Comment -result token. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item OVERRIDDEN METHODS - -C<as_string> - -=back - -=over 4 - -=item Instance Methods - -=back - -=head2 TAParser::Result::Plan, TAP::Parser::Result::Plan - Plan result -token. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item OVERRIDDEN METHODS - -C<as_string>, C<raw> - -=back - -=over 4 - -=item Instance Methods - -=back - -=head2 TAParser::Result::Pragma, TAP::Parser::Result::Pragma - TAP pragma -token. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item OVERRIDDEN METHODS - -C<as_string>, C<raw> - -=back - -=over 4 - -=item Instance Methods - -=back - -=head2 TAParser::Result::Test, TAP::Parser::Result::Test - Test result -token. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item OVERRIDDEN METHODS - -=over 4 - -=item Instance Methods - -=back - -=back - -=head2 TAParser::Result::Unknown, TAP::Parser::Result::Unknown - Unknown -result token. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item OVERRIDDEN METHODS - -C<as_string>, C<raw> - -=back - -=head2 TAParser::Result::Version, TAP::Parser::Result::Version - TAP syntax -version token. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item OVERRIDDEN METHODS - -C<as_string>, C<raw> - -=back - -=over 4 - -=item Instance Methods - -=back - -=head2 TAParser::Result::YAML, TAP::Parser::Result::YAML - YAML result -token. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item OVERRIDDEN METHODS - -C<as_string>, C<raw> - -=back - -=over 4 - -=item Instance Methods - -=back - -=head2 TAParser::ResultFactory, TAP::Parser::ResultFactory - Factory for -creating TAP::Parser output objects - -=over 4 - -=item SYNOPSIS - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item METHODS - -=item Class Methods - -=back - -=over 4 - -=item SUBCLASSING - -=over 4 - -=item Example - -=back - -=item SEE ALSO - -=back - -=head2 TAParser::Scheduler, TAP::Parser::Scheduler - Schedule tests during -parallel testing - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=head2 TAParser::Scheduler::Job, TAP::Parser::Scheduler::Job - A single -testing job. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=head2 TAParser::Scheduler::Spinner, TAP::Parser::Scheduler::Spinner - A -no-op job. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=head2 TAParser::Source, TAP::Parser::Source - Stream output from some -source - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=over 4 - -=item Instance Methods - -=back - -=over 4 - -=item SUBCLASSING - -=over 4 - -=item Example - -=back - -=item SEE ALSO - -=back - -=head2 TAParser::Source::Perl, TAP::Parser::Source::Perl - Stream Perl -output - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=item Instance Methods - -=back - -=back - -=over 4 - -=item SUBCLASSING - -=over 4 - -=item Example - -=back - -=item SEE ALSO - -=back - -=head2 TAParser::Utils, TAP::Parser::Utils - Internal TAP::Parser utilities - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item INTERFACE - -=back - -=back - -=head2 TAParser::YAMLish::Reader, TAP::Parser::YAMLish::Reader - Read -YAMLish data from iterator - -=over 4 - -=item VERSION - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=item Instance Methods - -=back - -=item AUTHOR - -=item SEE ALSO - -=item COPYRIGHT - -=back - -=head2 TAParser::YAMLish::Writer, TAP::Parser::YAMLish::Writer - Write -YAMLish data - -=over 4 - -=item VERSION - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=item Instance Methods - -a reference to a scalar to append YAML to, the handle of an open file, a -reference to an array into which YAML will be pushed, a code reference - -=back - -=item AUTHOR - -=item SEE ALSO - -=item COPYRIGHT - -=back - -=head2 Term::ANSIColor - Color screen output using ANSI escape sequences - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item DIAGNOSTICS - -Bad escape sequence %s, Bareword "%s" not allowed while "strict subs" in -use, Invalid attribute name %s, Name "%s" used only once: possible typo, No -comma allowed after filehandle, No name for escape sequence %s - -=item ENVIRONMENT - -ANSI_COLORS_DISABLED - -=item RESTRICTIONS - -=item NOTES - -=item SEE ALSO - -=item AUTHORS - -=item COPYRIGHT AND LICENSE - -=back - -=head2 Term::Cap - Perl termcap interface - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item METHODS - -=back - -=back - -B<Tgetent>, OSPEED, TERM - -B<Tpad>, B<$string>, B<$cnt>, B<$FH> - -B<Tputs>, B<$cap>, B<$cnt>, B<$FH> - -B<Tgoto>, B<$cap>, B<$col>, B<$row>, B<$FH> - -B<Trequire> - -=over 4 - -=item EXAMPLES - -=item COPYRIGHT AND LICENSE - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 Term::Complete - Perl word completion module - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -E<lt>tabE<gt>, ^D, ^U, E<lt>delE<gt>, E<lt>bsE<gt> - -=item DIAGNOSTICS - -=item BUGS - -=item AUTHOR - -=back - -=head2 Term::ReadLine - Perl interface to various C<readline> packages. -If no real package is found, substitutes stubs instead of basic functions. - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Minimal set of supported functions - -C<ReadLine>, C<new>, C<readline>, C<addhistory>, C<IN>, C<OUT>, C<MinLine>, -C<findConsole>, Attribs, C<Features> - -=item Additional supported functions - -C<tkRunning>, C<ornaments>, C<newTTY> - -=item EXPORTS - -=item ENVIRONMENT - -=item CAVEATS - -=back - -=head2 Term::UI - Term::ReadLine UI made easy - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item HOW IT WORKS - -=item METHODS - -=over 4 - -=item $reply = $term->get_reply( prompt => 'question?', [choices => \@list, -default => $list[0], multi => BOOL, print_me => "extra text to print & -record", allow => $ref] ); - -=back - -=back - -=over 4 - -=item $bool = $term->ask_yn( prompt => "your question", [default => -(y|1,n|0), print_me => "extra text to print & record"] ) - -=back - -=over 4 - -=item ($opts, $munged) = $term->parse_options( STRING ); - -=back - -=over 4 - -=item $str = $term->history_as_string - -=back - -=over 4 - -=item GLOBAL VARIABLES - -=over 4 - -=item $Term::UI::VERBOSE - -=item $Term::UI::AUTOREPLY - -=item $Term::UI::INVALID - -=item $Term::UI::History::HISTORY_FH - -=back - -=item EXAMPLES - -=over 4 - -=item Basic get_reply sample - -=item get_reply with choices - -=item get_reply with choices and default - -=item get_reply using print_me & multi - -=item get_reply & allow - -=item an elaborate ask_yn sample - -=back - -=item See Also - -=item BUG REPORTS - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 Term::UI::History - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item FUNCTIONS - -=over 4 - -=item history("message string" [,VERBOSE]) - -=back - -=back - -=over 4 - -=item GLOBAL VARIABLES - -$HISTORY_FH - -=item See Also - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 Test - provides a simple framework for writing test scripts - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item QUICK START GUIDE - -=over 4 - -=item Functions - -C<plan(...)>, C<tests =E<gt> I<number>>, C<todo =E<gt> [I<1,5,14>]>, -C<onfail =E<gt> sub { ... }>, C<onfail =E<gt> \&some_sub> - -=back - -=back - -B<_to_value> - -C<ok(...)> - -C<skip(I<skip_if_true>, I<args...>)> - -=over 4 - -=item TEST TYPES - -NORMAL TESTS, SKIPPED TESTS, TODO TESTS - -=item ONFAIL - -=item BUGS and CAVEATS - -=item ENVIRONMENT - -=item NOTE - -=item SEE ALSO - -=item AUTHOR - -=back - -=head2 Test::Builder - Backend for building test libraries - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Construction - -B<new> - -=back - -=back - -B<create> - -B<reset> - -=over 4 - -=item Setting up tests - -B<plan> - -=back - -B<expected_tests> - -B<no_plan> - -B<has_plan> - -B<skip_all> - -B<exported_to> - -=over 4 - -=item Running tests - -B<ok> - -=back - -B<is_eq>, B<is_num> - -B<isnt_eq>, B<isnt_num> - -B<like>, B<unlike> - -B<cmp_ok> - -=over 4 - -=item Other Testing Methods - -B<BAIL_OUT> - -=back - -B<skip> - -B<todo_skip> - -B<skip_rest> - -=over 4 - -=item Test building utility methods - -B<maybe_regex> - -=back - -B<_try> - -B<is_fh> - -=over 4 - -=item Test style - -B<level> - -=back - -B<use_numbers> - -B<no_diag>, B<no_ending>, B<no_header> - -=over 4 - -=item Output - -B<diag> - -=back - -B<note> - -B<explain> - -B<_print> - -B<output>, B<failure_output>, B<todo_output> - -reset_outputs - -carp, croak - -=over 4 - -=item Test Status and Info - -B<current_test> - -=back - -B<summary> - -B<details> - -B<todo> - -B<find_TODO> - -B<in_todo> - -B<todo_start> - -C<todo_end> - -B<caller> - -B<_sanity_check> - -B<_whoa> - -B<_my_exit> - -=over 4 - -=item EXIT CODES - -=item THREADS - -=item EXAMPLES - -=item SEE ALSO - -=item AUTHORS - -=item COPYRIGHT - -=back - -=head2 Test::Builder::Module - Base class for test modules - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Importing - -=back - -=back - -=over 4 - -=item Builder - -=back - -=head2 Test::Builder::Tester - test testsuites that have been built with -Test::Builder - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=over 4 - -=item Functions - -test_out, test_err - -=back - -test_fail - -test_diag - -test_test, title (synonym 'name', 'label'), skip_out, skip_err - -line_num - -color - -=over 4 - -=item BUGS - -=item AUTHOR - -=item NOTES - -=item SEE ALSO - -=back - -=head2 Test::Builder::Tester::Color - turn on colour in -Test::Builder::Tester - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=over 4 - -=item AUTHOR - -=item BUGS - -=item SEE ALSO - -=back - -=head2 Test::Harness - Run Perl standard test scripts with statistics - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item FUNCTIONS - -=over 4 - -=item runtests( @test_files ) - -=back - -=back - -=over 4 - -=item execute_tests( tests => \@test_files, out => \*FH ) - -=back - -=over 4 - -=item EXPORT - -=item ENVIRONMENT VARIABLES THAT TAP::HARNESS::COMPATIBLE SETS - -C<HARNESS_ACTIVE>, C<HARNESS_VERSION> - -=item ENVIRONMENT VARIABLES THAT AFFECT TEST::HARNESS - -C<HARNESS_TIMER>, C<HARNESS_VERBOSE>, C<HARNESS_OPTIONS>, C<< j<n> >>, C<< -f >> - -=item Taint Mode - -=item SEE ALSO - -=item BUGS - -=item AUTHORS - -=item LICENCE AND COPYRIGHT - -=back - -=head2 Test::Harness::lib::App::Prove, App::Prove - Implements the C<prove> -command. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item SYNOPSIS - -=back - -=over 4 - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=over 4 - -=item Attributes - -C<archive>, C<argv>, C<backwards>, C<blib>, C<color>, C<directives>, -C<dry>, C<exec>, C<extension>, C<failures>, C<fork>, C<formatter>, -C<harness>, C<ignore_exit>, C<includes>, C<jobs>, C<lib>, C<merge>, -C<modules>, C<parse>, C<plugins>, C<quiet>, C<really_quiet>, C<recurse>, -C<rules>, C<show_count>, C<show_help>, C<show_man>, C<show_version>, -C<shuffle>, C<state>, C<taint_fail>, C<taint_warn>, C<test_args>, C<timer>, -C<verbose>, C<warnings_fail>, C<warnings_warn> - -=back - -=head2 Test::Harness::lib::App::Prove::State, App::Prove::State - State -storage for the C<prove> command. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item SYNOPSIS - -=back - -=over 4 - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=over 4 - -=item C<result_class> - -=back - -=over 4 - -=item C<extension> - -=back - -=over 4 - -=item C<results> - -=back - -=over 4 - -=item C<commit> - -=back - -=over 4 - -=item Instance Methods - -C<last>, C<failed>, C<passed>, C<all>, C<hot>, C<todo>, C<slow>, C<fast>, -C<new>, C<old>, C<save> - -=back - -=head2 Test::Harness::lib::App::Prove::State::Result, -App::Prove::State::Result - Individual test suite results. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item SYNOPSIS - -=back - -=over 4 - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=over 4 - -=item C<state_version> - -=back - -=over 4 - -=item C<test_class> - -=back - -=head2 Test::Harness::lib::App::Prove::State::Result::Test, -App::Prove::State::Result::Test - Individual test results. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item SYNOPSIS - -=back - -=over 4 - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=over 4 - -=item Instance Methods - -=back - -=head2 Test::Harness::lib::TAP::Base, TAP::Base - Base class that provides -common functionality to L<TAP::Parser> and L<TAP::Harness> - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=head2 Test::Harness::lib::TAP::Formatter::Color, TAP::Formatter::Color - -Run Perl test scripts with color - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item SYNOPSIS - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=head2 Test::Harness::lib::TAP::Formatter::Console, TAP::Formatter::Console -- Harness output delegate for default console output - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item SYNOPSIS - -=back - -=over 4 - -=item METHODS - -=over 4 - -=item Class Methods - -C<verbosity>, C<verbose>, C<timer>, C<failures>, C<quiet>, C<really_quiet>, -C<silent>, C<errors>, C<directives>, C<stdout>, C<color>, C<jobs>, -C<show_count> - -=back - -=back - -=head2 Test::Harness::lib::TAP::Formatter::Console::ParallelSession, -TAP::Formatter::Console::ParallelSession - Harness output delegate for -parallel console output - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item SYNOPSIS - -=back - -=over 4 - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=head2 Test::Harness::lib::TAP::Formatter::Console::Session, -TAP::Formatter::Console::Session - Harness output delegate for default -console output - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item SYNOPSIS - -=back - -=over 4 - -=item METHODS - -=over 4 - -=item Class Methods - -C<formatter>, C<parser>, C<name>, C<show_count> - -=back - -=back - -=head2 Test::Harness::lib::TAP::Harness, TAP::Harness - Run test scripts -with statistics - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item SYNOPSIS - -=back - -=over 4 - -=item METHODS - -=over 4 - -=item Class Methods - -C<verbosity>, C<timer>, C<failures>, C<show_count>, C<lib>, C<switches>, -C<test_args>, C<color>, C<exec>, C<merge>, C<aggregator_class>, -C<formatter_class>, C<multiplexer_class>, C<parser_class>, -C<scheduler_class>, C<formatter>, C<errors>, C<directives>, C<ignore_exit>, -C<jobs>, C<fork>, C<rules>, C<stdout> - -=back - -=back - -=over 4 - -=item Instance Methods - -=back - -the file name of a test script to run, a reference to a [ file name, -display name ] array - -=over 4 - -=item SUBCLASSING - -=over 4 - -=item Methods - -C<start>, C<tests> - -=back - -=back - -=over 4 - -=item REPLACING - -=item SEE ALSO - -=back - -=head2 Test::Harness::lib::TAP::Object, TAP::Object - Base class that -provides common functionality to all C<TAP::*> modules - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=over 4 - -=item Instance Methods - -=back - -=head2 Test::Harness::lib::TAParser, TAP::Parser - Parse -L<TAP|Test::Harness::TAP> output - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -C<source>, C<tap>, C<exec>, C<callback>, C<switches>, C<test_args>, -C<spool>, C<merge>, C<source_class>, C<perl_source_class>, -C<grammar_class>, C<iterator_factory_class>, C<result_factory_class> - -=back - -=back - -=over 4 - -=item Instance Methods - -=back - -=over 4 - -=item INDIVIDUAL RESULTS - -=over 4 - -=item Result types - -Version, Plan, Pragma, Test, Comment, Bailout, Unknown - -=item Common type methods - -=item C<plan> methods - -=item C<pragma> methods - -=item C<bailout> methods - -=item C<unknown> methods - -=item C<test> methods - -=back - -=item TOTAL RESULTS - -=over 4 - -=item Individual Results - -=back - -=back - -=over 4 - -=item Pragmas - -=back - -=over 4 - -=item Summary Results - -=back - -=over 4 - -=item C<ignore_exit> - -=back - -Misplaced plan, No plan, More than one plan, Test numbers out of sequence - -=over 4 - -=item CALLBACKS - -C<test>, C<version>, C<plan>, C<comment>, C<bailout>, C<yaml>, C<unknown>, -C<ELSE>, C<ALL>, C<EOF> - -=item TAP GRAMMAR - -=item BACKWARDS COMPATABILITY - -=over 4 - -=item Differences - -TODO plans, 'Missing' tests - -=back - -=item SUBCLASSING - -=over 4 - -=item Parser Components - -option 1, option 2 - -=back - -=item ACKNOWLEDGEMENTS - -Michael Schwern, Andy Lester, chromatic, GEOFFR, Shlomi Fish, Torsten -Schoenfeld, Jerry Gay, Aristotle, Adam Kennedy, Yves Orton, Adrian Howard, -Sean & Lil, Andreas J. Koenig, Florian Ragwitz, Corion, Mark Stosberg, Matt -Kraai, David Wheeler, Alex Vandiver - -=item AUTHORS - -=item BUGS - -=item COPYRIGHT & LICENSE - -=back - -=head2 Test::Harness::lib::TAParser::Aggregator, TAP::Parser::Aggregator - -Aggregate TAP::Parser results - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=over 4 - -=item Instance Methods - -=back - -=over 4 - -=item Summary methods - -failed, parse_errors, passed, skipped, todo, todo_passed, wait, exit - -=back - -Failed tests, Parse erros, Bad exit or wait status - -=over 4 - -=item See Also - -=back - -=head2 Test::Harness::lib::TAParser::Grammar, TAP::Parser::Grammar - A -grammar for the Test Anything Protocol. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=over 4 - -=item Instance Methods - -=back - -=over 4 - -=item TAP GRAMMAR - -=item SUBCLASSING - -=item SEE ALSO - -=back - -=head2 Test::Harness::lib::TAParser::Iterator, TAP::Parser::Iterator - -Internal base class for TAP::Parser Iterators - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=item Instance Methods - -=back - -=back - -=over 4 - -=item SUBCLASSING - -=over 4 - -=item Example - -=back - -=item SEE ALSO - -=back - -=head2 Test::Harness::lib::TAParser::Iterator::Array, -TAP::Parser::Iterator::Array - Internal TAP::Parser array Iterator - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=item Instance Methods - -=back - -=back - -=over 4 - -=item ATTRIBUTION - -=item SEE ALSO - -=back - -=head2 Test::Harness::lib::TAParser::Iterator::Process, -TAP::Parser::Iterator::Process - Internal TAP::Parser Iterator - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=item Instance Methods - -=back - -=back - -=over 4 - -=item ATTRIBUTION - -=item SEE ALSO - -=back - -=head2 Test::Harness::lib::TAParser::Iterator::Stream, -TAP::Parser::Iterator::Stream - Internal TAP::Parser Iterator - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=over 4 - -=item Instance Methods - -=back - -=over 4 - -=item ATTRIBUTION - -=item SEE ALSO - -=back - -=head2 Test::Harness::lib::TAParser::IteratorFactory, -TAP::Parser::IteratorFactory - Internal TAP::Parser Iterator - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=over 4 - -=item SUBCLASSING - -=over 4 - -=item Example - -=back - -=item ATTRIBUTION - -=item SEE ALSO - -=back - -=head2 Test::Harness::lib::TAParser::Multiplexer, TAP::Parser::Multiplexer -- Multiplex multiple TAP::Parsers - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=over 4 - -=item Instance Methods - -=back - -=over 4 - -=item See Also - -=back - -=head2 Test::Harness::lib::TAParser::Result, TAP::Parser::Result - Base -class for TAP::Parser output objects - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=over 4 - -=item DESCRIPTION - -=item METHODS - -=back - -=back - -=over 4 - -=item Boolean methods - -C<is_plan>, C<is_pragma>, C<is_test>, C<is_comment>, C<is_bailout>, -C<is_version>, C<is_unknown>, C<is_yaml> - -=back - -=over 4 - -=item SUBCLASSING - -=over 4 - -=item Example - -=back - -=item SEE ALSO - -=back - -=head2 Test::Harness::lib::TAParser::Result::Bailout, -TAP::Parser::Result::Bailout - Bailout result token. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item OVERRIDDEN METHODS - -C<as_string> - -=back - -=over 4 - -=item Instance Methods - -=back - -=head2 Test::Harness::lib::TAParser::Result::Comment, -TAP::Parser::Result::Comment - Comment result token. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item OVERRIDDEN METHODS - -C<as_string> - -=back - -=over 4 - -=item Instance Methods - -=back - -=head2 Test::Harness::lib::TAParser::Result::Plan, -TAP::Parser::Result::Plan - Plan result token. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item OVERRIDDEN METHODS - -C<as_string>, C<raw> - -=back - -=over 4 - -=item Instance Methods - -=back - -=head2 Test::Harness::lib::TAParser::Result::Pragma, -TAP::Parser::Result::Pragma - TAP pragma token. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item OVERRIDDEN METHODS - -C<as_string>, C<raw> - -=back - -=over 4 - -=item Instance Methods - -=back - -=head2 Test::Harness::lib::TAParser::Result::Test, -TAP::Parser::Result::Test - Test result token. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item OVERRIDDEN METHODS - -=over 4 - -=item Instance Methods - -=back - -=back - -=head2 Test::Harness::lib::TAParser::Result::Unknown, -TAP::Parser::Result::Unknown - Unknown result token. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item OVERRIDDEN METHODS - -C<as_string>, C<raw> - -=back - -=head2 Test::Harness::lib::TAParser::Result::Version, -TAP::Parser::Result::Version - TAP syntax version token. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item OVERRIDDEN METHODS - -C<as_string>, C<raw> - -=back - -=over 4 - -=item Instance Methods - -=back - -=head2 Test::Harness::lib::TAParser::Result::YAML, -TAP::Parser::Result::YAML - YAML result token. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item OVERRIDDEN METHODS - -C<as_string>, C<raw> - -=back - -=over 4 - -=item Instance Methods - -=back - -=head2 Test::Harness::lib::TAParser::ResultFactory, -TAP::Parser::ResultFactory - Factory for creating TAP::Parser output -objects - -=over 4 - -=item SYNOPSIS - -=item VERSION - -=back - -=over 4 - -=item DESCRIPTION - -=item METHODS - -=item Class Methods - -=back - -=over 4 - -=item SUBCLASSING - -=over 4 - -=item Example - -=back - -=item SEE ALSO - -=back - -=head2 Test::Harness::lib::TAParser::Scheduler, TAP::Parser::Scheduler - -Schedule tests during parallel testing - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=head2 Test::Harness::lib::TAParser::Scheduler::Job, -TAP::Parser::Scheduler::Job - A single testing job. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=head2 Test::Harness::lib::TAParser::Scheduler::Spinner, -TAP::Parser::Scheduler::Spinner - A no-op job. - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=head2 Test::Harness::lib::TAParser::Source, TAP::Parser::Source - Stream -output from some source - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=back - -=back - -=over 4 - -=item Instance Methods - -=back - -=over 4 - -=item SUBCLASSING - -=over 4 - -=item Example - -=back - -=item SEE ALSO - -=back - -=head2 Test::Harness::lib::TAParser::Source::Perl, -TAP::Parser::Source::Perl - Stream Perl output - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=item Instance Methods - -=back - -=back - -=over 4 - -=item SUBCLASSING - -=over 4 - -=item Example - -=back - -=item SEE ALSO - -=back - -=head2 Test::Harness::lib::TAParser::Utils, TAP::Parser::Utils - Internal -TAP::Parser utilities - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item INTERFACE - -=back - -=back - -=head2 Test::Harness::lib::TAParser::YAMLish::Reader, -TAP::Parser::YAMLish::Reader - Read YAMLish data from iterator - -=over 4 - -=item VERSION - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=item Instance Methods - -=back - -=item AUTHOR - -=item SEE ALSO - -=item COPYRIGHT - -=back - -=head2 Test::Harness::lib::TAParser::YAMLish::Writer, -TAP::Parser::YAMLish::Writer - Write YAMLish data - -=over 4 - -=item VERSION - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=over 4 - -=item Class Methods - -=item Instance Methods - -a reference to a scalar to append YAML to, the handle of an open file, a -reference to an array into which YAML will be pushed, a code reference - -=back - -=item AUTHOR - -=item SEE ALSO - -=item COPYRIGHT - -=back - -=head2 Test::Harness::lib::Test::Harness, Test::Harness - Run Perl standard -test scripts with statistics - -=over 4 - -=item VERSION - -=back - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item FUNCTIONS - -=over 4 - -=item runtests( @test_files ) - -=back - -=back - -=over 4 - -=item execute_tests( tests => \@test_files, out => \*FH ) - -=back - -=over 4 - -=item EXPORT - -=item ENVIRONMENT VARIABLES THAT TAP::HARNESS::COMPATIBLE SETS - -C<HARNESS_ACTIVE>, C<HARNESS_VERSION> - -=item ENVIRONMENT VARIABLES THAT AFFECT TEST::HARNESS - -C<HARNESS_TIMER>, C<HARNESS_VERBOSE>, C<HARNESS_OPTIONS>, C<< j<n> >>, C<< -f >> - -=item Taint Mode - -=item SEE ALSO - -=item BUGS - -=item AUTHORS - -=item LICENCE AND COPYRIGHT - -=back - -=head2 Test::More - yet another framework for writing test scripts - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item I love it when a plan comes together - -=back - -=back - -=over 4 - -=item Test names - -=item I'm ok, you're not ok. - -B<ok> - -=back - -B<is>, B<isnt> - -B<like> - -B<unlike> - -B<cmp_ok> - -B<can_ok> - -B<isa_ok> - -B<new_ok> - -B<pass>, B<fail> - -=over 4 - -=item Module tests - -B<use_ok> - -=back - -B<require_ok> - -=over 4 - -=item Complex data structures - -B<is_deeply> - -=back - -=over 4 - -=item Diagnostics - -B<diag>, B<note> - -=back - -B<explain> - -=over 4 - -=item Conditional tests - -B<SKIP: BLOCK> - -=back - -B<TODO: BLOCK>, B<todo_skip> - -When do I use SKIP vs. TODO? - -=over 4 - -=item Test control - -B<BAIL_OUT> - -=back - -=over 4 - -=item Discouraged comparison functions - -B<eq_array> - -=back - -B<eq_hash> - -B<eq_set> - -=over 4 - -=item Extending and Embedding Test::More - -B<builder> - -=back - -=over 4 - -=item EXIT CODES - -=item CAVEATS and NOTES - -Backwards compatibility, Overloaded objects, Threads, Test::Harness upgrade - -=item HISTORY - -=item SEE ALSO - -=item AUTHORS - -=item BUGS - -=item COPYRIGHT - -=back - -=head2 Test::Simple - Basic utilities for writing tests. - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -B<ok> - -=back - -=over 4 - -=item EXAMPLE - -=item CAVEATS - -=item NOTES - -=item HISTORY - -=item SEE ALSO - -L<Test::More> - -=item AUTHORS - -=item COPYRIGHT - -=back - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Nuts and bolts of testing. - -=item Where to start? - -=item Names - -=item Test the manual - -=item Sometimes the tests are wrong - -=item Testing lots of values - -=item Informative names - -=item Skipping tests - -=item Todo tests - -=item Testing with taint mode. - -=back - -=item FOOTNOTES - -=item AUTHORS - -=item COPYRIGHT - -=back - -=head2 Text::Abbrev, abbrev - create an abbreviation table from a list - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item EXAMPLE - -=back - -=head2 Text::Balanced - Extract delimited text sequences from strings. - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item General behaviour in list contexts - -[0], [1], [2] - -=item General behaviour in scalar and void contexts - -=item A note about prefixes - -=item C<extract_delimited> - -=item C<extract_bracketed> - -=item C<extract_variable> - -[0], [1], [2] - -=item C<extract_tagged> - -C<reject =E<gt> $listref>, C<ignore =E<gt> $listref>, C<fail =E<gt> $str>, -[0], [1], [2], [3], [4], [5] - -=item C<gen_extract_tagged> - -=item C<extract_quotelike> - -[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10] - -=item C<extract_quotelike> and "here documents" - -[0], [1], [2], [3], [4], [5], [6], [7..10] - -=item C<extract_codeblock> - -=item C<extract_multiple> - -=item C<gen_delimited_pat> - -=item C<delimited_pat> - -=back - -=item DIAGNOSTICS - - C<Did not find a suitable bracket: "%s">, C<Did not find prefix: /%s/>, -C<Did not find opening bracket after prefix: "%s">, C<No quotelike -operator found after prefix: "%s">, C<Unmatched closing bracket: "%c">, -C<Unmatched opening bracket(s): "%s">, C<Unmatched embedded quote (%s)>, -C<Did not find closing delimiter to match '%s'>, C<Mismatched closing -bracket: expected "%c" but found "%s">, C<No block delimiter found after -quotelike "%s">, C<Did not find leading dereferencer>, C<Bad identifier -after dereferencer>, C<Did not find expected opening bracket at %s>, -C<Improperly nested codeblock at %s>, C<Missing second block for quotelike -"%s">, C<No match found for opening bracket>, C<Did not find opening tag: -/%s/>, C<Unable to construct closing tag to match: /%s/>, C<Found invalid -nested tag: %s>, C<Found unbalanced nested tag: %s>, C<Did not find closing -tag> - -=item AUTHOR - -=item BUGS AND IRRITATIONS - -=item COPYRIGHT - -=back - -=head2 Text::ParseWords - parse text into an array of tokens or array of -arrays - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item EXAMPLES - -=item AUTHORS - -=back - -=head2 Text::Soundex - Implementation of the soundex algorithm. - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item EXAMPLES - -=item LIMITATIONS - -=item MAINTAINER - -=item HISTORY - -=back - -=head2 Text::Tabs -- expand and unexpand tabs per the unix expand(1) and -unexpand(1) - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item EXAMPLE - -=item LICENSE - -=back - -=head2 Text::Wrap - line wrapping to form simple paragraphs - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item OVERRIDES - -=item EXAMPLES - -=item LICENSE - -=back - -=head2 Thread - Manipulate threads in Perl (for old code only) - -=over 4 - -=item DEPRECATED - -=item HISTORY - -=item SYNOPSIS - -=item DESCRIPTION - -=item FUNCTIONS - -$thread = Thread->new(\&start_sub), $thread = Thread->new(\&start_sub, -LIST), lock VARIABLE, async BLOCK;, Thread->self, Thread->list, cond_wait -VARIABLE, cond_signal VARIABLE, cond_broadcast VARIABLE, yield - -=item METHODS - -join, detach, equal, tid, done - -=item DEFUNCT - -lock(\&sub), eval, flags - -=item SEE ALSO - -=back - -=head2 Thread::Queue - Thread-safe queues - -=over 4 - -=item VERSION - -=item SYNOPSIS - -=item DESCRIPTION - -Ordinary scalars, Array refs, Hash refs, Scalar refs, Objects based on the -above - -=item QUEUE CREATION - -->new(), ->new(LIST) - -=item BASIC METHODS - -->enqueue(LIST), ->dequeue(), ->dequeue(COUNT), ->dequeue_nb(), -->dequeue_nb(COUNT), ->pending() - -=item ADVANCED METHODS - -->peek(), ->peek(INDEX), ->insert(INDEX, LIST), ->extract(), -->extract(INDEX), ->extract(INDEX, COUNT) - -=item NOTES - -=item LIMITATIONS - -=item SEE ALSO - -=item MAINTAINER - -=item LICENSE - -=back - -=head2 Thread::Semaphore - Thread-safe semaphores - -=over 4 - -=item VERSION - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -->new(), ->new(NUMBER), ->down(), ->down(NUMBER), ->up(), ->up(NUMBER) - -=item NOTES - -=item SEE ALSO - -=item MAINTAINER - -=item LICENSE - -=back - -=head2 Tie::Array - base class for tied arrays - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -TIEARRAY classname, LIST, STORE this, index, value, FETCH this, index, -FETCHSIZE this, STORESIZE this, count, EXTEND this, count, EXISTS this, -key, DELETE this, key, CLEAR this, DESTROY this, PUSH this, LIST, POP this, -SHIFT this, UNSHIFT this, LIST, SPLICE this, offset, length, LIST - -=item CAVEATS - -=item AUTHOR - -=back - -=head2 Tie::File - Access the lines of a disk file via a Perl array - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item C<recsep> - -=item C<autochomp> - -=item C<mode> - -=item C<memory> - -=item C<dw_size> - -=item Option Format - -=back - -=item Public Methods - -=over 4 - -=item C<flock> - -=item C<autochomp> - -=item C<defer>, C<flush>, C<discard>, and C<autodefer> - -=item C<offset> - -=back - -=item Tying to an already-opened filehandle - -=item Deferred Writing - -=over 4 - -=item Autodeferring - -=back - -=item CONCURRENT ACCESS TO FILES - -=item CAVEATS - -=item SUBCLASSING - -=item WHAT ABOUT C<DB_File>? - -=item AUTHOR - -=item LICENSE - -=item WARRANTY - -=item THANKS - -=item TODO - -=back - -=head2 Tie::Handle - base class definitions for tied handles - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -TIEHANDLE classname, LIST, WRITE this, scalar, length, offset, PRINT this, -LIST, PRINTF this, format, LIST, READ this, scalar, length, offset, -READLINE this, GETC this, CLOSE this, OPEN this, filename, BINMODE this, -EOF this, TELL this, SEEK this, offset, whence, DESTROY this - -=item MORE INFORMATION - -=item COMPATIBILITY - -=back - -=head2 Tie::Hash, Tie::StdHash, Tie::ExtraHash - base class definitions for -tied hashes - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -TIEHASH classname, LIST, STORE this, key, value, FETCH this, key, FIRSTKEY -this, NEXTKEY this, lastkey, EXISTS this, key, DELETE this, key, CLEAR -this, SCALAR this - -=item Inheriting from B<Tie::StdHash> - -=item Inheriting from B<Tie::ExtraHash> - -=item C<SCALAR>, C<UNTIE> and C<DESTROY> - -=item MORE INFORMATION - -=back - -=head2 Tie::Hash::NamedCapture - Named regexp capture buffers - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=back - -=head2 Tie::Memoize - add data to hash when needed - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item Inheriting from B<Tie::Memoize> - -=item EXAMPLE - -=item BUGS - -=item AUTHOR - -=back - -=head2 Tie::RefHash - use references as hash keys - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item EXAMPLE - -=item THREAD SUPPORT - -=item STORABLE SUPPORT - -=item RELIC SUPPORT - -=item MAINTAINER - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 Tie::Scalar, Tie::StdScalar - base class definitions for tied -scalars - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -TIESCALAR classname, LIST, FETCH this, STORE this, value, DESTROY this - -=item MORE INFORMATION - -=back - -=head2 Tie::StdHandle - base class definitions for tied handles - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=back - -=head2 Tie::SubstrHash - Fixed-table-size, fixed-key-length hashing - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item CAVEATS - -=back - -=head2 Time::HiRes - High resolution alarm, sleep, gettimeofday, interval -timers - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -gettimeofday (), usleep ( $useconds ), nanosleep ( $nanoseconds ), ualarm ( -$useconds [, $interval_useconds ] ), tv_interval, time (), sleep ( -$floating_seconds ), alarm ( $floating_seconds [, -$interval_floating_seconds ] ), setitimer ( $which, $floating_seconds [, -$interval_floating_seconds ] ), getitimer ( $which ), clock_gettime ( -$which ), clock_getres ( $which ), clock_nanosleep ( $which, $nanoseconds, -$flags = 0), clock(), stat, stat FH, stat EXPR - -=item EXAMPLES - -=item C API - -=item DIAGNOSTICS - -=over 4 - -=item useconds or interval more than ... - -=item negative time not invented yet - -=item internal error: useconds < 0 (unsigned ... signed ...) - -=item useconds or uinterval equal to or more than 1000000 - -=item unimplemented in this platform - -=back - -=item CAVEATS - -=item SEE ALSO - -=item AUTHORS - -=item COPYRIGHT AND LICENSE - -=back - -=head2 Time::Local - efficiently compute time from local and GMT time - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item FUNCTIONS - -=over 4 - -=item C<timelocal()> and C<timegm()> - -=item C<timelocal_nocheck()> and C<timegm_nocheck()> - -=item Year Value Interpretation - -=item Limits of time_t - -=item Ambiguous Local Times (DST) - -=item Non-Existent Local Times (DST) - -=item Negative Epoch Values - -=back - -=item IMPLEMENTATION - -=item BUGS - -=item SUPPORT - -=item COPYRIGHT - -=item AUTHOR - -=back - -=head2 Time::Piece - Object Oriented time objects - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item USAGE - -=over 4 - -=item Local Locales - -=item Date Calculations - -=item Date Comparisons - -=item Date Parsing - -=item YYYY-MM-DDThh:mm:ss - -=item Week Number - -=item Global Overriding - -=back - -=item AUTHOR - -=item License - -=item SEE ALSO - -=item BUGS - -=back - -=head2 Time::Piece::Seconds, Time::Seconds - a simple API to convert -seconds to other date values - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=item AUTHOR - -=item LICENSE - -=item Bugs - -=back - -=head2 Time::Seconds - a simple API to convert seconds to other date values - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -=item AUTHOR - -=item LICENSE - -=item Bugs - -=back - -=head2 Time::gmtime - by-name interface to Perl's built-in gmtime() -function - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item NOTE - -=item AUTHOR - -=back - -=head2 Time::localtime - by-name interface to Perl's built-in localtime() -function - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item NOTE - -=item AUTHOR - -=back - -=head2 Time::tm - internal object used by Time::gmtime and Time::localtime - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item AUTHOR - -=back - -=head2 UNIVERSAL - base class for ALL classes (blessed references) - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -C<< $obj->isa( TYPE ) >>, C<< CLASS->isa( TYPE ) >>, C<< eval { VAL->isa( -TYPE ) } >>, C<TYPE>, C<$obj>, C<CLASS>, C<VAL>, C<< $obj->DOES( ROLE ) >>, -C<< CLASS->DOES( ROLE ) >>, C<< $obj->can( METHOD ) >>, C<< CLASS->can( -METHOD ) >>, C<< eval { VAL->can( METHOD ) } >>, C<VERSION ( [ REQUIRE ] )> - -=item EXPORTS - -=back - -=head2 Unicode::Collate - Unicode Collation Algorithm - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Constructor and Tailoring - -UCA_Version, alternate, backwards, entry, hangul_terminator, ignoreChar, -ignoreName, katakana_before_hiragana, level, normalization, overrideCJK, -overrideHangul, preprocess, rearrange, table, undefChar, undefName, -upper_before_lower, variable - -=item Methods for Collation - -C<@sorted = $Collator-E<gt>sort(@not_sorted)>, C<$result = -$Collator-E<gt>cmp($a, $b)>, C<$result = $Collator-E<gt>eq($a, $b)>, -C<$result = $Collator-E<gt>ne($a, $b)>, C<$result = $Collator-E<gt>lt($a, -$b)>, C<$result = $Collator-E<gt>le($a, $b)>, C<$result = -$Collator-E<gt>gt($a, $b)>, C<$result = $Collator-E<gt>ge($a, $b)>, -C<$sortKey = $Collator-E<gt>getSortKey($string)>, C<$sortKeyForm = -$Collator-E<gt>viewSortKey($string)> - -=item Methods for Searching - -C<$position = $Collator-E<gt>index($string, $substring[, $position])>, -C<($position, $length) = $Collator-E<gt>index($string, $substring[, -$position])>, C<$match_ref = $Collator-E<gt>match($string, $substring)>, -C<($match) = $Collator-E<gt>match($string, $substring)>, C<@match = -$Collator-E<gt>gmatch($string, $substring)>, C<$count = -$Collator-E<gt>subst($string, $substring, $replacement)>, C<$count = -$Collator-E<gt>gsubst($string, $substring, $replacement)> - -=item Other Methods - -C<%old_tailoring = $Collator-E<gt>change(%new_tailoring)>, C<$version = -$Collator-E<gt>version()>, C<UCA_Version()>, C<Base_Unicode_Version()> - -=back - -=item EXPORT - -=item INSTALL - -=item CAVEATS - -Normalization, Conformance Test - -=item AUTHOR, COPYRIGHT AND LICENSE - -=item SEE ALSO - -Unicode Collation Algorithm - UTS #10, The Default Unicode Collation -Element Table (DUCET), The conformance test for the UCA, Hangul Syllable -Type, Unicode Normalization Forms - UAX #15 - -=back - -=head2 Unicode::Normalize - Unicode Normalization Forms - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Normalization Forms - -C<$NFD_string = NFD($string)>, C<$NFC_string = NFC($string)>, -C<$NFKD_string = NFKD($string)>, C<$NFKC_string = NFKC($string)>, -C<$FCD_string = FCD($string)>, C<$FCC_string = FCC($string)>, -C<$normalized_string = normalize($form_name, $string)> - -=item Decomposition and Composition - -C<$decomposed_string = decompose($string [, $useCompatMapping])>, -C<$reordered_string = reorder($string)>, C<$composed_string = -compose($string)> - -=item Quick Check - -C<$result = checkNFD($string)>, C<$result = checkNFC($string)>, C<$result = -checkNFKD($string)>, C<$result = checkNFKC($string)>, C<$result = -checkFCD($string)>, C<$result = checkFCC($string)>, C<$result = -check($form_name, $string)> - -=item Character Data - -C<$canonical_decomposition = getCanon($code_point)>, -C<$compatibility_decomposition = getCompat($code_point)>, -C<$code_point_composite = getComposite($code_point_here, -$code_point_next)>, C<$combining_class = getCombinClass($code_point)>, -C<$may_be_composed_with_prev_char = isComp2nd($code_point)>, -C<$is_exclusion = isExclusion($code_point)>, C<$is_singleton = -isSingleton($code_point)>, C<$is_non_starter_decomposition = -isNonStDecomp($code_point)>, C<$is_Full_Composition_Exclusion = -isComp_Ex($code_point)>, C<$NFD_is_NO = isNFD_NO($code_point)>, -C<$NFC_is_NO = isNFC_NO($code_point)>, C<$NFC_is_MAYBE = -isNFC_MAYBE($code_point)>, C<$NFKD_is_NO = isNFKD_NO($code_point)>, -C<$NFKC_is_NO = isNFKC_NO($code_point)>, C<$NFKC_is_MAYBE = -isNFKC_MAYBE($code_point)> - -=back - -=item EXPORT - -=item CAVEATS - -Perl's version vs. Unicode version, Correction of decomposition mapping, -Revised definition of canonical composition - -=item AUTHOR - -=item SEE ALSO - -http://www.unicode.org/reports/tr15/, -http://www.unicode.org/Public/UNIDATA/CompositionExclusions.txt, -http://www.unicode.org/Public/UNIDATA/DerivedNormalizationProps.txt, -http://www.unicode.org/Public/UNIDATA/NormalizationCorrections.txt, -http://www.unicode.org/review/pr-29.html, http://www.unicode.org/notes/tn5/ - -=back - -=head2 Unicode::UCD - Unicode character database - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item code point argument - -=item B<charinfo()> - -B<code>, B<name>, B<category>, B<combining>, B<bidi>, B<decomposition>, -B<decimal>, B<digit>, B<numeric>, B<mirrored>, B<unicode10>, B<comment>, -B<upper>, B<lower>, B<title>, B<block>, B<script> - -=back - -=back - -=over 4 - -=item B<charblock()> - -=back - -=over 4 - -=item B<charscript()> - -=back - -=over 4 - -=item B<charblocks()> - -=back - -=over 4 - -=item B<charscripts()> - -=back - -=over 4 - -=item B<charinrange()> - -=back - -=over 4 - -=item B<general_categories()> - -=back - -=over 4 - -=item B<bidi_types()> - -=back - -=over 4 - -=item B<compexcl()> - -=back - -=over 4 - -=item B<casefold()> - -B<code>, B<full>, B<simple>, B<mapping>, B<status>, B<*>, B<*>, B<turkic> - -=back - -=over 4 - -=item B<casespec()> - -B<code>, B<lower>, B<title>, B<lower>, B<condition> - -=back - -=over 4 - -=item B<namedseq()> - -=back - -=over 4 - -=item Unicode::UCD::UnicodeVersion - -=back - -=over 4 - -=item B<Blocks versus Scripts> - -=item B<Matching Scripts and Blocks> - -=item Implementation Note - -=back - -=over 4 - -=item BUGS - -=item AUTHOR - -=back - -=head2 User::grent - by-name interface to Perl's built-in getgr*() -functions - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=item NOTE - -=item AUTHOR - -=back - -=head2 User::pwent - by-name interface to Perl's built-in getpw*() -functions - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item System Specifics - -=back - -=item NOTE - -=item AUTHOR - -=item HISTORY - -March 18th, 2000 - -=back - -=head2 Win32 - Interfaces to some Win32 API Functions - -=over 4 - -=item DESCRIPTION - -=over 4 - -=item Alphabetical Listing of Win32 Functions - -Win32::AbortSystemShutdown(MACHINE), Win32::BuildNumber(), -Win32::CopyFile(FROM, TO, OVERWRITE), Win32::CreateDirectory(DIRECTORY), -Win32::CreateFile(FILE), Win32::DomainName(), -Win32::ExpandEnvironmentStrings(STRING), Win32::FormatMessage(ERRORCODE), -Win32::FsType(), Win32::FreeLibrary(HANDLE), -Win32::GetANSIPathName(FILENAME), Win32::GetArchName(), -Win32::GetChipName(), Win32::GetCwd(), Win32::GetCurrentProcessId(), -Win32::GetCurrentThreadId(), Win32::GetFileVersion(FILENAME), -Win32::GetFolderPath(FOLDER [, CREATE]), Win32::GetFullPathName(FILENAME), -Win32::GetLastError(), Win32::GetLongPathName(PATHNAME), -Win32::GetNextAvailDrive(), Win32::GetOSVersion(), Win32::GetOSName(), -Win32::GetShortPathName(PATHNAME), Win32::GetProcAddress(INSTANCE, -PROCNAME), Win32::GetTickCount(), Win32::GuidGen(), Win32::IsAdminUser(), -Win32::IsWinNT(), Win32::IsWin95(), Win32::LoadLibrary(LIBNAME), -Win32::LoginName(), Win32::LookupAccountName(SYSTEM, ACCOUNT, DOMAIN, SID, -SIDTYPE), Win32::LookupAccountSID(SYSTEM, SID, ACCOUNT, DOMAIN, SIDTYPE), -Win32::MsgBox(MESSAGE [, FLAGS [, TITLE]]), Win32::NodeName(), -Win32::OutputDebugString(STRING), Win32::RegisterServer(LIBRARYNAME), -Win32::SetChildShowWindow(SHOWWINDOW), Win32::SetCwd(NEWDIRECTORY), -Win32::SetLastError(ERROR), Win32::Sleep(TIME), Win32::Spawn(COMMAND, ARGS, -PID), Win32::UnregisterServer(LIBRARYNAME) - -=back - -=back - -=head2 Win32API::File - Low-level access to Win32 system API calls for -files/dirs. - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Object Oriented/Tied Handle Interface - -=item Exports - -C<":Func">, attrLetsToBits, C<$uBits= attrLetsToBits( $sAttributeLetters -)>, C<"a">, C<"c">, C<"h">, C<"o">, C<"r">, C<"s">, C<"t">, createFile, -C<$hObject= createFile( $sPath )>, C<$hObject= createFile( $sPath, -$rvhvOptions )>, C<$hObject= createFile( $sPath, $svAccess )>, C<$hObject= -createFile( $sPath, $svAccess, $rvhvOptions )>, C<$hObject= createFile( -$sPath, $svAccess, $svShare )>, C<$hObject= createFile( $sPath, $svAccess, -$svShare, $rvhvOptions )>, C<"q">, C<"r">, C<"w">, C<"k">, C<"t">, C<"n">, -C<"c">, C<"e">, C<"kc">, C<"ke">, C<"tc">, C<"te">, C<"nc">, C<"ne">, Flags -=> $uFlags, Attributes => $sAttributes, Security => $pSecurityAttributes, -Model => $hModelFile, Access => $sAccess, Access => $uAccess, Create => -$sCreate, Create => $uCreate, Share => $sShare, Share => $uShare, -getLogicalDrives, C<@roots= getLogicalDrives()>, CloseHandle, -C<CloseHandle( $hObject )>, CopyFile, C<CopyFile( $sOldFileName, -$sNewFileName, $bFailIfExists )>, CreateFile, C<$hObject= CreateFile( -$sPath, $uAccess, $uShare, $pSecAttr, $uCreate, $uFlags, $hModel )>, -C<"//./PhysicalDrive0">, C<"//./C:">, C<"//./A:">, C<"//./PIPE/PipeName">, -DefineDosDevice, C<DefineDosDevice( $uFlags, $sDosDeviceName, $sTargetPath -)>, C<DDD_RAW_TARGET_PATH>, C<DDD_REMOVE_DEFINITION>, -C<DDD_EXACT_MATCH_ON_REMOVE>, DeleteFile, C<DeleteFile( $sFileName )>, -DeviceIoControl, C<DeviceIoControl( $hDevice, $uIoControlCode, $pInBuf, -$lInBuf, $opOutBuf, $lOutBuf, $olRetBytes, $pOverlapped )>, FdGetOsFHandle, -C<$hNativeHandle= FdGetOsFHandle( $ivFd )>, fileConstant, C<$value= -fileConstant( $sConstantName )>, fileLastError, C<$svError= -fileLastError();>, C<fileLastError( $uError );>, GetDriveType, -C<$uDriveType= GetDriveType( $sRootPath )>, C<DRIVE_UNKNOWN>, -C<DRIVE_NO_ROOT_DIR>, C<DRIVE_REMOVABLE>, C<DRIVE_FIXED>, C<DRIVE_REMOTE>, -C<DRIVE_CDROM>, C<DRIVE_RAMDISK>, GetFileAttributes, C<$uAttrs = -GetFileAttributes( $sPath )>, C<FILE_ATTRIBUTE_ARCHIVE>, -C<FILE_ATTRIBUTE_COMPRESSED>, C<FILE_ATTRIBUTE_DEVICE>, -C<FILE_ATTRIBUTE_DIRECTORY>, C<FILE_ATTRIBUTE_ENCRYPTED>, -C<FILE_ATTRIBUTE_HIDDEN>, C<FILE_ATTRIBUTE_NORMAL>, -C<FILE_ATTRIBUTE_NOT_CONTENT_INDEXED>, C<FILE_ATTRIBUTE_OFFLINE>, -C<FILE_ATTRIBUTE_READONLY>, C<FILE_ATTRIBUTE_REPARSE_POINT>, -C<FILE_ATTRIBUTE_SPARSE_FILE>, C<FILE_ATTRIBUTE_SYSTEM>, -C<FILE_ATTRIBUTE_TEMPORARY>, GetFileType, C<$uFileType= GetFileType( $hFile -)>, C<FILE_TYPE_UNKNOWN>, C<FILE_TYPE_DISK>, C<FILE_TYPE_CHAR>, -C<FILE_TYPE_PIPE>, getFileSize, C<$size= getFileSize( $hFile )>, -GetFileSize, C<$iSizeLow= GetFileSize($win32Handle, $iSizeHigh)>, -GetOverlappedResult, C<$bRetval= GetOverlappedResult( $win32Handle, -$pOverlapped, $numBytesTransferred, $bWait )>, GetLogicalDrives, -C<$uDriveBits= GetLogicalDrives()>, GetLogicalDriveStrings, C<$olOutLength= -GetLogicalDriveStrings( $lBufSize, $osBuffer )>, GetHandleInformation, -C<GetHandleInformation( $hObject, $ouFlags )>, GetOsFHandle, -C<$hNativeHandle= GetOsFHandle( FILE )>, GetVolumeInformation, -C<GetVolumeInformation( $sRootPath, $osVolName, $lVolName, $ouSerialNum, -$ouMaxNameLen, $ouFsFlags, $osFsType, $lFsType )>, C<FS_CASE_IS_PRESERVED>, -C<FS_CASE_SENSITIVE>, C<FS_UNICODE_STORED_ON_DISK>, C<FS_PERSISTENT_ACLS>, -C<FS_FILE_COMPRESSION>, C<FS_VOL_IS_COMPRESSED>, IsRecognizedPartition, -C<IsRecognizedPartition( $ivPartitionType )>, IsContainerPartition, -C<IsContainerPartition( $ivPartitionType )>, MoveFile, C<MoveFile( -$sOldName, $sNewName )>, MoveFileEx, C<MoveFileEx( $sOldName, $sNewName, -$uFlags )>, C<MOVEFILE_REPLACE_EXISTING>, C<MOVEFILE_COPY_ALLOWED>, -C<MOVEFILE_DELAY_UNTIL_REBOOT>, C<MOVEFILE_WRITE_THROUGH>, OsFHandleOpen, -C<OsFHandleOpen( FILE, $hNativeHandle, $sMode )>, OsFHandleOpenFd, C<$ivFD= -OsFHandleOpenFd( $hNativeHandle, $uMode )>, QueryDosDevice, C<$olTargetLen= -QueryDosDevice( $sDosDeviceName, $osTargetPath, $lTargetBuf )>, ReadFile, -C<ReadFile( $hFile, $opBuffer, $lBytes, $olBytesRead, $pOverlapped )>, -SetErrorMode, C<$uOldMode= SetErrorMode( $uNewMode )>, -C<SEM_FAILCRITICALERRORS>, C<SEM_NOALIGNMENTFAULTEXCEPT>, -C<SEM_NOGPFAULTERRORBOX>, C<SEM_NOOPENFILEERRORBOX>, setFilePointer, -C<$uNewPos = setFilePointer( $hFile, $ivOffset, $uFromWhere )>, -SetFilePointer, C<$uNewPos = SetFilePointer( $hFile, $ivOffset, -$ioivOffsetHigh, $uFromWhere )>, SetHandleInformation, -C<SetHandleInformation( $hObject, $uMask, $uFlags )>, WriteFile, -C<WriteFile( $hFile, $pBuffer, $lBytes, $ouBytesWritten, $pOverlapped )>, -C<":FuncA">, C<":FuncW">, CopyFileW, C<CopyFileW( $swOldFileName, -$swNewFileName, $bFailIfExists )>, CreateFileW, C<$hObject= CreateFileW( -$swPath, $uAccess, $uShare, $pSecAttr, $uCreate, $uFlags, $hModel )>, -DefineDosDeviceW, C<DefineDosDeviceW( $uFlags, $swDosDeviceName, -$swTargetPath )>, DeleteFileW, C<DeleteFileW( $swFileName )>, -GetDriveTypeW, C<$uDriveType= GetDriveTypeW( $swRootPath )>, -GetFileAttributesW, C<$uAttrs= GetFileAttributesW( $swPath )>, -GetLogicalDriveStringsW, C<$olwOutLength= GetLogicalDriveStringsW( -$lwBufSize, $oswBuffer )>, GetVolumeInformationW, C<GetVolumeInformationW( -$swRootPath, $oswVolName, $lwVolName, $ouSerialNum, $ouMaxNameLen, -$ouFsFlags, $oswFsType, $lwFsType )>, MoveFileW, C<MoveFileW( $swOldName, -$swNewName )>, MoveFileExW, C<MoveFileExW( $swOldName, $swNewName, $uFlags -)>, QueryDosDeviceW, C<$olwTargetLen= QueryDosDeviceW( $swDeviceName, -$oswTargetPath, $lwTargetBuf )>, C<":Misc">, C<":DDD_">, C<":DRIVE_">, -C<":FILE_">, C<":FILE_ATTRIBUTE_">, C<":FILE_FLAG_">, C<":FILE_SHARE_">, -C<":FILE_TYPE_">, C<":FS_">, C<":HANDLE_FLAG_">, HANDLE_FLAG_INHERIT, -HANDLE_FLAG_PROTECT_FROM_CLOSE, C<":IOCTL_STORAGE_">, -C<IOCTL_STORAGE_CHECK_VERIFY>, C<IOCTL_STORAGE_MEDIA_REMOVAL>, -C<IOCTL_STORAGE_EJECT_MEDIA>, C<IOCTL_STORAGE_LOAD_MEDIA>, -C<IOCTL_STORAGE_RESERVE>, C<IOCTL_STORAGE_RELEASE>, -C<IOCTL_STORAGE_FIND_NEW_DEVICES>, C<IOCTL_STORAGE_GET_MEDIA_TYPES>, -C<$ucCylsLow[$i]>, C<$ivcCylsHigh[$i]>, C<$uMediaType[$i]>, -C<$uTracksPerCyl[$i]>, C<$uSectsPerTrack[$i]>, C<$uBytesPerSect[$i]>, -C<":IOCTL_DISK_">, C<IOCTL_DISK_GET_DRIVE_GEOMETRY>, C<$ucCylsLow>, -C<$ivcCylsHigh>, C<$uMediaType>, C<$uTracksPerCyl>, C<$uSectsPerTrack>, -C<$uBytesPerSect>, C<IOCTL_DISK_GET_PARTITION_INFO>, C<$uStartLow> and -C<$ivStartHigh>, C<$ucHiddenSects>, C<$uPartitionSeqNumber>, -C<$uPartitionType>, C<$bActive>, C<$bRecognized>, C<$bToRewrite>, -C<IOCTL_DISK_SET_PARTITION_INFO>, C<IOCTL_DISK_GET_DRIVE_LAYOUT>, -C<$cPartitions>, C<$uDiskSignature>, C<IOCTL_DISK_GET_MEDIA_TYPES>, -C<IOCTL_DISK_SET_DRIVE_LAYOUT>, C<IOCTL_DISK_VERIFY>, C<$uStartOffsetLow> -and C<$ivStartOffsetHigh>, C<$uLength>, C<IOCTL_DISK_FORMAT_TRACKS>, -C<IOCTL_DISK_REASSIGN_BLOCKS>, C<IOCTL_DISK_PERFORMANCE>, -C<IOCTL_DISK_IS_WRITABLE>, C<IOCTL_DISK_LOGGING>, DISK_LOGGING_START, -DISK_LOGGING_STOP, DISK_LOGGING_DUMP, DISK_LOGGING_BINNING, -C<IOCTL_DISK_FORMAT_TRACKS_EX>, C<IOCTL_DISK_HISTOGRAM_STRUCTURE>, -C<IOCTL_DISK_HISTOGRAM_DATA>, C<IOCTL_DISK_HISTOGRAM_RESET>, -C<IOCTL_DISK_REQUEST_STRUCTURE>, C<IOCTL_DISK_REQUEST_DATA>, C<":FSCTL_">, -C<FSCTL_SET_REPARSE_POINT>, C<FSCTL_GET_REPARSE_POINT>, -C<FSCTL_DELETE_REPARSE_POINT>, C<":GENERIC_">, C<":MEDIA_TYPE">, -C<Unknown>, C<F5_1Pt2_512>, C<F3_1Pt44_512>, C<F3_2Pt88_512>, -C<F3_20Pt8_512>, C<F3_720_512>, C<F5_360_512>, C<F5_320_512>, -C<F5_320_1024>, C<F5_180_512>, C<F5_160_512>, C<RemovableMedia>, -C<FixedMedia>, C<F3_120M_512>, C<":MOVEFILE_">, C<":SECURITY_">, -C<":SEM_">, C<":PARTITION_">, C<":ALL"> - -=back - -=item BUGS - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 Win32CORE - Win32 CORE function stubs - -=over 4 - -=item DESCRIPTION - -=item HISTORY - -=back - -=head2 XSLoader - Dynamically load C libraries into Perl code - -=over 4 - -=item VERSION - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Migration from C<DynaLoader> - -=item Backward compatible boilerplate - -=back - -=item Order of initialization: early load() - -=over 4 - -=item The most hairy case - -=back - -=item DIAGNOSTICS - -C<Can't find '%s' symbol in %s>, C<Can't load '%s' for module %s: %s>, -C<Undefined symbols present after loading %s: %s>, -C<XSLoader::load('Your::Module', $Your::Module::VERSION)> - -=item LIMITATIONS - -=item BUGS - -=item SEE ALSO - -=item AUTHORS - -=item COPYRIGHT & LICENSE - -=back - -=head1 AUXILIARY DOCUMENTATION - -Here should be listed all the extra programs' documentation, but they -don't all have manual pages yet: - -=over 4 - -=item a2p - -=item c2ph - -=item dprofpp - -=item h2ph - -=item h2xs - -=item perlbug - -=item perldoc - -=item pl2pm - -=item pod2html - -=item pod2man - -=item s2p - -=item splain - -=item xsubpp - -=back - -=head1 AUTHOR - -Larry Wall <F<larry@wall.org>>, with the help of oodles -of other folks. - diff --git a/pod/perltodo.pod b/pod/perltodo.pod index 440cae1514..0a75e7092b 100644 --- a/pod/perltodo.pod +++ b/pod/perltodo.pod @@ -400,6 +400,20 @@ C<$Config{link}> and institute a fall-back plan if it weren't found." Although I can see that as confusing, given that C<$Config{d_link}> is true when (hard) links are available. +=head2 Configure Windows using PowerShell + +Currently, Windows uses hard-coded config files based to build the +config.h for compiling Perl. Makefiles are also hard-coded and need to be +hand edited prior to building Perl. While this makes it easy to create a perl.exe +that works across multiple Windows versions, being able to accurately +configure a perl.exe for a specific Windows versions and VS C++ would be +a nice enhancement. With PowerShell available on Windows XP and up, this +may now be possible. Step 1 might be to investigate whether this is possible +and use this to clean up our current makefile situation. Step 2 would be to +see if there would be a way to use our existing metaconfig units to configure a +Windows Perl or whether we go in a separate direction and make it so. Of +course, we all know what step 3 is. + =head1 Tasks that need a little C knowledge These tasks would need a little C knowledge, but don't need any specific diff --git a/pod/perlvar.pod b/pod/perlvar.pod index 9be3bc1eff..7c61a05096 100644 --- a/pod/perlvar.pod +++ b/pod/perlvar.pod @@ -241,7 +241,7 @@ See L</@-> for a replacement. =item ${^MATCH} X<${^MATCH}> -This is similar to C<$&> (C<$POSTMATCH>) except that it does not incur the +This is similar to C<$&> (C<$MATCH>) except that it does not incur the performance penalty associated with that variable, and is only guaranteed to return a defined value when the pattern was compiled or executed with the C</p> modifier. @@ -1037,8 +1037,9 @@ subscripting and when evaluating the index() and substr() functions. As of release 5 of Perl, assignment to C<$[> is treated as a compiler directive, and cannot influence the behavior of any other file. -(That's why you can only assign compile-time constants to it.) -Its use is highly discouraged. +(That's why you can only assign compile-time constants to it.) Its +use is deprecated, and will trigger a warning (if the deprecation +L<warnings> category is enabled. You did C<use warnings>, right?) Note that, unlike other compile-time directives (such as L<strict>), assignment to C<$[> can be seen from outer lexical scopes in the same file. diff --git a/pod/perlvms.pod b/pod/perlvms.pod new file mode 100644 index 0000000000..b8993d818d --- /dev/null +++ b/pod/perlvms.pod @@ -0,0 +1,1223 @@ +=head1 NAME + +perlvms - VMS-specific documentation for Perl + +=head1 DESCRIPTION + +Gathered below are notes describing details of Perl 5's +behavior on VMS. They are a supplement to the regular Perl 5 +documentation, so we have focussed on the ways in which Perl +5 functions differently under VMS than it does under Unix, +and on the interactions between Perl and the rest of the +operating system. We haven't tried to duplicate complete +descriptions of Perl features from the main Perl +documentation, which can be found in the F<[.pod]> +subdirectory of the Perl distribution. + +We hope these notes will save you from confusion and lost +sleep when writing Perl scripts on VMS. If you find we've +missed something you think should appear here, please don't +hesitate to drop a line to vmsperl@perl.org. + +=head1 Installation + +Directions for building and installing Perl 5 can be found in +the file F<README.vms> in the main source directory of the +Perl distribution.. + +=head1 Organization of Perl Images + +=head2 Core Images + +During the installation process, three Perl images are produced. +F<Miniperl.Exe> is an executable image which contains all of +the basic functionality of Perl, but cannot take advantage of +Perl extensions. It is used to generate several files needed +to build the complete Perl and various extensions. Once you've +finished installing Perl, you can delete this image. + +Most of the complete Perl resides in the shareable image +F<PerlShr.Exe>, which provides a core to which the Perl executable +image and all Perl extensions are linked. You should place this +image in F<Sys$Share>, or define the logical name F<PerlShr> to +translate to the full file specification of this image. It should +be world readable. (Remember that if a user has execute only access +to F<PerlShr>, VMS will treat it as if it were a privileged shareable +image, and will therefore require all downstream shareable images to be +INSTALLed, etc.) + + +Finally, F<Perl.Exe> is an executable image containing the main +entry point for Perl, as well as some initialization code. It +should be placed in a public directory, and made world executable. +In order to run Perl with command line arguments, you should +define a foreign command to invoke this image. + +=head2 Perl Extensions + +Perl extensions are packages which provide both XS and Perl code +to add new functionality to perl. (XS is a meta-language which +simplifies writing C code which interacts with Perl, see +L<perlxs> for more details.) The Perl code for an +extension is treated like any other library module - it's +made available in your script through the appropriate +C<use> or C<require> statement, and usually defines a Perl +package containing the extension. + +The portion of the extension provided by the XS code may be +connected to the rest of Perl in either of two ways. In the +B<static> configuration, the object code for the extension is +linked directly into F<PerlShr.Exe>, and is initialized whenever +Perl is invoked. In the B<dynamic> configuration, the extension's +machine code is placed into a separate shareable image, which is +mapped by Perl's DynaLoader when the extension is C<use>d or +C<require>d in your script. This allows you to maintain the +extension as a separate entity, at the cost of keeping track of the +additional shareable image. Most extensions can be set up as either +static or dynamic. + +The source code for an extension usually resides in its own +directory. At least three files are generally provided: +I<Extshortname>F<.xs> (where I<Extshortname> is the portion of +the extension's name following the last C<::>), containing +the XS code, I<Extshortname>F<.pm>, the Perl library module +for the extension, and F<Makefile.PL>, a Perl script which uses +the C<MakeMaker> library modules supplied with Perl to generate +a F<Descrip.MMS> file for the extension. + +=head2 Installing static extensions + +Since static extensions are incorporated directly into +F<PerlShr.Exe>, you'll have to rebuild Perl to incorporate a +new extension. You should edit the main F<Descrip.MMS> or F<Makefile> +you use to build Perl, adding the extension's name to the C<ext> +macro, and the extension's object file to the C<extobj> macro. +You'll also need to build the extension's object file, either +by adding dependencies to the main F<Descrip.MMS>, or using a +separate F<Descrip.MMS> for the extension. Then, rebuild +F<PerlShr.Exe> to incorporate the new code. + +Finally, you'll need to copy the extension's Perl library +module to the F<[.>I<Extname>F<]> subdirectory under one +of the directories in C<@INC>, where I<Extname> is the name +of the extension, with all C<::> replaced by C<.> (e.g. +the library module for extension Foo::Bar would be copied +to a F<[.Foo.Bar]> subdirectory). + +=head2 Installing dynamic extensions + +In general, the distributed kit for a Perl extension includes +a file named Makefile.PL, which is a Perl program which is used +to create a F<Descrip.MMS> file which can be used to build and +install the files required by the extension. The kit should be +unpacked into a directory tree B<not> under the main Perl source +directory, and the procedure for building the extension is simply + + $ perl Makefile.PL ! Create Descrip.MMS + $ mmk ! Build necessary files + $ mmk test ! Run test code, if supplied + $ mmk install ! Install into public Perl tree + +I<N.B.> The procedure by which extensions are built and +tested creates several levels (at least 4) under the +directory in which the extension's source files live. +For this reason if you are running a version of VMS prior +to V7.1 you shouldn't nest the source directory +too deeply in your directory structure lest you exceed RMS' +maximum of 8 levels of subdirectory in a filespec. (You +can use rooted logical names to get another 8 levels of +nesting, if you can't place the files near the top of +the physical directory structure.) + +VMS support for this process in the current release of Perl +is sufficient to handle most extensions. However, it does +not yet recognize extra libraries required to build shareable +images which are part of an extension, so these must be added +to the linker options file for the extension by hand. For +instance, if the F<PGPLOT> extension to Perl requires the +F<PGPLOTSHR.EXE> shareable image in order to properly link +the Perl extension, then the line C<PGPLOTSHR/Share> must +be added to the linker options file F<PGPLOT.Opt> produced +during the build process for the Perl extension. + +By default, the shareable image for an extension is placed in +the F<[.lib.site_perl.auto>I<Arch>.I<Extname>F<]> directory of the +installed Perl directory tree (where I<Arch> is F<VMS_VAX> or +F<VMS_AXP>, and I<Extname> is the name of the extension, with +each C<::> translated to C<.>). (See the MakeMaker documentation +for more details on installation options for extensions.) +However, it can be manually placed in any of several locations: + +=over 4 + +=item * + +the F<[.Lib.Auto.>I<Arch>I<$PVers>I<Extname>F<]> subdirectory +of one of the directories in C<@INC> (where I<PVers> +is the version of Perl you're using, as supplied in C<$]>, +with '.' converted to '_'), or + +=item * + +one of the directories in C<@INC>, or + +=item * + +a directory which the extensions Perl library module +passes to the DynaLoader when asking it to map +the shareable image, or + +=item * + +F<Sys$Share> or F<Sys$Library>. + +=back + +If the shareable image isn't in any of these places, you'll need +to define a logical name I<Extshortname>, where I<Extshortname> +is the portion of the extension's name after the last C<::>, which +translates to the full file specification of the shareable image. + +=head1 File specifications + +=head2 Syntax + +We have tried to make Perl aware of both VMS-style and Unix-style file +specifications wherever possible. You may use either style, or both, +on the command line and in scripts, but you may not combine the two +styles within a single file specification. VMS Perl interprets Unix +pathnames in much the same way as the CRTL (I<e.g.> the first component +of an absolute path is read as the device name for the VMS file +specification). There are a set of functions provided in the +C<VMS::Filespec> package for explicit interconversion between VMS and +Unix syntax; its documentation provides more details. + +We've tried to minimize the dependence of Perl library +modules on Unix syntax, but you may find that some of these, +as well as some scripts written for Unix systems, will +require that you use Unix syntax, since they will assume that +'/' is the directory separator, I<etc.> If you find instances +of this in the Perl distribution itself, please let us know, +so we can try to work around them. + +Also when working on Perl programs on VMS, if you need a syntax +in a specific operating system format, then you need either to +check the appropriate DECC$ feature logical, or call a conversion +routine to force it to that format. + +The feature logical name DECC$FILENAME_UNIX_REPORT modifies traditional +Perl behavior in the conversion of file specifications from UNIX to VMS +format in order to follow the extended character handling rules now +expected by the CRTL. Specifically, when this feature is in effect, the +C<./.../> in a UNIX path is now translated to C<[.^.^.^.]> instead of +the traditional VMS C<[...]>. To be compatible with what MakeMaker +expects, if a VMS path cannot be translated to a UNIX path, it is +passed through unchanged, so C<unixify("[...]")> will return C<[...]>. + +The handling of extended characters is largely complete in the +VMS-specific C infrastructure of Perl, but more work is still needed to +fully support extended syntax filenames in several core modules. In +particular, at this writing PathTools has only partial support for +directories containing some extended characters. + +There are several ambiguous cases where a conversion routine cannot +determine whether an input filename is in UNIX format or in VMS format, +since now both VMS and UNIX file specifications may have characters in +them that could be mistaken for syntax delimiters of the other type. So +some pathnames simply cannot be used in a mode that allows either type +of pathname to be present. Perl will tend to assume that an ambiguous +filename is in UNIX format. + +Allowing "." as a version delimiter is simply incompatible with +determining whether a pathname is in VMS format or in UNIX format with +extended file syntax. There is no way to know whether "perl-5.8.6" is a +UNIX "perl-5.8.6" or a VMS "perl-5.8;6" when passing it to unixify() or +vmsify(). + +The DECC$FILENAME_UNIX_REPORT logical name controls how Perl interprets +filenames to the extent that Perl uses the CRTL internally for many +purposes, and attempts to follow CRTL conventions for reporting +filenames. The DECC$FILENAME_UNIX_ONLY feature differs in that it +expects all filenames passed to the C run-time to be already in UNIX +format. This feature is not yet supported in Perl since Perl uses +traditional OpenVMS file specifications internally and in the test +harness, and it is not yet clear whether this mode will be useful or +useable. The feature logical name DECC$POSIX_COMPLIANT_PATHNAMES is new +with the RMS Symbolic Link SDK and included with OpenVMS v8.3, but is +not yet supported in Perl. + +=head2 Filename Case + +Perl follows VMS defaults and override settings in preserving (or not +preserving) filename case. Case is not preserved on ODS-2 formatted +volumes on any architecture. On ODS-5 volumes, filenames may be case +preserved depending on process and feature settings. Perl now honors +DECC$EFS_CASE_PRESERVE and DECC$ARGV_PARSE_STYLE on those systems where +the CRTL supports these features. When these features are not enabled +or the CRTL does not support them, Perl follows the traditional CRTL +behavior of downcasing command-line arguments and returning file +specifications in lower case only. + +I<N. B.> It is very easy to get tripped up using a mixture of other +programs, external utilities, and Perl scripts that are in varying +states of being able to handle case preservation. For example, a file +created by an older version of an archive utility or a build utility +such as MMK or MMS may generate a filename in all upper case even on an +ODS-5 volume. If this filename is later retrieved by a Perl script or +module in a case preserving environment, that upper case name may not +match the mixed-case or lower-case expections of the Perl code. Your +best bet is to follow an all-or-nothing approach to case preservation: +either don't use it at all, or make sure your entire toolchain and +application environment support and use it. + +OpenVMS Alpha v7.3-1 and later and all version of OpenVMS I64 support +case sensitivity as a process setting (see C<SET PROCESS +/CASE_LOOKUP=SENSITIVE>). Perl does not currently suppport case +sensitivity on VMS, but it may in the future, so Perl programs should +use the C<File::Spec->case_tolerant> method to determine the state, and +not the C<$^O> variable. + +=head2 Symbolic Links + +When built on an ODS-5 volume with symbolic links enabled, Perl by +default supports symbolic links when the requisite support is available +in the filesystem and CRTL (generally 64-bit OpenVMS v8.3 and later). +There are a number of limitations and caveats to be aware of when +working with symbolic links on VMS. Most notably, the target of a valid +symbolic link must be expressed as a UNIX-style path and it must exist +on a volume visible from your POSIX root (see the C<SHOW ROOT> command +in DCL help). For further details on symbolic link capabilities and +requirements, see chapter 12 of the CRTL manual that ships with OpenVMS +v8.3 or later. + +=head2 Wildcard expansion + +File specifications containing wildcards are allowed both on +the command line and within Perl globs (e.g. C<E<lt>*.cE<gt>>). If +the wildcard filespec uses VMS syntax, the resultant +filespecs will follow VMS syntax; if a Unix-style filespec is +passed in, Unix-style filespecs will be returned. +Similar to the behavior of wildcard globbing for a Unix shell, +one can escape command line wildcards with double quotation +marks C<"> around a perl program command line argument. However, +owing to the stripping of C<"> characters carried out by the C +handling of argv you will need to escape a construct such as +this one (in a directory containing the files F<PERL.C>, F<PERL.EXE>, +F<PERL.H>, and F<PERL.OBJ>): + + $ perl -e "print join(' ',@ARGV)" perl.* + perl.c perl.exe perl.h perl.obj + +in the following triple quoted manner: + + $ perl -e "print join(' ',@ARGV)" """perl.*""" + perl.* + +In both the case of unquoted command line arguments or in calls +to C<glob()> VMS wildcard expansion is performed. (csh-style +wildcard expansion is available if you use C<File::Glob::glob>.) +If the wildcard filespec contains a device or directory +specification, then the resultant filespecs will also contain +a device and directory; otherwise, device and directory +information are removed. VMS-style resultant filespecs will +contain a full device and directory, while Unix-style +resultant filespecs will contain only as much of a directory +path as was present in the input filespec. For example, if +your default directory is Perl_Root:[000000], the expansion +of C<[.t]*.*> will yield filespecs like +"perl_root:[t]base.dir", while the expansion of C<t/*/*> will +yield filespecs like "t/base.dir". (This is done to match +the behavior of glob expansion performed by Unix shells.) + +Similarly, the resultant filespec will contain the file version +only if one was present in the input filespec. + + +=head2 Pipes + +Input and output pipes to Perl filehandles are supported; the +"file name" is passed to lib$spawn() for asynchronous +execution. You should be careful to close any pipes you have +opened in a Perl script, lest you leave any "orphaned" +subprocesses around when Perl exits. + +You may also use backticks to invoke a DCL subprocess, whose +output is used as the return value of the expression. The +string between the backticks is handled as if it were the +argument to the C<system> operator (see below). In this case, +Perl will wait for the subprocess to complete before continuing. + +The mailbox (MBX) that perl can create to communicate with a pipe +defaults to a buffer size of 512. The default buffer size is +adjustable via the logical name PERL_MBX_SIZE provided that the +value falls between 128 and the SYSGEN parameter MAXBUF inclusive. +For example, to double the MBX size from the default within +a Perl program, use C<$ENV{'PERL_MBX_SIZE'} = 1024;> and then +open and use pipe constructs. An alternative would be to issue +the command: + + $ Define PERL_MBX_SIZE 1024 + +before running your wide record pipe program. A larger value may +improve performance at the expense of the BYTLM UAF quota. + +=head1 PERL5LIB and PERLLIB + +The PERL5LIB and PERLLIB logical names work as documented in L<perl>, +except that the element separator is '|' instead of ':'. The +directory specifications may use either VMS or Unix syntax. + +=head1 The Perl Forked Debugger + +The Perl forked debugger places the debugger commands and output in a +separate X-11 terminal window so that commands and output from multiple +processes are not mixed together. + +Perl on VMS supports an emulation of the forked debugger when Perl is +run on a VMS system that has X11 support installed. + +To use the forked debugger, you need to have the default display set to an +X-11 Server and some environment variables set that Unix expects. + +The forked debugger requires the environment variable C<TERM> to be C<xterm>, +and the environment variable C<DISPLAY> to exist. C<xterm> must be in +lower case. + + $define TERM "xterm" + + $define DISPLAY "hostname:0.0" + +Currently the value of C<DISPLAY> is ignored. It is recommended that it be set +to be the hostname of the display, the server and screen in UNIX notation. In +the future the value of DISPLAY may be honored by Perl instead of using the +default display. + +It may be helpful to always use the forked debugger so that script I/O is +separated from debugger I/O. You can force the debugger to be forked by +assigning a value to the logical name <PERLDB_PIDS> that is not a process +identification number. + + $define PERLDB_PIDS XXXX + + +=head1 PERL_VMS_EXCEPTION_DEBUG + +The PERL_VMS_EXCEPTION_DEBUG being defined as "ENABLE" will cause the VMS +debugger to be invoked if a fatal exception that is not otherwise +handled is raised. The purpose of this is to allow debugging of +internal Perl problems that would cause such a condition. + +This allows the programmer to look at the execution stack and variables to +find out the cause of the exception. As the debugger is being invoked as +the Perl interpreter is about to do a fatal exit, continuing the execution +in debug mode is usally not practical. + +Starting Perl in the VMS debugger may change the program execution +profile in a way that such problems are not reproduced. + +The C<kill> function can be used to test this functionality from within +a program. + +In typical VMS style, only the first letter of the value of this logical +name is actually checked in a case insensitive mode, and it is considered +enabled if it is the value "T","1" or "E". + +This logical name must be defined before Perl is started. + +=head1 Command line + +=head2 I/O redirection and backgrounding + +Perl for VMS supports redirection of input and output on the +command line, using a subset of Bourne shell syntax: + +=over 4 + +=item * + +C<E<lt>file> reads stdin from C<file>, + +=item * + +C<E<gt>file> writes stdout to C<file>, + +=item * + +C<E<gt>E<gt>file> appends stdout to C<file>, + +=item * + +C<2E<gt>file> writes stderr to C<file>, + +=item * + +C<2E<gt>E<gt>file> appends stderr to C<file>, and + +=item * + +C<< 2>&1 >> redirects stderr to stdout. + +=back + +In addition, output may be piped to a subprocess, using the +character '|'. Anything after this character on the command +line is passed to a subprocess for execution; the subprocess +takes the output of Perl as its input. + +Finally, if the command line ends with '&', the entire +command is run in the background as an asynchronous +subprocess. + +=head2 Command line switches + +The following command line switches behave differently under +VMS than described in L<perlrun>. Note also that in order +to pass uppercase switches to Perl, you need to enclose +them in double-quotes on the command line, since the CRTL +downcases all unquoted strings. + +On newer 64 bit versions of OpenVMS, a process setting now +controls if the quoting is needed to preserve the case of +command line arguments. + +=over 4 + +=item -i + +If the C<-i> switch is present but no extension for a backup +copy is given, then inplace editing creates a new version of +a file; the existing copy is not deleted. (Note that if +an extension is given, an existing file is renamed to the backup +file, as is the case under other operating systems, so it does +not remain as a previous version under the original filename.) + +=item -S + +If the C<"-S"> or C<-"S"> switch is present I<and> the script +name does not contain a directory, then Perl translates the +logical name DCL$PATH as a searchlist, using each translation +as a directory in which to look for the script. In addition, +if no file type is specified, Perl looks in each directory +for a file matching the name specified, with a blank type, +a type of F<.pl>, and a type of F<.com>, in that order. + +=item -u + +The C<-u> switch causes the VMS debugger to be invoked +after the Perl program is compiled, but before it has +run. It does not create a core dump file. + +=back + +=head1 Perl functions + +As of the time this document was last revised, the following +Perl functions were implemented in the VMS port of Perl +(functions marked with * are discussed in more detail below): + + file tests*, abs, alarm, atan, backticks*, binmode*, bless, + caller, chdir, chmod, chown, chomp, chop, chr, + close, closedir, cos, crypt*, defined, delete, die, do, dump*, + each, endgrent, endpwent, eof, eval, exec*, exists, exit, exp, + fileno, flock getc, getgrent*, getgrgid*, getgrnam, getlogin, getppid, + getpwent*, getpwnam*, getpwuid*, glob, gmtime*, goto, + grep, hex, ioctl, import, index, int, join, keys, kill*, + last, lc, lcfirst, lchown*, length, link*, local, localtime, log, lstat, m//, + map, mkdir, my, next, no, oct, open, opendir, ord, pack, + pipe, pop, pos, print, printf, push, q//, qq//, qw//, + qx//*, quotemeta, rand, read, readdir, readlink*, redo, ref, rename, + require, reset, return, reverse, rewinddir, rindex, + rmdir, s///, scalar, seek, seekdir, select(internal), + select (system call)*, setgrent, setpwent, shift, sin, sleep, + socketpair, sort, splice, split, sprintf, sqrt, srand, stat, + study, substr, symlink*, sysread, system*, syswrite, tell, + telldir, tie, time, times*, tr///, uc, ucfirst, umask, + undef, unlink*, unpack, untie, unshift, use, utime*, + values, vec, wait, waitpid*, wantarray, warn, write, y/// + +The following functions were not implemented in the VMS port, +and calling them produces a fatal error (usually) or +undefined behavior (rarely, we hope): + + chroot, dbmclose, dbmopen, fork*, getpgrp, getpriority, + msgctl, msgget, msgsend, msgrcv, semctl, + semget, semop, setpgrp, setpriority, shmctl, shmget, + shmread, shmwrite, syscall + +The following functions are available on Perls compiled with Dec C +5.2 or greater and running VMS 7.0 or greater: + + truncate + +The following functions are available on Perls built on VMS 7.2 or +greater: + + fcntl (without locking) + +The following functions may or may not be implemented, +depending on what type of socket support you've built into +your copy of Perl: + + accept, bind, connect, getpeername, + gethostbyname, getnetbyname, getprotobyname, + getservbyname, gethostbyaddr, getnetbyaddr, + getprotobynumber, getservbyport, gethostent, + getnetent, getprotoent, getservent, sethostent, + setnetent, setprotoent, setservent, endhostent, + endnetent, endprotoent, endservent, getsockname, + getsockopt, listen, recv, select(system call)*, + send, setsockopt, shutdown, socket + +The following function is available on Perls built on 64 bit OpenVMS v8.2 +with hard links enabled on an ODS-5 formatted build disk. CRTL support +is in principle available as of OpenVMS v7.3-1, and better configuration +support could detect this. + + link + +The following functions are available on Perls built on 64 bit OpenVMS +v8.2 and later. CRTL support is in principle available as of OpenVMS +v7.3-2, and better configuration support could detect this. + + getgrgid, getgrnam, getpwnam, getpwuid, + setgrent, ttyname + +The following functions are available on Perls built on 64 bit OpenVMS v8.2 +and later. + + statvfs, socketpair + +=over 4 + +=item File tests + +The tests C<-b>, C<-B>, C<-c>, C<-C>, C<-d>, C<-e>, C<-f>, +C<-o>, C<-M>, C<-s>, C<-S>, C<-t>, C<-T>, and C<-z> work as +advertised. The return values for C<-r>, C<-w>, and C<-x> +tell you whether you can actually access the file; this may +not reflect the UIC-based file protections. Since real and +effective UIC don't differ under VMS, C<-O>, C<-R>, C<-W>, +and C<-X> are equivalent to C<-o>, C<-r>, C<-w>, and C<-x>. +Similarly, several other tests, including C<-A>, C<-g>, C<-k>, +C<-l>, C<-p>, and C<-u>, aren't particularly meaningful under +VMS, and the values returned by these tests reflect whatever +your CRTL C<stat()> routine does to the equivalent bits in the +st_mode field. Finally, C<-d> returns true if passed a device +specification without an explicit directory (e.g. C<DUA1:>), as +well as if passed a directory. + +There are DECC feature logical names AND ODS-5 volume attributes that +also control what values are returned for the date fields. + +Note: Some sites have reported problems when using the file-access +tests (C<-r>, C<-w>, and C<-x>) on files accessed via DEC's DFS. +Specifically, since DFS does not currently provide access to the +extended file header of files on remote volumes, attempts to +examine the ACL fail, and the file tests will return false, +with C<$!> indicating that the file does not exist. You can +use C<stat> on these files, since that checks UIC-based protection +only, and then manually check the appropriate bits, as defined by +your C compiler's F<stat.h>, in the mode value it returns, if you +need an approximation of the file's protections. + +=item backticks + +Backticks create a subprocess, and pass the enclosed string +to it for execution as a DCL command. Since the subprocess is +created directly via C<lib$spawn()>, any valid DCL command string +may be specified. + +=item binmode FILEHANDLE + +The C<binmode> operator will attempt to insure that no translation +of carriage control occurs on input from or output to this filehandle. +Since this involves reopening the file and then restoring its +file position indicator, if this function returns FALSE, the +underlying filehandle may no longer point to an open file, or may +point to a different position in the file than before C<binmode> +was called. + +Note that C<binmode> is generally not necessary when using normal +filehandles; it is provided so that you can control I/O to existing +record-structured files when necessary. You can also use the +C<vmsfopen> function in the VMS::Stdio extension to gain finer +control of I/O to files and devices with different record structures. + +=item crypt PLAINTEXT, USER + +The C<crypt> operator uses the C<sys$hash_password> system +service to generate the hashed representation of PLAINTEXT. +If USER is a valid username, the algorithm and salt values +are taken from that user's UAF record. If it is not, then +the preferred algorithm and a salt of 0 are used. The +quadword encrypted value is returned as an 8-character string. + +The value returned by C<crypt> may be compared against +the encrypted password from the UAF returned by the C<getpw*> +functions, in order to authenticate users. If you're +going to do this, remember that the encrypted password in +the UAF was generated using uppercase username and +password strings; you'll have to upcase the arguments to +C<crypt> to insure that you'll get the proper value: + + sub validate_passwd { + my($user,$passwd) = @_; + my($pwdhash); + if ( !($pwdhash = (getpwnam($user))[1]) || + $pwdhash ne crypt("\U$passwd","\U$name") ) { + intruder_alert($name); + } + return 1; + } + + +=item die + +C<die> will force the native VMS exit status to be an SS$_ABORT code +if neither of the $! or $? status values are ones that would cause +the native status to be interpreted as being what VMS classifies as +SEVERE_ERROR severity for DCL error handling. + +When the future POSIX_EXIT mode is active, C<die>, the native VMS exit +status value will have either one of the C<$!> or C<$?> or C<$^E> or +the UNIX value 255 encoded into it in a way that the effective original +value can be decoded by other programs written in C, including Perl +and the GNV package. As per the normal non-VMS behavior of C<die> if +either C<$!> or C<$?> are non-zero, one of those values will be +encoded into a native VMS status value. If both of the UNIX status +values are 0, and the C<$^E> value is set one of ERROR or SEVERE_ERROR +severity, then the C<$^E> value will be used as the exit code as is. +If none of the above apply, the UNIX value of 255 will be encoded into +a native VMS exit status value. + +Please note a significant difference in the behavior of C<die> in +the future POSIX_EXIT mode is that it does not force a VMS +SEVERE_ERROR status on exit. The UNIX exit values of 2 through +255 will be encoded in VMS status values with severity levels of +SUCCESS. The UNIX exit value of 1 will be encoded in a VMS status +value with a severity level of ERROR. This is to be compatible with +how the VMS C library encodes these values. + +The minimum severity level set by C<die> in a future POSIX_EXIT mode +may be changed to be ERROR or higher before that mode becomes fully active +depending on the results of testing and further review. If this is +done, the behavior of c<DIE> in the future POSIX_EXIT will close enough +to the default mode that most DCL shell scripts will probably not notice +a difference. + +See C<$?> for a description of the encoding of the UNIX value to +produce a native VMS status containing it. + + +=item dump + +Rather than causing Perl to abort and dump core, the C<dump> +operator invokes the VMS debugger. If you continue to +execute the Perl program under the debugger, control will +be transferred to the label specified as the argument to +C<dump>, or, if no label was specified, back to the +beginning of the program. All other state of the program +(I<e.g.> values of variables, open file handles) are not +affected by calling C<dump>. + +=item exec LIST + +A call to C<exec> will cause Perl to exit, and to invoke the command +given as an argument to C<exec> via C<lib$do_command>. If the +argument begins with '@' or '$' (other than as part of a filespec), +then it is executed as a DCL command. Otherwise, the first token on +the command line is treated as the filespec of an image to run, and +an attempt is made to invoke it (using F<.Exe> and the process +defaults to expand the filespec) and pass the rest of C<exec>'s +argument to it as parameters. If the token has no file type, and +matches a file with null type, then an attempt is made to determine +whether the file is an executable image which should be invoked +using C<MCR> or a text file which should be passed to DCL as a +command procedure. + +=item fork + +While in principle the C<fork> operator could be implemented via +(and with the same rather severe limitations as) the CRTL C<vfork()> +routine, and while some internal support to do just that is in +place, the implementation has never been completed, making C<fork> +currently unavailable. A true kernel C<fork()> is expected in a +future version of VMS, and the pseudo-fork based on interpreter +threads may be available in a future version of Perl on VMS (see +L<perlfork>). In the meantime, use C<system>, backticks, or piped +filehandles to create subprocesses. + +=item getpwent + +=item getpwnam + +=item getpwuid + +These operators obtain the information described in L<perlfunc>, +if you have the privileges necessary to retrieve the named user's +UAF information via C<sys$getuai>. If not, then only the C<$name>, +C<$uid>, and C<$gid> items are returned. The C<$dir> item contains +the login directory in VMS syntax, while the C<$comment> item +contains the login directory in Unix syntax. The C<$gcos> item +contains the owner field from the UAF record. The C<$quota> +item is not used. + +=item gmtime + +The C<gmtime> operator will function properly if you have a +working CRTL C<gmtime()> routine, or if the logical name +SYS$TIMEZONE_DIFFERENTIAL is defined as the number of seconds +which must be added to UTC to yield local time. (This logical +name is defined automatically if you are running a version of +VMS with built-in UTC support.) If neither of these cases is +true, a warning message is printed, and C<undef> is returned. + +=item kill + +In most cases, C<kill> is implemented via the undocumented system +service <$SIGPRC>, which has the same calling sequence as <$FORCEX>, but +throws an exception in the target process rather than forcing it to call +C<$EXIT>. Generally speaking, C<kill> follows the behavior of the +CRTL's C<kill()> function, but unlike that function can be called from +within a signal handler. Also, unlike the C<kill> in some versions of +the CRTL, Perl's C<kill> checks the validity of the signal passed in and +returns an error rather than attempting to send an unrecognized signal. + +Also, negative signal values don't do anything special under +VMS; they're just converted to the corresponding positive value. + +=item qx// + +See the entry on C<backticks> above. + +=item select (system call) + +If Perl was not built with socket support, the system call +version of C<select> is not available at all. If socket +support is present, then the system call version of +C<select> functions only for file descriptors attached +to sockets. It will not provide information about regular +files or pipes, since the CRTL C<select()> routine does not +provide this functionality. + +=item stat EXPR + +Since VMS keeps track of files according to a different scheme +than Unix, it's not really possible to represent the file's ID +in the C<st_dev> and C<st_ino> fields of a C<struct stat>. Perl +tries its best, though, and the values it uses are pretty unlikely +to be the same for two different files. We can't guarantee this, +though, so caveat scriptor. + +=item system LIST + +The C<system> operator creates a subprocess, and passes its +arguments to the subprocess for execution as a DCL command. +Since the subprocess is created directly via C<lib$spawn()>, any +valid DCL command string may be specified. If the string begins with +'@', it is treated as a DCL command unconditionally. Otherwise, if +the first token contains a character used as a delimiter in file +specification (e.g. C<:> or C<]>), an attempt is made to expand it +using a default type of F<.Exe> and the process defaults, and if +successful, the resulting file is invoked via C<MCR>. This allows you +to invoke an image directly simply by passing the file specification +to C<system>, a common Unixish idiom. If the token has no file type, +and matches a file with null type, then an attempt is made to +determine whether the file is an executable image which should be +invoked using C<MCR> or a text file which should be passed to DCL +as a command procedure. + +If LIST consists of the empty string, C<system> spawns an +interactive DCL subprocess, in the same fashion as typing +B<SPAWN> at the DCL prompt. + +Perl waits for the subprocess to complete before continuing +execution in the current process. As described in L<perlfunc>, +the return value of C<system> is a fake "status" which follows +POSIX semantics unless the pragma C<use vmsish 'status'> is in +effect; see the description of C<$?> in this document for more +detail. + +=item time + +The value returned by C<time> is the offset in seconds from +01-JAN-1970 00:00:00 (just like the CRTL's times() routine), in order +to make life easier for code coming in from the POSIX/Unix world. + +=item times + +The array returned by the C<times> operator is divided up +according to the same rules the CRTL C<times()> routine. +Therefore, the "system time" elements will always be 0, since +there is no difference between "user time" and "system" time +under VMS, and the time accumulated by a subprocess may or may +not appear separately in the "child time" field, depending on +whether L<times> keeps track of subprocesses separately. Note +especially that the VAXCRTL (at least) keeps track only of +subprocesses spawned using L<fork> and L<exec>; it will not +accumulate the times of subprocesses spawned via pipes, L<system>, +or backticks. + +=item unlink LIST + +C<unlink> will delete the highest version of a file only; in +order to delete all versions, you need to say + + 1 while unlink LIST; + +You may need to make this change to scripts written for a +Unix system which expect that after a call to C<unlink>, +no files with the names passed to C<unlink> will exist. +(Note: This can be changed at compile time; if you +C<use Config> and C<$Config{'d_unlink_all_versions'}> is +C<define>, then C<unlink> will delete all versions of a +file on the first call.) + +C<unlink> will delete a file if at all possible, even if it +requires changing file protection (though it won't try to +change the protection of the parent directory). You can tell +whether you've got explicit delete access to a file by using the +C<VMS::Filespec::candelete> operator. For instance, in order +to delete only files to which you have delete access, you could +say something like + + sub safe_unlink { + my($file,$num); + foreach $file (@_) { + next unless VMS::Filespec::candelete($file); + $num += unlink $file; + } + $num; + } + +(or you could just use C<VMS::Stdio::remove>, if you've installed +the VMS::Stdio extension distributed with Perl). If C<unlink> has to +change the file protection to delete the file, and you interrupt it +in midstream, the file may be left intact, but with a changed ACL +allowing you delete access. + +This behavior of C<unlink> is to be compatible with POSIX behavior +and not traditional VMS behavior. + +=item utime LIST + +This operator changes only the modification time of the file (VMS +revision date) on ODS-2 volumes and ODS-5 volumes without access +dates enabled. On ODS-5 volumes with access dates enabled, the +true access time is modified. + +=item waitpid PID,FLAGS + +If PID is a subprocess started by a piped C<open()> (see L<open>), +C<waitpid> will wait for that subprocess, and return its final status +value in C<$?>. If PID is a subprocess created in some other way (e.g. +SPAWNed before Perl was invoked), C<waitpid> will simply check once per +second whether the process has completed, and return when it has. (If +PID specifies a process that isn't a subprocess of the current process, +and you invoked Perl with the C<-w> switch, a warning will be issued.) + +Returns PID on success, -1 on error. The FLAGS argument is ignored +in all cases. + +=back + +=head1 Perl variables + +The following VMS-specific information applies to the indicated +"special" Perl variables, in addition to the general information +in L<perlvar>. Where there is a conflict, this information +takes precedence. + +=over 4 + +=item %ENV + +The operation of the C<%ENV> array depends on the translation +of the logical name F<PERL_ENV_TABLES>. If defined, it should +be a search list, each element of which specifies a location +for C<%ENV> elements. If you tell Perl to read or set the +element C<$ENV{>I<name>C<}>, then Perl uses the translations of +F<PERL_ENV_TABLES> as follows: + +=over 4 + +=item CRTL_ENV + +This string tells Perl to consult the CRTL's internal C<environ> +array of key-value pairs, using I<name> as the key. In most cases, +this contains only a few keys, but if Perl was invoked via the C +C<exec[lv]e()> function, as is the case for CGI processing by some +HTTP servers, then the C<environ> array may have been populated by +the calling program. + +=item CLISYM_[LOCAL] + +A string beginning with C<CLISYM_>tells Perl to consult the CLI's +symbol tables, using I<name> as the name of the symbol. When reading +an element of C<%ENV>, the local symbol table is scanned first, followed +by the global symbol table.. The characters following C<CLISYM_> are +significant when an element of C<%ENV> is set or deleted: if the +complete string is C<CLISYM_LOCAL>, the change is made in the local +symbol table; otherwise the global symbol table is changed. + +=item Any other string + +If an element of F<PERL_ENV_TABLES> translates to any other string, +that string is used as the name of a logical name table, which is +consulted using I<name> as the logical name. The normal search +order of access modes is used. + +=back + +F<PERL_ENV_TABLES> is translated once when Perl starts up; any changes +you make while Perl is running do not affect the behavior of C<%ENV>. +If F<PERL_ENV_TABLES> is not defined, then Perl defaults to consulting +first the logical name tables specified by F<LNM$FILE_DEV>, and then +the CRTL C<environ> array. + +In all operations on %ENV, the key string is treated as if it +were entirely uppercase, regardless of the case actually +specified in the Perl expression. + +When an element of C<%ENV> is read, the locations to which +F<PERL_ENV_TABLES> points are checked in order, and the value +obtained from the first successful lookup is returned. If the +name of the C<%ENV> element contains a semi-colon, it and +any characters after it are removed. These are ignored when +the CRTL C<environ> array or a CLI symbol table is consulted. +However, the name is looked up in a logical name table, the +suffix after the semi-colon is treated as the translation index +to be used for the lookup. This lets you look up successive values +for search list logical names. For instance, if you say + + $ Define STORY once,upon,a,time,there,was + $ perl -e "for ($i = 0; $i <= 6; $i++) " - + _$ -e "{ print $ENV{'story;'.$i},' '}" + +Perl will print C<ONCE UPON A TIME THERE WAS>, assuming, of course, +that F<PERL_ENV_TABLES> is set up so that the logical name C<story> +is found, rather than a CLI symbol or CRTL C<environ> element with +the same name. + +When an element of C<%ENV> is set to a defined string, the +corresponding definition is made in the location to which the +first translation of F<PERL_ENV_TABLES> points. If this causes a +logical name to be created, it is defined in supervisor mode. +(The same is done if an existing logical name was defined in +executive or kernel mode; an existing user or supervisor mode +logical name is reset to the new value.) If the value is an empty +string, the logical name's translation is defined as a single NUL +(ASCII 00) character, since a logical name cannot translate to a +zero-length string. (This restriction does not apply to CLI symbols +or CRTL C<environ> values; they are set to the empty string.) +An element of the CRTL C<environ> array can be set only if your +copy of Perl knows about the CRTL's C<setenv()> function. (This is +present only in some versions of the DECCRTL; check C<$Config{d_setenv}> +to see whether your copy of Perl was built with a CRTL that has this +function.) + +When an element of C<%ENV> is set to C<undef>, +the element is looked up as if it were being read, and if it is +found, it is deleted. (An item "deleted" from the CRTL C<environ> +array is set to the empty string; this can only be done if your +copy of Perl knows about the CRTL C<setenv()> function.) Using +C<delete> to remove an element from C<%ENV> has a similar effect, +but after the element is deleted, another attempt is made to +look up the element, so an inner-mode logical name or a name in +another location will replace the logical name just deleted. +In either case, only the first value found searching PERL_ENV_TABLES +is altered. It is not possible at present to define a search list +logical name via %ENV. + +The element C<$ENV{DEFAULT}> is special: when read, it returns +Perl's current default device and directory, and when set, it +resets them, regardless of the definition of F<PERL_ENV_TABLES>. +It cannot be cleared or deleted; attempts to do so are silently +ignored. + +Note that if you want to pass on any elements of the +C-local environ array to a subprocess which isn't +started by fork/exec, or isn't running a C program, you +can "promote" them to logical names in the current +process, which will then be inherited by all subprocesses, +by saying + + foreach my $key (qw[C-local keys you want promoted]) { + my $temp = $ENV{$key}; # read from C-local array + $ENV{$key} = $temp; # and define as logical name + } + +(You can't just say C<$ENV{$key} = $ENV{$key}>, since the +Perl optimizer is smart enough to elide the expression.) + +Don't try to clear C<%ENV> by saying C<%ENV = ();>, it will throw +a fatal error. This is equivalent to doing the following from DCL: + + DELETE/LOGICAL * + +You can imagine how bad things would be if, for example, the SYS$MANAGER +or SYS$SYSTEM logical names were deleted. + +At present, the first time you iterate over %ENV using +C<keys>, or C<values>, you will incur a time penalty as all +logical names are read, in order to fully populate %ENV. +Subsequent iterations will not reread logical names, so they +won't be as slow, but they also won't reflect any changes +to logical name tables caused by other programs. + +You do need to be careful with the logical names representing +process-permanent files, such as C<SYS$INPUT> and C<SYS$OUTPUT>. +The translations for these logical names are prepended with a +two-byte binary value (0x1B 0x00) that needs to be stripped off +if you wantto use it. (In previous versions of Perl it wasn't +possible to get the values of these logical names, as the null +byte acted as an end-of-string marker) + +=item $! + +The string value of C<$!> is that returned by the CRTL's +strerror() function, so it will include the VMS message for +VMS-specific errors. The numeric value of C<$!> is the +value of C<errno>, except if errno is EVMSERR, in which +case C<$!> contains the value of vaxc$errno. Setting C<$!> +always sets errno to the value specified. If this value is +EVMSERR, it also sets vaxc$errno to 4 (NONAME-F-NOMSG), so +that the string value of C<$!> won't reflect the VMS error +message from before C<$!> was set. + +=item $^E + +This variable provides direct access to VMS status values +in vaxc$errno, which are often more specific than the +generic Unix-style error messages in C<$!>. Its numeric value +is the value of vaxc$errno, and its string value is the +corresponding VMS message string, as retrieved by sys$getmsg(). +Setting C<$^E> sets vaxc$errno to the value specified. + +While Perl attempts to keep the vaxc$errno value to be current, if +errno is not EVMSERR, it may not be from the current operation. + +=item $? + +The "status value" returned in C<$?> is synthesized from the +actual exit status of the subprocess in a way that approximates +POSIX wait(5) semantics, in order to allow Perl programs to +portably test for successful completion of subprocesses. The +low order 8 bits of C<$?> are always 0 under VMS, since the +termination status of a process may or may not have been +generated by an exception. + +The next 8 bits contain the termination status of the program. + +If the child process follows the convention of C programs +compiled with the _POSIX_EXIT macro set, the status value will +contain the actual value of 0 to 255 returned by that program +on a normal exit. + +With the _POSIX_EXIT macro set, the UNIX exit value of zero is +represented as a VMS native status of 1, and the UNIX values +from 2 to 255 are encoded by the equation: + + VMS_status = 0x35a000 + (unix_value * 8) + 1. + +And in the special case of unix value 1 the encoding is: + + VMS_status = 0x35a000 + 8 + 2 + 0x10000000. + +For other termination statuses, the severity portion of the +subprocess' exit status is used: if the severity was success or +informational, these bits are all 0; if the severity was +warning, they contain a value of 1; if the severity was +error or fatal error, they contain the actual severity bits, +which turns out to be a value of 2 for error and 4 for severe_error. +Fatal is another term for the severe_error status. + +As a result, C<$?> will always be zero if the subprocess' exit +status indicated successful completion, and non-zero if a +warning or error occurred or a program compliant with encoding +_POSIX_EXIT values was run and set a status. + +How can you tell the difference between a non-zero status that is +the result of a VMS native error status or an encoded UNIX status? +You can not unless you look at the ${^CHILD_ERROR_NATIVE} value. +The ${^CHILD_ERROR_NATIVE} value returns the actual VMS status value +and check the severity bits. If the severity bits are equal to 1, +then if the numeric value for C<$?> is between 2 and 255 or 0, then +C<$?> accurately reflects a value passed back from a UNIX application. +If C<$?> is 1, and the severity bits indicate a VMS error (2), then +C<$?> is from a UNIX application exit value. + +In practice, Perl scripts that call programs that return _POSIX_EXIT +type status values will be expecting those values, and programs that +call traditional VMS programs will either be expecting the previous +behavior or just checking for a non-zero status. + +And success is always the value 0 in all behaviors. + +When the actual VMS termination status of the child is an error, +internally the C<$!> value will be set to the closest UNIX errno +value to that error so that Perl scripts that test for error +messages will see the expected UNIX style error message instead +of a VMS message. + +Conversely, when setting C<$?> in an END block, an attempt is made +to convert the POSIX value into a native status intelligible to +the operating system upon exiting Perl. What this boils down to +is that setting C<$?> to zero results in the generic success value +SS$_NORMAL, and setting C<$?> to a non-zero value results in the +generic failure status SS$_ABORT. See also L<perlport/exit>. + +With the future POSIX_EXIT mode set, setting C<$?> will cause the +new value to also be encoded into C<$^E> so that the either the +original parent or child exit status values of 0 to 255 +can be automatically recovered by C programs expecting _POSIX_EXIT +behavior. If both a parent and a child exit value are non-zero, then it +will be assumed that this is actually a VMS native status value to +be passed through. The special value of 0xFFFF is almost a NOOP as +it will cause the current native VMS status in the C library to +become the current native Perl VMS status, and is handled this way +as consequence of it known to not be a valid native VMS status value. +It is recommend that only values in range of normal UNIX parent or +child status numbers, 0 to 255 are used. + +The pragma C<use vmsish 'status'> makes C<$?> reflect the actual +VMS exit status instead of the default emulation of POSIX status +described above. This pragma also disables the conversion of +non-zero values to SS$_ABORT when setting C<$?> in an END +block (but zero will still be converted to SS$_NORMAL). + +Do not use the pragma C<use vmsish 'status'> with the future +POSIX_EXIT mode, as they are at times requesting conflicting +actions and the consequence of ignoring this advice will be +undefined to allow future improvements in the POSIX exit handling. + +=item $| + +Setting C<$|> for an I/O stream causes data to be flushed +all the way to disk on each write (I<i.e.> not just to +the underlying RMS buffers for a file). In other words, +it's equivalent to calling fflush() and fsync() from C. + +=back + +=head1 Standard modules with VMS-specific differences + +=head2 SDBM_File + +SDBM_File works properly on VMS. It has, however, one minor +difference. The database directory file created has a F<.sdbm_dir> +extension rather than a F<.dir> extension. F<.dir> files are VMS filesystem +directory files, and using them for other purposes could cause unacceptable +problems. + +=head1 Revision date + +This document was last updated on 3-Dec-2007, for Perl 5, +patchlevel 10. + +=head1 AUTHOR + +Charles Bailey bailey@cor.newman.upenn.edu +Craig Berry craigberry@mac.com +Dan Sugalski dan@sidhe.org +John Malmberg wb8tyw@qsl.net diff --git a/pod/perlxs.pod b/pod/perlxs.pod index c367f4c1ca..a6e21a35ee 100644 --- a/pod/perlxs.pod +++ b/pod/perlxs.pod @@ -1211,6 +1211,12 @@ To disable version checking: VERSIONCHECK: DISABLE +Note that if the version of the PM module is an NV (a floating point +number), it will be stringified with a possible loss of precision +(currently chopping to nine decimal places) so that it may not match +the version of the XS module anymore. Quoting the $VERSION declaration +to make it a string is recommended if long version numbers are used. + =head2 The PROTOTYPES: Keyword The PROTOTYPES: keyword corresponds to B<xsubpp>'s C<-prototypes> and diff --git a/pod/perlxstut.pod b/pod/perlxstut.pod index 7db3eb3537..090b14a9e7 100644 --- a/pod/perlxstut.pod +++ b/pod/perlxstut.pod @@ -196,7 +196,7 @@ been deleted): % You can safely ignore the line about "prototyping behavior" - it is -explained in the section "The PROTOTYPES: Keyword" in L<perlxs>. +explained in L<perlxs/"The PROTOTYPES: Keyword">. If you are on a Win32 system, and the build process fails with linker errors for functions in the C library, check if your Perl is configured @@ -428,7 +428,7 @@ line starts with optional whitespace, and may have an optional terminating semicolon. The list of output parameters occurs at the very end of the function, just -before after the OUTPUT: directive. The use of RETVAL tells Perl that you +after the OUTPUT: directive. The use of RETVAL tells Perl that you wish to send this value back as the return value of the XSUB function. In Example 3, we wanted the "return value" placed in the original variable which we passed in, so we listed it (and not RETVAL) in the OUTPUT: section. diff --git a/pod/roffitall b/pod/roffitall index 8f897da2f2..c533e2875f 100644 --- a/pod/roffitall +++ b/pod/roffitall @@ -118,7 +118,6 @@ toroff=` $mandir/splain.1 \ $mandir/xsubpp.1 \ \ - $libdir/attrs.3 \ $libdir/autouse.3 \ $libdir/base.3 \ $libdir/blib.3 \ |