summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS1
-rw-r--r--Changes77
-rw-r--r--dump.c7
-rw-r--r--ext/Storable/Storable.pm39
-rw-r--r--lib/sort.pm2
-rw-r--r--patchlevel.h2
-rw-r--r--pod/perl561delta.pod2
-rw-r--r--pod/perl56delta.pod2
-rw-r--r--pod/perlapi.pod15
-rw-r--r--pod/perldelta.pod111
-rw-r--r--pod/perltoc.pod425
-rw-r--r--regcomp.c13
-rw-r--r--regexec.c17
-rw-r--r--t/op/re_tests1
-rw-r--r--utf8.c47
-rw-r--r--utf8.h3
16 files changed, 588 insertions, 176 deletions
diff --git a/AUTHORS b/AUTHORS
index 517af8b1d3..556ee29e02 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -305,6 +305,7 @@ Jesús Quiroga <jquiroga@pobox.com>
Jim Anderson <jander@ml.com>
Jim Avera <avera@hal.com>
Jim Balter
+Jim Cromie <jcromie@divsol.com>
Jim Meyering <meyering@asic.sc.ti.com>
Jim Miner <jfm@winternet.com>
Jim Richardson
diff --git a/Changes b/Changes
index bfd4b2ec4b..c8150131fc 100644
--- a/Changes
+++ b/Changes
@@ -31,6 +31,83 @@ or any other branch.
Version v5.7.2 Development release working toward v5.8
--------------
____________________________________________________________________________
+[ 14121] By: jhi on 2002/01/07 16:03:34
+ Log: Subject: [PATCH] Correct module name in perldelta*
+ From: Mike Guy <mjtg@cam.ac.uk>
+ Date: Mon, 07 Jan 2002 17:02:43 +0000
+ Message-Id: <E16NdAZ-0001SW-00@draco.cus.cam.ac.uk>
+ Branch: perl
+ ! pod/perl561delta.pod pod/perl56delta.pod
+____________________________________________________________________________
+[ 14120] By: jhi on 2002/01/07 15:55:25
+ Log: AUTHORS update.
+ Branch: perl
+ ! AUTHORS
+____________________________________________________________________________
+[ 14119] By: jhi on 2002/01/07 15:52:34
+ Log: Add file magic for Storable, from Jim Cromie <jcromie@divsol.com>
+ Branch: perl
+ ! ext/Storable/Storable.pm
+____________________________________________________________________________
+[ 14118] By: jhi on 2002/01/07 15:06:25
+ Log: perldelta updates.
+ Branch: perl
+ ! pod/perldelta.pod
+____________________________________________________________________________
+[ 14117] By: jhi on 2002/01/07 13:52:30
+ Log: Document the flags of pv_uni_display().
+ Branch: perl
+ ! pod/perlapi.pod utf8.c
+____________________________________________________________________________
+[ 14116] By: jhi on 2002/01/07 13:49:17
+ Log: Forgot from #14115.
+ Branch: perl
+ ! t/op/re_tests
+____________________________________________________________________________
+[ 14115] By: jhi on 2002/01/07 13:48:06
+ Log: Subject: [PATCH regcomp.c] leading (.*) should not be implicitly ^'d
+ From: "Jeff 'japhy' Pinyan" <jeffp@crusoe.net>
+ Date: Sun, 6 Jan 2002 15:36:21 -0500 (EST)
+ Message-ID: <Pine.GSO.4.21.0201061532400.27018-100000@crusoe.crusoe.net>
+ Branch: perl
+ ! regcomp.c
+____________________________________________________________________________
+[ 14114] By: jhi on 2002/01/07 04:44:05
+ Log: More regex and utf8 debug dumping.
+ Branch: perl
+ ! dump.c regcomp.c regexec.c utf8.c utf8.h
+____________________________________________________________________________
+[ 14113] By: jhi on 2002/01/07 01:05:01
+ Log: Unused variable.
+ Branch: perl
+ ! regcomp.c
+____________________________________________________________________________
+[ 14112] By: jhi on 2002/01/07 00:52:46
+ Log: Regen toc.
+ Branch: perl
+ ! pod/perltoc.pod
+____________________________________________________________________________
+[ 14111] By: jhi on 2002/01/07 00:03:57
+ Log: capitalize correctly, noticed by David Dyck.
+ Branch: perl
+ ! lib/sort.pm
+____________________________________________________________________________
+[ 14109] By: jhi on 2002/01/06 20:51:32
+ Log: No need to overqualify.
+ Branch: perl
+ ! lib/sort.pm
+____________________________________________________________________________
+[ 14108] By: jhi on 2002/01/06 20:38:34
+ Log: PL_debug_pad wasn't initialized to zeroes which broke
+ ithreads + DEBUGGING.
+ Branch: perl
+ ! sv.c
+____________________________________________________________________________
+[ 14107] By: jhi on 2002/01/06 15:39:31
+ Log: Update Changes.
+ Branch: perl
+ ! Changes patchlevel.h
+____________________________________________________________________________
[ 14106] By: jhi on 2002/01/06 15:33:51
Log: Subject: [PATCH pp_sys.c] Fix segfault in dbmclose in DESTROY (was Re: [ID 20020104.007] coredump on dbmclose)
From: Jonathan Stowe <gellyfish@gellyfish.com>
diff --git a/dump.c b/dump.c
index 290ee7a622..02791072e0 100644
--- a/dump.c
+++ b/dump.c
@@ -279,7 +279,8 @@ Perl_sv_peek(pTHX_ SV *sv)
Perl_sv_catpvf(aTHX_ t, "%s)", pv_display(tmp, SvPVX(sv), SvCUR(sv), SvLEN(sv), 127));
if (SvUTF8(sv))
Perl_sv_catpvf(aTHX_ t, " [UTF8 \"%s\"]",
- sv_uni_display(tmp, sv, 8 * sv_len_utf8(sv), 0));
+ sv_uni_display(tmp, sv, 8 * sv_len_utf8(sv),
+ UNI_DISPLAY_QQ));
SvREFCNT_dec(tmp);
}
}
@@ -1115,7 +1116,7 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo
PerlIO_printf(file, "( %s . ) ", pv_display(d, SvPVX(sv)-SvIVX(sv), SvIVX(sv), 0, pvlim));
PerlIO_printf(file, "%s", pv_display(d, SvPVX(sv), SvCUR(sv), SvLEN(sv), pvlim));
if (SvUTF8(sv)) /* the 8? \x{....} */
- PerlIO_printf(file, " [UTF8 \"%s\"]", sv_uni_display(d, sv, 8 * sv_len_utf8(sv), 0));
+ PerlIO_printf(file, " [UTF8 \"%s\"]", sv_uni_display(d, sv, 8 * sv_len_utf8(sv), UNI_DISPLAY_QQ));
PerlIO_printf(file, "\n");
Perl_dump_indent(aTHX_ level, file, " CUR = %"IVdf"\n", (IV)SvCUR(sv));
Perl_dump_indent(aTHX_ level, file, " LEN = %"IVdf"\n", (IV)SvLEN(sv));
@@ -1247,7 +1248,7 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo
elt = hv_iterval(hv, he);
Perl_dump_indent(aTHX_ level+1, file, "Elt %s ", pv_display(d, keypv, len, 0, pvlim));
if (SvUTF8(keysv))
- PerlIO_printf(file, "[UTF8 \"%s\"] ", sv_uni_display(d, keysv, 8 * sv_len_utf8(keysv), 0));
+ PerlIO_printf(file, "[UTF8 \"%s\"] ", sv_uni_display(d, keysv, 8 * sv_len_utf8(keysv), UNI_DISPLAY_QQ));
PerlIO_printf(file, "HASH = 0x%"UVxf"\n", (UV)hash);
do_sv_dump(level+1, file, elt, nest+1, maxnest, dumpops, pvlim);
}
diff --git a/ext/Storable/Storable.pm b/ext/Storable/Storable.pm
index d72b71d06f..353c999ddf 100644
--- a/ext/Storable/Storable.pm
+++ b/ext/Storable/Storable.pm
@@ -70,7 +70,7 @@ package Storable; @ISA = qw(Exporter DynaLoader);
use AutoLoader;
use vars qw($forgive_me $VERSION);
-$VERSION = '1.014';
+$VERSION = '1.015';
*AUTOLOAD = \&AutoLoader::AUTOLOAD; # Grrr...
#
@@ -127,6 +127,31 @@ sub CAN_FLOCK {
$Config{'d_lockf'};
}
+sub show_file_magic {
+ print <<EOM;
+#
+# To recognize the data files of the Perl module Storable,
+# the following lines need to be added to the local magic(5) file,
+# usually either /usr/share/misc/magic or /etc/magic.
+# Note the couple of unportable lines, consult your operating
+# system's documentation whether you can use those lines.
+#
+0 string perl-store perl Storable(v0.6) data
+>1 byte &01 (network-ordered)
+0 string pst0 perl Storable(v0.7) data
+# byte&04 unportable syntax
+>4 byte&04 =4
+>>5 byte >0 v2.%d
+>4 byte &01 (network-ordered)
+# byte&01 unportable syntax
+>4 byte&01 =0 (local-ordered)
+>>6 byte >0 (sizeof int %d)
+>>7 byte >0 (sizeof long %d)
+>>8 byte >0 (sizeof ptr %d)
+>>9 byte >0 (sizeof NV %d)
+EOM
+}
+
bootstrap Storable;
1;
__END__
@@ -674,6 +699,18 @@ natively, i.e. without freezing to memory and thawing the result. It is
aimed to replace Storable's dclone() some day. However, it does not currently
support Storable hooks to redefine the way deep cloning is performed.
+=head1 Storable magic
+
+Yes, there's a lot of that :-) But more precisely, in UNIX systems
+there's a utility called C<file>, which recognizes data files based on
+their contents (usually their first few bytes). For this to work,
+a certain file called "magic" needs to taught about the "signature"
+of the data. Where that configuration file lives depends on the UNIX
+flavour, often it's something like F</usr/share/misc/magic> or
+F</etc/magic>. Your system administrator needs to do the updating.
+The necessary signature information is output to stdout by
+invoking Storable::show_file_magic().
+
=head1 EXAMPLES
Here are some code samples showing a possible usage of Storable:
diff --git a/lib/sort.pm b/lib/sort.pm
index 6568c5f2d9..8140a7d290 100644
--- a/lib/sort.pm
+++ b/lib/sort.pm
@@ -77,7 +77,7 @@ quicksort defends against quadratic behaviour by shuffling large
arrays before sorting.
A stable sort means that for records that compare equal, the original
-input ordering is preserved. mergesort is stable, quicksort is not.
+input ordering is preserved. Mergesort is stable, quicksort is not.
Stability will matter only if elements that compare equal can be
distinguished in some other way. That means that simple numerical
and lexical sorts do not profit from stability, since equal elements
diff --git a/patchlevel.h b/patchlevel.h
index 10637741ae..6a1c87e094 100644
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -70,7 +70,7 @@
#if !defined(PERL_PATCHLEVEL_H_IMPLICIT) && !defined(LOCAL_PATCH_COUNT)
static char *local_patches[] = {
NULL
- ,"DEVEL14106"
+ ,"DEVEL14121"
,NULL
};
diff --git a/pod/perl561delta.pod b/pod/perl561delta.pod
index e6c166c85e..652ff7f9ac 100644
--- a/pod/perl561delta.pod
+++ b/pod/perl561delta.pod
@@ -1052,7 +1052,7 @@ When the last non-weak reference to an object is deleted, the object
is destroyed and all the weak references to the object are
automatically undef-ed.
-To use this feature, you need the WeakRef package from CPAN, which
+To use this feature, you need the Devel::WeakRef package from CPAN, which
contains additional documentation.
NOTE: This is an experimental feature. Details are subject to change.
diff --git a/pod/perl56delta.pod b/pod/perl56delta.pod
index 5262c37c3b..d5257256b8 100644
--- a/pod/perl56delta.pod
+++ b/pod/perl56delta.pod
@@ -455,7 +455,7 @@ When the last non-weak reference to an object is deleted, the object
is destroyed and all the weak references to the object are
automatically undef-ed.
-To use this feature, you need the WeakRef package from CPAN, which
+To use this feature, you need the Devel::WeakRef package from CPAN, which
contains additional documentation.
NOTE: This is an experimental feature. Details are subject to change.
diff --git a/pod/perlapi.pod b/pod/perlapi.pod
index 0b915ddba6..d55b88a13a 100644
--- a/pod/perlapi.pod
+++ b/pod/perlapi.pod
@@ -4475,7 +4475,14 @@ Found in file utf8.c
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 is currently unused but available for future extensions.
+
+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, U8 *spv, STRLEN len, STRLEN pvlim, UV flags)
@@ -4504,9 +4511,11 @@ Found in file sv.c
=item sv_uni_display
Build to the scalar dsv a displayable version of the scalar sv,
-he displayable version being at most pvlim bytes long
+the displayable version being at most pvlim bytes long
(if longer, the rest is truncated and "..." will be appended).
-The flags argument is currently unused but available for future extensions.
+
+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)
diff --git a/pod/perldelta.pod b/pod/perldelta.pod
index 2ef1f418a6..b5f126c05a 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -144,6 +144,13 @@ to escape the laboratory has been decommissioned.
=item *
+The builtin dump() function has probably outlived most of its
+usefulness. The core-dumping functionality will remain in future
+available as an explicit call to C<CORE::dump()>, but in future
+releases the behaviour of an unqualified C<dump()> call may change.
+
+=item *
+
The very dusty examples in the eg/ directory have been removed.
Suggestions for new shiny examples welcome but the main issue is that
the examples need to be documented, tested and (most importantly)
@@ -339,7 +346,7 @@ to Unicode 3.1.1. For more information, see http://www.unicode.org/.
For developers interested in enhancing Perl's Unicode capabilities:
almost all the UCD files are included with the Perl distribution in
-the lib/unicore subdirectory. The most notable omission, for space
+the F<lib/unicore subdirectory>. The most notable omission, for space
considerations, is the Unihan database.
=item *
@@ -368,7 +375,7 @@ This change leads to often slightly faster and always less lossy
arithmetics. (Previously Perl always preferred floating point numbers
in its math.)
-=head2 Miscellaneous Enhancements
+=head2 Miscellaneous Changes
=over 4
@@ -384,6 +391,23 @@ in multiple arguments.)
=item *
+The builtin dump() now gives an optional warning
+C<Ambiguous call resolved as CORE::dump(), qualify as such or use &>
+meaning that by default C<dump(...)> is resolved as the builtin
+dump() which dumps core and aborts, not as (possibly) user-defined
+C<sub dump>. To call the latter, qualify the call as C<&dump(...)>.
+(The whole dump() feature is to considered deprecated, and possibly
+removed/changed in future releases.)
+
+=item *
+
+chomp() and chop() have been demoted back to I<not> being overrideable
+because they cannot really be overridden-- the problem is that their
+prototype cannot be expressed and therefore one really cannot write
+replacements to override these builtins.
+
+=item *
+
END blocks are now run even if you exit/die in a BEGIN block.
Internally, the execution of END blocks is now controlled by
PL_exit_flags & PERL_EXIT_DESTRUCT_END. This enables the new
@@ -401,6 +425,11 @@ However, the lvalue subroutine feature still remains experimental.
=item *
+A lost warning "Can't declare ... dereference in my" has been
+restored (Perl had it earlier but it became lost in later releases.)
+
+=item *
+
A new special regular expression variable has been introduced:
C<$^N>, which contains the most-recently closed group (submatch).
@@ -448,6 +477,19 @@ prototype(\[$@%&]) is now available to implicitly create references
=item *
+A new command-line option, C<-t> is available. It is the
+little brother of C<-T>: instead of dieing on taint violations,
+lexical warnings are given. B<This is only meant as a temporary
+debugging aid while securing the code of old legacy applications.
+This is not a substitute for -T.>
+
+=item *
+
+If tr/// is just counting characters, it doesn't attempt to
+modify its target.
+
+=item *
+
untie() will now call an UNTIE() hook if it exists. See L<perltie>
for details.
@@ -955,6 +997,11 @@ with 'no lib' now works.
=item *
+ExtUtils::MakeMaker now uses File::Spec internally, which hopefully
+leads into better portability.
+
+=item *
+
Math::BigFloat and Math::BigInt have undergone a full rewrite.
They are now magnitudes faster, and they support various
bignum libraries such as GMP and PARI as their backends.
@@ -965,9 +1012,10 @@ Math::Complex handles inf, NaN etc., better.
=item *
-Net::Ping has been enhanced. There is now "external" protocol which
-uses Net::Ping::External module which runs external ping(1) and parses
-the output. A version of Net::Ping::External is available in CPAN.
+Net::Ping has been muchly enhanced. Multihoming is now supported.
+There is now "external" protocol which uses Net::Ping::External module
+which runs external ping(1) and parses the output. A version of
+Net::Ping::External is available in CPAN.
=item *
@@ -1006,7 +1054,7 @@ The vars pragma now supports declaring fully qualified variables.
=item *
-The utf8:: name space (as in the pragma) provides various
+The C<utf8::> name space (as in the pragma) provides various
Perl-callable functions to provide low level access to Perl's
internal Unicode representation. At the moment only length()
has been implemented.
@@ -1165,8 +1213,9 @@ with perltoot in filesystems restricted to "8.3" names)
=item *
-perluniintro is an introduction to using Unicode in Perl
-(perlunicode is more of a reference)
+perluniintro is an introduction to using Unicode in Perl.
+(perlunicode is more of a detailed reference and background
+information)
=item *
@@ -1511,6 +1560,10 @@ AtheOS (http://www.atheos.cx/) is a new platform.
=item *
+BeOS has been reclaimed.
+
+=item *
+
DG/UX platform now supports the 5.005-style threads. See L<perldgux>.
=item *
@@ -1548,6 +1601,11 @@ NCR MP-RAS is now supported.
=item *
+All the NetBSD specific patches (except for the installation
+specific ones) have been merged back to the main distribution.
+
+=item *
+
NetWare from Novell is now supported. See L<perlnetware>.
=item *
@@ -1560,6 +1618,18 @@ NEC SUPER-UX is now supported.
=item *
+All the OpenBSD specific patches (except for the installation
+specific ones) have been merged back to the main distribution.
+
+=item *
+
+Perl has been tested with the GNU pth userlevel thread package
+( http://www.gnu.org/software/pth/pth.html ) . All but one thread
+test worked, and that one failure was because of test results arriving
+in unexpected order.
+
+=item *
+
Amdahl UTS UNIX mainframe platform is now supported.
=item *
@@ -1873,7 +1943,14 @@ The character tables have been updated to Unicode 3.1.1.
=item *
Comparing with utf8 data does not magically upgrade non-utf8 data
-into utf8.
+into utf8. (This was a problem for example if you were mixing data
+from I/O and Unicode data: your output might have got magically encoded
+as UTF-8.)
+
+=item *
+
+Generating illegal Unicode code points like U+FFFE, or the UTF-16
+surrogates, now also generates an optional warning.
=item *
@@ -2576,27 +2653,11 @@ libraries).
=head2 Seen In Perl 5.7 But Gone Now
-Some modules were seen in the Perl 5.7 development releases
-but are not present in 5.8.0.
-
-=over 4
-
-=item *
-
-C<Attribute::Handlers> was removed because the implementation of C<my>
-variable attributes changed so much that the Attribute::Handlers will
-require a major rewrite. (This means that you can't use
-Attribute::Handler 0.76 with Perl 5.8.0.)
-
-=item *
-
C<Time::Piece> (previously known as C<Time::Object>) was removed
because it was felt that it didn't have enough value in it to be a
core module. It is still a useful module, though, and is available
from the CPAN.
-=back
-
=head1 Reporting Bugs
If you find what you think is a bug, you might check the articles
diff --git a/pod/perltoc.pod b/pod/perltoc.pod
index 1b7e70b593..3a4390976d 100644
--- a/pod/perltoc.pod
+++ b/pod/perltoc.pod
@@ -2270,7 +2270,7 @@ to enable UTF-8/UTF-EBCDIC in scripts
=item Unicode Encodings
-UTF-8, UTF-EBDIC, UTF-16, UTF-16BE, UTF16-LE, Surrogates, and BOMs (Byte
+UTF-8, UTF-EBCDIC, UTF-16, UTF-16BE, UTF16-LE, Surrogates, and BOMs (Byte
Order Marks), UTF-32, UTF-32BE, UTF32-LE, UCS-2, UCS-4, UTF-7
=item Security Implications of Malformed UTF-8
@@ -2494,47 +2494,43 @@ module (sometimes unnecessary), B<INSTALL> the module
=item Pragmatic Modules
-attributes, attrs, autouse, base, blib, bytes, charnames, constant,
-diagnostics, encoding, fields, filetest, integer, less, locale, open, ops,
-overload, re, sigtrap, sort, strict, subs, utf8, vars, vmsish, warnings,
-warnings::register
+attributes, autouse, base, blib, bytes, charnames, constant, diagnostics,
+encoding, fields, filetest, integer, less, locale, open, overload, sigtrap,
+sort, strict, subs, utf8, vars, vmsish, warnings, warnings::register
=item Standard Modules
-AnyDBM_File, AutoLoader, AutoSplit, B, B::Asmdata, B::Assembler, B::Bblock,
-B::Bytecode, B::C, B::CC, B::Concise, B::Debug, B::Deparse,
-B::Disassembler, B::Lint, B::Showlex, B::Stackobj, B::Stash, B::Terse,
-B::Xref, Benchmark, ByteLoader, CGI, CGI::Apache, CGI::Carp, CGI::Cookie,
-CGI::Fast, CGI::Pretty, CGI::Push, CGI::Switch, CGI::Util, CPAN,
-CPAN::FirstTime, CPAN::Nox, Carp, Carp::Heavy, Class::ISA, Class::Struct,
-Cwd, DB, DB_File, Devel::SelfStubber, Digest, DirHandle, Dumpvalue, Encode,
-Encode::EncodeFormat, Encode::Tcl, English, Env, Exporter, Exporter::Heavy,
+AnyDBM_File, Attribute::Handlers, AutoLoader, AutoSplit, Benchmark, CGI,
+CGI::Apache, CGI::Carp, CGI::Cookie, CGI::Fast, CGI::Pretty, CGI::Push,
+CGI::Switch, CGI::Util, CPAN, CPAN::FirstTime, CPAN::Nox, Carp,
+Carp::Heavy, Class::ISA, Class::Struct, Cwd, DB, Devel::SelfStubber,
+Digest, DirHandle, Dumpvalue, English, Env, Exporter, Exporter::Heavy,
ExtUtils::Command, ExtUtils::Constant, ExtUtils::Embed, ExtUtils::Install,
ExtUtils::Installed, ExtUtils::Liblist, ExtUtils::MM_Cygwin,
ExtUtils::MM_NW5, ExtUtils::MM_OS2, ExtUtils::MM_Unix, ExtUtils::MM_VMS,
ExtUtils::MM_Win32, ExtUtils::MakeMaker, ExtUtils::Manifest,
ExtUtils::Mkbootstrap, ExtUtils::Mksymlists, ExtUtils::Packlist,
-ExtUtils::testlib, Fatal, Fcntl, File::Basename, File::CheckTree,
-File::Compare, File::Copy, File::DosGlob, File::Find, File::Path,
-File::Spec, 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, FindBin,
-Getopt::Long, Getopt::Std, I18N::Collate, I18N::LangTags,
-I18N::LangTags::List, IO, IPC::Open2, IPC::Open3, Locale::Constants,
-Locale::Country, Locale::Currency, Locale::Language, Locale::Maketext,
-Locale::Maketext::TPJ13, Math::BigFloat, Math::BigInt, Math::BigInt::Calc,
-Math::Complex, Math::Trig, Memoize, Memoize::AnyDBM_File, Memoize::Expire,
-Memoize::ExpireFile, Memoize::ExpireTest, Memoize::NDBM_File,
-Memoize::SDBM_File, Memoize::Storable, 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, PerlIO,
-Pod::Checker, Pod::Find, Pod::Html, Pod::InputObjects, Pod::LaTeX,
-Pod::Man, Pod::ParseLink, Pod::ParseUtils, Pod::Parser, Pod::Plainer,
-Pod::Select, Pod::Text, Pod::Text::Color, Pod::Text::Overstrike,
-Pod::Text::Termcap, Pod::Usage, Pod::t::basic, SDBM_File, Safe,
-Search::Dict, SelectSaver, SelfLoader, Shell, Socket, Storable, Switch,
-Symbol, Term::ANSIColor, Term::Cap, Term::Complete, Term::ReadLine, Test,
+ExtUtils::testlib, Fatal, File::Basename, File::CheckTree, File::Compare,
+File::Copy, File::DosGlob, File::Find, 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, FindBin, Getopt::Long, Getopt::Std, I18N::Collate,
+I18N::LangTags, I18N::LangTags::List, IPC::Open2, IPC::Open3,
+Locale::Constants, Locale::Country, Locale::Currency, Locale::Language,
+Locale::Maketext, Locale::Maketext::TPJ13, Math::BigFloat, Math::BigInt,
+Math::BigInt::Calc, Math::Complex, Math::Trig, Memoize,
+Memoize::AnyDBM_File, Memoize::Expire, Memoize::ExpireFile,
+Memoize::ExpireTest, Memoize::NDBM_File, Memoize::SDBM_File,
+Memoize::Storable, 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,
+PerlIO, Pod::Checker, Pod::Find, Pod::Functions, Pod::Html,
+Pod::InputObjects, Pod::LaTeX, Pod::Man, Pod::ParseLink, Pod::ParseUtils,
+Pod::Parser, Pod::Plainer, Pod::Select, Pod::Text, Pod::Text::Color,
+Pod::Text::Overstrike, Pod::Text::Termcap, Pod::Usage, Pod::t::basic,
+Search::Dict, SelectSaver, SelfLoader, Shell, Switch, Symbol,
+Term::ANSIColor, Term::Cap, Term::Complete, Term::ReadLine, Test,
Test::Builder, Test::Harness, Test::More, Test::Simple, Test::Tutorial,
Text::Abbrev, Text::Balanced, Text::ParseWords, Text::Soundex, Text::Tabs,
Text::Wrap, Thread, Tie::Array, Tie::Handle, Tie::Hash, Tie::RefHash,
@@ -2813,7 +2809,7 @@ References, Tutorials, Task-Oriented, Special Topics
=item Where do I send bug reports?
-=item What is perl.com? Perl Mongers? pm.org? perl.org?
+=item What is perl.com? Perl Mongers? pm.org? perl.org? cpan.org?
=back
@@ -2907,8 +2903,8 @@ mean?
=back
-=head2 perlfaq4 - Data Manipulation ($Revision: 1.9 $, $Date: 2001/12/07
-21:17:58 $)
+=head2 perlfaq4 - Data Manipulation ($Revision: 1.10 $, $Date: 2002/01/01
+22:26:45 $)
=over 4
@@ -3122,8 +3118,8 @@ array of hashes or arrays?
=back
-=head2 perlfaq5 - Files and Formats ($Revision: 1.5 $, $Date: 2001/12/18
-09:01:14 $)
+=head2 perlfaq5 - Files and Formats ($Revision: 1.6 $, $Date: 2001/12/19
+18:17:00 $)
=over 4
@@ -3215,7 +3211,7 @@ protected files? Isn't this a bug in Perl?
=back
-=head2 perlfaq6 - Regexes ($Revision: 1.5 $, $Date: 2001/12/02 01:55:12 $)
+=head2 perlfaq6 - Regexes ($Revision: 1.6 $, $Date: 2002/01/01 22:26:45 $)
=over 4
@@ -3281,8 +3277,8 @@ file?
=back
-=head2 perlfaq7 - Perl Language Issues ($Revision: 1.4 $, $Date: 2001/11/07
-02:27:50 $)
+=head2 perlfaq7 - Perl Language Issues ($Revision: 1.5 $, $Date: 2002/01/01
+22:26:45 $)
=over 4
@@ -4281,51 +4277,118 @@ B<filter_fetch_value>
=item DESCRIPTION
+=item "Gimme" Values
+
+GIMME, GIMME_V, G_ARRAY, G_DISCARD, G_EVAL, G_NOARGS, G_SCALAR, G_VOID
+
+=item Array Manipulation Functions
+
AvFILL, av_clear, av_delete, av_exists, av_extend, av_fetch, av_fill,
av_len, av_make, av_pop, av_push, av_shift, av_store, av_undef, av_unshift,
-ax, bytes_from_utf8, bytes_to_utf8, call_argv, call_method, call_pv,
-call_sv, CLASS, Copy, croak, CvSTASH, cv_const_sv, dAX, dITEMS, dMARK,
-dORIGMARK, dSP, dXSARGS, dXSI32, ENTER, eval_pv, eval_sv, EXTEND,
-fbm_compile, fbm_instr, FREETMPS, getcwd_sv, get_av, get_cv, get_hv,
-get_sv, GIMME, GIMME_V, grok_bin, grok_hex, grok_number,
-grok_numeric_radix, grok_oct, GvSV, gv_fetchmeth, gv_fetchmethod,
-gv_fetchmethod_autoload, gv_stashpv, gv_stashsv, G_ARRAY, G_DISCARD,
-G_EVAL, G_NOARGS, G_SCALAR, G_VOID, HEf_SVKEY, HeHASH, HeKEY, HeKLEN, HePV,
-HeSVKEY, HeSVKEY_force, HeSVKEY_set, HeVAL, HvNAME, hv_clear, hv_delete,
-hv_delete_ent, hv_exists, hv_exists_ent, hv_fetch, hv_fetch_ent,
-hv_iterinit, hv_iterkey, hv_iterkeysv, hv_iternext, hv_iternextsv,
-hv_iterval, hv_magic, hv_store, hv_store_ent, hv_undef, ibcmp_utf8,
-isALNUM, isALPHA, isDIGIT, isLOWER, isSPACE, isUPPER, is_utf8_char,
-is_utf8_string, items, ix, LEAVE, load_module, looks_like_number, MARK,
+get_av, newAV, Nullav, sortsv
+
+=item Callback Functions
+
+call_argv, call_method, call_pv, call_sv, ENTER, eval_pv, eval_sv,
+FREETMPS, LEAVE, SAVETMPS
+
+=item Character classes
+
+isALNUM, isALPHA, isDIGIT, isLOWER, isSPACE, isUPPER, toLOWER, toUPPER
+
+=item Cloning an interpreter
+
+perl_clone
+
+=item CV Manipulation Functions
+
+CvSTASH, get_cv, Nullcv
+
+=item Embedding Functions
+
+load_module, perl_alloc, perl_construct, perl_destruct, perl_free,
+perl_parse, perl_run, require_pv
+
+=item Global Variables
+
+PL_modglobal, PL_na, PL_sv_no, PL_sv_undef, PL_sv_yes
+
+=item GV Functions
+
+GvSV, gv_fetchmeth, gv_fetchmethod, gv_fetchmethod_autoload, gv_stashpv,
+gv_stashsv
+
+=item Handy Values
+
+HEf_SVKEY, Nullch, Nullsv
+
+=item Hash Manipulation Functions
+
+get_hv, HeHASH, HeKEY, HeKLEN, HePV, HeSVKEY, HeSVKEY_force, HeSVKEY_set,
+HeVAL, HvNAME, hv_clear, hv_delete, hv_delete_ent, hv_exists,
+hv_exists_ent, hv_fetch, hv_fetch_ent, hv_iterinit, hv_iterkey,
+hv_iterkeysv, hv_iternext, hv_iternextsv, hv_iterval, hv_magic, hv_store,
+hv_store_ent, hv_undef, newHV, Nullhv
+
+=item Magical Functions
+
mg_clear, mg_copy, mg_find, mg_free, mg_get, mg_length, mg_magical, mg_set,
-Move, New, newAV, Newc, newCONSTSUB, newHV, newRV_inc, newRV_noinc, newSV,
-NEWSV, newSViv, newSVnv, newSVpv, newSVpvf, newSVpvn, newSVpvn_share,
-newSVrv, newSVsv, newSVuv, newXS, newXSproto, Newz, new_vstring, Nullav,
-Nullch, Nullcv, Nullhv, Nullsv, ORIGMARK, perl_alloc, perl_clone,
-perl_construct, perl_destruct, perl_free, perl_parse, perl_run,
-PL_modglobal, PL_na, PL_sv_no, PL_sv_undef, PL_sv_yes, POPi, POPl, POPn,
-POPp, POPpbytex, POPpx, POPs, PUSHi, PUSHMARK, PUSHn, PUSHp, PUSHs, PUSHu,
-PUTBACK, pv_uni_display, Renew, Renewc, require_pv, RETVAL, Safefree,
-savepv, savepvn, SAVETMPS, scan_bin, scan_hex, scan_oct, sharedsv_find,
-sharedsv_init, sharedsv_lock, sharedsv_new, sharedsv_thrcnt_dec,
-sharedsv_thrcnt_inc, sharedsv_unlock, sortsv, SP, SPAGAIN, ST, strEQ,
-strGE, strGT, strLE, strLT, strNE, strnEQ, strnNE, StructCopy, SvCUR,
-SvCUR_set, SvEND, SvGETMAGIC, SvGROW, SvIOK, SvIOKp, SvIOK_notUV,
+SvGETMAGIC, SvSETMAGIC, SvSetMagicSV, SvSetSV, SvSetSV_nosteal
+
+=item Memory Management
+
+Copy, Move, New, Newc, NEWSV, Newz, Renew, Renewc, Safefree, savepv,
+savepvn, StructCopy, Zero
+
+=item Miscellaneous Functions
+
+fbm_compile, fbm_instr, form, getcwd_sv, strEQ, strGE, strGT, strLE, strLT,
+strNE, strnEQ, strnNE
+
+=item Numeric functions
+
+grok_bin, grok_hex, grok_number, grok_numeric_radix, grok_oct, scan_bin,
+scan_hex, scan_oct
+
+=item Optree Manipulation Functions
+
+cv_const_sv, newCONSTSUB, newXS
+
+=item Shared SV Functions
+
+sharedsv_find, sharedsv_init, sharedsv_lock, sharedsv_new,
+sharedsv_thrcnt_dec, sharedsv_thrcnt_inc, sharedsv_unlock
+
+=item Stack Manipulation Macros
+
+dMARK, dORIGMARK, dSP, EXTEND, MARK, ORIGMARK, POPi, POPl, POPn, POPp,
+POPpbytex, POPpx, POPs, PUSHi, PUSHMARK, PUSHn, PUSHp, PUSHs, PUSHu,
+PUTBACK, SP, SPAGAIN, XPUSHi, XPUSHn, XPUSHp, XPUSHs, XPUSHu, XSRETURN,
+XSRETURN_IV, XSRETURN_NO, XSRETURN_NV, XSRETURN_PV, XSRETURN_UNDEF,
+XSRETURN_YES, XST_mIV, XST_mNO, XST_mNV, XST_mPV, XST_mUNDEF, XST_mYES
+
+=item SV Flags
+
+svtype, SVt_IV, SVt_NV, SVt_PV, SVt_PVAV, SVt_PVCV, SVt_PVHV, SVt_PVMG
+
+=item SV Manipulation Functions
+
+get_sv, looks_like_number, newRV_inc, newRV_noinc, newSV, newSViv, newSVnv,
+newSVpv, newSVpvf, newSVpvn, newSVpvn_share, newSVrv, newSVsv, newSVuv,
+new_vstring, SvCUR, SvCUR_set, SvEND, SvGROW, SvIOK, SvIOKp, SvIOK_notUV,
SvIOK_off, SvIOK_on, SvIOK_only, SvIOK_only_UV, SvIOK_UV, SvIV, SvIVx,
SvIVX, SvLEN, SvNIOK, SvNIOKp, SvNIOK_off, SvNOK, SvNOKp, SvNOK_off,
-SvNOK_on, SvNOK_only, SvNV, SvNVx, SvNVX, SvOK, SvOOK, SvPOK, SvPOKp,
+SvNOK_on, SvNOK_only, SvNV, SvNVX, SvNVx, SvOK, SvOOK, SvPOK, SvPOKp,
SvPOK_off, SvPOK_on, SvPOK_only, SvPOK_only_UTF8, SvPV, SvPVbyte,
SvPVbytex, SvPVbytex_force, SvPVbyte_force, SvPVbyte_nolen, SvPVutf8,
SvPVutf8x, SvPVutf8x_force, SvPVutf8_force, SvPVutf8_nolen, SvPVX, SvPVx,
SvPV_force, SvPV_force_nomg, SvPV_nolen, SvREFCNT, SvREFCNT_dec,
-SvREFCNT_inc, SvROK, SvROK_off, SvROK_on, SvRV, SvSETMAGIC, SvSetMagicSV,
-SvSetMagicSV_nosteal, SvSetSV, SvSetSV_nosteal, SvSTASH, SvTAINT,
-SvTAINTED, SvTAINTED_off, SvTAINTED_on, SvTRUE, svtype, SvTYPE, SVt_IV,
-SVt_NV, SVt_PV, SVt_PVAV, SVt_PVCV, SVt_PVHV, SVt_PVMG, SvUOK, SvUPGRADE,
-SvUTF8, SvUTF8_off, SvUTF8_on, SvUV, SvUVx, SvUVX, sv_2bool, sv_2cv,
-sv_2io, sv_2iv, sv_2mortal, sv_2nv, sv_2pvbyte, sv_2pvbyte_nolen,
-sv_2pvutf8, sv_2pvutf8_nolen, sv_2pv_flags, sv_2pv_nolen, sv_2uv,
-sv_backoff, sv_bless, sv_catpv, sv_catpvf, sv_catpvf_mg, sv_catpvn,
+SvREFCNT_inc, SvROK, SvROK_off, SvROK_on, SvRV, SvSetMagicSV_nosteal,
+SvSTASH, SvTAINT, SvTAINTED, SvTAINTED_off, SvTAINTED_on, SvTRUE, SvTYPE,
+SvUOK, SvUPGRADE, SvUTF8, SvUTF8_off, SvUTF8_on, SvUV, SvUVx, SvUVX,
+sv_2bool, sv_2cv, sv_2io, sv_2iv, sv_2mortal, sv_2nv, sv_2pvbyte,
+sv_2pvbyte_nolen, sv_2pvutf8, sv_2pvutf8_nolen, sv_2pv_flags, sv_2pv_nolen,
+sv_2uv, sv_backoff, sv_bless, sv_catpv, sv_catpvf, sv_catpvf_mg, sv_catpvn,
sv_catpvn_flags, sv_catpvn_mg, sv_catpv_mg, sv_catsv, sv_catsv_flags,
sv_catsv_mg, sv_chop, sv_clear, sv_cmp, sv_cmp_locale, sv_collxfrm, sv_dec,
sv_derived_from, sv_eq, sv_force_normal, sv_force_normal_flags, sv_free,
@@ -4333,22 +4396,32 @@ sv_gets, sv_grow, sv_inc, sv_insert, sv_isa, sv_isobject, sv_iv, sv_len,
sv_len_utf8, sv_magic, sv_mortalcopy, sv_newmortal, sv_newref, sv_nv,
sv_pos_b2u, sv_pos_u2b, sv_pv, sv_pvbyte, sv_pvbyten, sv_pvbyten_force,
sv_pvn, sv_pvn_force, sv_pvn_force_flags, sv_pvutf8, sv_pvutf8n,
-sv_pvutf8n_force, sv_recode_to_utf8, sv_reftype, sv_replace,
-sv_report_used, sv_reset, sv_rvweaken, sv_setiv, sv_setiv_mg, sv_setnv,
-sv_setnv_mg, sv_setpv, sv_setpvf, sv_setpvf_mg, sv_setpviv, sv_setpviv_mg,
-sv_setpvn, sv_setpvn_mg, sv_setpv_mg, sv_setref_iv, sv_setref_nv,
-sv_setref_pv, sv_setref_pvn, sv_setref_uv, sv_setsv, sv_setsv_flags,
-sv_setsv_mg, sv_setuv, sv_setuv_mg, sv_taint, sv_tainted, sv_true,
-sv_uni_display, sv_unmagic, sv_unref, sv_unref_flags, sv_untaint,
-sv_upgrade, sv_usepvn, sv_usepvn_mg, sv_utf8_decode, sv_utf8_downgrade,
-sv_utf8_encode, sv_utf8_upgrade, sv_utf8_upgrade_flags, sv_uv, sv_vcatpvfn,
-sv_vsetpvfn, THIS, toLOWER, toUPPER, to_utf8_case, utf8n_to_uvchr,
+sv_pvutf8n_force, sv_reftype, sv_replace, sv_report_used, sv_reset,
+sv_rvweaken, sv_setiv, sv_setiv_mg, sv_setnv, sv_setnv_mg, sv_setpv,
+sv_setpvf, sv_setpvf_mg, sv_setpviv, sv_setpviv_mg, sv_setpvn,
+sv_setpvn_mg, sv_setpv_mg, sv_setref_iv, sv_setref_nv, sv_setref_pv,
+sv_setref_pvn, sv_setref_uv, sv_setsv, sv_setsv_flags, sv_setsv_mg,
+sv_setuv, sv_setuv_mg, sv_taint, sv_tainted, sv_true, sv_unmagic, sv_unref,
+sv_unref_flags, sv_untaint, sv_upgrade, sv_usepvn, sv_usepvn_mg,
+sv_utf8_decode, sv_utf8_downgrade, sv_utf8_encode, sv_utf8_upgrade,
+sv_utf8_upgrade_flags, sv_uv, sv_vcatpvfn, sv_vsetpvfn
+
+=item Unicode Support
+
+bytes_from_utf8, bytes_to_utf8, ibcmp_utf8, is_utf8_char, is_utf8_string,
+pv_uni_display, sv_recode_to_utf8, sv_uni_display, to_utf8_case,
+to_utf8_fold, to_utf8_lower, to_utf8_title, to_utf8_upper, utf8n_to_uvchr,
utf8n_to_uvuni, utf8_distance, utf8_hop, utf8_length, utf8_to_bytes,
-utf8_to_uvchr, utf8_to_uvuni, uvchr_to_utf8, uvuni_to_utf8, warn, XPUSHi,
-XPUSHn, XPUSHp, XPUSHs, XPUSHu, XS, XSRETURN, XSRETURN_EMPTY, XSRETURN_IV,
-XSRETURN_NO, XSRETURN_NV, XSRETURN_PV, XSRETURN_UNDEF, XSRETURN_YES,
-XST_mIV, XST_mNO, XST_mNV, XST_mPV, XST_mUNDEF, XST_mYES, XS_VERSION,
-XS_VERSION_BOOTCHECK, Zero
+utf8_to_uvchr, utf8_to_uvuni, uvchr_to_utf8, uvuni_to_utf8_flags
+
+=item Variables created by C<xsubpp> and C<xsubpp> internal functions
+
+ax, CLASS, dAX, dITEMS, dXSARGS, dXSI32, items, ix, newXSproto, RETVAL, ST,
+THIS, XS, XSRETURN_EMPTY, XS_VERSION, XS_VERSION_BOOTCHECK
+
+=item Warning and Dieing
+
+croak, warn
=item AUTHORS
@@ -4363,9 +4436,26 @@ XS_VERSION_BOOTCHECK, Zero
=item DESCRIPTION
-djSP, is_gv_magical, LVRET, PL_DBsingle, PL_DBsub, PL_DBtrace, PL_dowarn,
-PL_last_in_gv, PL_ofs_sv, PL_rs, report_uninit, start_glob, sv_add_arena,
-sv_clean_all, sv_clean_objs, sv_free_arenas
+=item Global Variables
+
+PL_DBsingle, PL_DBsub, PL_DBtrace, PL_dowarn, PL_last_in_gv, PL_ofs_sv,
+PL_rs
+
+=item GV Functions
+
+is_gv_magical
+
+=item IO Functions
+
+start_glob
+
+=item Stack Manipulation Macros
+
+djSP, LVRET
+
+=item SV Manipulation Functions
+
+report_uninit, sv_add_arena, sv_clean_all, sv_clean_objs, sv_free_arenas
=item AUTHORS
@@ -4404,20 +4494,25 @@ PERLIO_F_TEMP, PERLIO_F_OPEN, PERLIO_F_FASTGETS
=item Methods in Detail
- IV (*Pushed)(PerlIO *f,const char *mode, SV *arg);, IV
- (*Popped)(PerlIO *f);, PerlIO * (*Open)(...);, SV *
-(*Getarg)(PerlIO *f);, IV (*Fileno)(PerlIO *f);, SSize_t
-(*Read)(PerlIO *f, void *vbuf, Size_t count);, SSize_t (*Unread)(PerlIO
-*f, const void *vbuf, Size_t count);, SSize_t (*Write)(PerlIO *f, const
-void *vbuf, Size_t count);, IV (*Seek)(PerlIO *f, Off_t
-offset, int whence);, Off_t (*Tell)(PerlIO *f);, IV
- (*Close)(PerlIO *f);, IV (*Flush)(PerlIO *f);, IV
- (*Fill)(PerlIO *f);, IV (*Eof)(PerlIO *f);, IV
- (*Error)(PerlIO *f);, void (*Clearerr)(PerlIO *f);, void
- (*Setlinebuf)(PerlIO *f);, STDCHAR * (*Get_base)(PerlIO *f);,
-Size_t (*Get_bufsiz)(PerlIO *f);, STDCHAR *
-(*Get_ptr)(PerlIO *f);, SSize_t (*Get_cnt)(PerlIO *f);, void
- (*Set_ptrcnt)(PerlIO *f,STDCHAR *ptr,SSize_t cnt);
+char * name;, Size_t size;, IV kind;, PERLIO_K_BUFFERED, PERLIO_K_CANCRLF,
+PERLIO_K_FASTGETS, PERLIO_K_MULTIARG, PERLIO_K_RAW, IV
+(*Pushed)(pTHX_ PerlIO *f,const char *mode, SV *arg);, IV
+(*Popped)(pTHX_ PerlIO *f);, PerlIO * (*Open)(...);, SV *
+(*Getarg)(pTHX_ PerlIO *f, CLONE_PARAMS *param, int flags), IV
+(*Fileno)(pTHX_ PerlIO *f);, PerlIO * (*Dup)(pTHX_ PerlIO *f, PerlIO *o,
+CLONE_PARAMS *param, int flags), SSize_t (*Read)(pTHX_ PerlIO *f,
+void *vbuf, Size_t count);, SSize_t (*Unread)(pTHX_ PerlIO *f, const
+void *vbuf, Size_t count);, SSize_t (*Write)(PerlIO *f, const void
+*vbuf, Size_t count);, IV (*Seek)(pTHX_ PerlIO *f, Off_t
+offset, int whence);, Off_t (*Tell)(pTHX_ PerlIO *f);, IV
+ (*Close)(pTHX_ PerlIO *f);, IV (*Flush)(pTHX_ PerlIO *f);,
+IV (*Fill)(pTHX_ PerlIO *f);, IV (*Eof)(pTHX_ PerlIO
+*f);, IV (*Error)(pTHX_ PerlIO *f);, void
+(*Clearerr)(pTHX_ PerlIO *f);, void (*Setlinebuf)(pTHX_ PerlIO
+*f);, STDCHAR * (*Get_base)(pTHX_ PerlIO *f);, Size_t
+(*Get_bufsiz)(pTHX_ PerlIO *f);, STDCHAR * (*Get_ptr)(pTHX_ PerlIO
+*f);, SSize_t (*Get_cnt)(pTHX_ PerlIO *f);, void
+(*Set_ptrcnt)(pTHX_ PerlIO *f,STDCHAR *ptr,SSize_t cnt);
=item Core Layers
@@ -4429,6 +4524,8 @@ Size_t (*Get_bufsiz)(PerlIO *f);, STDCHAR *
=back
+=item TODO
+
=back
=head2 perlapio - perl's IO abstraction interface.
@@ -5101,6 +5198,8 @@ I<The Road goes ever on and on, down from the door where it began.>
=item VMS
+=item Win32
+
=item Localising a Tied Variable Leaks Memory
=item Localising Tied Arrays and Hashes Is Broken
@@ -5506,6 +5605,12 @@ Pod::Text, SDBM_File, Sys::Syslog, Tie::RefHash, Tie::SubstrHash
NCR MP-RAS, NonStop-UX
+=back
+
+=item Core Enhancements
+
+=over 4
+
=item Interpreter cloning, threads, and concurrency
=item Lexically scoped warning categories
@@ -6761,6 +6866,8 @@ R4 x86, R4 PPC
=item Contact Information
+=item Update 2001-12-26
+
=back
=back
@@ -7949,6 +8056,8 @@ data structures between threads
share VARIABLE, lock VARIABLE, unlock VARIABLE, cond_wait VARIABLE,
cond_signal VARIABLE, cond_broadcast VARIABLE
+=item NOTES
+
=item BUGS
=item AUTHOR
@@ -8260,6 +8369,8 @@ point
=back
+=item CAVEATS
+
=item SEE ALSO
=item AUTHOR
@@ -8476,6 +8587,60 @@ C<strict refs>, C<strict vars>, C<strict subs>
=back
+=head2 threads - Perl extension allowing use of interpreter based threads
+from perl
+
+=over 4
+
+=item SYNOPSIS
+
+=item DESCRIPTION
+
+$thread = new(function, LIST), $thread->join, $thread->detach,
+threads->self, $thread->tid
+
+=item TODO
+
+Fix so the return value is returned when you join, Add join_all, Fix memory
+leaks!
+
+=item AUTHOR and COPYRIGHT
+
+=item BUGS
+
+creating a thread from within a thread is unsafe under win32,
+PERL_OLD_SIGNALS are not threadsafe, will not be
+
+=item SEE ALSO
+
+=back
+
+=head2 threadshared, threads::shared - Perl extension for sharing data
+structures between threads
+
+=over 4
+
+=item SYNOPSIS
+
+=item DESCRIPTION
+
+=item EXPORT
+
+=item FUNCTIONS
+
+share VARIABLE, lock VARIABLE, unlock VARIABLE, cond_wait VARIABLE,
+cond_signal VARIABLE, cond_broadcast VARIABLE
+
+=item NOTES
+
+=item BUGS
+
+=item AUTHOR
+
+=item SEE ALSO
+
+=back
+
=head2 utf8 - Perl pragma to enable/disable UTF-8 (or UTF-EBCDIC) in source
code
@@ -8874,7 +9039,8 @@ B<-Db>, B<-Da>, B<-DC>, B<-S>, B<-upackage>
=item OPTIONS
B<-ofilename>, B<-v>, B<-->, B<-uPackname>, B<-D>, B<-Do>, B<-Dc>, B<-DA>,
-B<-DC>, B<-DM>, B<-f>, B<-fcog>, B<-fno-cog>, B<-On>, B<-llimit>
+B<-DC>, B<-DM>, B<-f>, B<-fcog>, B<-fsave-data>, B<-fppaddr>, B<-fwarn-sv>,
+B<-fuse-script-name>, B<-fsave-sig-hash>, B<-On>, B<-llimit>
=item EXAMPLES
@@ -10836,7 +11002,7 @@ arrays
=over 4
-=item SYNOPIS
+=item SYNOPSIS
=item DESCRIPTION
@@ -11836,6 +12002,16 @@ splitdir, catpath(), abs2rel, rel2abs()
=back
+=head2 File::Spec::Cygwin - methods for Cygwin file specs
+
+=over 4
+
+=item SYNOPSIS
+
+=item DESCRIPTION
+
+=back
+
=head2 File::Spec::Epoc - methods for Epoc file specs
=over 4
@@ -11938,6 +12114,14 @@ rel2abs
=back
+canonpath
+
+splitpath
+
+splitdir
+
+catpath
+
=head2 File::Spec::OS2 - methods for OS/2 file specs
=over 4
@@ -14281,9 +14465,9 @@ MSGNUM ), reset (), quit ()
=item Functions
-Net::Ping->new([$proto [, $def_timeout [, $bytes]]]);, $p->ping($host [,
-$timeout]);, $p->open($host);, $p->open($host);, $p->close();,
-pingecho($host [, $timeout]);
+Net::Ping->new([$proto [, $def_timeout [, $bytes]]]);,
+$p->bind($local_addr);, $p->ping($host [, $timeout]);, $p->open($host);,
+$p->open($host);, $p->close();, pingecho($host [, $timeout]);
=back
@@ -14291,7 +14475,7 @@ pingecho($host [, $timeout]);
=item NOTES
-=item AUTHOR(S)
+=item AUTHORS
=item COPYRIGHT
@@ -14797,7 +14981,8 @@ Constants
=item WAIT
-Constants, Macros
+Constants, WNOHANG, WUNTRACED, Macros, WIFEXITED, WEXITSTATUS, WIFSIGNALED,
+WTERMSIG, WIFSTOPPED, WSTOPSIG
=back
@@ -15890,8 +16075,8 @@ alt, code, indent, loose, quotes, sentence, width
=item DIAGNOSTICS
Bizarre space in item, Item called without tag, Can't open %s for reading:
-%s, Invalid quote specification "%s", %s:%d: Unknown command paragraph
-"%s", %s:%d: Unknown escape: %s, %s:%d: Unknown formatting code: %s, %s:%d:
+%s, Invalid quote specification "%s", %s:%d: Unknown command paragraph: %s,
+%s:%d: Unknown escape: %s, %s:%d: Unknown formatting code: %s, %s:%d:
Unmatched =back
=item RESTRICTIONS
@@ -16028,6 +16213,8 @@ E<amp>, E<apos>, E<lt>, E<gt>, E<quot>, E<sol>
=item VERBATIM
+=item CONCLUSION
+
=back
=head2 SDBM_File - Tied access to sdbm files
diff --git a/regcomp.c b/regcomp.c
index d7ae068398..d8ec0a920e 100644
--- a/regcomp.c
+++ b/regcomp.c
@@ -1848,7 +1848,7 @@ Perl_pregcomp(pTHX_ char *exp, char *xend, PMOP *pm)
first = NEXTOPER(first);
goto again;
}
- else if ((OP(first) == STAR &&
+ else if (!sawopen && (OP(first) == STAR &&
PL_regkind[(U8)OP(NEXTOPER(first))] == REG_ANY) &&
!(r->reganch & ROPT_ANCH) )
{
@@ -4557,9 +4557,13 @@ Perl_regprop(pTHX_ SV *sv, regnode *o)
if (k == EXACT) {
SV *dsv = sv_2mortal(newSVpvn("", 0));
- bool do_utf8 = DO_UTF8(sv);
+ /* Using is_utf8_string() is a crude hack but it may
+ * be the best for now since we have no flag "this EXACTish
+ * node was UTF-8" --jhi */
+ bool do_utf8 = is_utf8_string((U8*)STRING(o), STR_LEN(o));
char *s = do_utf8 ?
- pv_uni_display(dsv, (U8*)STRING(o), STR_LEN(o), 60, 0) :
+ pv_uni_display(dsv, (U8*)STRING(o), STR_LEN(o), 60,
+ UNI_DISPLAY_REGEX) :
STRING(o);
int len = do_utf8 ?
strlen(s) :
@@ -4749,9 +4753,8 @@ Perl_pregfree(pTHX_ struct regexp *r)
if (!r || (--r->refcnt > 0))
return;
DEBUG_r({
- bool utf8 = r->reganch & ROPT_UTF8;
char *s = pv_uni_display(dsv, (U8*)r->precomp, r->prelen, 60,
- UNI_DISPLAY_ISPRINT);
+ UNI_DISPLAY_REGEX);
int len = SvCUR(dsv);
if (!PL_colorset)
reginitcolors();
diff --git a/regexec.c b/regexec.c
index ee8f602964..203c8e9687 100644
--- a/regexec.c
+++ b/regexec.c
@@ -401,7 +401,8 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
DEBUG_r({
char *s = PL_reg_match_utf8 ?
- sv_uni_display(dsv, sv, 60, 0) : strpos;
+ sv_uni_display(dsv, sv, 60, UNI_DISPLAY_REGEX) :
+ strpos;
int len = PL_reg_match_utf8 ?
strlen(s) : strend - strpos;
if (!PL_colorset)
@@ -1626,11 +1627,11 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char *
DEBUG_r({
char *s0 = UTF ?
pv_uni_display(dsv0, (U8*)prog->precomp, prog->prelen, 60,
- UNI_DISPLAY_ISPRINT) :
+ UNI_DISPLAY_REGEX) :
prog->precomp;
int len0 = UTF ? SvCUR(dsv0) : prog->prelen;
char *s1 = do_utf8 ? sv_uni_display(dsv1, sv, 60,
- UNI_DISPLAY_ISPRINT) : startpos;
+ UNI_DISPLAY_REGEX) : startpos;
int len1 = do_utf8 ? SvCUR(dsv1) : strend - startpos;
if (!PL_colorset)
reginitcolors();
@@ -1822,11 +1823,11 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char *
regprop(prop, c);
s0 = UTF ?
pv_uni_display(dsv0, (U8*)SvPVX(prop), SvCUR(prop), 60,
- UNI_DISPLAY_ISPRINT) :
+ UNI_DISPLAY_REGEX) :
SvPVX(prop);
len0 = UTF ? SvCUR(dsv0) : SvCUR(prop);
s1 = UTF ?
- sv_uni_display(dsv1, sv, 60, UNI_DISPLAY_ISPRINT) : s;
+ sv_uni_display(dsv1, sv, 60, UNI_DISPLAY_REGEX) : s;
len1 = UTF ? SvCUR(dsv1) : strend - s;
PerlIO_printf(Perl_debug_log,
"Matching stclass `%*.*s' against `%*.*s'\n",
@@ -2197,17 +2198,17 @@ S_regmatch(pTHX_ regnode *prog)
char *s0 =
do_utf8 ?
pv_uni_display(dsv0, (U8*)(locinput - pref_len),
- pref0_len, 60, 0) :
+ pref0_len, 60, UNI_DISPLAY_REGEX) :
locinput - pref_len;
int len0 = do_utf8 ? strlen(s0) : pref0_len;
char *s1 = do_utf8 ?
pv_uni_display(dsv1, (U8*)(locinput - pref_len + pref0_len),
- pref_len - pref0_len, 60, 0) :
+ pref_len - pref0_len, 60, UNI_DISPLAY_REGEX) :
locinput - pref_len + pref0_len;
int len1 = do_utf8 ? strlen(s1) : pref_len - pref0_len;
char *s2 = do_utf8 ?
pv_uni_display(dsv2, (U8*)locinput,
- PL_regeol - locinput, 60, 0) :
+ PL_regeol - locinput, 60, UNI_DISPLAY_REGEX) :
locinput;
int len2 = do_utf8 ? strlen(s2) : l;
PerlIO_printf(Perl_debug_log,
diff --git a/t/op/re_tests b/t/op/re_tests
index 3d939a6635..155561019e 100644
--- a/t/op/re_tests
+++ b/t/op/re_tests
@@ -797,3 +797,4 @@ ab(?i)cd abCd y - -
(A|B)*?(?(1)(CD)|(CD)) CD y $2-$3 -CD # [ID 20010803.016]
(A|B)*?(?(1)(CD)|(CD)) ABCD y $2-$3 CD-
'^(o)(?!.*\1)'i Oo n - -
+(.*)\d+\1 abc12bc y $1 bc
diff --git a/utf8.c b/utf8.c
index 0a25c03c31..d979e168d6 100644
--- a/utf8.c
+++ b/utf8.c
@@ -1646,8 +1646,8 @@ Allows length and flags to be passed to low level routine.
=cut
*/
-/* On ASCII machines this is normally a macro but we want a
- real function in case XS code wants it
+/* On ASCII machines this is normally a macro but we want
+ a real function in case XS code wants it
*/
#undef Perl_utf8n_to_uvchr
UV
@@ -1663,8 +1663,14 @@ Perl_utf8n_to_uvchr(pTHX_ U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags)
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() characters as themselves.
+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.
=cut */
@@ -1677,14 +1683,37 @@ Perl_pv_uni_display(pTHX_ SV *dsv, U8 *spv, STRLEN len, STRLEN pvlim, UV flags)
sv_setpvn(dsv, "", 0);
for (s = (char *)spv, e = s + len; s < e; s += UTF8SKIP(s)) {
UV u;
+ bool ok = FALSE;
+
if (pvlim && SvCUR(dsv) >= pvlim) {
truncated++;
break;
}
u = utf8_to_uvchr((U8*)s, 0);
- if ((flags & UNI_DISPLAY_ISPRINT) && u < 256 && isprint(u))
- Perl_sv_catpvf(aTHX_ dsv, "%c", u);
- else
+ if (u < 256) {
+ if (!ok && (flags & UNI_DISPLAY_BACKSLASH)) {
+ switch (u & 0xFF) {
+ case '\n':
+ Perl_sv_catpvf(aTHX_ dsv, "\\n"); ok = TRUE; break;
+ case '\r':
+ Perl_sv_catpvf(aTHX_ dsv, "\\r"); ok = TRUE; break;
+ case '\t':
+ Perl_sv_catpvf(aTHX_ dsv, "\\t"); ok = TRUE; break;
+ case '\f':
+ Perl_sv_catpvf(aTHX_ dsv, "\\f"); ok = TRUE; break;
+ case '\a':
+ Perl_sv_catpvf(aTHX_ dsv, "\\a"); ok = TRUE; break;
+ case '\\':
+ Perl_sv_catpvf(aTHX_ dsv, "\\" ); ok = TRUE; break;
+ default: break;
+ }
+ }
+ if (!ok && (flags & UNI_DISPLAY_ISPRINT) && isprint(u & 0xFF)) {
+ Perl_sv_catpvf(aTHX_ dsv, "%c", u);
+ ok = TRUE;
+ }
+ }
+ if (!ok)
Perl_sv_catpvf(aTHX_ dsv, "\\x{%"UVxf"}", u);
}
if (truncated)
@@ -1697,9 +1726,11 @@ Perl_pv_uni_display(pTHX_ SV *dsv, U8 *spv, STRLEN len, STRLEN pvlim, UV flags)
=for apidoc A|char *|sv_uni_display|SV *dsv|SV *ssv|STRLEN pvlim|UV flags
Build to the scalar dsv a displayable version of the scalar sv,
-he displayable version being at most pvlim bytes long
+the displayable version being at most pvlim bytes long
(if longer, the rest is truncated and "..." will be appended).
-The flags argument is currently unused but available for future extensions.
+
+The flags argument is as in pv_uni_display().
+
The pointer to the PV of the dsv is returned.
=cut */
diff --git a/utf8.h b/utf8.h
index 96f1b741f4..8c27afab50 100644
--- a/utf8.h
+++ b/utf8.h
@@ -194,4 +194,7 @@ END_EXTERN_C
#define UNICODE_GREEK_SMALL_LETTER_SIGMA 0x03C3
#define UNI_DISPLAY_ISPRINT 0x0001
+#define UNI_DISPLAY_BACKSLASH 0x0002
+#define UNI_DISPLAY_QQ (UNI_DISPLAY_ISPRINT|UNI_DISPLAY_BACKSLASH)
+#define UNI_DISPLAY_REGEX (UNI_DISPLAY_ISPRINT|UNI_DISPLAY_BACKSLASH)