www-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

www/software/perl/manual index.html perldoc-all...


From: karl
Subject: www/software/perl/manual index.html perldoc-all...
Date: Fri, 20 Jun 2014 16:51:28 +0000

CVSROOT:        /web/www
Module name:    www
Changes by:     karl <karl>     14/06/20 16:51:27

Modified files:
        software/perl/manual: index.html perldoc-all.dvi.gz 
                              perldoc-all.html perldoc-all.html.gz 
                              perldoc-all.html_chapter.tar.gz 
                              perldoc-all.info.tar.gz perldoc-all.pdf 
                              perldoc-all.texi.tar.gz 

Log message:
        perl 5.20.0

CVSWeb URLs:
http://web.cvs.savannah.gnu.org/viewcvs/www/software/perl/manual/index.html?cvsroot=www&r1=1.5&r2=1.6
http://web.cvs.savannah.gnu.org/viewcvs/www/software/perl/manual/perldoc-all.dvi.gz?cvsroot=www&rev=1.6
http://web.cvs.savannah.gnu.org/viewcvs/www/software/perl/manual/perldoc-all.html?cvsroot=www&r1=1.5&r2=1.6
http://web.cvs.savannah.gnu.org/viewcvs/www/software/perl/manual/perldoc-all.html.gz?cvsroot=www&rev=1.6
http://web.cvs.savannah.gnu.org/viewcvs/www/software/perl/manual/perldoc-all.html_chapter.tar.gz?cvsroot=www&rev=1.6
http://web.cvs.savannah.gnu.org/viewcvs/www/software/perl/manual/perldoc-all.info.tar.gz?cvsroot=www&rev=1.6
http://web.cvs.savannah.gnu.org/viewcvs/www/software/perl/manual/perldoc-all.pdf?cvsroot=www&rev=1.6
http://web.cvs.savannah.gnu.org/viewcvs/www/software/perl/manual/perldoc-all.texi.tar.gz?cvsroot=www&rev=1.6

Patches:
Index: index.html
===================================================================
RCS file: /web/www/www/software/perl/manual/index.html,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- index.html  7 Sep 2013 21:31:43 -0000       1.5
+++ index.html  20 Jun 2014 16:51:09 -0000      1.6
@@ -4,7 +4,7 @@
 <h2>Perl documentation in Texinfo</h2>
 
 <address>GNU Project</address>
-<address>last updated September 07, 2013</address>
+<address>last updated June 19, 2014</address>
 
 <p>This translation of the <a href="http://perldoc.perl.org/";>Perl
 documentation</a> from POD to Texinfo is not official, and not endorsed
@@ -21,23 +21,23 @@
 
 <ul>
 <li><a href="perldoc-all.html">HTML
-    (5428K bytes)</a> - entirely on one web page.</li>
+    (5452K bytes)</a> - entirely on one web page.</li>
 <li><a href="html_chapter/index.html">HTML</a> - with one web page per
     chapter.</li>
 <li><a href="perldoc-all.html.gz">HTML compressed
-    (1312K gzipped characters)</a> - entirely on
+    (1320K gzipped characters)</a> - entirely on
     one web page.</li>
 <li><a href="perldoc-all.html_chapter.tar.gz">HTML compressed
     (1764K gzipped tar file)</a> -
     with one web page per chapter.</li>
 <li><a href="perldoc-all.info.tar.gz">Info document
-    (1176K bytes gzipped tar file)</a>.</li>
+    (1184K bytes gzipped tar file)</a>.</li>
 <li><a href="perldoc-all.dvi.gz">TeX dvi file
-    (1732K bytes gzipped)</a>.</li>
+    (1744K bytes gzipped)</a>.</li>
 <li><a href="perldoc-all.pdf">PDF file
-    (3920K bytes)</a>.</li>
+    (3936K bytes)</a>.</li>
 <li><a href="perldoc-all.texi.tar.gz">Texinfo source
-    (1120K bytes gzipped tar file).</a></li>
+    (1128K bytes gzipped tar file).</a></li>
 </ul>
 
 <p>You can <a href="http://shop.fsf.org/";>buy printed copies of

Index: perldoc-all.dvi.gz
===================================================================
RCS file: /web/www/www/software/perl/manual/perldoc-all.dvi.gz,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
Binary files /tmp/cvsNW5Czl and /tmp/cvsRjnelf differ

Index: perldoc-all.html
===================================================================
RCS file: /web/www/www/software/perl/manual/perldoc-all.html,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- perldoc-all.html    7 Sep 2013 21:31:44 -0000       1.5
+++ perldoc-all.html    20 Jun 2014 16:51:10 -0000      1.6
@@ -1,6 +1,6 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
 <html>
-<!-- Created by Texinfo 5.1.90+dev, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by Texinfo 5.2dev+dev, http://www.gnu.org/software/texinfo/ -->
 <head>
 <title>Perl pod documentation</title>
 
@@ -117,28 +117,29 @@
 <li><a name="stoc-perlref-1" href="#toc-perlref-1">62 perlref</a></li>
 <li><a name="stoc-perlreftut-1" href="#toc-perlreftut-1">63 perlreftut</a></li>
 <li><a name="stoc-perlreguts-1" href="#toc-perlreguts-1">64 perlreguts</a></li>
-<li><a name="stoc-perlrequick-1" href="#toc-perlrequick-1">65 
perlrequick</a></li>
-<li><a name="stoc-perlreref-1" href="#toc-perlreref-1">66 perlreref</a></li>
-<li><a name="stoc-perlretut-10" href="#toc-perlretut-10">67 perlretut</a></li>
-<li><a name="stoc-perlrun-1" href="#toc-perlrun-1">68 perlrun</a></li>
-<li><a name="stoc-perlsec-1" href="#toc-perlsec-1">69 perlsec</a></li>
-<li><a name="stoc-perlsource-1" href="#toc-perlsource-1">70 perlsource</a></li>
-<li><a name="stoc-perlstyle-1" href="#toc-perlstyle-1">71 perlstyle</a></li>
-<li><a name="stoc-perlsub-2" href="#toc-perlsub-2">72 perlsub</a></li>
-<li><a name="stoc-perlsyn-2" href="#toc-perlsyn-2">73 perlsyn</a></li>
-<li><a name="stoc-perlthrtut-1" href="#toc-perlthrtut-1">74 perlthrtut</a></li>
-<li><a name="stoc-perltie-1" href="#toc-perltie-1">75 perltie</a></li>
-<li><a name="stoc-perltodo-1" href="#toc-perltodo-1">76 perltodo</a></li>
-<li><a name="stoc-perltooc-1" href="#toc-perltooc-1">77 perltooc</a></li>
-<li><a name="stoc-perltoot-1" href="#toc-perltoot-1">78 perltoot</a></li>
-<li><a name="stoc-perltrap-1" href="#toc-perltrap-1">79 perltrap</a></li>
-<li><a name="stoc-perlunicode-1" href="#toc-perlunicode-1">80 
perlunicode</a></li>
-<li><a name="stoc-perlunifaq-1" href="#toc-perlunifaq-1">81 perlunifaq</a></li>
-<li><a name="stoc-perluniintro-1" href="#toc-perluniintro-1">82 
perluniintro</a></li>
-<li><a name="stoc-perlunitut-1" href="#toc-perlunitut-1">83 perlunitut</a></li>
-<li><a name="stoc-perlutil-1" href="#toc-perlutil-1">84 perlutil</a></li>
-<li><a name="stoc-perlvar-1" href="#toc-perlvar-1">85 perlvar</a></li>
-<li><a name="stoc-perlvms-1" href="#toc-perlvms-1">86 perlvms</a></li>
+<li><a name="stoc-perlrepository-1" href="#toc-perlrepository-1">65 
perlrepository</a></li>
+<li><a name="stoc-perlrequick-1" href="#toc-perlrequick-1">66 
perlrequick</a></li>
+<li><a name="stoc-perlreref-1" href="#toc-perlreref-1">67 perlreref</a></li>
+<li><a name="stoc-perlretut-10" href="#toc-perlretut-10">68 perlretut</a></li>
+<li><a name="stoc-perlrun-1" href="#toc-perlrun-1">69 perlrun</a></li>
+<li><a name="stoc-perlsec-1" href="#toc-perlsec-1">70 perlsec</a></li>
+<li><a name="stoc-perlsource-1" href="#toc-perlsource-1">71 perlsource</a></li>
+<li><a name="stoc-perlstyle-1" href="#toc-perlstyle-1">72 perlstyle</a></li>
+<li><a name="stoc-perlsub-2" href="#toc-perlsub-2">73 perlsub</a></li>
+<li><a name="stoc-perlsyn-2" href="#toc-perlsyn-2">74 perlsyn</a></li>
+<li><a name="stoc-perlthrtut-1" href="#toc-perlthrtut-1">75 perlthrtut</a></li>
+<li><a name="stoc-perltie-1" href="#toc-perltie-1">76 perltie</a></li>
+<li><a name="stoc-perltodo-1" href="#toc-perltodo-1">77 perltodo</a></li>
+<li><a name="stoc-perltooc-1" href="#toc-perltooc-1">78 perltooc</a></li>
+<li><a name="stoc-perltoot-1" href="#toc-perltoot-1">79 perltoot</a></li>
+<li><a name="stoc-perltrap-1" href="#toc-perltrap-1">80 perltrap</a></li>
+<li><a name="stoc-perlunicode-1" href="#toc-perlunicode-1">81 
perlunicode</a></li>
+<li><a name="stoc-perlunifaq-1" href="#toc-perlunifaq-1">82 perlunifaq</a></li>
+<li><a name="stoc-perluniintro-1" href="#toc-perluniintro-1">83 
perluniintro</a></li>
+<li><a name="stoc-perlunitut-1" href="#toc-perlunitut-1">84 perlunitut</a></li>
+<li><a name="stoc-perlutil-1" href="#toc-perlutil-1">85 perlutil</a></li>
+<li><a name="stoc-perlvar-1" href="#toc-perlvar-1">86 perlvar</a></li>
+<li><a name="stoc-perlvms-1" href="#toc-perlvms-1">87 perlvms</a></li>
 </ul>
 </div>
 
@@ -329,7 +330,11 @@
       <li><a name="toc-List-value-constructors" 
href="#perldata-List-value-constructors">11.2.6 List value constructors</a></li>
       <li><a name="toc-Subscripts" href="#perldata-Subscripts">11.2.7 
Subscripts</a></li>
       <li><a name="toc-Multi_002ddimensional-array-emulation" 
href="#perldata-Multi_002ddimensional-array-emulation">11.2.8 Multi-dimensional 
array emulation</a></li>
-      <li><a name="toc-Slices" href="#perldata-Slices">11.2.9 Slices</a></li>
+      <li><a name="toc-Slices" href="#perldata-Slices">11.2.9 Slices</a>
+      <ul class="no-bullet">
+        <li><a name="toc-Key_002fValue-Hash-Slices" 
href="#perldata-Key_002fValue-Hash-Slices">11.2.9.1 Key/Value Hash 
Slices</a></li>
+        <li><a name="toc-Index_002fValue-Array-Slices" 
href="#perldata-Index_002fValue-Array-Slices">11.2.9.2 Index/Value Array 
Slices</a></li>
+      </ul></li>
       <li><a name="toc-Typeglobs-and-Filehandles" 
href="#perldata-Typeglobs-and-Filehandles">11.2.10 Typeglobs and 
Filehandles</a></li>
     </ul></li>
     <li><a name="toc-SEE-ALSO-4" href="#perldata-SEE-ALSO">11.3 SEE 
ALSO</a></li>
@@ -552,6 +557,7 @@
       <li><a name="toc-_00240-assignments" 
href="#perlembed-_00240-assignments">20.2.11 $0 assignments</a></li>
       <li><a name="toc-Maintaining-multiple-interpreter-instances" 
href="#perlembed-Maintaining-multiple-interpreter-instances">20.2.12 
Maintaining multiple interpreter instances</a></li>
       <li><a 
name="toc-Using-Perl-modules_002c-which-themselves-use-C-libraries_002c-from-your-C-program"
 
href="#perlembed-Using-Perl-modules_002c-which-themselves-use-C-libraries_002c-from-your-C-program">20.2.13
 Using Perl modules, which themselves use C libraries, from your C 
program</a></li>
+      <li><a name="toc-Using-embedded-Perl-with-POSIX-locales" 
href="#perlembed-Using-embedded-Perl-with-POSIX-locales">20.2.14 Using embedded 
Perl with POSIX locales</a></li>
     </ul></li>
     <li><a name="toc-Hiding-Perl_005f" href="#perlembed-Hiding-Perl_005f">20.3 
Hiding Perl_</a></li>
     <li><a name="toc-MORAL" href="#perlembed-MORAL">20.4 MORAL</a></li>
@@ -657,7 +663,7 @@
       <li><a name="toc-Finding-out-your-status" 
href="#perlgit-Finding-out-your-status">26.4.1 Finding out your status</a></li>
       <li><a name="toc-Patch-workflow" href="#perlgit-Patch-workflow">26.4.2 
Patch workflow</a></li>
       <li><a name="toc-Committing-your-changes" 
href="#perlgit-Committing-your-changes">26.4.3 Committing your changes</a></li>
-      <li><a name="toc-Using-git-to-send-patch-emails" 
href="#perlgit-Using-git-to-send-patch-emails">26.4.4 Using git to send patch 
emails</a></li>
+      <li><a name="toc-Sending-patch-emails" 
href="#perlgit-Sending-patch-emails">26.4.4 Sending patch emails</a></li>
       <li><a name="toc-A-note-on-derived-files" 
href="#perlgit-A-note-on-derived-files">26.4.5 A note on derived files</a></li>
       <li><a name="toc-Cleaning-a-working-directory" 
href="#perlgit-Cleaning-a-working-directory">26.4.6 Cleaning a working 
directory</a></li>
       <li><a name="toc-Bisecting" href="#perlgit-Bisecting">26.4.7 
Bisecting</a></li>
@@ -703,69 +709,71 @@
       <li><a name="toc-Reference-Counts-and-Mortality" 
href="#perlguts-Reference-Counts-and-Mortality">28.3.13 Reference Counts and 
Mortality</a></li>
       <li><a name="toc-Stashes-and-Globs" 
href="#perlguts-Stashes-and-Globs">28.3.14 Stashes and Globs</a></li>
       <li><a name="toc-Double_002dTyped-SVs" 
href="#perlguts-Double_002dTyped-SVs">28.3.15 Double-Typed SVs</a></li>
-      <li><a name="toc-Magic-Variables" 
href="#perlguts-Magic-Variables">28.3.16 Magic Variables</a></li>
-      <li><a name="toc-Assigning-Magic" 
href="#perlguts-Assigning-Magic">28.3.17 Assigning Magic</a></li>
-      <li><a name="toc-Magic-Virtual-Tables" 
href="#perlguts-Magic-Virtual-Tables">28.3.18 Magic Virtual Tables</a></li>
-      <li><a name="toc-Finding-Magic" href="#perlguts-Finding-Magic">28.3.19 
Finding Magic</a></li>
-      <li><a name="toc-Understanding-the-Magic-of-Tied-Hashes-and-Arrays" 
href="#perlguts-Understanding-the-Magic-of-Tied-Hashes-and-Arrays">28.3.20 
Understanding the Magic of Tied Hashes and Arrays</a></li>
-      <li><a name="toc-Localizing-changes" 
href="#perlguts-Localizing-changes">28.3.21 Localizing changes</a></li>
+      <li><a name="toc-Read_002dOnly-Values" 
href="#perlguts-Read_002dOnly-Values">28.3.16 Read-Only Values</a></li>
+      <li><a name="toc-Copy-on-Write" href="#perlguts-Copy-on-Write">28.3.17 
Copy on Write</a></li>
+      <li><a name="toc-Magic-Variables" 
href="#perlguts-Magic-Variables">28.3.18 Magic Variables</a></li>
+      <li><a name="toc-Assigning-Magic" 
href="#perlguts-Assigning-Magic">28.3.19 Assigning Magic</a></li>
+      <li><a name="toc-Magic-Virtual-Tables" 
href="#perlguts-Magic-Virtual-Tables">28.3.20 Magic Virtual Tables</a></li>
+      <li><a name="toc-Finding-Magic" href="#perlguts-Finding-Magic">28.3.21 
Finding Magic</a></li>
+      <li><a name="toc-Understanding-the-Magic-of-Tied-Hashes-and-Arrays" 
href="#perlguts-Understanding-the-Magic-of-Tied-Hashes-and-Arrays">28.3.22 
Understanding the Magic of Tied Hashes and Arrays</a></li>
+      <li><a name="toc-Localizing-changes" 
href="#perlguts-Localizing-changes">28.3.23 Localizing changes</a></li>
     </ul></li>
     <li><a name="toc-Subroutines" href="#perlguts-Subroutines">28.4 
Subroutines</a>
     <ul class="no-bullet">
       <li><a name="toc-XSUBs-and-the-Argument-Stack" 
href="#perlguts-XSUBs-and-the-Argument-Stack">28.4.1 XSUBs and the Argument 
Stack</a></li>
       <li><a name="toc-Autoloading-with-XSUBs" 
href="#perlguts-Autoloading-with-XSUBs">28.4.2 Autoloading with XSUBs</a></li>
       <li><a name="toc-Calling-Perl-Routines-from-within-C-Programs" 
href="#perlguts-Calling-Perl-Routines-from-within-C-Programs">28.4.3 Calling 
Perl Routines from within C Programs</a></li>
-      <li><a name="toc-Memory-Allocation" 
href="#perlguts-Memory-Allocation">28.4.4 Memory Allocation</a>
-      <ul class="no-bullet">
-        <li><a name="toc-Allocation" href="#perlguts-Allocation">28.4.4.1 
Allocation</a></li>
-        <li><a name="toc-Reallocation" href="#perlguts-Reallocation">28.4.4.2 
Reallocation</a></li>
-        <li><a name="toc-Moving" href="#perlguts-Moving">28.4.4.3 
Moving</a></li>
-      </ul></li>
-      <li><a name="toc-PerlIO" href="#perlguts-PerlIO">28.4.5 PerlIO</a></li>
-      <li><a name="toc-Putting-a-C-value-on-Perl-stack" 
href="#perlguts-Putting-a-C-value-on-Perl-stack">28.4.6 Putting a C value on 
Perl stack</a></li>
-      <li><a name="toc-Scratchpads" href="#perlguts-Scratchpads">28.4.7 
Scratchpads</a></li>
-      <li><a name="toc-Scratchpads-and-recursion" 
href="#perlguts-Scratchpads-and-recursion">28.4.8 Scratchpads and 
recursion</a></li>
-    </ul></li>
-    <li><a name="toc-Compiled-code" href="#perlguts-Compiled-code">28.5 
Compiled code</a>
-    <ul class="no-bullet">
-      <li><a name="toc-Code-tree" href="#perlguts-Code-tree">28.5.1 Code 
tree</a></li>
-      <li><a name="toc-Examining-the-tree" 
href="#perlguts-Examining-the-tree">28.5.2 Examining the tree</a></li>
-      <li><a name="toc-Compile-pass-1_003a-check-routines" 
href="#perlguts-Compile-pass-1_003a-check-routines">28.5.3 Compile pass 1: 
check routines</a></li>
-      <li><a name="toc-Compile-pass-1a_003a-constant-folding" 
href="#perlguts-Compile-pass-1a_003a-constant-folding">28.5.4 Compile pass 1a: 
constant folding</a></li>
-      <li><a name="toc-Compile-pass-2_003a-context-propagation" 
href="#perlguts-Compile-pass-2_003a-context-propagation">28.5.5 Compile pass 2: 
context propagation</a></li>
-      <li><a name="toc-Compile-pass-3_003a-peephole-optimization" 
href="#perlguts-Compile-pass-3_003a-peephole-optimization">28.5.6 Compile pass 
3: peephole optimization</a></li>
-      <li><a name="toc-Pluggable-runops" 
href="#perlguts-Pluggable-runops">28.5.7 Pluggable runops</a></li>
-      <li><a name="toc-Compile_002dtime-scope-hooks" 
href="#perlguts-Compile_002dtime-scope-hooks">28.5.8 Compile-time scope 
hooks</a></li>
-    </ul></li>
-    <li><a 
name="toc-Examining-internal-data-structures-with-the-dump-functions" 
href="#perlguts-Examining-internal-data-structures-with-the-dump-functions">28.6
 Examining internal data structures with the <code>dump</code> 
functions</a></li>
-    <li><a name="toc-How-multiple-interpreters-and-concurrency-are-supported" 
href="#perlguts-How-multiple-interpreters-and-concurrency-are-supported">28.7 
How multiple interpreters and concurrency are supported</a>
-    <ul class="no-bullet">
-      <li><a name="toc-Background-and-PERL_005fIMPLICIT_005fCONTEXT" 
href="#perlguts-Background-and-PERL_005fIMPLICIT_005fCONTEXT">28.7.1 Background 
and PERL_IMPLICIT_CONTEXT</a></li>
-      <li><a name="toc-So-what-happened-to-dTHR_003f" 
href="#perlguts-So-what-happened-to-dTHR_003f">28.7.2 So what happened to 
dTHR?</a></li>
-      <li><a name="toc-How-do-I-use-all-this-in-extensions_003f" 
href="#perlguts-How-do-I-use-all-this-in-extensions_003f">28.7.3 How do I use 
all this in extensions?</a></li>
-      <li><a 
name="toc-Should-I-do-anything-special-if-I-call-perl-from-multiple-threads_003f"
 
href="#perlguts-Should-I-do-anything-special-if-I-call-perl-from-multiple-threads_003f">28.7.4
 Should I do anything special if I call perl from multiple threads?</a></li>
-      <li><a name="toc-Future-Plans-and-PERL_005fIMPLICIT_005fSYS" 
href="#perlguts-Future-Plans-and-PERL_005fIMPLICIT_005fSYS">28.7.5 Future Plans 
and PERL_IMPLICIT_SYS</a></li>
-    </ul></li>
-    <li><a name="toc-Internal-Functions" 
href="#perlguts-Internal-Functions">28.8 Internal Functions</a>
-    <ul class="no-bullet">
-      <li><a name="toc-Formatted-Printing-of-IVs_002c-UVs_002c-and-NVs" 
href="#perlguts-Formatted-Printing-of-IVs_002c-UVs_002c-and-NVs">28.8.1 
Formatted Printing of IVs, UVs, and NVs</a></li>
-      <li><a 
name="toc-Pointer_002dTo_002dInteger-and-Integer_002dTo_002dPointer" 
href="#perlguts-Pointer_002dTo_002dInteger-and-Integer_002dTo_002dPointer">28.8.2
 Pointer-To-Integer and Integer-To-Pointer</a></li>
-      <li><a name="toc-Exception-Handling" 
href="#perlguts-Exception-Handling">28.8.3 Exception Handling</a></li>
-      <li><a name="toc-Source-Documentation" 
href="#perlguts-Source-Documentation">28.8.4 Source Documentation</a></li>
-      <li><a name="toc-Backwards-compatibility" 
href="#perlguts-Backwards-compatibility">28.8.5 Backwards compatibility</a></li>
-    </ul></li>
-    <li><a name="toc-Unicode-Support" href="#perlguts-Unicode-Support">28.9 
Unicode Support</a>
-    <ul class="no-bullet">
-      <li><a name="toc-What-is-Unicode_002c-anyway_003f" 
href="#perlguts-What-is-Unicode_002c-anyway_003f">28.9.1 What 
<strong>is</strong> Unicode, anyway?</a></li>
-      <li><a name="toc-How-can-I-recognise-a-UTF_002d8-string_003f" 
href="#perlguts-How-can-I-recognise-a-UTF_002d8-string_003f">28.9.2 How can I 
recognise a UTF-8 string?</a></li>
-      <li><a name="toc-How-does-UTF_002d8-represent-Unicode-characters_003f" 
href="#perlguts-How-does-UTF_002d8-represent-Unicode-characters_003f">28.9.3 
How does UTF-8 represent Unicode characters?</a></li>
-      <li><a name="toc-How-does-Perl-store-UTF_002d8-strings_003f" 
href="#perlguts-How-does-Perl-store-UTF_002d8-strings_003f">28.9.4 How does 
Perl store UTF-8 strings?</a></li>
-      <li><a name="toc-How-do-I-convert-a-string-to-UTF_002d8_003f" 
href="#perlguts-How-do-I-convert-a-string-to-UTF_002d8_003f">28.9.5 How do I 
convert a string to UTF-8?</a></li>
-      <li><a name="toc-Is-there-anything-else-I-need-to-know_003f" 
href="#perlguts-Is-there-anything-else-I-need-to-know_003f">28.9.6 Is there 
anything else I need to know?</a></li>
-    </ul></li>
-    <li><a name="toc-Custom-Operators" href="#perlguts-Custom-Operators">28.10 
Custom Operators</a></li>
-    <li><a name="toc-AUTHORS-2" href="#perlguts-AUTHORS">28.11 AUTHORS</a></li>
-    <li><a name="toc-SEE-ALSO-14" href="#perlguts-SEE-ALSO">28.12 SEE 
ALSO</a></li>
+      <li><a name="toc-Putting-a-C-value-on-Perl-stack" 
href="#perlguts-Putting-a-C-value-on-Perl-stack">28.4.4 Putting a C value on 
Perl stack</a></li>
+      <li><a name="toc-Scratchpads" href="#perlguts-Scratchpads">28.4.5 
Scratchpads</a></li>
+      <li><a name="toc-Scratchpads-and-recursion" 
href="#perlguts-Scratchpads-and-recursion">28.4.6 Scratchpads and 
recursion</a></li>
+    </ul></li>
+    <li><a name="toc-Memory-Allocation" 
href="#perlguts-Memory-Allocation">28.5 Memory Allocation</a>
+    <ul class="no-bullet">
+      <li><a name="toc-Allocation" href="#perlguts-Allocation">28.5.1 
Allocation</a></li>
+      <li><a name="toc-Reallocation" href="#perlguts-Reallocation">28.5.2 
Reallocation</a></li>
+      <li><a name="toc-Moving" href="#perlguts-Moving">28.5.3 Moving</a></li>
+    </ul></li>
+    <li><a name="toc-PerlIO" href="#perlguts-PerlIO">28.6 PerlIO</a></li>
+    <li><a name="toc-Compiled-code" href="#perlguts-Compiled-code">28.7 
Compiled code</a>
+    <ul class="no-bullet">
+      <li><a name="toc-Code-tree" href="#perlguts-Code-tree">28.7.1 Code 
tree</a></li>
+      <li><a name="toc-Examining-the-tree" 
href="#perlguts-Examining-the-tree">28.7.2 Examining the tree</a></li>
+      <li><a name="toc-Compile-pass-1_003a-check-routines" 
href="#perlguts-Compile-pass-1_003a-check-routines">28.7.3 Compile pass 1: 
check routines</a></li>
+      <li><a name="toc-Compile-pass-1a_003a-constant-folding" 
href="#perlguts-Compile-pass-1a_003a-constant-folding">28.7.4 Compile pass 1a: 
constant folding</a></li>
+      <li><a name="toc-Compile-pass-2_003a-context-propagation" 
href="#perlguts-Compile-pass-2_003a-context-propagation">28.7.5 Compile pass 2: 
context propagation</a></li>
+      <li><a name="toc-Compile-pass-3_003a-peephole-optimization" 
href="#perlguts-Compile-pass-3_003a-peephole-optimization">28.7.6 Compile pass 
3: peephole optimization</a></li>
+      <li><a name="toc-Pluggable-runops" 
href="#perlguts-Pluggable-runops">28.7.7 Pluggable runops</a></li>
+      <li><a name="toc-Compile_002dtime-scope-hooks" 
href="#perlguts-Compile_002dtime-scope-hooks">28.7.8 Compile-time scope 
hooks</a></li>
+    </ul></li>
+    <li><a 
name="toc-Examining-internal-data-structures-with-the-dump-functions" 
href="#perlguts-Examining-internal-data-structures-with-the-dump-functions">28.8
 Examining internal data structures with the <code>dump</code> 
functions</a></li>
+    <li><a name="toc-How-multiple-interpreters-and-concurrency-are-supported" 
href="#perlguts-How-multiple-interpreters-and-concurrency-are-supported">28.9 
How multiple interpreters and concurrency are supported</a>
+    <ul class="no-bullet">
+      <li><a name="toc-Background-and-PERL_005fIMPLICIT_005fCONTEXT" 
href="#perlguts-Background-and-PERL_005fIMPLICIT_005fCONTEXT">28.9.1 Background 
and PERL_IMPLICIT_CONTEXT</a></li>
+      <li><a name="toc-So-what-happened-to-dTHR_003f" 
href="#perlguts-So-what-happened-to-dTHR_003f">28.9.2 So what happened to 
dTHR?</a></li>
+      <li><a name="toc-How-do-I-use-all-this-in-extensions_003f" 
href="#perlguts-How-do-I-use-all-this-in-extensions_003f">28.9.3 How do I use 
all this in extensions?</a></li>
+      <li><a 
name="toc-Should-I-do-anything-special-if-I-call-perl-from-multiple-threads_003f"
 
href="#perlguts-Should-I-do-anything-special-if-I-call-perl-from-multiple-threads_003f">28.9.4
 Should I do anything special if I call perl from multiple threads?</a></li>
+      <li><a name="toc-Future-Plans-and-PERL_005fIMPLICIT_005fSYS" 
href="#perlguts-Future-Plans-and-PERL_005fIMPLICIT_005fSYS">28.9.5 Future Plans 
and PERL_IMPLICIT_SYS</a></li>
+    </ul></li>
+    <li><a name="toc-Internal-Functions" 
href="#perlguts-Internal-Functions">28.10 Internal Functions</a>
+    <ul class="no-bullet">
+      <li><a name="toc-Formatted-Printing-of-IVs_002c-UVs_002c-and-NVs" 
href="#perlguts-Formatted-Printing-of-IVs_002c-UVs_002c-and-NVs">28.10.1 
Formatted Printing of IVs, UVs, and NVs</a></li>
+      <li><a 
name="toc-Pointer_002dTo_002dInteger-and-Integer_002dTo_002dPointer" 
href="#perlguts-Pointer_002dTo_002dInteger-and-Integer_002dTo_002dPointer">28.10.2
 Pointer-To-Integer and Integer-To-Pointer</a></li>
+      <li><a name="toc-Exception-Handling" 
href="#perlguts-Exception-Handling">28.10.3 Exception Handling</a></li>
+      <li><a name="toc-Source-Documentation" 
href="#perlguts-Source-Documentation">28.10.4 Source Documentation</a></li>
+      <li><a name="toc-Backwards-compatibility" 
href="#perlguts-Backwards-compatibility">28.10.5 Backwards 
compatibility</a></li>
+    </ul></li>
+    <li><a name="toc-Unicode-Support" href="#perlguts-Unicode-Support">28.11 
Unicode Support</a>
+    <ul class="no-bullet">
+      <li><a name="toc-What-is-Unicode_002c-anyway_003f" 
href="#perlguts-What-is-Unicode_002c-anyway_003f">28.11.1 What 
<strong>is</strong> Unicode, anyway?</a></li>
+      <li><a name="toc-How-can-I-recognise-a-UTF_002d8-string_003f" 
href="#perlguts-How-can-I-recognise-a-UTF_002d8-string_003f">28.11.2 How can I 
recognise a UTF-8 string?</a></li>
+      <li><a name="toc-How-does-UTF_002d8-represent-Unicode-characters_003f" 
href="#perlguts-How-does-UTF_002d8-represent-Unicode-characters_003f">28.11.3 
How does UTF-8 represent Unicode characters?</a></li>
+      <li><a name="toc-How-does-Perl-store-UTF_002d8-strings_003f" 
href="#perlguts-How-does-Perl-store-UTF_002d8-strings_003f">28.11.4 How does 
Perl store UTF-8 strings?</a></li>
+      <li><a name="toc-How-do-I-convert-a-string-to-UTF_002d8_003f" 
href="#perlguts-How-do-I-convert-a-string-to-UTF_002d8_003f">28.11.5 How do I 
convert a string to UTF-8?</a></li>
+      <li><a name="toc-Is-there-anything-else-I-need-to-know_003f" 
href="#perlguts-Is-there-anything-else-I-need-to-know_003f">28.11.6 Is there 
anything else I need to know?</a></li>
+    </ul></li>
+    <li><a name="toc-Custom-Operators" href="#perlguts-Custom-Operators">28.12 
Custom Operators</a></li>
+    <li><a name="toc-AUTHORS-2" href="#perlguts-AUTHORS">28.13 AUTHORS</a></li>
+    <li><a name="toc-SEE-ALSO-14" href="#perlguts-SEE-ALSO">28.14 SEE 
ALSO</a></li>
   </ul></li>
   <li><a name="toc-perlhack-1" href="#perlhack">29 perlhack</a>
   <ul class="no-bullet">
@@ -853,6 +861,8 @@
       <li><a name="toc-Using-a-source_002dlevel-debugger" 
href="#perlhacktips-Using-a-source_002dlevel-debugger">30.4.2 Using a 
source-level debugger</a></li>
       <li><a name="toc-gdb-macro-support" 
href="#perlhacktips-gdb-macro-support">30.4.3 gdb macro support</a></li>
       <li><a name="toc-Dumping-Perl-Data-Structures" 
href="#perlhacktips-Dumping-Perl-Data-Structures">30.4.4 Dumping Perl Data 
Structures</a></li>
+      <li><a name="toc-Using-gdb-to-look-at-specific-parts-of-a-program" 
href="#perlhacktips-Using-gdb-to-look-at-specific-parts-of-a-program">30.4.5 
Using gdb to look at specific parts of a program</a></li>
+      <li><a 
name="toc-Using-gdb-to-look-at-what-the-parser_002flexer-are-doing" 
href="#perlhacktips-Using-gdb-to-look-at-what-the-parser_002flexer-are-doing">30.4.6
 Using gdb to look at what the parser/lexer are doing</a></li>
     </ul></li>
     <li><a name="toc-SOURCE-CODE-STATIC-ANALYSIS" 
href="#perlhacktips-SOURCE-CODE-STATIC-ANALYSIS">30.5 SOURCE CODE STATIC 
ANALYSIS</a>
     <ul class="no-bullet">
@@ -864,13 +874,8 @@
     </ul></li>
     <li><a name="toc-MEMORY-DEBUGGERS" 
href="#perlhacktips-MEMORY-DEBUGGERS">30.6 MEMORY DEBUGGERS</a>
     <ul class="no-bullet">
-      <li><a name="toc-Rational-Software_0027s-Purify" 
href="#perlhacktips-Rational-Software_0027s-Purify">30.6.1 Rational 
Software&rsquo;s Purify</a>
-      <ul class="no-bullet">
-        <li><a name="toc-Purify-on-Unix" 
href="#perlhacktips-Purify-on-Unix">30.6.1.1 Purify on Unix</a></li>
-        <li><a name="toc-Purify-on-NT" 
href="#perlhacktips-Purify-on-NT">30.6.1.2 Purify on NT</a></li>
-      </ul></li>
-      <li><a name="toc-valgrind" href="#perlhacktips-valgrind">30.6.2 
valgrind</a></li>
-      <li><a name="toc-AddressSanitizer" 
href="#perlhacktips-AddressSanitizer">30.6.3 AddressSanitizer</a></li>
+      <li><a name="toc-valgrind" href="#perlhacktips-valgrind">30.6.1 
valgrind</a></li>
+      <li><a name="toc-AddressSanitizer" 
href="#perlhacktips-AddressSanitizer">30.6.2 AddressSanitizer</a></li>
     </ul></li>
     <li><a name="toc-PROFILING" href="#perlhacktips-PROFILING">30.7 
PROFILING</a>
     <ul class="no-bullet">
@@ -884,7 +889,8 @@
       <li><a name="toc-DDD-over-gdb" href="#perlhacktips-DDD-over-gdb">30.8.3 
DDD over gdb</a></li>
       <li><a name="toc-Poison" href="#perlhacktips-Poison">30.8.4 
Poison</a></li>
       <li><a name="toc-Read_002donly-optrees" 
href="#perlhacktips-Read_002donly-optrees">30.8.5 Read-only optrees</a></li>
-      <li><a name="toc-The-_002ei-Targets" 
href="#perlhacktips-The-_002ei-Targets">30.8.6 The .i Targets</a></li>
+      <li><a name="toc-When-is-a-bool-not-a-bool_003f" 
href="#perlhacktips-When-is-a-bool-not-a-bool_003f">30.8.6 When is a bool not a 
bool?</a></li>
+      <li><a name="toc-The-_002ei-Targets" 
href="#perlhacktips-The-_002ei-Targets">30.8.7 The .i Targets</a></li>
     </ul></li>
     <li><a name="toc-AUTHOR-12" href="#perlhacktips-AUTHOR">30.9 
AUTHOR</a></li>
   </ul></li>
@@ -1029,18 +1035,7 @@
   <li><a name="toc-perllexwarn-1" href="#perllexwarn">37 perllexwarn</a>
   <ul class="no-bullet">
     <li><a name="toc-NAME-36" href="#perllexwarn-NAME">37.1 NAME</a></li>
-    <li><a name="toc-DESCRIPTION-36" href="#perllexwarn-DESCRIPTION">37.2 
DESCRIPTION</a>
-    <ul class="no-bullet">
-      <li><a name="toc-Default-Warnings-and-Optional-Warnings" 
href="#perllexwarn-Default-Warnings-and-Optional-Warnings">37.2.1 Default 
Warnings and Optional Warnings</a></li>
-      <li><a name="toc-What_0027s-wrong-with-_002dw-and-_0024_005eW" 
href="#perllexwarn-What_0027s-wrong-with-_002dw-and-_0024_005eW">37.2.2 
What&rsquo;s wrong with <strong>-w</strong> and <code>$^W</code></a></li>
-      <li><a name="toc-Controlling-Warnings-from-the-Command-Line" 
href="#perllexwarn-Controlling-Warnings-from-the-Command-Line">37.2.3 
Controlling Warnings from the Command Line</a></li>
-      <li><a name="toc-Backward-Compatibility" 
href="#perllexwarn-Backward-Compatibility">37.2.4 Backward 
Compatibility</a></li>
-      <li><a name="toc-Category-Hierarchy" 
href="#perllexwarn-Category-Hierarchy">37.2.5 Category Hierarchy</a></li>
-      <li><a name="toc-Fatal-Warnings" 
href="#perllexwarn-Fatal-Warnings">37.2.6 Fatal Warnings</a></li>
-      <li><a name="toc-Reporting-Warnings-from-a-Module" 
href="#perllexwarn-Reporting-Warnings-from-a-Module">37.2.7 Reporting Warnings 
from a Module</a></li>
-    </ul></li>
-    <li><a name="toc-SEE-ALSO-16" href="#perllexwarn-SEE-ALSO">37.3 SEE 
ALSO</a></li>
-    <li><a name="toc-AUTHOR-16" href="#perllexwarn-AUTHOR">37.4 AUTHOR</a></li>
+    <li><a name="toc-DESCRIPTION-36" href="#perllexwarn-DESCRIPTION">37.2 
DESCRIPTION</a></li>
   </ul></li>
   <li><a name="toc-perllocale-1" href="#perllocale">38 perllocale</a>
   <ul class="no-bullet">
@@ -1054,12 +1049,13 @@
       <li><a name="toc-The-setlocale-function" 
href="#perllocale-The-setlocale-function">38.5.2 The setlocale function</a></li>
       <li><a name="toc-Finding-locales" 
href="#perllocale-Finding-locales">38.5.3 Finding locales</a></li>
       <li><a name="toc-LOCALE-PROBLEMS" 
href="#perllocale-LOCALE-PROBLEMS">38.5.4 LOCALE PROBLEMS</a></li>
-      <li><a name="toc-Temporarily-fixing-locale-problems" 
href="#perllocale-Temporarily-fixing-locale-problems">38.5.5 Temporarily fixing 
locale problems</a></li>
-      <li><a name="toc-Permanently-fixing-locale-problems" 
href="#perllocale-Permanently-fixing-locale-problems">38.5.6 Permanently fixing 
locale problems</a></li>
-      <li><a 
name="toc-Permanently-fixing-your-system_0027s-locale-configuration" 
href="#perllocale-Permanently-fixing-your-system_0027s-locale-configuration">38.5.7
 Permanently fixing your system&rsquo;s locale configuration</a></li>
-      <li><a name="toc-Fixing-system-locale-configuration" 
href="#perllocale-Fixing-system-locale-configuration">38.5.8 Fixing system 
locale configuration</a></li>
-      <li><a name="toc-The-localeconv-function" 
href="#perllocale-The-localeconv-function">38.5.9 The localeconv 
function</a></li>
-      <li><a name="toc-I18N_003a_003aLanginfo" 
href="#perllocale-I18N_003a_003aLanginfo">38.5.10 I18N::Langinfo</a></li>
+      <li><a name="toc-Testing-for-broken-locales" 
href="#perllocale-Testing-for-broken-locales">38.5.5 Testing for broken 
locales</a></li>
+      <li><a name="toc-Temporarily-fixing-locale-problems" 
href="#perllocale-Temporarily-fixing-locale-problems">38.5.6 Temporarily fixing 
locale problems</a></li>
+      <li><a name="toc-Permanently-fixing-locale-problems" 
href="#perllocale-Permanently-fixing-locale-problems">38.5.7 Permanently fixing 
locale problems</a></li>
+      <li><a 
name="toc-Permanently-fixing-your-system_0027s-locale-configuration" 
href="#perllocale-Permanently-fixing-your-system_0027s-locale-configuration">38.5.8
 Permanently fixing your system&rsquo;s locale configuration</a></li>
+      <li><a name="toc-Fixing-system-locale-configuration" 
href="#perllocale-Fixing-system-locale-configuration">38.5.9 Fixing system 
locale configuration</a></li>
+      <li><a name="toc-The-localeconv-function" 
href="#perllocale-The-localeconv-function">38.5.10 The localeconv 
function</a></li>
+      <li><a name="toc-I18N_003a_003aLanginfo" 
href="#perllocale-I18N_003a_003aLanginfo">38.5.11 I18N::Langinfo</a></li>
     </ul></li>
     <li><a name="toc-LOCALE-CATEGORIES" 
href="#perllocale-LOCALE-CATEGORIES">38.6 LOCALE CATEGORIES</a>
     <ul class="no-bullet">
@@ -1068,7 +1064,7 @@
       <li><a name="toc-Category-LC_005fNUMERIC_003a-Numeric-Formatting" 
href="#perllocale-Category-LC_005fNUMERIC_003a-Numeric-Formatting">38.6.3 
Category LC_NUMERIC: Numeric Formatting</a></li>
       <li><a 
name="toc-Category-LC_005fMONETARY_003a-Formatting-of-monetary-amounts" 
href="#perllocale-Category-LC_005fMONETARY_003a-Formatting-of-monetary-amounts-1">38.6.4
 Category LC_MONETARY: Formatting of monetary amounts</a></li>
       <li><a name="toc-LC_005fTIME" href="#perllocale-LC_005fTIME">38.6.5 
LC_TIME</a></li>
-      <li><a name="toc-Other-categories" 
href="#perllocale-Other-categories">38.6.6 Other categories</a></li>
+      <li><a name="toc-Other-categories" 
href="#perllocale-Other-categories-1">38.6.6 Other categories</a></li>
     </ul></li>
     <li><a name="toc-SECURITY" href="#perllocale-SECURITY">38.7 
SECURITY</a></li>
     <li><a name="toc-ENVIRONMENT-1" href="#perllocale-ENVIRONMENT">38.8 
ENVIRONMENT</a>
@@ -1077,10 +1073,10 @@
     </ul></li>
     <li><a name="toc-NOTES-3" href="#perllocale-NOTES">38.9 NOTES</a>
     <ul class="no-bullet">
-      <li><a name="toc-Backward-compatibility" 
href="#perllocale-Backward-compatibility">38.9.1 Backward compatibility</a></li>
-      <li><a name="toc-I18N_003aCollate-obsolete" 
href="#perllocale-I18N_003aCollate-obsolete">38.9.2 I18N:Collate 
obsolete</a></li>
-      <li><a name="toc-Sort-speed-and-memory-use-impacts" 
href="#perllocale-Sort-speed-and-memory-use-impacts">38.9.3 Sort speed and 
memory use impacts</a></li>
-      <li><a name="toc-write_0028_0029-and-LC_005fNUMERIC" 
href="#perllocale-write_0028_0029-and-LC_005fNUMERIC">38.9.4 write() and 
LC_NUMERIC</a></li>
+      <li><a name="toc-String-eval-and-LC_005fNUMERIC" 
href="#perllocale-String-eval-and-LC_005fNUMERIC">38.9.1 String 
<code>eval</code> and <code>LC_NUMERIC</code></a></li>
+      <li><a name="toc-Backward-compatibility" 
href="#perllocale-Backward-compatibility">38.9.2 Backward compatibility</a></li>
+      <li><a name="toc-I18N_003aCollate-obsolete" 
href="#perllocale-I18N_003aCollate-obsolete">38.9.3 I18N:Collate 
obsolete</a></li>
+      <li><a name="toc-Sort-speed-and-memory-use-impacts" 
href="#perllocale-Sort-speed-and-memory-use-impacts">38.9.4 Sort speed and 
memory use impacts</a></li>
       <li><a name="toc-Freely-available-locale-definitions" 
href="#perllocale-Freely-available-locale-definitions">38.9.5 Freely available 
locale definitions</a></li>
       <li><a name="toc-I18n-and-l10n" href="#perllocale-I18n-and-l10n">38.9.6 
I18n and l10n</a></li>
       <li><a name="toc-An-imperfect-standard" 
href="#perllocale-An-imperfect-standard">38.9.7 An imperfect standard</a></li>
@@ -1090,7 +1086,7 @@
     <ul class="no-bullet">
       <li><a name="toc-Broken-systems" 
href="#perllocale-Broken-systems">38.11.1 Broken systems</a></li>
     </ul></li>
-    <li><a name="toc-SEE-ALSO-17" href="#perllocale-SEE-ALSO">38.12 SEE 
ALSO</a></li>
+    <li><a name="toc-SEE-ALSO-16" href="#perllocale-SEE-ALSO">38.12 SEE 
ALSO</a></li>
     <li><a name="toc-HISTORY-2" href="#perllocale-HISTORY">38.13 
HISTORY</a></li>
   </ul></li>
   <li><a name="toc-perllol-1" href="#perllol">39 perllol</a>
@@ -1103,8 +1099,8 @@
       <li><a name="toc-Access-and-Printing" 
href="#perllol-Access-and-Printing">39.2.3 Access and Printing</a></li>
       <li><a name="toc-Slices-1" href="#perllol-Slices">39.2.4 Slices</a></li>
     </ul></li>
-    <li><a name="toc-SEE-ALSO-18" href="#perllol-SEE-ALSO">39.3 SEE 
ALSO</a></li>
-    <li><a name="toc-AUTHOR-17" href="#perllol-AUTHOR">39.4 AUTHOR</a></li>
+    <li><a name="toc-SEE-ALSO-17" href="#perllol-SEE-ALSO">39.3 SEE 
ALSO</a></li>
+    <li><a name="toc-AUTHOR-16" href="#perllol-AUTHOR">39.4 AUTHOR</a></li>
   </ul></li>
   <li><a name="toc-perlmod-2" href="#perlmod">40 perlmod</a>
   <ul class="no-bullet">
@@ -1118,7 +1114,7 @@
       <li><a name="toc-Perl-Modules" href="#perlmod-Perl-Modules">40.2.5 Perl 
Modules</a></li>
       <li><a name="toc-Making-your-module-threadsafe" 
href="#perlmod-Making-your-module-threadsafe">40.2.6 Making your module 
threadsafe</a></li>
     </ul></li>
-    <li><a name="toc-SEE-ALSO-19" href="#perlmod-SEE-ALSO">40.3 SEE 
ALSO</a></li>
+    <li><a name="toc-SEE-ALSO-18" href="#perlmod-SEE-ALSO">40.3 SEE 
ALSO</a></li>
   </ul></li>
   <li><a name="toc-perlmodinstall-1" href="#perlmodinstall">41 
perlmodinstall</a>
   <ul class="no-bullet">
@@ -1129,7 +1125,7 @@
     </ul></li>
     <li><a name="toc-PORTABILITY" href="#perlmodinstall-PORTABILITY">41.3 
PORTABILITY</a></li>
     <li><a name="toc-HEY" href="#perlmodinstall-HEY">41.4 HEY</a></li>
-    <li><a name="toc-AUTHOR-18" href="#perlmodinstall-AUTHOR">41.5 
AUTHOR</a></li>
+    <li><a name="toc-AUTHOR-17" href="#perlmodinstall-AUTHOR">41.5 
AUTHOR</a></li>
     <li><a name="toc-COPYRIGHT-2" href="#perlmodinstall-COPYRIGHT">41.6 
COPYRIGHT</a></li>
   </ul></li>
   <li><a name="toc-perlmodstyle-1" href="#perlmodstyle">42 perlmodstyle</a>
@@ -1177,8 +1173,8 @@
       <li><a name="toc-Trying-to-do-too-much" 
href="#perlmodstyle-Trying-to-do-too-much">42.8.2 Trying to do too much</a></li>
       <li><a name="toc-Inappropriate-documentation" 
href="#perlmodstyle-Inappropriate-documentation">42.8.3 Inappropriate 
documentation</a></li>
     </ul></li>
-    <li><a name="toc-SEE-ALSO-20" href="#perlmodstyle-SEE-ALSO">42.9 SEE 
ALSO</a></li>
-    <li><a name="toc-AUTHOR-19" href="#perlmodstyle-AUTHOR">42.10 
AUTHOR</a></li>
+    <li><a name="toc-SEE-ALSO-19" href="#perlmodstyle-SEE-ALSO">42.9 SEE 
ALSO</a></li>
+    <li><a name="toc-AUTHOR-18" href="#perlmodstyle-AUTHOR">42.10 
AUTHOR</a></li>
   </ul></li>
   <li><a name="toc-perlmroapi-1" href="#perlmroapi">43 perlmroapi</a>
   <ul class="no-bullet">
@@ -1200,8 +1196,8 @@
       <li><a name="toc-Step_002dby_002dstep_003a-Making-the-module" 
href="#perlnewmod-Step_002dby_002dstep_003a-Making-the-module">44.2.4 
Step-by-step: Making the module</a></li>
       <li><a name="toc-Step_002dby_002dstep_003a-Distributing-your-module" 
href="#perlnewmod-Step_002dby_002dstep_003a-Distributing-your-module">44.2.5 
Step-by-step: Distributing your module</a></li>
     </ul></li>
-    <li><a name="toc-AUTHOR-20" href="#perlnewmod-AUTHOR">44.3 AUTHOR</a></li>
-    <li><a name="toc-SEE-ALSO-21" href="#perlnewmod-SEE-ALSO">44.4 SEE 
ALSO</a></li>
+    <li><a name="toc-AUTHOR-19" href="#perlnewmod-AUTHOR">44.3 AUTHOR</a></li>
+    <li><a name="toc-SEE-ALSO-20" href="#perlnewmod-SEE-ALSO">44.4 SEE 
ALSO</a></li>
   </ul></li>
   <li><a name="toc-perlnumber-1" href="#perlnumber">45 perlnumber</a>
   <ul class="no-bullet">
@@ -1211,8 +1207,8 @@
     <li><a name="toc-Storing-numbers" href="#perlnumber-Storing-numbers">45.4 
Storing numbers</a></li>
     <li><a name="toc-Numeric-operators-and-numeric-conversions" 
href="#perlnumber-Numeric-operators-and-numeric-conversions">45.5 Numeric 
operators and numeric conversions</a></li>
     <li><a name="toc-Flavors-of-Perl-numeric-operations" 
href="#perlnumber-Flavors-of-Perl-numeric-operations">45.6 Flavors of Perl 
numeric operations</a></li>
-    <li><a name="toc-AUTHOR-21" href="#perlnumber-AUTHOR">45.7 AUTHOR</a></li>
-    <li><a name="toc-SEE-ALSO-22" href="#perlnumber-SEE-ALSO">45.8 SEE 
ALSO</a></li>
+    <li><a name="toc-AUTHOR-20" href="#perlnumber-AUTHOR">45.7 AUTHOR</a></li>
+    <li><a name="toc-SEE-ALSO-21" href="#perlnumber-SEE-ALSO">45.8 SEE 
ALSO</a></li>
   </ul></li>
   <li><a name="toc-perlobj-2" href="#perlobj">46 perlobj</a>
   <ul class="no-bullet">
@@ -1262,7 +1258,7 @@
       <li><a name="toc-Inside_002dOut-objects" 
href="#perlobj-Inside_002dOut-objects">46.2.16 Inside-Out objects</a></li>
       <li><a name="toc-Pseudo_002dhashes" 
href="#perlobj-Pseudo_002dhashes">46.2.17 Pseudo-hashes</a></li>
     </ul></li>
-    <li><a name="toc-SEE-ALSO-23" href="#perlobj-SEE-ALSO">46.3 SEE 
ALSO</a></li>
+    <li><a name="toc-SEE-ALSO-22" href="#perlobj-SEE-ALSO">46.3 SEE 
ALSO</a></li>
   </ul></li>
   <li><a name="toc-perlootut-1" href="#perlootut">47 perlootut</a>
   <ul class="no-bullet">
@@ -1296,7 +1292,7 @@
         <li><a name="toc-Moo" href="#perlootut-Moo">47.5.1.1 Moo</a></li>
       </ul></li>
       <li><a name="toc-Class_003a_003aAccessor" 
href="#perlootut-Class_003a_003aAccessor">47.5.2 Class::Accessor</a></li>
-      <li><a name="toc-Object_003a_003aTiny" 
href="#perlootut-Object_003a_003aTiny">47.5.3 Object::Tiny</a></li>
+      <li><a name="toc-Class_003a_003aTiny" 
href="#perlootut-Class_003a_003aTiny">47.5.3 Class::Tiny</a></li>
       <li><a name="toc-Role_003a_003aTiny" 
href="#perlootut-Role_003a_003aTiny">47.5.4 Role::Tiny</a></li>
       <li><a name="toc-OO-System-Summary" 
href="#perlootut-OO-System-Summary">47.5.5 OO System Summary</a></li>
       <li><a name="toc-Other-OO-Systems" 
href="#perlootut-Other-OO-Systems">47.5.6 Other OO Systems</a></li>
@@ -1317,7 +1313,7 @@
       <li><a name="toc-Binding-Operators" 
href="#perlop-Binding-Operators">48.2.7 Binding Operators</a></li>
       <li><a name="toc-Multiplicative-Operators" 
href="#perlop-Multiplicative-Operators">48.2.8 Multiplicative Operators</a></li>
       <li><a name="toc-Additive-Operators" 
href="#perlop-Additive-Operators">48.2.9 Additive Operators</a></li>
-      <li><a name="toc-Shift-Operators-_003e_003e-_003e-_003e_003e_003e" 
href="#perlop-Shift-Operators-_003e_003e-_003e-_003e_003e_003e">48.2.10 Shift 
Operators   &gt;&gt; &gt; &gt;&gt;&gt;</a></li>
+      <li><a name="toc-Shift-Operators-_003e-_003e_003e_003e" 
href="#perlop-Shift-Operators-_003e-_003e_003e_003e">48.2.10 Shift Operators   
&gt;  &gt;&gt;&gt;</a></li>
       <li><a name="toc-Named-Unary-Operators" 
href="#perlop-Named-Unary-Operators">48.2.11 Named Unary Operators</a></li>
       <li><a name="toc-Relational-Operators" 
href="#perlop-Relational-Operators">48.2.12 Relational Operators</a></li>
       <li><a name="toc-Equality-Operators" 
href="#perlop-Equality-Operators">48.2.13 Equality Operators</a></li>
@@ -1356,39 +1352,16 @@
   <ul class="no-bullet">
     <li><a name="toc-NAME-48" href="#perlopentut-NAME">49.1 NAME</a></li>
     <li><a name="toc-DESCRIPTION-47" href="#perlopentut-DESCRIPTION">49.2 
DESCRIPTION</a></li>
-    <li><a name="toc-Open-A--la-shell" 
href="#perlopentut-Open-_00c3_00a0-la-shell">49.3 Open à la shell</a>
-    <ul class="no-bullet">
-      <li><a name="toc-Simple-Opens" href="#perlopentut-Simple-Opens">49.3.1 
Simple Opens</a></li>
-      <li><a name="toc-Indirect-Filehandles" 
href="#perlopentut-Indirect-Filehandles">49.3.2 Indirect Filehandles</a></li>
-      <li><a name="toc-Pipe-Opens" href="#perlopentut-Pipe-Opens">49.3.3 Pipe 
Opens</a></li>
-      <li><a name="toc-The-Minus-File" 
href="#perlopentut-The-Minus-File">49.3.4 The Minus File</a></li>
-      <li><a name="toc-Mixing-Reads-and-Writes" 
href="#perlopentut-Mixing-Reads-and-Writes">49.3.5 Mixing Reads and 
Writes</a></li>
-      <li><a name="toc-Filters" href="#perlopentut-Filters">49.3.6 
Filters</a></li>
-    </ul></li>
-    <li><a name="toc-Open-A--la-C" 
href="#perlopentut-Open-_00c3_00a0-la-C">49.4 Open à la C</a>
-    <ul class="no-bullet">
-      <li><a name="toc-Permissions-A--la-mode" 
href="#perlopentut-Permissions-_00c3_00a0-la-mode">49.4.1 Permissions à la 
mode</a></li>
-    </ul></li>
-    <li><a name="toc-Obscure-Open-Tricks" 
href="#perlopentut-Obscure-Open-Tricks">49.5 Obscure Open Tricks</a>
-    <ul class="no-bullet">
-      <li><a name="toc-Re_002dOpening-Files-_0028dups_0029" 
href="#perlopentut-Re_002dOpening-Files-_0028dups_0029">49.5.1 Re-Opening Files 
(dups)</a></li>
-      <li><a name="toc-Dispelling-the-Dweomer" 
href="#perlopentut-Dispelling-the-Dweomer">49.5.2 Dispelling the 
Dweomer</a></li>
-      <li><a name="toc-Paths-as-Opens" 
href="#perlopentut-Paths-as-Opens">49.5.3 Paths as Opens</a></li>
-      <li><a name="toc-Single-Argument-Open" 
href="#perlopentut-Single-Argument-Open">49.5.4 Single Argument Open</a></li>
-      <li><a name="toc-Playing-with-STDIN-and-STDOUT" 
href="#perlopentut-Playing-with-STDIN-and-STDOUT">49.5.5 Playing with STDIN and 
STDOUT</a></li>
-    </ul></li>
-    <li><a name="toc-Other-I_002fO-Issues" 
href="#perlopentut-Other-I_002fO-Issues">49.6 Other I/O Issues</a>
+    <li><a name="toc-Opening-Text-Files" 
href="#perlopentut-Opening-Text-Files">49.3 Opening Text Files</a>
     <ul class="no-bullet">
-      <li><a name="toc-Opening-Non_002dFile-Files" 
href="#perlopentut-Opening-Non_002dFile-Files">49.6.1 Opening Non-File 
Files</a></li>
-      <li><a name="toc-Opening-Named-Pipes" 
href="#perlopentut-Opening-Named-Pipes">49.6.2 Opening Named Pipes</a></li>
-      <li><a name="toc-Opening-Sockets" 
href="#perlopentut-Opening-Sockets">49.6.3 Opening Sockets</a></li>
-      <li><a name="toc-Binary-Files" href="#perlopentut-Binary-Files">49.6.4 
Binary Files</a></li>
-      <li><a name="toc-File-Locking" href="#perlopentut-File-Locking">49.6.5 
File Locking</a></li>
-      <li><a name="toc-IO-Layers" href="#perlopentut-IO-Layers">49.6.6 IO 
Layers</a></li>
+      <li><a name="toc-Opening-Text-Files-for-Reading" 
href="#perlopentut-Opening-Text-Files-for-Reading">49.3.1 Opening Text Files 
for Reading</a></li>
+      <li><a name="toc-Opening-Text-Files-for-Writing" 
href="#perlopentut-Opening-Text-Files-for-Writing">49.3.2 Opening Text Files 
for Writing</a></li>
     </ul></li>
-    <li><a name="toc-SEE-ALSO-24" href="#perlopentut-SEE-ALSO">49.7 SEE 
ALSO</a></li>
+    <li><a name="toc-Opening-Binary-Files" 
href="#perlopentut-Opening-Binary-Files">49.4 Opening Binary Files</a></li>
+    <li><a name="toc-Opening-Pipes" href="#perlopentut-Opening-Pipes">49.5 
Opening Pipes</a></li>
+    <li><a name="toc-Low_002dlevel-File-Opens-via-sysopen" 
href="#perlopentut-Low_002dlevel-File-Opens-via-sysopen">49.6 Low-level File 
Opens via sysopen</a></li>
+    <li><a name="toc-SEE-ALSO-23" href="#perlopentut-SEE-ALSO">49.7 SEE 
ALSO</a></li>
     <li><a name="toc-AUTHOR-and-COPYRIGHT" 
href="#perlopentut-AUTHOR-and-COPYRIGHT">49.8 AUTHOR and COPYRIGHT</a></li>
-    <li><a name="toc-HISTORY-3" href="#perlopentut-HISTORY">49.9 
HISTORY</a></li>
   </ul></li>
   <li><a name="toc-perlpacktut-1" href="#perlpacktut">50 perlpacktut</a>
   <ul class="no-bullet">
@@ -1462,14 +1435,14 @@
       <li><a name="toc-Logging-if-DEBUG-_0028constant_0029" 
href="#perlperf-Logging-if-DEBUG-_0028constant_0029">51.8.1 Logging if DEBUG 
(constant)</a></li>
     </ul></li>
     <li><a name="toc-POSTSCRIPT" href="#perlperf-POSTSCRIPT">51.9 
POSTSCRIPT</a></li>
-    <li><a name="toc-SEE-ALSO-25" href="#perlperf-SEE-ALSO">51.10 SEE ALSO</a>
+    <li><a name="toc-SEE-ALSO-24" href="#perlperf-SEE-ALSO">51.10 SEE ALSO</a>
     <ul class="no-bullet">
       <li><a name="toc-PERLDOCS" href="#perlperf-PERLDOCS">51.10.1 
PERLDOCS</a></li>
       <li><a name="toc-MAN-PAGES" href="#perlperf-MAN-PAGES">51.10.2 MAN 
PAGES</a></li>
       <li><a name="toc-MODULES" href="#perlperf-MODULES">51.10.3 
MODULES</a></li>
       <li><a name="toc-URLS" href="#perlperf-URLS">51.10.4 URLS</a></li>
     </ul></li>
-    <li><a name="toc-AUTHOR-22" href="#perlperf-AUTHOR">51.11 AUTHOR</a></li>
+    <li><a name="toc-AUTHOR-21" href="#perlperf-AUTHOR">51.11 AUTHOR</a></li>
   </ul></li>
   <li><a name="toc-perlpod-1" href="#perlpod">52 perlpod</a>
   <ul class="no-bullet">
@@ -1484,8 +1457,8 @@
       <li><a name="toc-Embedding-Pods-in-Perl-Modules" 
href="#perlpod-Embedding-Pods-in-Perl-Modules">52.2.6 Embedding Pods in Perl 
Modules</a></li>
       <li><a name="toc-Hints-for-Writing-Pod" 
href="#perlpod-Hints-for-Writing-Pod">52.2.7 Hints for Writing Pod</a></li>
     </ul></li>
-    <li><a name="toc-SEE-ALSO-26" href="#perlpod-SEE-ALSO">52.3 SEE 
ALSO</a></li>
-    <li><a name="toc-AUTHOR-23" href="#perlpod-AUTHOR">52.4 AUTHOR</a></li>
+    <li><a name="toc-SEE-ALSO-25" href="#perlpod-SEE-ALSO">52.3 SEE 
ALSO</a></li>
+    <li><a name="toc-AUTHOR-22" href="#perlpod-AUTHOR">52.4 AUTHOR</a></li>
   </ul></li>
   <li><a name="toc-perlpodspec-1" href="#perlpodspec">53 perlpodspec</a>
   <ul class="no-bullet">
@@ -1498,15 +1471,15 @@
     <li><a name="toc-About-L_003c_002e_002e_002e_003e-Codes" 
href="#perlpodspec-About-L_003c_002e_002e_002e_003e-Codes">53.7 About 
L&lt;...&gt; Codes</a></li>
     <li><a name="toc-About-_003dover_002e_002e_002e_003dback-Regions" 
href="#perlpodspec-About-_003dover_002e_002e_002e_003dback-Regions">53.8 About 
=over...=back Regions</a></li>
     <li><a 
name="toc-About-Data-Paragraphs-and-_0022_003dbegin_002f_003dend_0022-Regions" 
href="#perlpodspec-About-Data-Paragraphs-and-_0022_003dbegin_002f_003dend_0022-Regions">53.9
 About Data Paragraphs and &quot;=begin/=end&quot; Regions</a></li>
-    <li><a name="toc-SEE-ALSO-27" href="#perlpodspec-SEE-ALSO">53.10 SEE 
ALSO</a></li>
-    <li><a name="toc-AUTHOR-24" href="#perlpodspec-AUTHOR">53.11 
AUTHOR</a></li>
+    <li><a name="toc-SEE-ALSO-26" href="#perlpodspec-SEE-ALSO">53.10 SEE 
ALSO</a></li>
+    <li><a name="toc-AUTHOR-23" href="#perlpodspec-AUTHOR">53.11 
AUTHOR</a></li>
   </ul></li>
   <li><a name="toc-perlpodstyle-1" href="#perlpodstyle">54 perlpodstyle</a>
   <ul class="no-bullet">
     <li><a name="toc-NAME-53" href="#perlpodstyle-NAME">54.1 NAME</a></li>
     <li><a name="toc-DESCRIPTION-52" href="#perlpodstyle-DESCRIPTION">54.2 
DESCRIPTION</a></li>
-    <li><a name="toc-SEE-ALSO-28" href="#perlpodstyle-SEE-ALSO-1">54.3 SEE 
ALSO</a></li>
-    <li><a name="toc-AUTHOR-25" href="#perlpodstyle-AUTHOR-1">54.4 
AUTHOR</a></li>
+    <li><a name="toc-SEE-ALSO-27" href="#perlpodstyle-SEE-ALSO-1">54.3 SEE 
ALSO</a></li>
+    <li><a name="toc-AUTHOR-24" href="#perlpodstyle-AUTHOR-1">54.4 
AUTHOR</a></li>
     <li><a name="toc-COPYRIGHT-AND-LICENSE" 
href="#perlpodstyle-COPYRIGHT-AND-LICENSE-1">54.5 COPYRIGHT AND LICENSE</a></li>
   </ul></li>
   <li><a name="toc-perlpolicy-1" href="#perlpolicy">55 perlpolicy</a>
@@ -1571,9 +1544,14 @@
       <li><a name="toc-Alphabetical-Listing-of-Perl-Functions-1" 
href="#perlport-Alphabetical-Listing-of-Perl-Functions">56.6.1 Alphabetical 
Listing of Perl Functions</a></li>
     </ul></li>
     <li><a name="toc-Supported-Platforms" 
href="#perlport-Supported-Platforms">56.7 Supported Platforms</a></li>
-    <li><a name="toc-EOL-Platforms-_0028Perl-5_002e14_0029" 
href="#perlport-EOL-Platforms-_0028Perl-5_002e14_0029">56.8 EOL Platforms (Perl 
5.14)</a></li>
+    <li><a name="toc-EOL-Platforms" href="#perlport-EOL-Platforms">56.8 EOL 
Platforms</a>
+    <ul class="no-bullet">
+      <li><a name="toc-_0028Perl-5_002e20_0029" 
href="#perlport-_0028Perl-5_002e20_0029">56.8.1 (Perl 5.20)</a></li>
+      <li><a name="toc-_0028Perl-5_002e14_0029" 
href="#perlport-_0028Perl-5_002e14_0029">56.8.2 (Perl 5.14)</a></li>
+      <li><a name="toc-_0028Perl-5_002e12_0029" 
href="#perlport-_0028Perl-5_002e12_0029">56.8.3 (Perl 5.12)</a></li>
+    </ul></li>
     <li><a name="toc-Supported-Platforms-_0028Perl-5_002e8_0029" 
href="#perlport-Supported-Platforms-_0028Perl-5_002e8_0029">56.9 Supported 
Platforms (Perl 5.8)</a></li>
-    <li><a name="toc-SEE-ALSO-29" href="#perlport-SEE-ALSO">56.10 SEE 
ALSO</a></li>
+    <li><a name="toc-SEE-ALSO-28" href="#perlport-SEE-ALSO">56.10 SEE 
ALSO</a></li>
     <li><a name="toc-AUTHORS-_002f-CONTRIBUTORS" 
href="#perlport-AUTHORS-_002f-CONTRIBUTORS">56.11 AUTHORS / 
CONTRIBUTORS</a></li>
   </ul></li>
   <li><a name="toc-perlpragma-1" href="#perlpragma">57 perlpragma</a>
@@ -1618,10 +1596,11 @@
       <li><a name="toc-Repeated-Patterns-Matching-a-Zero_002dlength-Substring" 
href="#perlre-Repeated-Patterns-Matching-a-Zero_002dlength-Substring">58.2.9 
Repeated Patterns Matching a Zero-length Substring</a></li>
       <li><a name="toc-Combining-RE-Pieces" 
href="#perlre-Combining-RE-Pieces">58.2.10 Combining RE Pieces</a></li>
       <li><a name="toc-Creating-Custom-RE-Engines" 
href="#perlre-Creating-Custom-RE-Engines">58.2.11 Creating Custom RE 
Engines</a></li>
-      <li><a name="toc-PCRE_002fPython-Support" 
href="#perlre-PCRE_002fPython-Support">58.2.12 PCRE/Python Support</a></li>
+      <li><a name="toc-Embedded-Code-Execution-Frequency" 
href="#perlre-Embedded-Code-Execution-Frequency">58.2.12 Embedded Code 
Execution Frequency</a></li>
+      <li><a name="toc-PCRE_002fPython-Support" 
href="#perlre-PCRE_002fPython-Support">58.2.13 PCRE/Python Support</a></li>
     </ul></li>
     <li><a name="toc-BUGS-6" href="#perlre-BUGS">58.3 BUGS</a></li>
-    <li><a name="toc-SEE-ALSO-30" href="#perlre-SEE-ALSO">58.4 SEE 
ALSO</a></li>
+    <li><a name="toc-SEE-ALSO-29" href="#perlre-SEE-ALSO">58.4 SEE 
ALSO</a></li>
   </ul></li>
   <li><a name="toc-perlreapi-1" href="#perlreapi">59 perlreapi</a>
   <ul class="no-bullet">
@@ -1670,7 +1649,7 @@
       <li><a name="toc-seen_005fevals" 
href="#perlreapi-seen_005fevals">59.4.17 <code>seen_evals</code></a></li>
       <li><a name="toc-refcnt" href="#perlreapi-refcnt">59.4.18 
<code>refcnt</code></a></li>
     </ul></li>
-    <li><a name="toc-HISTORY-4" href="#perlreapi-HISTORY">59.5 HISTORY</a></li>
+    <li><a name="toc-HISTORY-3" href="#perlreapi-HISTORY">59.5 HISTORY</a></li>
     <li><a name="toc-AUTHORS-4" href="#perlreapi-AUTHORS">59.6 AUTHORS</a></li>
     <li><a name="toc-LICENSE-1" href="#perlreapi-LICENSE">59.7 LICENSE</a></li>
   </ul></li>
@@ -1766,7 +1745,11 @@
       <li><a name="toc-Function-Templates" 
href="#perlref-Function-Templates">62.3.7 Function Templates</a></li>
     </ul></li>
     <li><a name="toc-WARNING" href="#perlref-WARNING">62.4 WARNING</a></li>
-    <li><a name="toc-SEE-ALSO-31" href="#perlref-SEE-ALSO">62.5 SEE 
ALSO</a></li>
+    <li><a name="toc-Postfix-Dereference-Syntax" 
href="#perlref-Postfix-Dereference-Syntax">62.5 Postfix Dereference Syntax</a>
+    <ul class="no-bullet">
+      <li><a name="toc-Postfix-Reference-Slicing" 
href="#perlref-Postfix-Reference-Slicing">62.5.1 Postfix Reference 
Slicing</a></li>
+    </ul></li>
+    <li><a name="toc-SEE-ALSO-30" href="#perlref-SEE-ALSO">62.6 SEE 
ALSO</a></li>
   </ul></li>
   <li><a name="toc-perlreftut-1" href="#perlreftut">63 perlreftut</a>
   <ul class="no-bullet">
@@ -1836,535 +1819,543 @@
         <li><a name="toc-Perl_0027s-pprivate-structure" 
href="#perlreguts-Perl_0027s-pprivate-structure">64.5.2.1 Perl&rsquo;s 
<code>pprivate</code> structure</a></li>
       </ul></li>
     </ul></li>
-    <li><a name="toc-SEE-ALSO-32" href="#perlreguts-SEE-ALSO">64.6 SEE 
ALSO</a></li>
-    <li><a name="toc-AUTHOR-26" href="#perlreguts-AUTHOR">64.7 AUTHOR</a></li>
+    <li><a name="toc-SEE-ALSO-31" href="#perlreguts-SEE-ALSO">64.6 SEE 
ALSO</a></li>
+    <li><a name="toc-AUTHOR-25" href="#perlreguts-AUTHOR">64.7 AUTHOR</a></li>
     <li><a name="toc-LICENCE" href="#perlreguts-LICENCE">64.8 LICENCE</a></li>
     <li><a name="toc-REFERENCES-3" href="#perlreguts-REFERENCES">64.9 
REFERENCES</a></li>
   </ul></li>
-  <li><a name="toc-perlrequick-1" href="#perlrequick">65 perlrequick</a>
+  <li><a name="toc-perlrepository-1" href="#perlrepository">65 
perlrepository</a>
+  <ul class="no-bullet">
+    <li><a name="toc-NAME-64" href="#perlrepository-NAME">65.1 NAME</a></li>
+    <li><a name="toc-DESCRIPTION-63" href="#perlrepository-DESCRIPTION">65.2 
DESCRIPTION</a></li>
+  </ul></li>
+  <li><a name="toc-perlrequick-1" href="#perlrequick">66 perlrequick</a>
   <ul class="no-bullet">
-    <li><a name="toc-NAME-64" href="#perlrequick-NAME">65.1 NAME</a></li>
-    <li><a name="toc-DESCRIPTION-63" href="#perlrequick-DESCRIPTION">65.2 
DESCRIPTION</a></li>
-    <li><a name="toc-The-Guide" href="#perlrequick-The-Guide">65.3 The 
Guide</a>
-    <ul class="no-bullet">
-      <li><a name="toc-Simple-word-matching" 
href="#perlrequick-Simple-word-matching">65.3.1 Simple word matching</a></li>
-      <li><a name="toc-Using-character-classes" 
href="#perlrequick-Using-character-classes">65.3.2 Using character 
classes</a></li>
-      <li><a name="toc-Matching-this-or-that" 
href="#perlrequick-Matching-this-or-that">65.3.3 Matching this or that</a></li>
-      <li><a name="toc-Grouping-things-and-hierarchical-matching" 
href="#perlrequick-Grouping-things-and-hierarchical-matching">65.3.4 Grouping 
things and hierarchical matching</a></li>
-      <li><a name="toc-Extracting-matches" 
href="#perlrequick-Extracting-matches">65.3.5 Extracting matches</a></li>
-      <li><a name="toc-Matching-repetitions" 
href="#perlrequick-Matching-repetitions">65.3.6 Matching repetitions</a></li>
-      <li><a name="toc-More-matching" href="#perlrequick-More-matching">65.3.7 
More matching</a></li>
-      <li><a name="toc-Search-and-replace" 
href="#perlrequick-Search-and-replace">65.3.8 Search and replace</a></li>
-      <li><a name="toc-The-split-operator" 
href="#perlrequick-The-split-operator">65.3.9 The split operator</a></li>
-    </ul></li>
-    <li><a name="toc-BUGS-7" href="#perlrequick-BUGS">65.4 BUGS</a></li>
-    <li><a name="toc-SEE-ALSO-33" href="#perlrequick-SEE-ALSO">65.5 SEE 
ALSO</a></li>
-    <li><a name="toc-AUTHOR-AND-COPYRIGHT" 
href="#perlrequick-AUTHOR-AND-COPYRIGHT">65.6 AUTHOR AND COPYRIGHT</a>
-    <ul class="no-bullet">
-      <li><a name="toc-Acknowledgments" 
href="#perlrequick-Acknowledgments">65.6.1 Acknowledgments</a></li>
-    </ul></li>
-  </ul></li>
-  <li><a name="toc-perlreref-1" href="#perlreref">66 perlreref</a>
-  <ul class="no-bullet">
-    <li><a name="toc-NAME-65" href="#perlreref-NAME">66.1 NAME</a></li>
-    <li><a name="toc-DESCRIPTION-64" href="#perlreref-DESCRIPTION">66.2 
DESCRIPTION</a>
-    <ul class="no-bullet">
-      <li><a name="toc-OPERATORS" href="#perlreref-OPERATORS">66.2.1 
OPERATORS</a></li>
-      <li><a name="toc-SYNTAX" href="#perlreref-SYNTAX">66.2.2 SYNTAX</a></li>
-      <li><a name="toc-ESCAPE-SEQUENCES" 
href="#perlreref-ESCAPE-SEQUENCES">66.2.3 ESCAPE SEQUENCES</a></li>
-      <li><a name="toc-CHARACTER-CLASSES" 
href="#perlreref-CHARACTER-CLASSES">66.2.4 CHARACTER CLASSES</a></li>
-      <li><a name="toc-ANCHORS" href="#perlreref-ANCHORS">66.2.5 
ANCHORS</a></li>
-      <li><a name="toc-QUANTIFIERS" href="#perlreref-QUANTIFIERS">66.2.6 
QUANTIFIERS</a></li>
-      <li><a name="toc-EXTENDED-CONSTRUCTS" 
href="#perlreref-EXTENDED-CONSTRUCTS">66.2.7 EXTENDED CONSTRUCTS</a></li>
-      <li><a name="toc-VARIABLES" href="#perlreref-VARIABLES">66.2.8 
VARIABLES</a></li>
-      <li><a name="toc-FUNCTIONS" href="#perlreref-FUNCTIONS">66.2.9 
FUNCTIONS</a></li>
-      <li><a name="toc-TERMINOLOGY" href="#perlreref-TERMINOLOGY">66.2.10 
TERMINOLOGY</a>
-      <ul class="no-bullet">
-        <li><a name="toc-Titlecase" href="#perlreref-Titlecase">66.2.10.1 
Titlecase</a></li>
-        <li><a name="toc-Foldcase" href="#perlreref-Foldcase">66.2.10.2 
Foldcase</a></li>
-      </ul></li>
-    </ul></li>
-    <li><a name="toc-AUTHOR-27" href="#perlreref-AUTHOR">66.3 AUTHOR</a></li>
-    <li><a name="toc-SEE-ALSO-34" href="#perlreref-SEE-ALSO">66.4 SEE 
ALSO</a></li>
-    <li><a name="toc-THANKS" href="#perlreref-THANKS">66.5 THANKS</a></li>
-  </ul></li>
-  <li><a name="toc-perlretut-10" href="#perlretut">67 perlretut</a>
-  <ul class="no-bullet">
-    <li><a name="toc-NAME-66" href="#perlretut-NAME">67.1 NAME</a></li>
-    <li><a name="toc-DESCRIPTION-65" href="#perlretut-DESCRIPTION">67.2 
DESCRIPTION</a></li>
-    <li><a name="toc-Part-1_003a-The-basics" 
href="#perlretut-Part-1_003a-The-basics">67.3 Part 1: The basics</a>
-    <ul class="no-bullet">
-      <li><a name="toc-Simple-word-matching-1" 
href="#perlretut-Simple-word-matching">67.3.1 Simple word matching</a></li>
-      <li><a name="toc-Using-character-classes-1" 
href="#perlretut-Using-character-classes">67.3.2 Using character 
classes</a></li>
-      <li><a name="toc-Matching-this-or-that-1" 
href="#perlretut-Matching-this-or-that">67.3.3 Matching this or that</a></li>
-      <li><a name="toc-Grouping-things-and-hierarchical-matching-1" 
href="#perlretut-Grouping-things-and-hierarchical-matching">67.3.4 Grouping 
things and hierarchical matching</a></li>
-      <li><a name="toc-Extracting-matches-1" 
href="#perlretut-Extracting-matches">67.3.5 Extracting matches</a></li>
-      <li><a name="toc-Backreferences" href="#perlretut-Backreferences">67.3.6 
Backreferences</a></li>
-      <li><a name="toc-Relative-backreferences" 
href="#perlretut-Relative-backreferences">67.3.7 Relative 
backreferences</a></li>
-      <li><a name="toc-Named-backreferences" 
href="#perlretut-Named-backreferences">67.3.8 Named backreferences</a></li>
-      <li><a name="toc-Alternative-capture-group-numbering" 
href="#perlretut-Alternative-capture-group-numbering">67.3.9 Alternative 
capture group numbering</a></li>
-      <li><a name="toc-Position-information" 
href="#perlretut-Position-information">67.3.10 Position information</a></li>
-      <li><a name="toc-Non_002dcapturing-groupings" 
href="#perlretut-Non_002dcapturing-groupings">67.3.11 Non-capturing 
groupings</a></li>
-      <li><a name="toc-Matching-repetitions-1" 
href="#perlretut-Matching-repetitions">67.3.12 Matching repetitions</a></li>
-      <li><a name="toc-Possessive-quantifiers" 
href="#perlretut-Possessive-quantifiers">67.3.13 Possessive quantifiers</a></li>
-      <li><a name="toc-Building-a-regexp" 
href="#perlretut-Building-a-regexp">67.3.14 Building a regexp</a></li>
-      <li><a name="toc-Using-regular-expressions-in-Perl" 
href="#perlretut-Using-regular-expressions-in-Perl">67.3.15 Using regular 
expressions in Perl</a>
-      <ul class="no-bullet">
-        <li><a name="toc-Prohibiting-substitution" 
href="#perlretut-Prohibiting-substitution">67.3.15.1 Prohibiting 
substitution</a></li>
-        <li><a name="toc-Global-matching" 
href="#perlretut-Global-matching">67.3.15.2 Global matching</a></li>
-        <li><a name="toc-Search-and-replace-1" 
href="#perlretut-Search-and-replace">67.3.15.3 Search and replace</a></li>
-        <li><a name="toc-The-split-function" 
href="#perlretut-The-split-function">67.3.15.4 The split function</a></li>
-      </ul></li>
-    </ul></li>
-    <li><a name="toc-Part-2_003a-Power-tools" 
href="#perlretut-Part-2_003a-Power-tools">67.4 Part 2: Power tools</a>
-    <ul class="no-bullet">
-      <li><a 
name="toc-More-on-characters_002c-strings_002c-and-character-classes" 
href="#perlretut-More-on-characters_002c-strings_002c-and-character-classes">67.4.1
 More on characters, strings, and character classes</a></li>
-      <li><a name="toc-Compiling-and-saving-regular-expressions" 
href="#perlretut-Compiling-and-saving-regular-expressions">67.4.2 Compiling and 
saving regular expressions</a></li>
-      <li><a name="toc-Composing-regular-expressions-at-runtime" 
href="#perlretut-Composing-regular-expressions-at-runtime">67.4.3 Composing 
regular expressions at runtime</a></li>
-      <li><a 
name="toc-Embedding-comments-and-modifiers-in-a-regular-expression" 
href="#perlretut-Embedding-comments-and-modifiers-in-a-regular-expression">67.4.4
 Embedding comments and modifiers in a regular expression</a></li>
-      <li><a name="toc-Looking-ahead-and-looking-behind" 
href="#perlretut-Looking-ahead-and-looking-behind">67.4.5 Looking ahead and 
looking behind</a></li>
-      <li><a 
name="toc-Using-independent-subexpressions-to-prevent-backtracking" 
href="#perlretut-Using-independent-subexpressions-to-prevent-backtracking">67.4.6
 Using independent subexpressions to prevent backtracking</a></li>
-      <li><a name="toc-Conditional-expressions" 
href="#perlretut-Conditional-expressions">67.4.7 Conditional 
expressions</a></li>
-      <li><a name="toc-Defining-named-patterns" 
href="#perlretut-Defining-named-patterns">67.4.8 Defining named 
patterns</a></li>
-      <li><a name="toc-Recursive-patterns" 
href="#perlretut-Recursive-patterns">67.4.9 Recursive patterns</a></li>
-      <li><a 
name="toc-A-bit-of-magic_003a-executing-Perl-code-in-a-regular-expression" 
href="#perlretut-A-bit-of-magic_003a-executing-Perl-code-in-a-regular-expression">67.4.10
 A bit of magic: executing Perl code in a regular expression</a></li>
-      <li><a name="toc-Backtracking-control-verbs" 
href="#perlretut-Backtracking-control-verbs">67.4.11 Backtracking control 
verbs</a></li>
-      <li><a name="toc-Pragmas-and-debugging" 
href="#perlretut-Pragmas-and-debugging">67.4.12 Pragmas and debugging</a></li>
-    </ul></li>
-    <li><a name="toc-BUGS-8" href="#perlretut-BUGS">67.5 BUGS</a></li>
-    <li><a name="toc-SEE-ALSO-35" href="#perlretut-SEE-ALSO">67.6 SEE 
ALSO</a></li>
-    <li><a name="toc-AUTHOR-AND-COPYRIGHT-1" 
href="#perlretut-AUTHOR-AND-COPYRIGHT">67.7 AUTHOR AND COPYRIGHT</a>
-    <ul class="no-bullet">
-      <li><a name="toc-Acknowledgments-1" 
href="#perlretut-Acknowledgments">67.7.1 Acknowledgments</a></li>
-    </ul></li>
-    <li><a name="toc-POD-ERRORS" href="#perlretut-POD-ERRORS">67.8 POD 
ERRORS</a></li>
-  </ul></li>
-  <li><a name="toc-perlrun-1" href="#perlrun">68 perlrun</a>
-  <ul class="no-bullet">
-    <li><a name="toc-NAME-67" href="#perlrun-NAME">68.1 NAME</a></li>
-    <li><a name="toc-SYNOPSIS-9" href="#perlrun-SYNOPSIS">68.2 
SYNOPSIS</a></li>
-    <li><a name="toc-DESCRIPTION-66" href="#perlrun-DESCRIPTION">68.3 
DESCRIPTION</a>
-    <ul class="no-bullet">
-      <li><a name="toc-_0023_0021-and-quoting-on-non_002dUnix-systems" 
href="#perlrun-_0023_0021-and-quoting-on-non_002dUnix-systems">68.3.1 #! and 
quoting on non-Unix systems</a></li>
-      <li><a name="toc-Location-of-Perl" 
href="#perlrun-Location-of-Perl">68.3.2 Location of Perl</a></li>
-      <li><a name="toc-Command-Switches" 
href="#perlrun-Command-Switches">68.3.3 Command Switches</a></li>
-    </ul></li>
-    <li><a name="toc-ENVIRONMENT-2" href="#perlrun-ENVIRONMENT">68.4 
ENVIRONMENT</a></li>
-  </ul></li>
-  <li><a name="toc-perlsec-1" href="#perlsec">69 perlsec</a>
-  <ul class="no-bullet">
-    <li><a name="toc-NAME-68" href="#perlsec-NAME">69.1 NAME</a></li>
-    <li><a name="toc-DESCRIPTION-67" href="#perlsec-DESCRIPTION">69.2 
DESCRIPTION</a></li>
-    <li><a name="toc-SECURITY-VULNERABILITY-CONTACT-INFORMATION" 
href="#perlsec-SECURITY-VULNERABILITY-CONTACT-INFORMATION">69.3 SECURITY 
VULNERABILITY CONTACT INFORMATION</a></li>
-    <li><a name="toc-SECURITY-MECHANISMS-AND-CONCERNS" 
href="#perlsec-SECURITY-MECHANISMS-AND-CONCERNS">69.4 SECURITY MECHANISMS AND 
CONCERNS</a>
-    <ul class="no-bullet">
-      <li><a name="toc-Taint-mode" href="#perlsec-Taint-mode">69.4.1 Taint 
mode</a></li>
-      <li><a name="toc-Laundering-and-Detecting-Tainted-Data" 
href="#perlsec-Laundering-and-Detecting-Tainted-Data">69.4.2 Laundering and 
Detecting Tainted Data</a></li>
-      <li><a name="toc-Switches-On-the-_0022_0023_0021_0022-Line" 
href="#perlsec-Switches-On-the-_0022_0023_0021_0022-Line">69.4.3 Switches On 
the &quot;#!&quot; Line</a></li>
-      <li><a name="toc-Taint-mode-and-_0040INC" 
href="#perlsec-Taint-mode-and-_0040INC">69.4.4 Taint mode and @INC</a></li>
-      <li><a name="toc-Cleaning-Up-Your-Path" 
href="#perlsec-Cleaning-Up-Your-Path">69.4.5 Cleaning Up Your Path</a></li>
-      <li><a name="toc-Security-Bugs" href="#perlsec-Security-Bugs">69.4.6 
Security Bugs</a></li>
-      <li><a name="toc-Protecting-Your-Programs" 
href="#perlsec-Protecting-Your-Programs">69.4.7 Protecting Your 
Programs</a></li>
-      <li><a name="toc-Unicode-1" href="#perlsec-Unicode">69.4.8 
Unicode</a></li>
-      <li><a name="toc-Algorithmic-Complexity-Attacks" 
href="#perlsec-Algorithmic-Complexity-Attacks">69.4.9 Algorithmic Complexity 
Attacks</a></li>
-    </ul></li>
-    <li><a name="toc-SEE-ALSO-36" href="#perlsec-SEE-ALSO">69.5 SEE 
ALSO</a></li>
-  </ul></li>
-  <li><a name="toc-perlsource-1" href="#perlsource">70 perlsource</a>
-  <ul class="no-bullet">
-    <li><a name="toc-NAME-69" href="#perlsource-NAME">70.1 NAME</a></li>
-    <li><a name="toc-DESCRIPTION-68" href="#perlsource-DESCRIPTION">70.2 
DESCRIPTION</a></li>
-    <li><a name="toc-FINDING-YOUR-WAY-AROUND" 
href="#perlsource-FINDING-YOUR-WAY-AROUND">70.3 FINDING YOUR WAY AROUND</a>
-    <ul class="no-bullet">
-      <li><a name="toc-C-code" href="#perlsource-C-code">70.3.1 C code</a></li>
-      <li><a name="toc-Core-modules" href="#perlsource-Core-modules">70.3.2 
Core modules</a></li>
-      <li><a name="toc-Tests" href="#perlsource-Tests">70.3.3 Tests</a></li>
-      <li><a name="toc-Documentation-1" 
href="#perlsource-Documentation">70.3.4 Documentation</a></li>
-      <li><a name="toc-Hacking-tools-and-documentation" 
href="#perlsource-Hacking-tools-and-documentation">70.3.5 Hacking tools and 
documentation</a></li>
-      <li><a name="toc-Build-system" href="#perlsource-Build-system">70.3.6 
Build system</a></li>
-      <li><a name="toc-AUTHORS-5" href="#perlsource-AUTHORS">70.3.7 
<samp>AUTHORS</samp></a></li>
-      <li><a name="toc-MANIFEST" href="#perlsource-MANIFEST">70.3.8 
<samp>MANIFEST</samp></a></li>
-    </ul></li>
-  </ul></li>
-  <li><a name="toc-perlstyle-1" href="#perlstyle">71 perlstyle</a>
-  <ul class="no-bullet">
-    <li><a name="toc-NAME-70" href="#perlstyle-NAME">71.1 NAME</a></li>
-    <li><a name="toc-DESCRIPTION-69" href="#perlstyle-DESCRIPTION">71.2 
DESCRIPTION</a></li>
-  </ul></li>
-  <li><a name="toc-perlsub-2" href="#perlsub">72 perlsub</a>
-  <ul class="no-bullet">
-    <li><a name="toc-NAME-71" href="#perlsub-NAME">72.1 NAME</a></li>
-    <li><a name="toc-SYNOPSIS-10" href="#perlsub-SYNOPSIS">72.2 
SYNOPSIS</a></li>
-    <li><a name="toc-DESCRIPTION-70" href="#perlsub-DESCRIPTION">72.3 
DESCRIPTION</a>
-    <ul class="no-bullet">
-      <li><a name="toc-Private-Variables-via-my_0028_0029" 
href="#perlsub-Private-Variables-via-my_0028_0029">72.3.1 Private Variables via 
my()</a></li>
-      <li><a name="toc-Persistent-Private-Variables" 
href="#perlsub-Persistent-Private-Variables">72.3.2 Persistent Private 
Variables</a>
-      <ul class="no-bullet">
-        <li><a name="toc-Persistent-variables-via-state_0028_0029" 
href="#perlsub-Persistent-variables-via-state_0028_0029">72.3.2.1 Persistent 
variables via state()</a></li>
-        <li><a name="toc-Persistent-variables-with-closures" 
href="#perlsub-Persistent-variables-with-closures">72.3.2.2 Persistent 
variables with closures</a></li>
-      </ul></li>
-      <li><a name="toc-Temporary-Values-via-local_0028_0029" 
href="#perlsub-Temporary-Values-via-local_0028_0029">72.3.3 Temporary Values 
via local()</a>
-      <ul class="no-bullet">
-        <li><a name="toc-Grammatical-note-on-local_0028_0029" 
href="#perlsub-Grammatical-note-on-local_0028_0029">72.3.3.1 Grammatical note 
on local()</a></li>
-        <li><a name="toc-Localization-of-special-variables" 
href="#perlsub-Localization-of-special-variables">72.3.3.2 Localization of 
special variables</a></li>
-        <li><a name="toc-Localization-of-globs" 
href="#perlsub-Localization-of-globs">72.3.3.3 Localization of globs</a></li>
-        <li><a name="toc-Localization-of-elements-of-composite-types" 
href="#perlsub-Localization-of-elements-of-composite-types">72.3.3.4 
Localization of elements of composite types</a></li>
-        <li><a name="toc-Localized-deletion-of-elements-of-composite-types" 
href="#perlsub-Localized-deletion-of-elements-of-composite-types">72.3.3.5 
Localized deletion of elements of composite types</a></li>
-      </ul></li>
-      <li><a name="toc-Lvalue-subroutines" 
href="#perlsub-Lvalue-subroutines">72.3.4 Lvalue subroutines</a></li>
-      <li><a name="toc-Lexical-Subroutines" 
href="#perlsub-Lexical-Subroutines">72.3.5 Lexical Subroutines</a>
-      <ul class="no-bullet">
-        <li><a name="toc-state-sub-vs-my-sub" 
href="#perlsub-state-sub-vs-my-sub">72.3.5.1 <code>state sub</code> vs <code>my 
sub</code></a></li>
-        <li><a name="toc-our-subroutines" 
href="#perlsub-our-subroutines">72.3.5.2 <code>our</code> subroutines</a></li>
-      </ul></li>
-      <li><a name="toc-Passing-Symbol-Table-Entries-_0028typeglobs_0029" 
href="#perlsub-Passing-Symbol-Table-Entries-_0028typeglobs_0029">72.3.6 Passing 
Symbol Table Entries (typeglobs)</a></li>
-      <li><a name="toc-When-to-Still-Use-local_0028_0029" 
href="#perlsub-When-to-Still-Use-local_0028_0029">72.3.7 When to Still Use 
local()</a></li>
-      <li><a name="toc-Pass-by-Reference" 
href="#perlsub-Pass-by-Reference">72.3.8 Pass by Reference</a></li>
-      <li><a name="toc-Prototypes" href="#perlsub-Prototypes">72.3.9 
Prototypes</a></li>
-      <li><a name="toc-Constant-Functions" 
href="#perlsub-Constant-Functions">72.3.10 Constant Functions</a></li>
-      <li><a name="toc-Overriding-Built_002din-Functions" 
href="#perlsub-Overriding-Built_002din-Functions">72.3.11 Overriding Built-in 
Functions</a></li>
-      <li><a name="toc-Autoloading" href="#perlsub-Autoloading">72.3.12 
Autoloading</a></li>
-      <li><a name="toc-Subroutine-Attributes" 
href="#perlsub-Subroutine-Attributes">72.3.13 Subroutine Attributes</a></li>
-    </ul></li>
-    <li><a name="toc-SEE-ALSO-37" href="#perlsub-SEE-ALSO">72.4 SEE 
ALSO</a></li>
-  </ul></li>
-  <li><a name="toc-perlsyn-2" href="#perlsyn">73 perlsyn</a>
-  <ul class="no-bullet">
-    <li><a name="toc-NAME-72" href="#perlsyn-NAME">73.1 NAME</a></li>
-    <li><a name="toc-DESCRIPTION-71" href="#perlsyn-DESCRIPTION">73.2 
DESCRIPTION</a>
-    <ul class="no-bullet">
-      <li><a name="toc-Declarations" href="#perlsyn-Declarations">73.2.1 
Declarations</a></li>
-      <li><a name="toc-Comments" href="#perlsyn-Comments">73.2.2 
Comments</a></li>
-      <li><a name="toc-Simple-Statements" 
href="#perlsyn-Simple-Statements">73.2.3 Simple Statements</a></li>
-      <li><a name="toc-Truth-and-Falsehood" 
href="#perlsyn-Truth-and-Falsehood">73.2.4 Truth and Falsehood</a></li>
-      <li><a name="toc-Statement-Modifiers" 
href="#perlsyn-Statement-Modifiers">73.2.5 Statement Modifiers</a></li>
-      <li><a name="toc-Compound-Statements" 
href="#perlsyn-Compound-Statements">73.2.6 Compound Statements</a></li>
-      <li><a name="toc-Loop-Control" href="#perlsyn-Loop-Control">73.2.7 Loop 
Control</a></li>
-      <li><a name="toc-For-Loops" href="#perlsyn-For-Loops">73.2.8 For 
Loops</a></li>
-      <li><a name="toc-Foreach-Loops" href="#perlsyn-Foreach-Loops">73.2.9 
Foreach Loops</a></li>
-      <li><a name="toc-Basic-BLOCKs" href="#perlsyn-Basic-BLOCKs">73.2.10 
Basic BLOCKs</a></li>
-      <li><a name="toc-Switch-Statements" 
href="#perlsyn-Switch-Statements">73.2.11 Switch Statements</a></li>
-      <li><a name="toc-Goto" href="#perlsyn-Goto">73.2.12 Goto</a></li>
-      <li><a name="toc-The-Ellipsis-Statement" 
href="#perlsyn-The-Ellipsis-Statement">73.2.13 The Ellipsis Statement</a></li>
-      <li><a name="toc-PODs_003a-Embedded-Documentation" 
href="#perlsyn-PODs_003a-Embedded-Documentation">73.2.14 PODs: Embedded 
Documentation</a></li>
-      <li><a name="toc-Plain-Old-Comments-_0028Not_0021_0029" 
href="#perlsyn-Plain-Old-Comments-_0028Not_0021_0029">73.2.15 Plain Old 
Comments (Not!)</a></li>
-      <li><a name="toc-Experimental-Details-on-given-and-when" 
href="#perlsyn-Experimental-Details-on-given-and-when">73.2.16 Experimental 
Details on given and when</a>
-      <ul class="no-bullet">
-        <li><a name="toc-Breaking-out" href="#perlsyn-Breaking-out">73.2.16.1 
Breaking out</a></li>
-        <li><a name="toc-Fall_002dthrough" 
href="#perlsyn-Fall_002dthrough">73.2.16.2 Fall-through</a></li>
-        <li><a name="toc-Return-value" href="#perlsyn-Return-value">73.2.16.3 
Return value</a></li>
-        <li><a name="toc-Switching-in-a-loop" 
href="#perlsyn-Switching-in-a-loop">73.2.16.4 Switching in a loop</a></li>
-        <li><a name="toc-Differences-from-Perl-6" 
href="#perlsyn-Differences-from-Perl-6">73.2.16.5 Differences from Perl 
6</a></li>
-      </ul></li>
-    </ul></li>
-    <li><a name="toc-POD-ERRORS-1" href="#perlsyn-POD-ERRORS">73.3 POD 
ERRORS</a></li>
-  </ul></li>
-  <li><a name="toc-perlthrtut-1" href="#perlthrtut">74 perlthrtut</a>
-  <ul class="no-bullet">
-    <li><a name="toc-NAME-73" href="#perlthrtut-NAME">74.1 NAME</a></li>
-    <li><a name="toc-DESCRIPTION-72" href="#perlthrtut-DESCRIPTION">74.2 
DESCRIPTION</a></li>
-    <li><a name="toc-What-Is-A-Thread-Anyway_003f" 
href="#perlthrtut-What-Is-A-Thread-Anyway_003f">74.3 What Is A Thread 
Anyway?</a></li>
-    <li><a name="toc-Threaded-Program-Models" 
href="#perlthrtut-Threaded-Program-Models">74.4 Threaded Program Models</a>
-    <ul class="no-bullet">
-      <li><a name="toc-Boss_002fWorker" 
href="#perlthrtut-Boss_002fWorker">74.4.1 Boss/Worker</a></li>
-      <li><a name="toc-Work-Crew" href="#perlthrtut-Work-Crew">74.4.2 Work 
Crew</a></li>
-      <li><a name="toc-Pipeline" href="#perlthrtut-Pipeline">74.4.3 
Pipeline</a></li>
-    </ul></li>
-    <li><a name="toc-What-kind-of-threads-are-Perl-threads_003f" 
href="#perlthrtut-What-kind-of-threads-are-Perl-threads_003f">74.5 What kind of 
threads are Perl threads?</a></li>
-    <li><a name="toc-Thread_002dSafe-Modules" 
href="#perlthrtut-Thread_002dSafe-Modules">74.6 Thread-Safe Modules</a></li>
-    <li><a name="toc-Thread-Basics" href="#perlthrtut-Thread-Basics">74.7 
Thread Basics</a>
-    <ul class="no-bullet">
-      <li><a name="toc-Basic-Thread-Support" 
href="#perlthrtut-Basic-Thread-Support">74.7.1 Basic Thread Support</a></li>
-      <li><a name="toc-A-Note-about-the-Examples" 
href="#perlthrtut-A-Note-about-the-Examples">74.7.2 A Note about the 
Examples</a></li>
-      <li><a name="toc-Creating-Threads" 
href="#perlthrtut-Creating-Threads">74.7.3 Creating Threads</a></li>
-      <li><a name="toc-Waiting-For-A-Thread-To-Exit" 
href="#perlthrtut-Waiting-For-A-Thread-To-Exit">74.7.4 Waiting For A Thread To 
Exit</a></li>
-      <li><a name="toc-Ignoring-A-Thread" 
href="#perlthrtut-Ignoring-A-Thread">74.7.5 Ignoring A Thread</a></li>
-      <li><a name="toc-Process-and-Thread-Termination" 
href="#perlthrtut-Process-and-Thread-Termination">74.7.6 Process and Thread 
Termination</a></li>
-    </ul></li>
-    <li><a name="toc-Threads-And-Data" 
href="#perlthrtut-Threads-And-Data">74.8 Threads And Data</a>
-    <ul class="no-bullet">
-      <li><a name="toc-Shared-And-Unshared-Data" 
href="#perlthrtut-Shared-And-Unshared-Data">74.8.1 Shared And Unshared 
Data</a></li>
-      <li><a name="toc-Thread-Pitfalls_003a-Races" 
href="#perlthrtut-Thread-Pitfalls_003a-Races">74.8.2 Thread Pitfalls: 
Races</a></li>
-    </ul></li>
-    <li><a name="toc-Synchronization-and-control" 
href="#perlthrtut-Synchronization-and-control">74.9 Synchronization and 
control</a>
-    <ul class="no-bullet">
-      <li><a name="toc-Controlling-access_003a-lock_0028_0029" 
href="#perlthrtut-Controlling-access_003a-lock_0028_0029">74.9.1 Controlling 
access: lock()</a></li>
-      <li><a name="toc-A-Thread-Pitfall_003a-Deadlocks" 
href="#perlthrtut-A-Thread-Pitfall_003a-Deadlocks">74.9.2 A Thread Pitfall: 
Deadlocks</a></li>
-      <li><a name="toc-Queues_003a-Passing-Data-Around" 
href="#perlthrtut-Queues_003a-Passing-Data-Around">74.9.3 Queues: Passing Data 
Around</a></li>
-      <li><a name="toc-Semaphores_003a-Synchronizing-Data-Access" 
href="#perlthrtut-Semaphores_003a-Synchronizing-Data-Access">74.9.4 Semaphores: 
Synchronizing Data Access</a></li>
-      <li><a name="toc-Basic-semaphores" 
href="#perlthrtut-Basic-semaphores">74.9.5 Basic semaphores</a></li>
-      <li><a name="toc-Advanced-Semaphores" 
href="#perlthrtut-Advanced-Semaphores">74.9.6 Advanced Semaphores</a></li>
-      <li><a name="toc-Waiting-for-a-Condition" 
href="#perlthrtut-Waiting-for-a-Condition">74.9.7 Waiting for a 
Condition</a></li>
-      <li><a name="toc-Giving-up-control" 
href="#perlthrtut-Giving-up-control">74.9.8 Giving up control</a></li>
-    </ul></li>
-    <li><a name="toc-General-Thread-Utility-Routines" 
href="#perlthrtut-General-Thread-Utility-Routines">74.10 General Thread Utility 
Routines</a>
-    <ul class="no-bullet">
-      <li><a name="toc-What-Thread-Am-I-In_003f" 
href="#perlthrtut-What-Thread-Am-I-In_003f">74.10.1 What Thread Am I 
In?</a></li>
-      <li><a name="toc-Thread-IDs" href="#perlthrtut-Thread-IDs">74.10.2 
Thread IDs</a></li>
-      <li><a name="toc-Are-These-Threads-The-Same_003f" 
href="#perlthrtut-Are-These-Threads-The-Same_003f">74.10.3 Are These Threads 
The Same?</a></li>
-      <li><a name="toc-What-Threads-Are-Running_003f" 
href="#perlthrtut-What-Threads-Are-Running_003f">74.10.4 What Threads Are 
Running?</a></li>
-    </ul></li>
-    <li><a name="toc-A-Complete-Example" 
href="#perlthrtut-A-Complete-Example">74.11 A Complete Example</a></li>
-    <li><a name="toc-Different-implementations-of-threads" 
href="#perlthrtut-Different-implementations-of-threads">74.12 Different 
implementations of threads</a></li>
-    <li><a name="toc-Performance-considerations" 
href="#perlthrtut-Performance-considerations">74.13 Performance 
considerations</a></li>
-    <li><a name="toc-Process_002dscope-Changes" 
href="#perlthrtut-Process_002dscope-Changes">74.14 Process-scope 
Changes</a></li>
-    <li><a name="toc-Thread_002dSafety-of-System-Libraries" 
href="#perlthrtut-Thread_002dSafety-of-System-Libraries">74.15 Thread-Safety of 
System Libraries</a></li>
-    <li><a name="toc-Conclusion" href="#perlthrtut-Conclusion">74.16 
Conclusion</a></li>
-    <li><a name="toc-SEE-ALSO-38" href="#perlthrtut-SEE-ALSO">74.17 SEE 
ALSO</a></li>
-    <li><a name="toc-Bibliography" href="#perlthrtut-Bibliography">74.18 
Bibliography</a>
-    <ul class="no-bullet">
-      <li><a name="toc-Introductory-Texts" 
href="#perlthrtut-Introductory-Texts">74.18.1 Introductory Texts</a></li>
-      <li><a name="toc-OS_002dRelated-References" 
href="#perlthrtut-OS_002dRelated-References">74.18.2 OS-Related 
References</a></li>
-      <li><a name="toc-Other-References" 
href="#perlthrtut-Other-References">74.18.3 Other References</a></li>
-    </ul></li>
-    <li><a name="toc-Acknowledgements" 
href="#perlthrtut-Acknowledgements">74.19 Acknowledgements</a></li>
-    <li><a name="toc-AUTHOR-28" href="#perlthrtut-AUTHOR">74.20 AUTHOR</a></li>
-    <li><a name="toc-Copyrights-1" href="#perlthrtut-Copyrights">74.21 
Copyrights</a></li>
-  </ul></li>
-  <li><a name="toc-perltie-1" href="#perltie">75 perltie</a>
-  <ul class="no-bullet">
-    <li><a name="toc-NAME-74" href="#perltie-NAME">75.1 NAME</a></li>
-    <li><a name="toc-SYNOPSIS-11" href="#perltie-SYNOPSIS">75.2 
SYNOPSIS</a></li>
-    <li><a name="toc-DESCRIPTION-73" href="#perltie-DESCRIPTION">75.3 
DESCRIPTION</a>
-    <ul class="no-bullet">
-      <li><a name="toc-Tying-Scalars" href="#perltie-Tying-Scalars">75.3.1 
Tying Scalars</a></li>
-      <li><a name="toc-Tying-Arrays" href="#perltie-Tying-Arrays">75.3.2 Tying 
Arrays</a></li>
-      <li><a name="toc-Tying-Hashes" href="#perltie-Tying-Hashes">75.3.3 Tying 
Hashes</a></li>
-      <li><a name="toc-Tying-FileHandles" 
href="#perltie-Tying-FileHandles">75.3.4 Tying FileHandles</a></li>
-      <li><a name="toc-UNTIE-this" href="#perltie-UNTIE-this-4">75.3.5 UNTIE 
this</a></li>
-      <li><a name="toc-The-untie-Gotcha" 
href="#perltie-The-untie-Gotcha">75.3.6 The <code>untie</code> Gotcha</a></li>
-    </ul></li>
-    <li><a name="toc-SEE-ALSO-39" href="#perltie-SEE-ALSO">75.4 SEE 
ALSO</a></li>
-    <li><a name="toc-BUGS-9" href="#perltie-BUGS">75.5 BUGS</a></li>
-    <li><a name="toc-AUTHOR-29" href="#perltie-AUTHOR">75.6 AUTHOR</a></li>
-  </ul></li>
-  <li><a name="toc-perltodo-1" href="#perltodo">76 perltodo</a>
-  <ul class="no-bullet">
-    <li><a name="toc-NAME-75" href="#perltodo-NAME">76.1 NAME</a></li>
-    <li><a name="toc-DESCRIPTION-74" href="#perltodo-DESCRIPTION">76.2 
DESCRIPTION</a></li>
-  </ul></li>
-  <li><a name="toc-perltooc-1" href="#perltooc">77 perltooc</a>
-  <ul class="no-bullet">
-    <li><a name="toc-NAME-76" href="#perltooc-NAME">77.1 NAME</a></li>
-    <li><a name="toc-DESCRIPTION-75" href="#perltooc-DESCRIPTION">77.2 
DESCRIPTION</a></li>
-  </ul></li>
-  <li><a name="toc-perltoot-1" href="#perltoot">78 perltoot</a>
-  <ul class="no-bullet">
-    <li><a name="toc-NAME-77" href="#perltoot-NAME">78.1 NAME</a></li>
-    <li><a name="toc-DESCRIPTION-76" href="#perltoot-DESCRIPTION">78.2 
DESCRIPTION</a></li>
-  </ul></li>
-  <li><a name="toc-perltrap-1" href="#perltrap">79 perltrap</a>
-  <ul class="no-bullet">
-    <li><a name="toc-NAME-78" href="#perltrap-NAME">79.1 NAME</a></li>
-    <li><a name="toc-DESCRIPTION-77" href="#perltrap-DESCRIPTION">79.2 
DESCRIPTION</a>
-    <ul class="no-bullet">
-      <li><a name="toc-Awk-Traps" href="#perltrap-Awk-Traps">79.2.1 Awk 
Traps</a></li>
-      <li><a name="toc-C_002fC_002b_002b-Traps" 
href="#perltrap-C_002fC_002b_002b-Traps">79.2.2 C/C++ Traps</a></li>
-      <li><a name="toc-Sed-Traps" href="#perltrap-Sed-Traps">79.2.3 Sed 
Traps</a></li>
-      <li><a name="toc-Shell-Traps" href="#perltrap-Shell-Traps">79.2.4 Shell 
Traps</a></li>
-      <li><a name="toc-Perl-Traps" href="#perltrap-Perl-Traps">79.2.5 Perl 
Traps</a></li>
-    </ul></li>
-  </ul></li>
-  <li><a name="toc-perlunicode-1" href="#perlunicode">80 perlunicode</a>
-  <ul class="no-bullet">
-    <li><a name="toc-NAME-79" href="#perlunicode-NAME">80.1 NAME</a></li>
-    <li><a name="toc-DESCRIPTION-78" href="#perlunicode-DESCRIPTION">80.2 
DESCRIPTION</a>
-    <ul class="no-bullet">
-      <li><a name="toc-Important-Caveats" 
href="#perlunicode-Important-Caveats">80.2.1 Important Caveats</a></li>
-      <li><a name="toc-Byte-and-Character-Semantics" 
href="#perlunicode-Byte-and-Character-Semantics">80.2.2 Byte and Character 
Semantics</a></li>
-      <li><a name="toc-Effects-of-Character-Semantics" 
href="#perlunicode-Effects-of-Character-Semantics">80.2.3 Effects of Character 
Semantics</a></li>
-      <li><a name="toc-Unicode-Character-Properties" 
href="#perlunicode-Unicode-Character-Properties">80.2.4 Unicode Character 
Properties</a>
-      <ul class="no-bullet">
-        <li><a name="toc-General_005fCategory" 
href="#perlunicode-General_005fCategory">80.2.4.1 
<strong>General_Category</strong></a></li>
-        <li><a name="toc-Bidirectional-Character-Types" 
href="#perlunicode-Bidirectional-Character-Types">80.2.4.2 
<strong>Bidirectional Character Types</strong></a></li>
-        <li><a name="toc-Scripts" href="#perlunicode-Scripts">80.2.4.3 
<strong>Scripts</strong></a></li>
-        <li><a name="toc-Use-of-_0022Is_0022-Prefix" 
href="#perlunicode-Use-of-_0022Is_0022-Prefix">80.2.4.4 <strong>Use of 
&quot;Is&quot; Prefix</strong></a></li>
-        <li><a name="toc-Blocks" href="#perlunicode-Blocks">80.2.4.5 
<strong>Blocks</strong></a></li>
-        <li><a name="toc-Other-Properties" 
href="#perlunicode-Other-Properties">80.2.4.6 <strong>Other 
Properties</strong></a></li>
-      </ul></li>
-      <li><a name="toc-User_002dDefined-Character-Properties" 
href="#perlunicode-User_002dDefined-Character-Properties">80.2.5 User-Defined 
Character Properties</a></li>
-      <li><a 
name="toc-User_002dDefined-Case-Mappings-_0028for-serious-hackers-only_0029" 
href="#perlunicode-User_002dDefined-Case-Mappings-_0028for-serious-hackers-only_0029">80.2.6
 User-Defined Case Mappings (for serious hackers only)</a></li>
-      <li><a name="toc-Character-Encodings-for-Input-and-Output" 
href="#perlunicode-Character-Encodings-for-Input-and-Output">80.2.7 Character 
Encodings for Input and Output</a></li>
-      <li><a name="toc-Unicode-Regular-Expression-Support-Level" 
href="#perlunicode-Unicode-Regular-Expression-Support-Level">80.2.8 Unicode 
Regular Expression Support Level</a></li>
-      <li><a name="toc-Unicode-Encodings" 
href="#perlunicode-Unicode-Encodings">80.2.9 Unicode Encodings</a></li>
-      <li><a name="toc-Non_002dcharacter-code-points" 
href="#perlunicode-Non_002dcharacter-code-points">80.2.10 Non-character code 
points</a></li>
-      <li><a name="toc-Beyond-Unicode-code-points" 
href="#perlunicode-Beyond-Unicode-code-points">80.2.11 Beyond Unicode code 
points</a></li>
-      <li><a name="toc-Security-Implications-of-Unicode" 
href="#perlunicode-Security-Implications-of-Unicode">80.2.12 Security 
Implications of Unicode</a></li>
-      <li><a name="toc-Unicode-in-Perl-on-EBCDIC" 
href="#perlunicode-Unicode-in-Perl-on-EBCDIC">80.2.13 Unicode in Perl on 
EBCDIC</a></li>
-      <li><a name="toc-Locales" href="#perlunicode-Locales">80.2.14 
Locales</a></li>
-      <li><a name="toc-When-Unicode-Does-Not-Happen" 
href="#perlunicode-When-Unicode-Does-Not-Happen">80.2.15 When Unicode Does Not 
Happen</a></li>
-      <li><a name="toc-The-_0022Unicode-Bug_0022" 
href="#perlunicode-The-_0022Unicode-Bug_0022">80.2.16 The &quot;Unicode 
Bug&quot;</a></li>
-      <li><a 
name="toc-Forcing-Unicode-in-Perl-_0028Or-Unforcing-Unicode-in-Perl_0029" 
href="#perlunicode-Forcing-Unicode-in-Perl-_0028Or-Unforcing-Unicode-in-Perl_0029">80.2.17
 Forcing Unicode in Perl (Or Unforcing Unicode in Perl)</a></li>
-      <li><a name="toc-Using-Unicode-in-XS" 
href="#perlunicode-Using-Unicode-in-XS">80.2.18 Using Unicode in XS</a></li>
-      <li><a 
name="toc-Hacking-Perl-to-work-on-earlier-Unicode-versions-_0028for-very-serious-hackers-only_0029"
 
href="#perlunicode-Hacking-Perl-to-work-on-earlier-Unicode-versions-_0028for-very-serious-hackers-only_0029">80.2.19
 Hacking Perl to work on earlier Unicode versions (for very serious hackers 
only)</a></li>
-    </ul></li>
-    <li><a name="toc-BUGS-10" href="#perlunicode-BUGS">80.3 BUGS</a>
-    <ul class="no-bullet">
-      <li><a name="toc-Interaction-with-Locales" 
href="#perlunicode-Interaction-with-Locales">80.3.1 Interaction with 
Locales</a></li>
-      <li><a 
name="toc-Problems-with-characters-in-the-Latin_002d1-Supplement-range" 
href="#perlunicode-Problems-with-characters-in-the-Latin_002d1-Supplement-range">80.3.2
 Problems with characters in the Latin-1 Supplement range</a></li>
-      <li><a name="toc-Interaction-with-Extensions" 
href="#perlunicode-Interaction-with-Extensions">80.3.3 Interaction with 
Extensions</a></li>
-      <li><a name="toc-Speed" href="#perlunicode-Speed">80.3.4 Speed</a></li>
-      <li><a name="toc-Problems-on-EBCDIC-platforms" 
href="#perlunicode-Problems-on-EBCDIC-platforms">80.3.5 Problems on EBCDIC 
platforms</a></li>
-      <li><a name="toc-Porting-code-from-perl_002d5_002e6_002eX" 
href="#perlunicode-Porting-code-from-perl_002d5_002e6_002eX">80.3.6 Porting 
code from perl-5.6.X</a></li>
-    </ul></li>
-    <li><a name="toc-SEE-ALSO-40" href="#perlunicode-SEE-ALSO">80.4 SEE 
ALSO</a></li>
-  </ul></li>
-  <li><a name="toc-perlunifaq-1" href="#perlunifaq">81 perlunifaq</a>
-  <ul class="no-bullet">
-    <li><a name="toc-NAME-80" href="#perlunifaq-NAME">81.1 NAME</a></li>
-    <li><a name="toc-Q-and-A" href="#perlunifaq-Q-and-A">81.2 Q and A</a>
-    <ul class="no-bullet">
-      <li><a 
name="toc-perlunitut-isn_0027t-really-a-Unicode-tutorial_002c-is-it_003f" 
href="#perlunifaq-perlunitut-isn_0027t-really-a-Unicode-tutorial_002c-is-it_003f">81.2.1
 perlunitut isn&rsquo;t really a Unicode tutorial, is it?</a></li>
-      <li><a name="toc-What-character-encodings-does-Perl-support_003f" 
href="#perlunifaq-What-character-encodings-does-Perl-support_003f">81.2.2 What 
character encodings does Perl support?</a></li>
-      <li><a name="toc-Which-version-of-perl-should-I-use_003f" 
href="#perlunifaq-Which-version-of-perl-should-I-use_003f">81.2.3 Which version 
of perl should I use?</a></li>
-      <li><a name="toc-What-about-binary-data_002c-like-images_003f" 
href="#perlunifaq-What-about-binary-data_002c-like-images_003f">81.2.4 What 
about binary data, like images?</a></li>
-      <li><a name="toc-When-should-I-decode-or-encode_003f" 
href="#perlunifaq-When-should-I-decode-or-encode_003f">81.2.5 When should I 
decode or encode?</a></li>
-      <li><a name="toc-What-if-I-don_0027t-decode_003f" 
href="#perlunifaq-What-if-I-don_0027t-decode_003f">81.2.6 What if I don&rsquo;t 
decode?</a></li>
-      <li><a name="toc-What-if-I-don_0027t-encode_003f" 
href="#perlunifaq-What-if-I-don_0027t-encode_003f">81.2.7 What if I don&rsquo;t 
encode?</a></li>
-      <li><a name="toc-Is-there-a-way-to-automatically-decode-or-encode_003f" 
href="#perlunifaq-Is-there-a-way-to-automatically-decode-or-encode_003f">81.2.8 
Is there a way to automatically decode or encode?</a></li>
-      <li><a name="toc-What-if-I-don_0027t-know-which-encoding-was-used_003f" 
href="#perlunifaq-What-if-I-don_0027t-know-which-encoding-was-used_003f">81.2.9 
What if I don&rsquo;t know which encoding was used?</a></li>
-      <li><a name="toc-Can-I-use-Unicode-in-my-Perl-sources_003f" 
href="#perlunifaq-Can-I-use-Unicode-in-my-Perl-sources_003f">81.2.10 Can I use 
Unicode in my Perl sources?</a></li>
-      <li><a 
name="toc-Data_003a_003aDumper-doesn_0027t-restore-the-UTF8-flag_003b-is-it-broken_003f"
 
href="#perlunifaq-Data_003a_003aDumper-doesn_0027t-restore-the-UTF8-flag_003b-is-it-broken_003f">81.2.11
 Data::Dumper doesn&rsquo;t restore the UTF8 flag; is it broken?</a></li>
-      <li><a 
name="toc-Why-do-regex-character-classes-sometimes-match-only-in-the-ASCII-range_003f"
 
href="#perlunifaq-Why-do-regex-character-classes-sometimes-match-only-in-the-ASCII-range_003f">81.2.12
 Why do regex character classes sometimes match only in the ASCII 
range?</a></li>
-      <li><a 
name="toc-Why-do-some-characters-not-uppercase-or-lowercase-correctly_003f" 
href="#perlunifaq-Why-do-some-characters-not-uppercase-or-lowercase-correctly_003f">81.2.13
 Why do some characters not uppercase or lowercase correctly?</a></li>
-      <li><a 
name="toc-How-can-I-determine-if-a-string-is-a-text-string-or-a-binary-string_003f"
 
href="#perlunifaq-How-can-I-determine-if-a-string-is-a-text-string-or-a-binary-string_003f">81.2.14
 How can I determine if a string is a text string or a binary string?</a></li>
-      <li><a 
name="toc-How-do-I-convert-from-encoding-FOO-to-encoding-BAR_003f" 
href="#perlunifaq-How-do-I-convert-from-encoding-FOO-to-encoding-BAR_003f">81.2.15
 How do I convert from encoding FOO to encoding BAR?</a></li>
-      <li><a name="toc-What-are-decode_005futf8-and-encode_005futf8_003f" 
href="#perlunifaq-What-are-decode_005futf8-and-encode_005futf8_003f">81.2.16 
What are <code>decode_utf8</code> and <code>encode_utf8</code>?</a></li>
-      <li><a name="toc-What-is-a-_0022wide-character_0022_003f" 
href="#perlunifaq-What-is-a-_0022wide-character_0022_003f">81.2.17 What is a 
&quot;wide character&quot;?</a></li>
-    </ul></li>
-    <li><a name="toc-INTERNALS" href="#perlunifaq-INTERNALS">81.3 INTERNALS</a>
-    <ul class="no-bullet">
-      <li><a name="toc-What-is-_0022the-UTF8-flag_0022_003f" 
href="#perlunifaq-What-is-_0022the-UTF8-flag_0022_003f">81.3.1 What is 
&quot;the UTF8 flag&quot;?</a></li>
-      <li><a name="toc-What-about-the-use-bytes-pragma_003f" 
href="#perlunifaq-What-about-the-use-bytes-pragma_003f">81.3.2 What about the 
<code>use bytes</code> pragma?</a></li>
-      <li><a name="toc-What-about-the-use-encoding-pragma_003f" 
href="#perlunifaq-What-about-the-use-encoding-pragma_003f">81.3.3 What about 
the <code>use encoding</code> pragma?</a></li>
-      <li><a 
name="toc-What-is-the-difference-between-_003aencoding-and-_003autf8_003f" 
href="#perlunifaq-What-is-the-difference-between-_003aencoding-and-_003autf8_003f">81.3.4
 What is the difference between <code>:encoding</code> and 
<code>:utf8</code>?</a></li>
-      <li><a 
name="toc-What_0027s-the-difference-between-UTF_002d8-and-utf8_003f" 
href="#perlunifaq-What_0027s-the-difference-between-UTF_002d8-and-utf8_003f">81.3.5
 What&rsquo;s the difference between <code>UTF-8</code> and 
<code>utf8</code>?</a></li>
-      <li><a 
name="toc-I-lost-track_003b-what-encoding-is-the-internal-format-really_003f" 
href="#perlunifaq-I-lost-track_003b-what-encoding-is-the-internal-format-really_003f">81.3.6
 I lost track; what encoding is the internal format really?</a></li>
-    </ul></li>
-    <li><a name="toc-AUTHOR-30" href="#perlunifaq-AUTHOR">81.4 AUTHOR</a></li>
-    <li><a name="toc-SEE-ALSO-41" href="#perlunifaq-SEE-ALSO">81.5 SEE 
ALSO</a></li>
-  </ul></li>
-  <li><a name="toc-perluniintro-1" href="#perluniintro">82 perluniintro</a>
-  <ul class="no-bullet">
-    <li><a name="toc-NAME-81" href="#perluniintro-NAME">82.1 NAME</a></li>
-    <li><a name="toc-DESCRIPTION-79" href="#perluniintro-DESCRIPTION">82.2 
DESCRIPTION</a>
-    <ul class="no-bullet">
-      <li><a name="toc-Unicode-2" href="#perluniintro-Unicode">82.2.1 
Unicode</a></li>
-      <li><a name="toc-Perl_0027s-Unicode-Support" 
href="#perluniintro-Perl_0027s-Unicode-Support">82.2.2 Perl&rsquo;s Unicode 
Support</a></li>
-      <li><a name="toc-Perl_0027s-Unicode-Model" 
href="#perluniintro-Perl_0027s-Unicode-Model">82.2.3 Perl&rsquo;s Unicode 
Model</a></li>
-      <li><a name="toc-Unicode-and-EBCDIC" 
href="#perluniintro-Unicode-and-EBCDIC">82.2.4 Unicode and EBCDIC</a></li>
-      <li><a name="toc-Creating-Unicode" 
href="#perluniintro-Creating-Unicode">82.2.5 Creating Unicode</a></li>
-      <li><a name="toc-Handling-Unicode" 
href="#perluniintro-Handling-Unicode">82.2.6 Handling Unicode</a></li>
-      <li><a name="toc-Legacy-Encodings" 
href="#perluniintro-Legacy-Encodings">82.2.7 Legacy Encodings</a></li>
-      <li><a name="toc-Unicode-I_002fO" 
href="#perluniintro-Unicode-I_002fO">82.2.8 Unicode I/O</a></li>
-      <li><a name="toc-Displaying-Unicode-As-Text" 
href="#perluniintro-Displaying-Unicode-As-Text">82.2.9 Displaying Unicode As 
Text</a></li>
-      <li><a name="toc-Special-Cases" 
href="#perluniintro-Special-Cases">82.2.10 Special Cases</a></li>
-      <li><a name="toc-Advanced-Topics" 
href="#perluniintro-Advanced-Topics">82.2.11 Advanced Topics</a></li>
-      <li><a name="toc-Miscellaneous-1" 
href="#perluniintro-Miscellaneous">82.2.12 Miscellaneous</a></li>
-      <li><a name="toc-Questions-With-Answers" 
href="#perluniintro-Questions-With-Answers">82.2.13 Questions With 
Answers</a></li>
-      <li><a name="toc-Hexadecimal-Notation" 
href="#perluniintro-Hexadecimal-Notation">82.2.14 Hexadecimal Notation</a></li>
-      <li><a name="toc-Further-Resources" 
href="#perluniintro-Further-Resources">82.2.15 Further Resources</a></li>
-    </ul></li>
-    <li><a name="toc-UNICODE-IN-OLDER-PERLS" 
href="#perluniintro-UNICODE-IN-OLDER-PERLS">82.3 UNICODE IN OLDER PERLS</a></li>
-    <li><a name="toc-SEE-ALSO-42" href="#perluniintro-SEE-ALSO">82.4 SEE 
ALSO</a></li>
-    <li><a name="toc-ACKNOWLEDGMENTS" 
href="#perluniintro-ACKNOWLEDGMENTS">82.5 ACKNOWLEDGMENTS</a></li>
-    <li><a name="toc-AUTHOR_002c-COPYRIGHT_002c-AND-LICENSE" 
href="#perluniintro-AUTHOR_002c-COPYRIGHT_002c-AND-LICENSE">82.6 AUTHOR, 
COPYRIGHT, AND LICENSE</a></li>
-  </ul></li>
-  <li><a name="toc-perlunitut-1" href="#perlunitut">83 perlunitut</a>
-  <ul class="no-bullet">
-    <li><a name="toc-NAME-82" href="#perlunitut-NAME">83.1 NAME</a></li>
-    <li><a name="toc-DESCRIPTION-80" href="#perlunitut-DESCRIPTION">83.2 
DESCRIPTION</a>
-    <ul class="no-bullet">
-      <li><a name="toc-Definitions-1" href="#perlunitut-Definitions">83.2.1 
Definitions</a>
-      <ul class="no-bullet">
-        <li><a name="toc-Unicode-3" href="#perlunitut-Unicode">83.2.1.1 
Unicode</a></li>
-        <li><a name="toc-UTF_002d8" href="#perlunitut-UTF_002d8">83.2.1.2 
UTF-8</a></li>
-        <li><a name="toc-Text-strings-_0028character-strings_0029" 
href="#perlunitut-Text-strings-_0028character-strings_0029">83.2.1.3 Text 
strings (character strings)</a></li>
-        <li><a name="toc-Binary-strings-_0028byte-strings_0029" 
href="#perlunitut-Binary-strings-_0028byte-strings_0029">83.2.1.4 Binary 
strings (byte strings)</a></li>
-        <li><a name="toc-Encoding" href="#perlunitut-Encoding">83.2.1.5 
Encoding</a></li>
-        <li><a name="toc-Decoding" href="#perlunitut-Decoding">83.2.1.6 
Decoding</a></li>
-        <li><a name="toc-Internal-format" 
href="#perlunitut-Internal-format">83.2.1.7 Internal format</a></li>
-      </ul></li>
-      <li><a name="toc-Your-new-toolkit" 
href="#perlunitut-Your-new-toolkit">83.2.2 Your new toolkit</a></li>
-      <li><a name="toc-I_002fO-flow-_0028the-actual-5-minute-tutorial_0029" 
href="#perlunitut-I_002fO-flow-_0028the-actual-5-minute-tutorial_0029">83.2.3 
I/O flow (the actual 5 minute tutorial)</a></li>
-    </ul></li>
-    <li><a name="toc-SUMMARY-1" href="#perlunitut-SUMMARY">83.3 
SUMMARY</a></li>
-    <li><a name="toc-Q-and-A-_0028or-FAQ_0029" 
href="#perlunitut-Q-and-A-_0028or-FAQ_0029">83.4 Q and A (or FAQ)</a></li>
-    <li><a name="toc-ACKNOWLEDGEMENTS-1" 
href="#perlunitut-ACKNOWLEDGEMENTS">83.5 ACKNOWLEDGEMENTS</a></li>
-    <li><a name="toc-AUTHOR-31" href="#perlunitut-AUTHOR">83.6 AUTHOR</a></li>
-    <li><a name="toc-SEE-ALSO-43" href="#perlunitut-SEE-ALSO">83.7 SEE 
ALSO</a></li>
-  </ul></li>
-  <li><a name="toc-perlutil-1" href="#perlutil">84 perlutil</a>
-  <ul class="no-bullet">
-    <li><a name="toc-NAME-83" href="#perlutil-NAME">84.1 NAME</a></li>
-    <li><a name="toc-DESCRIPTION-81" href="#perlutil-DESCRIPTION">84.2 
DESCRIPTION</a></li>
-    <li><a name="toc-LIST-OF-UTILITIES" 
href="#perlutil-LIST-OF-UTILITIES">84.3 LIST OF UTILITIES</a>
-    <ul class="no-bullet">
-      <li><a name="toc-Documentation-2" href="#perlutil-Documentation">84.3.1 
Documentation</a></li>
-      <li><a name="toc-Converters" href="#perlutil-Converters">84.3.2 
Converters</a></li>
-      <li><a name="toc-Administration" href="#perlutil-Administration">84.3.3 
Administration</a></li>
-      <li><a name="toc-Development" href="#perlutil-Development">84.3.4 
Development</a></li>
-      <li><a name="toc-General-tools" href="#perlutil-General-tools">84.3.5 
General tools</a></li>
-      <li><a name="toc-Installation" href="#perlutil-Installation">84.3.6 
Installation</a></li>
-    </ul></li>
-    <li><a name="toc-SEE-ALSO-44" href="#perlutil-SEE-ALSO">84.4 SEE 
ALSO</a></li>
-  </ul></li>
-  <li><a name="toc-perlvar-1" href="#perlvar">85 perlvar</a>
-  <ul class="no-bullet">
-    <li><a name="toc-NAME-84" href="#perlvar-NAME">85.1 NAME</a></li>
-    <li><a name="toc-DESCRIPTION-82" href="#perlvar-DESCRIPTION">85.2 
DESCRIPTION</a>
-    <ul class="no-bullet">
-      <li><a name="toc-The-Syntax-of-Variable-Names" 
href="#perlvar-The-Syntax-of-Variable-Names">85.2.1 The Syntax of Variable 
Names</a></li>
-    </ul></li>
-    <li><a name="toc-SPECIAL-VARIABLES" href="#perlvar-SPECIAL-VARIABLES">85.3 
SPECIAL VARIABLES</a>
-    <ul class="no-bullet">
-      <li><a name="toc-General-Variables" 
href="#perlvar-General-Variables">85.3.1 General Variables</a></li>
-      <li><a name="toc-Variables-related-to-regular-expressions" 
href="#perlvar-Variables-related-to-regular-expressions">85.3.2 Variables 
related to regular expressions</a></li>
-      <li><a name="toc-Variables-related-to-filehandles" 
href="#perlvar-Variables-related-to-filehandles">85.3.3 Variables related to 
filehandles</a>
-      <ul class="no-bullet">
-        <li><a name="toc-Variables-related-to-formats" 
href="#perlvar-Variables-related-to-formats">85.3.3.1 Variables related to 
formats</a></li>
-      </ul></li>
-      <li><a name="toc-Error-Variables" href="#perlvar-Error-Variables">85.3.4 
Error Variables</a></li>
-      <li><a name="toc-Variables-related-to-the-interpreter-state" 
href="#perlvar-Variables-related-to-the-interpreter-state">85.3.5 Variables 
related to the interpreter state</a></li>
-      <li><a name="toc-Deprecated-and-removed-variables" 
href="#perlvar-Deprecated-and-removed-variables">85.3.6 Deprecated and removed 
variables</a></li>
-    </ul></li>
-  </ul></li>
-  <li><a name="toc-perlvms-1" href="#perlvms">86 perlvms</a>
-  <ul class="no-bullet">
-    <li><a name="toc-NAME-85" href="#perlvms-NAME">86.1 NAME</a></li>
-    <li><a name="toc-DESCRIPTION-83" href="#perlvms-DESCRIPTION">86.2 
DESCRIPTION</a></li>
-    <li><a name="toc-Installation-1" href="#perlvms-Installation">86.3 
Installation</a></li>
-    <li><a name="toc-Organization-of-Perl-Images" 
href="#perlvms-Organization-of-Perl-Images">86.4 Organization of Perl Images</a>
-    <ul class="no-bullet">
-      <li><a name="toc-Core-Images" href="#perlvms-Core-Images">86.4.1 Core 
Images</a></li>
-      <li><a name="toc-Perl-Extensions" href="#perlvms-Perl-Extensions">86.4.2 
Perl Extensions</a></li>
-      <li><a name="toc-Installing-static-extensions" 
href="#perlvms-Installing-static-extensions">86.4.3 Installing static 
extensions</a></li>
-      <li><a name="toc-Installing-dynamic-extensions" 
href="#perlvms-Installing-dynamic-extensions">86.4.4 Installing dynamic 
extensions</a></li>
-    </ul></li>
-    <li><a name="toc-File-specifications" 
href="#perlvms-File-specifications">86.5 File specifications</a>
-    <ul class="no-bullet">
-      <li><a name="toc-Syntax-1" href="#perlvms-Syntax">86.5.1 Syntax</a></li>
-      <li><a name="toc-Filename-Case" href="#perlvms-Filename-Case">86.5.2 
Filename Case</a></li>
-      <li><a name="toc-Symbolic-Links" href="#perlvms-Symbolic-Links">86.5.3 
Symbolic Links</a></li>
-      <li><a name="toc-Wildcard-expansion" 
href="#perlvms-Wildcard-expansion">86.5.4 Wildcard expansion</a></li>
-      <li><a name="toc-Pipes" href="#perlvms-Pipes">86.5.5 Pipes</a></li>
-    </ul></li>
-    <li><a name="toc-PERL5LIB-and-PERLLIB" 
href="#perlvms-PERL5LIB-and-PERLLIB">86.6 PERL5LIB and PERLLIB</a></li>
-    <li><a name="toc-The-Perl-Forked-Debugger" 
href="#perlvms-The-Perl-Forked-Debugger">86.7 The Perl Forked Debugger</a></li>
-    <li><a name="toc-PERL_005fVMS_005fEXCEPTION_005fDEBUG" 
href="#perlvms-PERL_005fVMS_005fEXCEPTION_005fDEBUG">86.8 
PERL_VMS_EXCEPTION_DEBUG</a></li>
-    <li><a name="toc-Command-line" href="#perlvms-Command-line">86.9 Command 
line</a>
-    <ul class="no-bullet">
-      <li><a name="toc-I_002fO-redirection-and-backgrounding" 
href="#perlvms-I_002fO-redirection-and-backgrounding">86.9.1 I/O redirection 
and backgrounding</a></li>
-      <li><a name="toc-Command-line-switches" 
href="#perlvms-Command-line-switches">86.9.2 Command line switches</a></li>
-    </ul></li>
-    <li><a name="toc-Perl-functions" href="#perlvms-Perl-functions">86.10 Perl 
functions</a></li>
-    <li><a name="toc-Perl-variables" href="#perlvms-Perl-variables">86.11 Perl 
variables</a></li>
-    <li><a name="toc-Standard-modules-with-VMS_002dspecific-differences" 
href="#perlvms-Standard-modules-with-VMS_002dspecific-differences">86.12 
Standard modules with VMS-specific differences</a>
+    <li><a name="toc-NAME-65" href="#perlrequick-NAME">66.1 NAME</a></li>
+    <li><a name="toc-DESCRIPTION-64" href="#perlrequick-DESCRIPTION">66.2 
DESCRIPTION</a></li>
+    <li><a name="toc-The-Guide" href="#perlrequick-The-Guide">66.3 The 
Guide</a>
+    <ul class="no-bullet">
+      <li><a name="toc-Simple-word-matching" 
href="#perlrequick-Simple-word-matching">66.3.1 Simple word matching</a></li>
+      <li><a name="toc-Using-character-classes" 
href="#perlrequick-Using-character-classes">66.3.2 Using character 
classes</a></li>
+      <li><a name="toc-Matching-this-or-that" 
href="#perlrequick-Matching-this-or-that">66.3.3 Matching this or that</a></li>
+      <li><a name="toc-Grouping-things-and-hierarchical-matching" 
href="#perlrequick-Grouping-things-and-hierarchical-matching">66.3.4 Grouping 
things and hierarchical matching</a></li>
+      <li><a name="toc-Extracting-matches" 
href="#perlrequick-Extracting-matches">66.3.5 Extracting matches</a></li>
+      <li><a name="toc-Matching-repetitions" 
href="#perlrequick-Matching-repetitions">66.3.6 Matching repetitions</a></li>
+      <li><a name="toc-More-matching" href="#perlrequick-More-matching">66.3.7 
More matching</a></li>
+      <li><a name="toc-Search-and-replace" 
href="#perlrequick-Search-and-replace">66.3.8 Search and replace</a></li>
+      <li><a name="toc-The-split-operator" 
href="#perlrequick-The-split-operator">66.3.9 The split operator</a></li>
+    </ul></li>
+    <li><a name="toc-BUGS-7" href="#perlrequick-BUGS">66.4 BUGS</a></li>
+    <li><a name="toc-SEE-ALSO-32" href="#perlrequick-SEE-ALSO">66.5 SEE 
ALSO</a></li>
+    <li><a name="toc-AUTHOR-AND-COPYRIGHT" 
href="#perlrequick-AUTHOR-AND-COPYRIGHT">66.6 AUTHOR AND COPYRIGHT</a>
+    <ul class="no-bullet">
+      <li><a name="toc-Acknowledgments" 
href="#perlrequick-Acknowledgments">66.6.1 Acknowledgments</a></li>
+    </ul></li>
+  </ul></li>
+  <li><a name="toc-perlreref-1" href="#perlreref">67 perlreref</a>
+  <ul class="no-bullet">
+    <li><a name="toc-NAME-66" href="#perlreref-NAME">67.1 NAME</a></li>
+    <li><a name="toc-DESCRIPTION-65" href="#perlreref-DESCRIPTION">67.2 
DESCRIPTION</a>
+    <ul class="no-bullet">
+      <li><a name="toc-OPERATORS" href="#perlreref-OPERATORS">67.2.1 
OPERATORS</a></li>
+      <li><a name="toc-SYNTAX" href="#perlreref-SYNTAX">67.2.2 SYNTAX</a></li>
+      <li><a name="toc-ESCAPE-SEQUENCES" 
href="#perlreref-ESCAPE-SEQUENCES">67.2.3 ESCAPE SEQUENCES</a></li>
+      <li><a name="toc-CHARACTER-CLASSES" 
href="#perlreref-CHARACTER-CLASSES">67.2.4 CHARACTER CLASSES</a></li>
+      <li><a name="toc-ANCHORS" href="#perlreref-ANCHORS">67.2.5 
ANCHORS</a></li>
+      <li><a name="toc-QUANTIFIERS" href="#perlreref-QUANTIFIERS">67.2.6 
QUANTIFIERS</a></li>
+      <li><a name="toc-EXTENDED-CONSTRUCTS" 
href="#perlreref-EXTENDED-CONSTRUCTS">67.2.7 EXTENDED CONSTRUCTS</a></li>
+      <li><a name="toc-VARIABLES" href="#perlreref-VARIABLES">67.2.8 
VARIABLES</a></li>
+      <li><a name="toc-FUNCTIONS" href="#perlreref-FUNCTIONS">67.2.9 
FUNCTIONS</a></li>
+      <li><a name="toc-TERMINOLOGY" href="#perlreref-TERMINOLOGY">67.2.10 
TERMINOLOGY</a>
+      <ul class="no-bullet">
+        <li><a name="toc-Titlecase" href="#perlreref-Titlecase">67.2.10.1 
Titlecase</a></li>
+        <li><a name="toc-Foldcase" href="#perlreref-Foldcase">67.2.10.2 
Foldcase</a></li>
+      </ul></li>
+    </ul></li>
+    <li><a name="toc-AUTHOR-26" href="#perlreref-AUTHOR">67.3 AUTHOR</a></li>
+    <li><a name="toc-SEE-ALSO-33" href="#perlreref-SEE-ALSO">67.4 SEE 
ALSO</a></li>
+    <li><a name="toc-THANKS" href="#perlreref-THANKS">67.5 THANKS</a></li>
+  </ul></li>
+  <li><a name="toc-perlretut-10" href="#perlretut">68 perlretut</a>
+  <ul class="no-bullet">
+    <li><a name="toc-NAME-67" href="#perlretut-NAME">68.1 NAME</a></li>
+    <li><a name="toc-DESCRIPTION-66" href="#perlretut-DESCRIPTION">68.2 
DESCRIPTION</a></li>
+    <li><a name="toc-Part-1_003a-The-basics" 
href="#perlretut-Part-1_003a-The-basics">68.3 Part 1: The basics</a>
+    <ul class="no-bullet">
+      <li><a name="toc-Simple-word-matching-1" 
href="#perlretut-Simple-word-matching">68.3.1 Simple word matching</a></li>
+      <li><a name="toc-Using-character-classes-1" 
href="#perlretut-Using-character-classes">68.3.2 Using character 
classes</a></li>
+      <li><a name="toc-Matching-this-or-that-1" 
href="#perlretut-Matching-this-or-that">68.3.3 Matching this or that</a></li>
+      <li><a name="toc-Grouping-things-and-hierarchical-matching-1" 
href="#perlretut-Grouping-things-and-hierarchical-matching">68.3.4 Grouping 
things and hierarchical matching</a></li>
+      <li><a name="toc-Extracting-matches-1" 
href="#perlretut-Extracting-matches">68.3.5 Extracting matches</a></li>
+      <li><a name="toc-Backreferences" href="#perlretut-Backreferences">68.3.6 
Backreferences</a></li>
+      <li><a name="toc-Relative-backreferences" 
href="#perlretut-Relative-backreferences">68.3.7 Relative 
backreferences</a></li>
+      <li><a name="toc-Named-backreferences" 
href="#perlretut-Named-backreferences">68.3.8 Named backreferences</a></li>
+      <li><a name="toc-Alternative-capture-group-numbering" 
href="#perlretut-Alternative-capture-group-numbering">68.3.9 Alternative 
capture group numbering</a></li>
+      <li><a name="toc-Position-information" 
href="#perlretut-Position-information">68.3.10 Position information</a></li>
+      <li><a name="toc-Non_002dcapturing-groupings" 
href="#perlretut-Non_002dcapturing-groupings">68.3.11 Non-capturing 
groupings</a></li>
+      <li><a name="toc-Matching-repetitions-1" 
href="#perlretut-Matching-repetitions">68.3.12 Matching repetitions</a></li>
+      <li><a name="toc-Possessive-quantifiers" 
href="#perlretut-Possessive-quantifiers">68.3.13 Possessive quantifiers</a></li>
+      <li><a name="toc-Building-a-regexp" 
href="#perlretut-Building-a-regexp">68.3.14 Building a regexp</a></li>
+      <li><a name="toc-Using-regular-expressions-in-Perl" 
href="#perlretut-Using-regular-expressions-in-Perl">68.3.15 Using regular 
expressions in Perl</a>
+      <ul class="no-bullet">
+        <li><a name="toc-Prohibiting-substitution" 
href="#perlretut-Prohibiting-substitution">68.3.15.1 Prohibiting 
substitution</a></li>
+        <li><a name="toc-Global-matching" 
href="#perlretut-Global-matching">68.3.15.2 Global matching</a></li>
+        <li><a name="toc-Search-and-replace-1" 
href="#perlretut-Search-and-replace">68.3.15.3 Search and replace</a></li>
+        <li><a name="toc-The-split-function" 
href="#perlretut-The-split-function">68.3.15.4 The split function</a></li>
+      </ul></li>
+    </ul></li>
+    <li><a name="toc-Part-2_003a-Power-tools" 
href="#perlretut-Part-2_003a-Power-tools">68.4 Part 2: Power tools</a>
+    <ul class="no-bullet">
+      <li><a 
name="toc-More-on-characters_002c-strings_002c-and-character-classes" 
href="#perlretut-More-on-characters_002c-strings_002c-and-character-classes">68.4.1
 More on characters, strings, and character classes</a></li>
+      <li><a name="toc-Compiling-and-saving-regular-expressions" 
href="#perlretut-Compiling-and-saving-regular-expressions">68.4.2 Compiling and 
saving regular expressions</a></li>
+      <li><a name="toc-Composing-regular-expressions-at-runtime" 
href="#perlretut-Composing-regular-expressions-at-runtime">68.4.3 Composing 
regular expressions at runtime</a></li>
+      <li><a 
name="toc-Embedding-comments-and-modifiers-in-a-regular-expression" 
href="#perlretut-Embedding-comments-and-modifiers-in-a-regular-expression">68.4.4
 Embedding comments and modifiers in a regular expression</a></li>
+      <li><a name="toc-Looking-ahead-and-looking-behind" 
href="#perlretut-Looking-ahead-and-looking-behind">68.4.5 Looking ahead and 
looking behind</a></li>
+      <li><a 
name="toc-Using-independent-subexpressions-to-prevent-backtracking" 
href="#perlretut-Using-independent-subexpressions-to-prevent-backtracking">68.4.6
 Using independent subexpressions to prevent backtracking</a></li>
+      <li><a name="toc-Conditional-expressions" 
href="#perlretut-Conditional-expressions">68.4.7 Conditional 
expressions</a></li>
+      <li><a name="toc-Defining-named-patterns" 
href="#perlretut-Defining-named-patterns">68.4.8 Defining named 
patterns</a></li>
+      <li><a name="toc-Recursive-patterns" 
href="#perlretut-Recursive-patterns">68.4.9 Recursive patterns</a></li>
+      <li><a 
name="toc-A-bit-of-magic_003a-executing-Perl-code-in-a-regular-expression" 
href="#perlretut-A-bit-of-magic_003a-executing-Perl-code-in-a-regular-expression">68.4.10
 A bit of magic: executing Perl code in a regular expression</a></li>
+      <li><a name="toc-Backtracking-control-verbs" 
href="#perlretut-Backtracking-control-verbs">68.4.11 Backtracking control 
verbs</a></li>
+      <li><a name="toc-Pragmas-and-debugging" 
href="#perlretut-Pragmas-and-debugging">68.4.12 Pragmas and debugging</a></li>
+    </ul></li>
+    <li><a name="toc-BUGS-8" href="#perlretut-BUGS">68.5 BUGS</a></li>
+    <li><a name="toc-SEE-ALSO-34" href="#perlretut-SEE-ALSO">68.6 SEE 
ALSO</a></li>
+    <li><a name="toc-AUTHOR-AND-COPYRIGHT-1" 
href="#perlretut-AUTHOR-AND-COPYRIGHT">68.7 AUTHOR AND COPYRIGHT</a>
+    <ul class="no-bullet">
+      <li><a name="toc-Acknowledgments-1" 
href="#perlretut-Acknowledgments">68.7.1 Acknowledgments</a></li>
+    </ul></li>
+  </ul></li>
+  <li><a name="toc-perlrun-1" href="#perlrun">69 perlrun</a>
+  <ul class="no-bullet">
+    <li><a name="toc-NAME-68" href="#perlrun-NAME">69.1 NAME</a></li>
+    <li><a name="toc-SYNOPSIS-9" href="#perlrun-SYNOPSIS">69.2 
SYNOPSIS</a></li>
+    <li><a name="toc-DESCRIPTION-67" href="#perlrun-DESCRIPTION">69.3 
DESCRIPTION</a>
+    <ul class="no-bullet">
+      <li><a name="toc-_0023_0021-and-quoting-on-non_002dUnix-systems" 
href="#perlrun-_0023_0021-and-quoting-on-non_002dUnix-systems">69.3.1 #! and 
quoting on non-Unix systems</a></li>
+      <li><a name="toc-Location-of-Perl" 
href="#perlrun-Location-of-Perl">69.3.2 Location of Perl</a></li>
+      <li><a name="toc-Command-Switches" 
href="#perlrun-Command-Switches">69.3.3 Command Switches</a></li>
+    </ul></li>
+    <li><a name="toc-ENVIRONMENT-2" href="#perlrun-ENVIRONMENT">69.4 
ENVIRONMENT</a></li>
+  </ul></li>
+  <li><a name="toc-perlsec-1" href="#perlsec">70 perlsec</a>
+  <ul class="no-bullet">
+    <li><a name="toc-NAME-69" href="#perlsec-NAME">70.1 NAME</a></li>
+    <li><a name="toc-DESCRIPTION-68" href="#perlsec-DESCRIPTION">70.2 
DESCRIPTION</a></li>
+    <li><a name="toc-SECURITY-VULNERABILITY-CONTACT-INFORMATION" 
href="#perlsec-SECURITY-VULNERABILITY-CONTACT-INFORMATION">70.3 SECURITY 
VULNERABILITY CONTACT INFORMATION</a></li>
+    <li><a name="toc-SECURITY-MECHANISMS-AND-CONCERNS" 
href="#perlsec-SECURITY-MECHANISMS-AND-CONCERNS">70.4 SECURITY MECHANISMS AND 
CONCERNS</a>
+    <ul class="no-bullet">
+      <li><a name="toc-Taint-mode" href="#perlsec-Taint-mode">70.4.1 Taint 
mode</a></li>
+      <li><a name="toc-Laundering-and-Detecting-Tainted-Data" 
href="#perlsec-Laundering-and-Detecting-Tainted-Data">70.4.2 Laundering and 
Detecting Tainted Data</a></li>
+      <li><a name="toc-Switches-On-the-_0022_0023_0021_0022-Line" 
href="#perlsec-Switches-On-the-_0022_0023_0021_0022-Line">70.4.3 Switches On 
the &quot;#!&quot; Line</a></li>
+      <li><a name="toc-Taint-mode-and-_0040INC" 
href="#perlsec-Taint-mode-and-_0040INC">70.4.4 Taint mode and @INC</a></li>
+      <li><a name="toc-Cleaning-Up-Your-Path" 
href="#perlsec-Cleaning-Up-Your-Path">70.4.5 Cleaning Up Your Path</a></li>
+      <li><a name="toc-Security-Bugs" href="#perlsec-Security-Bugs">70.4.6 
Security Bugs</a></li>
+      <li><a name="toc-Protecting-Your-Programs" 
href="#perlsec-Protecting-Your-Programs">70.4.7 Protecting Your 
Programs</a></li>
+      <li><a name="toc-Unicode-1" href="#perlsec-Unicode">70.4.8 
Unicode</a></li>
+      <li><a name="toc-Algorithmic-Complexity-Attacks" 
href="#perlsec-Algorithmic-Complexity-Attacks">70.4.9 Algorithmic Complexity 
Attacks</a></li>
+    </ul></li>
+    <li><a name="toc-SEE-ALSO-35" href="#perlsec-SEE-ALSO">70.5 SEE 
ALSO</a></li>
+  </ul></li>
+  <li><a name="toc-perlsource-1" href="#perlsource">71 perlsource</a>
+  <ul class="no-bullet">
+    <li><a name="toc-NAME-70" href="#perlsource-NAME">71.1 NAME</a></li>
+    <li><a name="toc-DESCRIPTION-69" href="#perlsource-DESCRIPTION">71.2 
DESCRIPTION</a></li>
+    <li><a name="toc-FINDING-YOUR-WAY-AROUND" 
href="#perlsource-FINDING-YOUR-WAY-AROUND">71.3 FINDING YOUR WAY AROUND</a>
+    <ul class="no-bullet">
+      <li><a name="toc-C-code" href="#perlsource-C-code">71.3.1 C code</a></li>
+      <li><a name="toc-Core-modules" href="#perlsource-Core-modules">71.3.2 
Core modules</a></li>
+      <li><a name="toc-Tests" href="#perlsource-Tests">71.3.3 Tests</a></li>
+      <li><a name="toc-Documentation-1" 
href="#perlsource-Documentation">71.3.4 Documentation</a></li>
+      <li><a name="toc-Hacking-tools-and-documentation" 
href="#perlsource-Hacking-tools-and-documentation">71.3.5 Hacking tools and 
documentation</a></li>
+      <li><a name="toc-Build-system" href="#perlsource-Build-system">71.3.6 
Build system</a></li>
+      <li><a name="toc-AUTHORS-5" href="#perlsource-AUTHORS">71.3.7 
<samp>AUTHORS</samp></a></li>
+      <li><a name="toc-MANIFEST" href="#perlsource-MANIFEST">71.3.8 
<samp>MANIFEST</samp></a></li>
+    </ul></li>
+  </ul></li>
+  <li><a name="toc-perlstyle-1" href="#perlstyle">72 perlstyle</a>
+  <ul class="no-bullet">
+    <li><a name="toc-NAME-71" href="#perlstyle-NAME">72.1 NAME</a></li>
+    <li><a name="toc-DESCRIPTION-70" href="#perlstyle-DESCRIPTION">72.2 
DESCRIPTION</a></li>
+  </ul></li>
+  <li><a name="toc-perlsub-2" href="#perlsub">73 perlsub</a>
+  <ul class="no-bullet">
+    <li><a name="toc-NAME-72" href="#perlsub-NAME">73.1 NAME</a></li>
+    <li><a name="toc-SYNOPSIS-10" href="#perlsub-SYNOPSIS">73.2 
SYNOPSIS</a></li>
+    <li><a name="toc-DESCRIPTION-71" href="#perlsub-DESCRIPTION">73.3 
DESCRIPTION</a>
+    <ul class="no-bullet">
+      <li><a name="toc-Signatures" href="#perlsub-Signatures">73.3.1 
Signatures</a></li>
+      <li><a name="toc-Private-Variables-via-my_0028_0029" 
href="#perlsub-Private-Variables-via-my_0028_0029">73.3.2 Private Variables via 
my()</a></li>
+      <li><a name="toc-Persistent-Private-Variables" 
href="#perlsub-Persistent-Private-Variables">73.3.3 Persistent Private 
Variables</a>
+      <ul class="no-bullet">
+        <li><a name="toc-Persistent-variables-via-state_0028_0029" 
href="#perlsub-Persistent-variables-via-state_0028_0029">73.3.3.1 Persistent 
variables via state()</a></li>
+        <li><a name="toc-Persistent-variables-with-closures" 
href="#perlsub-Persistent-variables-with-closures">73.3.3.2 Persistent 
variables with closures</a></li>
+      </ul></li>
+      <li><a name="toc-Temporary-Values-via-local_0028_0029" 
href="#perlsub-Temporary-Values-via-local_0028_0029">73.3.4 Temporary Values 
via local()</a>
+      <ul class="no-bullet">
+        <li><a name="toc-Grammatical-note-on-local_0028_0029" 
href="#perlsub-Grammatical-note-on-local_0028_0029">73.3.4.1 Grammatical note 
on local()</a></li>
+        <li><a name="toc-Localization-of-special-variables" 
href="#perlsub-Localization-of-special-variables">73.3.4.2 Localization of 
special variables</a></li>
+        <li><a name="toc-Localization-of-globs" 
href="#perlsub-Localization-of-globs">73.3.4.3 Localization of globs</a></li>
+        <li><a name="toc-Localization-of-elements-of-composite-types" 
href="#perlsub-Localization-of-elements-of-composite-types">73.3.4.4 
Localization of elements of composite types</a></li>
+        <li><a name="toc-Localized-deletion-of-elements-of-composite-types" 
href="#perlsub-Localized-deletion-of-elements-of-composite-types">73.3.4.5 
Localized deletion of elements of composite types</a></li>
+      </ul></li>
+      <li><a name="toc-Lvalue-subroutines" 
href="#perlsub-Lvalue-subroutines">73.3.5 Lvalue subroutines</a></li>
+      <li><a name="toc-Lexical-Subroutines" 
href="#perlsub-Lexical-Subroutines">73.3.6 Lexical Subroutines</a>
+      <ul class="no-bullet">
+        <li><a name="toc-state-sub-vs-my-sub" 
href="#perlsub-state-sub-vs-my-sub">73.3.6.1 <code>state sub</code> vs <code>my 
sub</code></a></li>
+        <li><a name="toc-our-subroutines" 
href="#perlsub-our-subroutines">73.3.6.2 <code>our</code> subroutines</a></li>
+      </ul></li>
+      <li><a name="toc-Passing-Symbol-Table-Entries-_0028typeglobs_0029" 
href="#perlsub-Passing-Symbol-Table-Entries-_0028typeglobs_0029">73.3.7 Passing 
Symbol Table Entries (typeglobs)</a></li>
+      <li><a name="toc-When-to-Still-Use-local_0028_0029" 
href="#perlsub-When-to-Still-Use-local_0028_0029">73.3.8 When to Still Use 
local()</a></li>
+      <li><a name="toc-Pass-by-Reference" 
href="#perlsub-Pass-by-Reference">73.3.9 Pass by Reference</a></li>
+      <li><a name="toc-Prototypes" href="#perlsub-Prototypes">73.3.10 
Prototypes</a></li>
+      <li><a name="toc-Constant-Functions" 
href="#perlsub-Constant-Functions">73.3.11 Constant Functions</a></li>
+      <li><a name="toc-Overriding-Built_002din-Functions" 
href="#perlsub-Overriding-Built_002din-Functions">73.3.12 Overriding Built-in 
Functions</a></li>
+      <li><a name="toc-Autoloading" href="#perlsub-Autoloading">73.3.13 
Autoloading</a></li>
+      <li><a name="toc-Subroutine-Attributes" 
href="#perlsub-Subroutine-Attributes">73.3.14 Subroutine Attributes</a></li>
+    </ul></li>
+    <li><a name="toc-SEE-ALSO-36" href="#perlsub-SEE-ALSO">73.4 SEE 
ALSO</a></li>
+  </ul></li>
+  <li><a name="toc-perlsyn-2" href="#perlsyn">74 perlsyn</a>
+  <ul class="no-bullet">
+    <li><a name="toc-NAME-73" href="#perlsyn-NAME">74.1 NAME</a></li>
+    <li><a name="toc-DESCRIPTION-72" href="#perlsyn-DESCRIPTION">74.2 
DESCRIPTION</a>
+    <ul class="no-bullet">
+      <li><a name="toc-Declarations" href="#perlsyn-Declarations">74.2.1 
Declarations</a></li>
+      <li><a name="toc-Comments" href="#perlsyn-Comments">74.2.2 
Comments</a></li>
+      <li><a name="toc-Simple-Statements" 
href="#perlsyn-Simple-Statements">74.2.3 Simple Statements</a></li>
+      <li><a name="toc-Truth-and-Falsehood" 
href="#perlsyn-Truth-and-Falsehood">74.2.4 Truth and Falsehood</a></li>
+      <li><a name="toc-Statement-Modifiers" 
href="#perlsyn-Statement-Modifiers">74.2.5 Statement Modifiers</a></li>
+      <li><a name="toc-Compound-Statements" 
href="#perlsyn-Compound-Statements">74.2.6 Compound Statements</a></li>
+      <li><a name="toc-Loop-Control" href="#perlsyn-Loop-Control">74.2.7 Loop 
Control</a></li>
+      <li><a name="toc-For-Loops" href="#perlsyn-For-Loops">74.2.8 For 
Loops</a></li>
+      <li><a name="toc-Foreach-Loops" href="#perlsyn-Foreach-Loops">74.2.9 
Foreach Loops</a></li>
+      <li><a name="toc-Basic-BLOCKs" href="#perlsyn-Basic-BLOCKs">74.2.10 
Basic BLOCKs</a></li>
+      <li><a name="toc-Switch-Statements" 
href="#perlsyn-Switch-Statements">74.2.11 Switch Statements</a></li>
+      <li><a name="toc-Goto" href="#perlsyn-Goto">74.2.12 Goto</a></li>
+      <li><a name="toc-The-Ellipsis-Statement" 
href="#perlsyn-The-Ellipsis-Statement">74.2.13 The Ellipsis Statement</a></li>
+      <li><a name="toc-PODs_003a-Embedded-Documentation" 
href="#perlsyn-PODs_003a-Embedded-Documentation">74.2.14 PODs: Embedded 
Documentation</a></li>
+      <li><a name="toc-Plain-Old-Comments-_0028Not_0021_0029" 
href="#perlsyn-Plain-Old-Comments-_0028Not_0021_0029">74.2.15 Plain Old 
Comments (Not!)</a></li>
+      <li><a name="toc-Experimental-Details-on-given-and-when" 
href="#perlsyn-Experimental-Details-on-given-and-when">74.2.16 Experimental 
Details on given and when</a>
+      <ul class="no-bullet">
+        <li><a name="toc-Breaking-out" href="#perlsyn-Breaking-out">74.2.16.1 
Breaking out</a></li>
+        <li><a name="toc-Fall_002dthrough" 
href="#perlsyn-Fall_002dthrough">74.2.16.2 Fall-through</a></li>
+        <li><a name="toc-Return-value" href="#perlsyn-Return-value">74.2.16.3 
Return value</a></li>
+        <li><a name="toc-Switching-in-a-loop" 
href="#perlsyn-Switching-in-a-loop">74.2.16.4 Switching in a loop</a></li>
+        <li><a name="toc-Differences-from-Perl-6" 
href="#perlsyn-Differences-from-Perl-6">74.2.16.5 Differences from Perl 
6</a></li>
+      </ul></li>
+    </ul></li>
+  </ul></li>
+  <li><a name="toc-perlthrtut-1" href="#perlthrtut">75 perlthrtut</a>
+  <ul class="no-bullet">
+    <li><a name="toc-NAME-74" href="#perlthrtut-NAME">75.1 NAME</a></li>
+    <li><a name="toc-DESCRIPTION-73" href="#perlthrtut-DESCRIPTION">75.2 
DESCRIPTION</a></li>
+    <li><a name="toc-What-Is-A-Thread-Anyway_003f" 
href="#perlthrtut-What-Is-A-Thread-Anyway_003f">75.3 What Is A Thread 
Anyway?</a></li>
+    <li><a name="toc-Threaded-Program-Models" 
href="#perlthrtut-Threaded-Program-Models">75.4 Threaded Program Models</a>
+    <ul class="no-bullet">
+      <li><a name="toc-Boss_002fWorker" 
href="#perlthrtut-Boss_002fWorker">75.4.1 Boss/Worker</a></li>
+      <li><a name="toc-Work-Crew" href="#perlthrtut-Work-Crew">75.4.2 Work 
Crew</a></li>
+      <li><a name="toc-Pipeline" href="#perlthrtut-Pipeline">75.4.3 
Pipeline</a></li>
+    </ul></li>
+    <li><a name="toc-What-kind-of-threads-are-Perl-threads_003f" 
href="#perlthrtut-What-kind-of-threads-are-Perl-threads_003f">75.5 What kind of 
threads are Perl threads?</a></li>
+    <li><a name="toc-Thread_002dSafe-Modules" 
href="#perlthrtut-Thread_002dSafe-Modules">75.6 Thread-Safe Modules</a></li>
+    <li><a name="toc-Thread-Basics" href="#perlthrtut-Thread-Basics">75.7 
Thread Basics</a>
+    <ul class="no-bullet">
+      <li><a name="toc-Basic-Thread-Support" 
href="#perlthrtut-Basic-Thread-Support">75.7.1 Basic Thread Support</a></li>
+      <li><a name="toc-A-Note-about-the-Examples" 
href="#perlthrtut-A-Note-about-the-Examples">75.7.2 A Note about the 
Examples</a></li>
+      <li><a name="toc-Creating-Threads" 
href="#perlthrtut-Creating-Threads">75.7.3 Creating Threads</a></li>
+      <li><a name="toc-Waiting-For-A-Thread-To-Exit" 
href="#perlthrtut-Waiting-For-A-Thread-To-Exit">75.7.4 Waiting For A Thread To 
Exit</a></li>
+      <li><a name="toc-Ignoring-A-Thread" 
href="#perlthrtut-Ignoring-A-Thread">75.7.5 Ignoring A Thread</a></li>
+      <li><a name="toc-Process-and-Thread-Termination" 
href="#perlthrtut-Process-and-Thread-Termination">75.7.6 Process and Thread 
Termination</a></li>
+    </ul></li>
+    <li><a name="toc-Threads-And-Data" 
href="#perlthrtut-Threads-And-Data">75.8 Threads And Data</a>
+    <ul class="no-bullet">
+      <li><a name="toc-Shared-And-Unshared-Data" 
href="#perlthrtut-Shared-And-Unshared-Data">75.8.1 Shared And Unshared 
Data</a></li>
+      <li><a name="toc-Thread-Pitfalls_003a-Races" 
href="#perlthrtut-Thread-Pitfalls_003a-Races">75.8.2 Thread Pitfalls: 
Races</a></li>
+    </ul></li>
+    <li><a name="toc-Synchronization-and-control" 
href="#perlthrtut-Synchronization-and-control">75.9 Synchronization and 
control</a>
+    <ul class="no-bullet">
+      <li><a name="toc-Controlling-access_003a-lock_0028_0029" 
href="#perlthrtut-Controlling-access_003a-lock_0028_0029">75.9.1 Controlling 
access: lock()</a></li>
+      <li><a name="toc-A-Thread-Pitfall_003a-Deadlocks" 
href="#perlthrtut-A-Thread-Pitfall_003a-Deadlocks">75.9.2 A Thread Pitfall: 
Deadlocks</a></li>
+      <li><a name="toc-Queues_003a-Passing-Data-Around" 
href="#perlthrtut-Queues_003a-Passing-Data-Around">75.9.3 Queues: Passing Data 
Around</a></li>
+      <li><a name="toc-Semaphores_003a-Synchronizing-Data-Access" 
href="#perlthrtut-Semaphores_003a-Synchronizing-Data-Access">75.9.4 Semaphores: 
Synchronizing Data Access</a></li>
+      <li><a name="toc-Basic-semaphores" 
href="#perlthrtut-Basic-semaphores">75.9.5 Basic semaphores</a></li>
+      <li><a name="toc-Advanced-Semaphores" 
href="#perlthrtut-Advanced-Semaphores">75.9.6 Advanced Semaphores</a></li>
+      <li><a name="toc-Waiting-for-a-Condition" 
href="#perlthrtut-Waiting-for-a-Condition">75.9.7 Waiting for a 
Condition</a></li>
+      <li><a name="toc-Giving-up-control" 
href="#perlthrtut-Giving-up-control">75.9.8 Giving up control</a></li>
+    </ul></li>
+    <li><a name="toc-General-Thread-Utility-Routines" 
href="#perlthrtut-General-Thread-Utility-Routines">75.10 General Thread Utility 
Routines</a>
+    <ul class="no-bullet">
+      <li><a name="toc-What-Thread-Am-I-In_003f" 
href="#perlthrtut-What-Thread-Am-I-In_003f">75.10.1 What Thread Am I 
In?</a></li>
+      <li><a name="toc-Thread-IDs" href="#perlthrtut-Thread-IDs">75.10.2 
Thread IDs</a></li>
+      <li><a name="toc-Are-These-Threads-The-Same_003f" 
href="#perlthrtut-Are-These-Threads-The-Same_003f">75.10.3 Are These Threads 
The Same?</a></li>
+      <li><a name="toc-What-Threads-Are-Running_003f" 
href="#perlthrtut-What-Threads-Are-Running_003f">75.10.4 What Threads Are 
Running?</a></li>
+    </ul></li>
+    <li><a name="toc-A-Complete-Example" 
href="#perlthrtut-A-Complete-Example">75.11 A Complete Example</a></li>
+    <li><a name="toc-Different-implementations-of-threads" 
href="#perlthrtut-Different-implementations-of-threads">75.12 Different 
implementations of threads</a></li>
+    <li><a name="toc-Performance-considerations" 
href="#perlthrtut-Performance-considerations">75.13 Performance 
considerations</a></li>
+    <li><a name="toc-Process_002dscope-Changes" 
href="#perlthrtut-Process_002dscope-Changes">75.14 Process-scope 
Changes</a></li>
+    <li><a name="toc-Thread_002dSafety-of-System-Libraries" 
href="#perlthrtut-Thread_002dSafety-of-System-Libraries">75.15 Thread-Safety of 
System Libraries</a></li>
+    <li><a name="toc-Conclusion" href="#perlthrtut-Conclusion">75.16 
Conclusion</a></li>
+    <li><a name="toc-SEE-ALSO-37" href="#perlthrtut-SEE-ALSO">75.17 SEE 
ALSO</a></li>
+    <li><a name="toc-Bibliography" href="#perlthrtut-Bibliography">75.18 
Bibliography</a>
+    <ul class="no-bullet">
+      <li><a name="toc-Introductory-Texts" 
href="#perlthrtut-Introductory-Texts">75.18.1 Introductory Texts</a></li>
+      <li><a name="toc-OS_002dRelated-References" 
href="#perlthrtut-OS_002dRelated-References">75.18.2 OS-Related 
References</a></li>
+      <li><a name="toc-Other-References" 
href="#perlthrtut-Other-References">75.18.3 Other References</a></li>
+    </ul></li>
+    <li><a name="toc-Acknowledgements" 
href="#perlthrtut-Acknowledgements">75.19 Acknowledgements</a></li>
+    <li><a name="toc-AUTHOR-27" href="#perlthrtut-AUTHOR">75.20 AUTHOR</a></li>
+    <li><a name="toc-Copyrights-1" href="#perlthrtut-Copyrights">75.21 
Copyrights</a></li>
+  </ul></li>
+  <li><a name="toc-perltie-1" href="#perltie">76 perltie</a>
+  <ul class="no-bullet">
+    <li><a name="toc-NAME-75" href="#perltie-NAME">76.1 NAME</a></li>
+    <li><a name="toc-SYNOPSIS-11" href="#perltie-SYNOPSIS">76.2 
SYNOPSIS</a></li>
+    <li><a name="toc-DESCRIPTION-74" href="#perltie-DESCRIPTION">76.3 
DESCRIPTION</a>
+    <ul class="no-bullet">
+      <li><a name="toc-Tying-Scalars" href="#perltie-Tying-Scalars">76.3.1 
Tying Scalars</a></li>
+      <li><a name="toc-Tying-Arrays" href="#perltie-Tying-Arrays">76.3.2 Tying 
Arrays</a></li>
+      <li><a name="toc-Tying-Hashes" href="#perltie-Tying-Hashes">76.3.3 Tying 
Hashes</a></li>
+      <li><a name="toc-Tying-FileHandles" 
href="#perltie-Tying-FileHandles">76.3.4 Tying FileHandles</a></li>
+      <li><a name="toc-UNTIE-this" href="#perltie-UNTIE-this-4">76.3.5 UNTIE 
this</a></li>
+      <li><a name="toc-The-untie-Gotcha" 
href="#perltie-The-untie-Gotcha">76.3.6 The <code>untie</code> Gotcha</a></li>
+    </ul></li>
+    <li><a name="toc-SEE-ALSO-38" href="#perltie-SEE-ALSO">76.4 SEE 
ALSO</a></li>
+    <li><a name="toc-BUGS-9" href="#perltie-BUGS">76.5 BUGS</a></li>
+    <li><a name="toc-AUTHOR-28" href="#perltie-AUTHOR">76.6 AUTHOR</a></li>
+  </ul></li>
+  <li><a name="toc-perltodo-1" href="#perltodo">77 perltodo</a>
+  <ul class="no-bullet">
+    <li><a name="toc-NAME-76" href="#perltodo-NAME">77.1 NAME</a></li>
+    <li><a name="toc-DESCRIPTION-75" href="#perltodo-DESCRIPTION">77.2 
DESCRIPTION</a></li>
+  </ul></li>
+  <li><a name="toc-perltooc-1" href="#perltooc">78 perltooc</a>
+  <ul class="no-bullet">
+    <li><a name="toc-NAME-77" href="#perltooc-NAME">78.1 NAME</a></li>
+    <li><a name="toc-DESCRIPTION-76" href="#perltooc-DESCRIPTION">78.2 
DESCRIPTION</a></li>
+  </ul></li>
+  <li><a name="toc-perltoot-1" href="#perltoot">79 perltoot</a>
+  <ul class="no-bullet">
+    <li><a name="toc-NAME-78" href="#perltoot-NAME">79.1 NAME</a></li>
+    <li><a name="toc-DESCRIPTION-77" href="#perltoot-DESCRIPTION">79.2 
DESCRIPTION</a></li>
+  </ul></li>
+  <li><a name="toc-perltrap-1" href="#perltrap">80 perltrap</a>
+  <ul class="no-bullet">
+    <li><a name="toc-NAME-79" href="#perltrap-NAME">80.1 NAME</a></li>
+    <li><a name="toc-DESCRIPTION-78" href="#perltrap-DESCRIPTION">80.2 
DESCRIPTION</a>
+    <ul class="no-bullet">
+      <li><a name="toc-Awk-Traps" href="#perltrap-Awk-Traps">80.2.1 Awk 
Traps</a></li>
+      <li><a name="toc-C_002fC_002b_002b-Traps" 
href="#perltrap-C_002fC_002b_002b-Traps">80.2.2 C/C++ Traps</a></li>
+      <li><a name="toc-JavaScript-Traps" 
href="#perltrap-JavaScript-Traps">80.2.3 JavaScript Traps</a></li>
+      <li><a name="toc-Sed-Traps" href="#perltrap-Sed-Traps">80.2.4 Sed 
Traps</a></li>
+      <li><a name="toc-Shell-Traps" href="#perltrap-Shell-Traps">80.2.5 Shell 
Traps</a></li>
+      <li><a name="toc-Perl-Traps" href="#perltrap-Perl-Traps">80.2.6 Perl 
Traps</a></li>
+    </ul></li>
+  </ul></li>
+  <li><a name="toc-perlunicode-1" href="#perlunicode">81 perlunicode</a>
+  <ul class="no-bullet">
+    <li><a name="toc-NAME-80" href="#perlunicode-NAME">81.1 NAME</a></li>
+    <li><a name="toc-DESCRIPTION-79" href="#perlunicode-DESCRIPTION">81.2 
DESCRIPTION</a>
+    <ul class="no-bullet">
+      <li><a name="toc-Important-Caveats" 
href="#perlunicode-Important-Caveats">81.2.1 Important Caveats</a></li>
+      <li><a name="toc-Byte-and-Character-Semantics" 
href="#perlunicode-Byte-and-Character-Semantics">81.2.2 Byte and Character 
Semantics</a></li>
+      <li><a name="toc-Effects-of-Character-Semantics" 
href="#perlunicode-Effects-of-Character-Semantics">81.2.3 Effects of Character 
Semantics</a></li>
+      <li><a name="toc-Unicode-Character-Properties" 
href="#perlunicode-Unicode-Character-Properties">81.2.4 Unicode Character 
Properties</a>
+      <ul class="no-bullet">
+        <li><a name="toc-General_005fCategory" 
href="#perlunicode-General_005fCategory">81.2.4.1 
<strong>General_Category</strong></a></li>
+        <li><a name="toc-Bidirectional-Character-Types" 
href="#perlunicode-Bidirectional-Character-Types">81.2.4.2 
<strong>Bidirectional Character Types</strong></a></li>
+        <li><a name="toc-Scripts" href="#perlunicode-Scripts">81.2.4.3 
<strong>Scripts</strong></a></li>
+        <li><a name="toc-Use-of-the-_0022Is_0022-Prefix" 
href="#perlunicode-Use-of-the-_0022Is_0022-Prefix">81.2.4.4 <strong>Use of the 
<code>&quot;Is&quot;</code> Prefix</strong></a></li>
+        <li><a name="toc-Blocks" href="#perlunicode-Blocks">81.2.4.5 
<strong>Blocks</strong></a></li>
+        <li><a name="toc-Other-Properties" 
href="#perlunicode-Other-Properties">81.2.4.6 <strong>Other 
Properties</strong></a></li>
+      </ul></li>
+      <li><a name="toc-User_002dDefined-Character-Properties" 
href="#perlunicode-User_002dDefined-Character-Properties">81.2.5 User-Defined 
Character Properties</a></li>
+      <li><a 
name="toc-User_002dDefined-Case-Mappings-_0028for-serious-hackers-only_0029" 
href="#perlunicode-User_002dDefined-Case-Mappings-_0028for-serious-hackers-only_0029">81.2.6
 User-Defined Case Mappings (for serious hackers only)</a></li>
+      <li><a name="toc-Character-Encodings-for-Input-and-Output" 
href="#perlunicode-Character-Encodings-for-Input-and-Output">81.2.7 Character 
Encodings for Input and Output</a></li>
+      <li><a name="toc-Unicode-Regular-Expression-Support-Level" 
href="#perlunicode-Unicode-Regular-Expression-Support-Level">81.2.8 Unicode 
Regular Expression Support Level</a></li>
+      <li><a name="toc-Unicode-Encodings" 
href="#perlunicode-Unicode-Encodings">81.2.9 Unicode Encodings</a></li>
+      <li><a name="toc-Non_002dcharacter-code-points" 
href="#perlunicode-Non_002dcharacter-code-points">81.2.10 Non-character code 
points</a></li>
+      <li><a name="toc-Beyond-Unicode-code-points" 
href="#perlunicode-Beyond-Unicode-code-points">81.2.11 Beyond Unicode code 
points</a></li>
+      <li><a name="toc-Security-Implications-of-Unicode" 
href="#perlunicode-Security-Implications-of-Unicode">81.2.12 Security 
Implications of Unicode</a></li>
+      <li><a name="toc-Unicode-in-Perl-on-EBCDIC" 
href="#perlunicode-Unicode-in-Perl-on-EBCDIC">81.2.13 Unicode in Perl on 
EBCDIC</a></li>
+      <li><a name="toc-Locales" href="#perlunicode-Locales">81.2.14 
Locales</a></li>
+      <li><a name="toc-When-Unicode-Does-Not-Happen" 
href="#perlunicode-When-Unicode-Does-Not-Happen">81.2.15 When Unicode Does Not 
Happen</a></li>
+      <li><a name="toc-The-_0022Unicode-Bug_0022" 
href="#perlunicode-The-_0022Unicode-Bug_0022">81.2.16 The &quot;Unicode 
Bug&quot;</a></li>
+      <li><a 
name="toc-Forcing-Unicode-in-Perl-_0028Or-Unforcing-Unicode-in-Perl_0029" 
href="#perlunicode-Forcing-Unicode-in-Perl-_0028Or-Unforcing-Unicode-in-Perl_0029">81.2.17
 Forcing Unicode in Perl (Or Unforcing Unicode in Perl)</a></li>
+      <li><a name="toc-Using-Unicode-in-XS" 
href="#perlunicode-Using-Unicode-in-XS">81.2.18 Using Unicode in XS</a></li>
+      <li><a 
name="toc-Hacking-Perl-to-work-on-earlier-Unicode-versions-_0028for-very-serious-hackers-only_0029"
 
href="#perlunicode-Hacking-Perl-to-work-on-earlier-Unicode-versions-_0028for-very-serious-hackers-only_0029">81.2.19
 Hacking Perl to work on earlier Unicode versions (for very serious hackers 
only)</a></li>
+    </ul></li>
+    <li><a name="toc-BUGS-10" href="#perlunicode-BUGS">81.3 BUGS</a>
+    <ul class="no-bullet">
+      <li><a name="toc-Interaction-with-Locales" 
href="#perlunicode-Interaction-with-Locales">81.3.1 Interaction with 
Locales</a></li>
+      <li><a 
name="toc-Problems-with-characters-in-the-Latin_002d1-Supplement-range" 
href="#perlunicode-Problems-with-characters-in-the-Latin_002d1-Supplement-range">81.3.2
 Problems with characters in the Latin-1 Supplement range</a></li>
+      <li><a name="toc-Interaction-with-Extensions" 
href="#perlunicode-Interaction-with-Extensions">81.3.3 Interaction with 
Extensions</a></li>
+      <li><a name="toc-Speed" href="#perlunicode-Speed">81.3.4 Speed</a></li>
+      <li><a name="toc-Problems-on-EBCDIC-platforms" 
href="#perlunicode-Problems-on-EBCDIC-platforms">81.3.5 Problems on EBCDIC 
platforms</a></li>
+      <li><a name="toc-Porting-code-from-perl_002d5_002e6_002eX" 
href="#perlunicode-Porting-code-from-perl_002d5_002e6_002eX">81.3.6 Porting 
code from perl-5.6.X</a></li>
+    </ul></li>
+    <li><a name="toc-SEE-ALSO-39" href="#perlunicode-SEE-ALSO">81.4 SEE 
ALSO</a></li>
+  </ul></li>
+  <li><a name="toc-perlunifaq-1" href="#perlunifaq">82 perlunifaq</a>
+  <ul class="no-bullet">
+    <li><a name="toc-NAME-81" href="#perlunifaq-NAME">82.1 NAME</a></li>
+    <li><a name="toc-Q-and-A" href="#perlunifaq-Q-and-A">82.2 Q and A</a>
+    <ul class="no-bullet">
+      <li><a 
name="toc-perlunitut-isn_0027t-really-a-Unicode-tutorial_002c-is-it_003f" 
href="#perlunifaq-perlunitut-isn_0027t-really-a-Unicode-tutorial_002c-is-it_003f">82.2.1
 perlunitut isn&rsquo;t really a Unicode tutorial, is it?</a></li>
+      <li><a name="toc-What-character-encodings-does-Perl-support_003f" 
href="#perlunifaq-What-character-encodings-does-Perl-support_003f">82.2.2 What 
character encodings does Perl support?</a></li>
+      <li><a name="toc-Which-version-of-perl-should-I-use_003f" 
href="#perlunifaq-Which-version-of-perl-should-I-use_003f">82.2.3 Which version 
of perl should I use?</a></li>
+      <li><a name="toc-What-about-binary-data_002c-like-images_003f" 
href="#perlunifaq-What-about-binary-data_002c-like-images_003f">82.2.4 What 
about binary data, like images?</a></li>
+      <li><a name="toc-When-should-I-decode-or-encode_003f" 
href="#perlunifaq-When-should-I-decode-or-encode_003f">82.2.5 When should I 
decode or encode?</a></li>
+      <li><a name="toc-What-if-I-don_0027t-decode_003f" 
href="#perlunifaq-What-if-I-don_0027t-decode_003f">82.2.6 What if I don&rsquo;t 
decode?</a></li>
+      <li><a name="toc-What-if-I-don_0027t-encode_003f" 
href="#perlunifaq-What-if-I-don_0027t-encode_003f">82.2.7 What if I don&rsquo;t 
encode?</a></li>
+      <li><a name="toc-Is-there-a-way-to-automatically-decode-or-encode_003f" 
href="#perlunifaq-Is-there-a-way-to-automatically-decode-or-encode_003f">82.2.8 
Is there a way to automatically decode or encode?</a></li>
+      <li><a name="toc-What-if-I-don_0027t-know-which-encoding-was-used_003f" 
href="#perlunifaq-What-if-I-don_0027t-know-which-encoding-was-used_003f">82.2.9 
What if I don&rsquo;t know which encoding was used?</a></li>
+      <li><a name="toc-Can-I-use-Unicode-in-my-Perl-sources_003f" 
href="#perlunifaq-Can-I-use-Unicode-in-my-Perl-sources_003f">82.2.10 Can I use 
Unicode in my Perl sources?</a></li>
+      <li><a 
name="toc-Data_003a_003aDumper-doesn_0027t-restore-the-UTF8-flag_003b-is-it-broken_003f"
 
href="#perlunifaq-Data_003a_003aDumper-doesn_0027t-restore-the-UTF8-flag_003b-is-it-broken_003f">82.2.11
 Data::Dumper doesn&rsquo;t restore the UTF8 flag; is it broken?</a></li>
+      <li><a 
name="toc-Why-do-regex-character-classes-sometimes-match-only-in-the-ASCII-range_003f"
 
href="#perlunifaq-Why-do-regex-character-classes-sometimes-match-only-in-the-ASCII-range_003f">82.2.12
 Why do regex character classes sometimes match only in the ASCII 
range?</a></li>
+      <li><a 
name="toc-Why-do-some-characters-not-uppercase-or-lowercase-correctly_003f" 
href="#perlunifaq-Why-do-some-characters-not-uppercase-or-lowercase-correctly_003f">82.2.13
 Why do some characters not uppercase or lowercase correctly?</a></li>
+      <li><a 
name="toc-How-can-I-determine-if-a-string-is-a-text-string-or-a-binary-string_003f"
 
href="#perlunifaq-How-can-I-determine-if-a-string-is-a-text-string-or-a-binary-string_003f">82.2.14
 How can I determine if a string is a text string or a binary string?</a></li>
+      <li><a 
name="toc-How-do-I-convert-from-encoding-FOO-to-encoding-BAR_003f" 
href="#perlunifaq-How-do-I-convert-from-encoding-FOO-to-encoding-BAR_003f">82.2.15
 How do I convert from encoding FOO to encoding BAR?</a></li>
+      <li><a name="toc-What-are-decode_005futf8-and-encode_005futf8_003f" 
href="#perlunifaq-What-are-decode_005futf8-and-encode_005futf8_003f">82.2.16 
What are <code>decode_utf8</code> and <code>encode_utf8</code>?</a></li>
+      <li><a name="toc-What-is-a-_0022wide-character_0022_003f" 
href="#perlunifaq-What-is-a-_0022wide-character_0022_003f">82.2.17 What is a 
&quot;wide character&quot;?</a></li>
+    </ul></li>
+    <li><a name="toc-INTERNALS" href="#perlunifaq-INTERNALS">82.3 INTERNALS</a>
+    <ul class="no-bullet">
+      <li><a name="toc-What-is-_0022the-UTF8-flag_0022_003f" 
href="#perlunifaq-What-is-_0022the-UTF8-flag_0022_003f">82.3.1 What is 
&quot;the UTF8 flag&quot;?</a></li>
+      <li><a name="toc-What-about-the-use-bytes-pragma_003f" 
href="#perlunifaq-What-about-the-use-bytes-pragma_003f">82.3.2 What about the 
<code>use bytes</code> pragma?</a></li>
+      <li><a name="toc-What-about-the-use-encoding-pragma_003f" 
href="#perlunifaq-What-about-the-use-encoding-pragma_003f">82.3.3 What about 
the <code>use encoding</code> pragma?</a></li>
+      <li><a 
name="toc-What-is-the-difference-between-_003aencoding-and-_003autf8_003f" 
href="#perlunifaq-What-is-the-difference-between-_003aencoding-and-_003autf8_003f">82.3.4
 What is the difference between <code>:encoding</code> and 
<code>:utf8</code>?</a></li>
+      <li><a 
name="toc-What_0027s-the-difference-between-UTF_002d8-and-utf8_003f" 
href="#perlunifaq-What_0027s-the-difference-between-UTF_002d8-and-utf8_003f">82.3.5
 What&rsquo;s the difference between <code>UTF-8</code> and 
<code>utf8</code>?</a></li>
+      <li><a 
name="toc-I-lost-track_003b-what-encoding-is-the-internal-format-really_003f" 
href="#perlunifaq-I-lost-track_003b-what-encoding-is-the-internal-format-really_003f">82.3.6
 I lost track; what encoding is the internal format really?</a></li>
+    </ul></li>
+    <li><a name="toc-AUTHOR-29" href="#perlunifaq-AUTHOR">82.4 AUTHOR</a></li>
+    <li><a name="toc-SEE-ALSO-40" href="#perlunifaq-SEE-ALSO">82.5 SEE 
ALSO</a></li>
+  </ul></li>
+  <li><a name="toc-perluniintro-1" href="#perluniintro">83 perluniintro</a>
+  <ul class="no-bullet">
+    <li><a name="toc-NAME-82" href="#perluniintro-NAME">83.1 NAME</a></li>
+    <li><a name="toc-DESCRIPTION-80" href="#perluniintro-DESCRIPTION">83.2 
DESCRIPTION</a>
+    <ul class="no-bullet">
+      <li><a name="toc-Unicode-2" href="#perluniintro-Unicode">83.2.1 
Unicode</a></li>
+      <li><a name="toc-Perl_0027s-Unicode-Support" 
href="#perluniintro-Perl_0027s-Unicode-Support">83.2.2 Perl&rsquo;s Unicode 
Support</a></li>
+      <li><a name="toc-Perl_0027s-Unicode-Model" 
href="#perluniintro-Perl_0027s-Unicode-Model">83.2.3 Perl&rsquo;s Unicode 
Model</a></li>
+      <li><a name="toc-Unicode-and-EBCDIC" 
href="#perluniintro-Unicode-and-EBCDIC">83.2.4 Unicode and EBCDIC</a></li>
+      <li><a name="toc-Creating-Unicode" 
href="#perluniintro-Creating-Unicode">83.2.5 Creating Unicode</a></li>
+      <li><a name="toc-Handling-Unicode" 
href="#perluniintro-Handling-Unicode">83.2.6 Handling Unicode</a></li>
+      <li><a name="toc-Legacy-Encodings" 
href="#perluniintro-Legacy-Encodings">83.2.7 Legacy Encodings</a></li>
+      <li><a name="toc-Unicode-I_002fO" 
href="#perluniintro-Unicode-I_002fO">83.2.8 Unicode I/O</a></li>
+      <li><a name="toc-Displaying-Unicode-As-Text" 
href="#perluniintro-Displaying-Unicode-As-Text">83.2.9 Displaying Unicode As 
Text</a></li>
+      <li><a name="toc-Special-Cases" 
href="#perluniintro-Special-Cases">83.2.10 Special Cases</a></li>
+      <li><a name="toc-Advanced-Topics" 
href="#perluniintro-Advanced-Topics">83.2.11 Advanced Topics</a></li>
+      <li><a name="toc-Miscellaneous-1" 
href="#perluniintro-Miscellaneous">83.2.12 Miscellaneous</a></li>
+      <li><a name="toc-Questions-With-Answers" 
href="#perluniintro-Questions-With-Answers">83.2.13 Questions With 
Answers</a></li>
+      <li><a name="toc-Hexadecimal-Notation" 
href="#perluniintro-Hexadecimal-Notation">83.2.14 Hexadecimal Notation</a></li>
+      <li><a name="toc-Further-Resources" 
href="#perluniintro-Further-Resources">83.2.15 Further Resources</a></li>
+    </ul></li>
+    <li><a name="toc-UNICODE-IN-OLDER-PERLS" 
href="#perluniintro-UNICODE-IN-OLDER-PERLS">83.3 UNICODE IN OLDER PERLS</a></li>
+    <li><a name="toc-SEE-ALSO-41" href="#perluniintro-SEE-ALSO">83.4 SEE 
ALSO</a></li>
+    <li><a name="toc-ACKNOWLEDGMENTS" 
href="#perluniintro-ACKNOWLEDGMENTS">83.5 ACKNOWLEDGMENTS</a></li>
+    <li><a name="toc-AUTHOR_002c-COPYRIGHT_002c-AND-LICENSE" 
href="#perluniintro-AUTHOR_002c-COPYRIGHT_002c-AND-LICENSE">83.6 AUTHOR, 
COPYRIGHT, AND LICENSE</a></li>
+  </ul></li>
+  <li><a name="toc-perlunitut-1" href="#perlunitut">84 perlunitut</a>
+  <ul class="no-bullet">
+    <li><a name="toc-NAME-83" href="#perlunitut-NAME">84.1 NAME</a></li>
+    <li><a name="toc-DESCRIPTION-81" href="#perlunitut-DESCRIPTION">84.2 
DESCRIPTION</a>
+    <ul class="no-bullet">
+      <li><a name="toc-Definitions-1" href="#perlunitut-Definitions">84.2.1 
Definitions</a>
+      <ul class="no-bullet">
+        <li><a name="toc-Unicode-3" href="#perlunitut-Unicode">84.2.1.1 
Unicode</a></li>
+        <li><a name="toc-UTF_002d8" href="#perlunitut-UTF_002d8">84.2.1.2 
UTF-8</a></li>
+        <li><a name="toc-Text-strings-_0028character-strings_0029" 
href="#perlunitut-Text-strings-_0028character-strings_0029">84.2.1.3 Text 
strings (character strings)</a></li>
+        <li><a name="toc-Binary-strings-_0028byte-strings_0029" 
href="#perlunitut-Binary-strings-_0028byte-strings_0029">84.2.1.4 Binary 
strings (byte strings)</a></li>
+        <li><a name="toc-Encoding" href="#perlunitut-Encoding">84.2.1.5 
Encoding</a></li>
+        <li><a name="toc-Decoding" href="#perlunitut-Decoding">84.2.1.6 
Decoding</a></li>
+        <li><a name="toc-Internal-format" 
href="#perlunitut-Internal-format">84.2.1.7 Internal format</a></li>
+      </ul></li>
+      <li><a name="toc-Your-new-toolkit" 
href="#perlunitut-Your-new-toolkit">84.2.2 Your new toolkit</a></li>
+      <li><a name="toc-I_002fO-flow-_0028the-actual-5-minute-tutorial_0029" 
href="#perlunitut-I_002fO-flow-_0028the-actual-5-minute-tutorial_0029">84.2.3 
I/O flow (the actual 5 minute tutorial)</a></li>
+    </ul></li>
+    <li><a name="toc-SUMMARY-1" href="#perlunitut-SUMMARY">84.3 
SUMMARY</a></li>
+    <li><a name="toc-Q-and-A-_0028or-FAQ_0029" 
href="#perlunitut-Q-and-A-_0028or-FAQ_0029">84.4 Q and A (or FAQ)</a></li>
+    <li><a name="toc-ACKNOWLEDGEMENTS-1" 
href="#perlunitut-ACKNOWLEDGEMENTS">84.5 ACKNOWLEDGEMENTS</a></li>
+    <li><a name="toc-AUTHOR-30" href="#perlunitut-AUTHOR">84.6 AUTHOR</a></li>
+    <li><a name="toc-SEE-ALSO-42" href="#perlunitut-SEE-ALSO">84.7 SEE 
ALSO</a></li>
+  </ul></li>
+  <li><a name="toc-perlutil-1" href="#perlutil">85 perlutil</a>
+  <ul class="no-bullet">
+    <li><a name="toc-NAME-84" href="#perlutil-NAME">85.1 NAME</a></li>
+    <li><a name="toc-DESCRIPTION-82" href="#perlutil-DESCRIPTION">85.2 
DESCRIPTION</a></li>
+    <li><a name="toc-LIST-OF-UTILITIES" 
href="#perlutil-LIST-OF-UTILITIES">85.3 LIST OF UTILITIES</a>
+    <ul class="no-bullet">
+      <li><a name="toc-Documentation-2" href="#perlutil-Documentation">85.3.1 
Documentation</a></li>
+      <li><a name="toc-Converters" href="#perlutil-Converters">85.3.2 
Converters</a></li>
+      <li><a name="toc-Administration" href="#perlutil-Administration">85.3.3 
Administration</a></li>
+      <li><a name="toc-Development" href="#perlutil-Development">85.3.4 
Development</a></li>
+      <li><a name="toc-General-tools" href="#perlutil-General-tools">85.3.5 
General tools</a></li>
+      <li><a name="toc-Installation" href="#perlutil-Installation">85.3.6 
Installation</a></li>
+    </ul></li>
+    <li><a name="toc-SEE-ALSO-43" href="#perlutil-SEE-ALSO">85.4 SEE 
ALSO</a></li>
+  </ul></li>
+  <li><a name="toc-perlvar-1" href="#perlvar">86 perlvar</a>
+  <ul class="no-bullet">
+    <li><a name="toc-NAME-85" href="#perlvar-NAME">86.1 NAME</a></li>
+    <li><a name="toc-DESCRIPTION-83" href="#perlvar-DESCRIPTION">86.2 
DESCRIPTION</a>
+    <ul class="no-bullet">
+      <li><a name="toc-The-Syntax-of-Variable-Names" 
href="#perlvar-The-Syntax-of-Variable-Names">86.2.1 The Syntax of Variable 
Names</a></li>
+    </ul></li>
+    <li><a name="toc-SPECIAL-VARIABLES" href="#perlvar-SPECIAL-VARIABLES">86.3 
SPECIAL VARIABLES</a>
+    <ul class="no-bullet">
+      <li><a name="toc-General-Variables" 
href="#perlvar-General-Variables">86.3.1 General Variables</a></li>
+      <li><a name="toc-Variables-related-to-regular-expressions" 
href="#perlvar-Variables-related-to-regular-expressions">86.3.2 Variables 
related to regular expressions</a>
+      <ul class="no-bullet">
+        <li><a name="toc-Performance-issues" 
href="#perlvar-Performance-issues">86.3.2.1 Performance issues</a></li>
+      </ul></li>
+      <li><a name="toc-Variables-related-to-filehandles" 
href="#perlvar-Variables-related-to-filehandles">86.3.3 Variables related to 
filehandles</a>
+      <ul class="no-bullet">
+        <li><a name="toc-Variables-related-to-formats" 
href="#perlvar-Variables-related-to-formats">86.3.3.1 Variables related to 
formats</a></li>
+      </ul></li>
+      <li><a name="toc-Error-Variables" href="#perlvar-Error-Variables">86.3.4 
Error Variables</a></li>
+      <li><a name="toc-Variables-related-to-the-interpreter-state" 
href="#perlvar-Variables-related-to-the-interpreter-state">86.3.5 Variables 
related to the interpreter state</a></li>
+      <li><a name="toc-Deprecated-and-removed-variables" 
href="#perlvar-Deprecated-and-removed-variables">86.3.6 Deprecated and removed 
variables</a></li>
+    </ul></li>
+  </ul></li>
+  <li><a name="toc-perlvms-1" href="#perlvms">87 perlvms</a>
+  <ul class="no-bullet">
+    <li><a name="toc-NAME-86" href="#perlvms-NAME">87.1 NAME</a></li>
+    <li><a name="toc-DESCRIPTION-84" href="#perlvms-DESCRIPTION">87.2 
DESCRIPTION</a></li>
+    <li><a name="toc-Installation-1" href="#perlvms-Installation">87.3 
Installation</a></li>
+    <li><a name="toc-Organization-of-Perl-Images" 
href="#perlvms-Organization-of-Perl-Images">87.4 Organization of Perl Images</a>
+    <ul class="no-bullet">
+      <li><a name="toc-Core-Images" href="#perlvms-Core-Images">87.4.1 Core 
Images</a></li>
+      <li><a name="toc-Perl-Extensions" href="#perlvms-Perl-Extensions">87.4.2 
Perl Extensions</a></li>
+      <li><a name="toc-Installing-static-extensions" 
href="#perlvms-Installing-static-extensions">87.4.3 Installing static 
extensions</a></li>
+      <li><a name="toc-Installing-dynamic-extensions" 
href="#perlvms-Installing-dynamic-extensions">87.4.4 Installing dynamic 
extensions</a></li>
+    </ul></li>
+    <li><a name="toc-File-specifications" 
href="#perlvms-File-specifications">87.5 File specifications</a>
+    <ul class="no-bullet">
+      <li><a name="toc-Syntax-1" href="#perlvms-Syntax">87.5.1 Syntax</a></li>
+      <li><a name="toc-Filename-Case" href="#perlvms-Filename-Case">87.5.2 
Filename Case</a></li>
+      <li><a name="toc-Symbolic-Links" href="#perlvms-Symbolic-Links">87.5.3 
Symbolic Links</a></li>
+      <li><a name="toc-Wildcard-expansion" 
href="#perlvms-Wildcard-expansion">87.5.4 Wildcard expansion</a></li>
+      <li><a name="toc-Pipes" href="#perlvms-Pipes">87.5.5 Pipes</a></li>
+    </ul></li>
+    <li><a name="toc-PERL5LIB-and-PERLLIB" 
href="#perlvms-PERL5LIB-and-PERLLIB">87.6 PERL5LIB and PERLLIB</a></li>
+    <li><a name="toc-The-Perl-Forked-Debugger" 
href="#perlvms-The-Perl-Forked-Debugger">87.7 The Perl Forked Debugger</a></li>
+    <li><a name="toc-PERL_005fVMS_005fEXCEPTION_005fDEBUG" 
href="#perlvms-PERL_005fVMS_005fEXCEPTION_005fDEBUG">87.8 
PERL_VMS_EXCEPTION_DEBUG</a></li>
+    <li><a name="toc-Command-line" href="#perlvms-Command-line">87.9 Command 
line</a>
+    <ul class="no-bullet">
+      <li><a name="toc-I_002fO-redirection-and-backgrounding" 
href="#perlvms-I_002fO-redirection-and-backgrounding">87.9.1 I/O redirection 
and backgrounding</a></li>
+      <li><a name="toc-Command-line-switches" 
href="#perlvms-Command-line-switches">87.9.2 Command line switches</a></li>
+    </ul></li>
+    <li><a name="toc-Perl-functions" href="#perlvms-Perl-functions">87.10 Perl 
functions</a></li>
+    <li><a name="toc-Perl-variables" href="#perlvms-Perl-variables">87.11 Perl 
variables</a></li>
+    <li><a name="toc-Standard-modules-with-VMS_002dspecific-differences" 
href="#perlvms-Standard-modules-with-VMS_002dspecific-differences">87.12 
Standard modules with VMS-specific differences</a>
     <ul class="no-bullet">
-      <li><a name="toc-SDBM_005fFile" href="#perlvms-SDBM_005fFile">86.12.1 
SDBM_File</a></li>
+      <li><a name="toc-SDBM_005fFile" href="#perlvms-SDBM_005fFile">87.12.1 
SDBM_File</a></li>
     </ul></li>
-    <li><a name="toc-Revision-date" href="#perlvms-Revision-date">86.13 
Revision date</a></li>
-    <li><a name="toc-AUTHOR-32" href="#perlvms-AUTHOR">86.14 AUTHOR</a></li>
+    <li><a name="toc-Revision-date" href="#perlvms-Revision-date">87.13 
Revision date</a></li>
+    <li><a name="toc-AUTHOR-31" href="#perlvms-AUTHOR">87.14 AUTHOR</a></li>
   </ul></li>
 </ul>
 </div>
@@ -2519,6 +2510,8 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlreguts">perlreguts</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perlrepository">perlrepository</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+</td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlrequick">perlrequick</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlreref">perlreref</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -2893,6 +2886,13 @@
 <tr><td align="left" valign="top">&bull; <a 
href="#perldata-Array-Interpolation">perldata Array 
Interpolation</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+Slices
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#perldata-Key_002fValue-Hash-Slices">perldata Key/Value Hash 
Slices</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perldata-Index_002fValue-Array-Slices">perldata Index/Value Array 
Slices</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
 perldbmfilter
 
 </pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#perldbmfilter-NAME">perldbmfilter NAME</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
@@ -3295,6 +3295,8 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlembed-Using-Perl-modules_002c-which-themselves-use-C-libraries_002c-from-your-C-program">perlembed
 Using Perl modules, which themselves use C libraries, from your C 
program</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perlembed-Using-embedded-Perl-with-POSIX-locales">perlembed Using 
embedded Perl with POSIX locales</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+</td></tr>
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
 perlexperiment
 
@@ -3474,7 +3476,7 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlgit-Committing-your-changes">perlgit Committing your 
changes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlgit-Using-git-to-send-patch-emails">perlgit Using git to send patch 
emails</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlgit-Sending-patch-emails">perlgit Sending patch 
emails</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlgit-A-note-on-derived-files">perlgit A note on derived 
files</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
@@ -3525,6 +3527,10 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Subroutines">perlguts 
Subroutines</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Memory-Allocation">perlguts Memory 
Allocation</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#perlguts-PerlIO">perlguts 
PerlIO</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Compiled-code">perlguts Compiled 
code</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Examining-internal-data-structures-with-the-dump-functions">perlguts
 Examining internal data structures with the <code>dump</code> 
functions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
@@ -3574,6 +3580,10 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Double_002dTyped-SVs">perlguts Double-Typed 
SVs</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Read_002dOnly-Values">perlguts Read-Only 
Values</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Copy-on-Write">perlguts Copy on 
Write</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Magic-Variables">perlguts Magic 
Variables</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Assigning-Magic">perlguts Assigning 
Magic</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
@@ -3595,10 +3605,6 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Calling-Perl-Routines-from-within-C-Programs">perlguts Calling 
Perl Routines from within C Programs</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Memory-Allocation">perlguts Memory 
Allocation</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perlguts-PerlIO">perlguts 
PerlIO</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Putting-a-C-value-on-Perl-stack">perlguts Putting a C value on 
Perl stack</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Scratchpads">perlguts 
Scratchpads</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
@@ -3844,6 +3850,10 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlhacktips-Dumping-Perl-Data-Structures">perlhacktips Dumping Perl 
Data Structures</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perlhacktips-Using-gdb-to-look-at-specific-parts-of-a-program">perlhacktips
 Using gdb to look at specific parts of a 
program</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perlhacktips-Using-gdb-to-look-at-what-the-parser_002flexer-are-doing">perlhacktips
 Using gdb to look at what the parser/lexer are 
doing</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
 SOURCE CODE STATIC ANALYSIS
 
@@ -3860,20 +3870,11 @@
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
 MEMORY DEBUGGERS
 
-</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#perlhacktips-Rational-Software_0027s-Purify">perlhacktips Rational 
Software's Purify</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlhacktips-valgrind">perlhacktips 
valgrind</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#perlhacktips-valgrind">perlhacktips 
valgrind</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlhacktips-AddressSanitizer">perlhacktips 
AddressSanitizer</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
-Rational Software&rsquo;s Purify
-
-</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#perlhacktips-Purify-on-Unix">perlhacktips Purify on 
Unix</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlhacktips-Purify-on-NT">perlhacktips Purify on 
NT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
 PROFILING
 
 </pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#perlhacktips-Gprof-Profiling">perlhacktips Gprof 
Profiling</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
@@ -3893,6 +3894,8 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlhacktips-Read_002donly-optrees">perlhacktips Read-only 
optrees</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perlhacktips-When-is-a-bool-not-a-bool_003f">perlhacktips When is a bool 
not a bool?</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlhacktips-The-_002ei-Targets">perlhacktips The .i 
Targets</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
@@ -4148,27 +4151,6 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perllexwarn-DESCRIPTION">perllexwarn 
DESCRIPTION</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perllexwarn-SEE-ALSO">perllexwarn SEE 
ALSO</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perllexwarn-AUTHOR">perllexwarn AUTHOR</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
-</td></tr>
-<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
-DESCRIPTION
-
-</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#perllexwarn-Default-Warnings-and-Optional-Warnings">perllexwarn Default 
Warnings and Optional Warnings</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perllexwarn-What_0027s-wrong-with-_002dw-and-_0024_005eW">perllexwarn 
What's wrong with <strong>-w</strong> and 
<code>$^W</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perllexwarn-Controlling-Warnings-from-the-Command-Line">perllexwarn 
Controlling Warnings from the Command Line</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perllexwarn-Backward-Compatibility">perllexwarn Backward 
Compatibility</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perllexwarn-Category-Hierarchy">perllexwarn Category 
Hierarchy</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perllexwarn-Fatal-Warnings">perllexwarn Fatal 
Warnings</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perllexwarn-Reporting-Warnings-from-a-Module">perllexwarn Reporting 
Warnings from a Module</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
-</td></tr>
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
 perllocale
 
@@ -4209,6 +4191,8 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perllocale-LOCALE-PROBLEMS">perllocale LOCALE 
PROBLEMS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perllocale-Testing-for-broken-locales">perllocale Testing for broken 
locales</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perllocale-Temporarily-fixing-locale-problems">perllocale Temporarily 
fixing locale problems</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perllocale-Permanently-fixing-locale-problems">perllocale Permanently 
fixing locale problems</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -4234,7 +4218,7 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perllocale-LC_005fTIME">perllocale 
LC_TIME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perllocale-Other-categories">perllocale Other 
categories</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perllocale-Other-categories-1">perllocale Other categories 
1</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
 ENVIRONMENT
@@ -4244,14 +4228,14 @@
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
 NOTES
 
-</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#perllocale-Backward-compatibility">perllocale Backward 
compatibility</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#perllocale-String-eval-and-LC_005fNUMERIC">perllocale String 
<code>eval</code> and <code>LC_NUMERIC</code></a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perllocale-Backward-compatibility">perllocale Backward 
compatibility</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perllocale-I18N_003aCollate-obsolete">perllocale I18N:Collate 
obsolete</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perllocale-Sort-speed-and-memory-use-impacts">perllocale Sort speed and 
memory use impacts</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perllocale-write_0028_0029-and-LC_005fNUMERIC">perllocale write() and 
LC_NUMERIC</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perllocale-Freely-available-locale-definitions">perllocale Freely 
available locale definitions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perllocale-I18n-and-l10n">perllocale I18n and 
l10n</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
@@ -4621,7 +4605,7 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlootut-Class_003a_003aAccessor">perlootut 
Class::Accessor</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlootut-Object_003a_003aTiny">perlootut 
Object::Tiny</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlootut-Class_003a_003aTiny">perlootut 
Class::Tiny</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlootut-Role_003a_003aTiny">perlootut 
Role::Tiny</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
@@ -4662,7 +4646,7 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlop-Additive-Operators">perlop Additive 
Operators</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlop-Shift-Operators-_003e_003e-_003e-_003e_003e_003e">perlop Shift 
Operators   &gt;&gt; &gt; &gt;&gt;&gt;</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlop-Shift-Operators-_003e-_003e_003e_003e">perlop Shift Operators   
&gt;  &gt;&gt;&gt;</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlop-Named-Unary-Operators">perlop Named Unary 
Operators</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
@@ -4734,67 +4718,24 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-DESCRIPTION">perlopentut 
DESCRIPTION</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Open-_00c3_00a0-la-shell">perlopentut Open à la 
shell</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Opening-Text-Files">perlopentut Opening Text 
Files</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Open-_00c3_00a0-la-C">perlopentut Open à la 
C</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Opening-Binary-Files">perlopentut Opening Binary 
Files</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Obscure-Open-Tricks">perlopentut Obscure Open 
Tricks</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Opening-Pipes">perlopentut Opening 
Pipes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Other-I_002fO-Issues">perlopentut Other I/O 
Issues</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Low_002dlevel-File-Opens-via-sysopen">perlopentut Low-level 
File Opens via sysopen</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-SEE-ALSO">perlopentut SEE 
ALSO</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-AUTHOR-and-COPYRIGHT">perlopentut AUTHOR and 
COPYRIGHT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-HISTORY">perlopentut 
HISTORY</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
-Open à la shell
-
-</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Simple-Opens">perlopentut Simple 
Opens</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Indirect-Filehandles">perlopentut Indirect 
Filehandles</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Pipe-Opens">perlopentut Pipe 
Opens</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-The-Minus-File">perlopentut The Minus 
File</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Mixing-Reads-and-Writes">perlopentut Mixing Reads and 
Writes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Filters">perlopentut 
Filters</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
-Open à la C
-
-</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Permissions-_00c3_00a0-la-mode">perlopentut Permissions à 
la mode</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
-Obscure Open Tricks
-
-</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Re_002dOpening-Files-_0028dups_0029">perlopentut Re-Opening 
Files (dups)</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Dispelling-the-Dweomer">perlopentut Dispelling the 
Dweomer</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Paths-as-Opens">perlopentut Paths as 
Opens</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Single-Argument-Open">perlopentut Single Argument 
Open</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Playing-with-STDIN-and-STDOUT">perlopentut Playing with 
STDIN and STDOUT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
-Other I/O Issues
+Opening Text Files
 
-</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Opening-Non_002dFile-Files">perlopentut Opening Non-File 
Files</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Opening-Named-Pipes">perlopentut Opening Named 
Pipes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Opening-Sockets">perlopentut Opening 
Sockets</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Binary-Files">perlopentut Binary 
Files</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Opening-Text-Files-for-Reading">perlopentut Opening Text 
Files for Reading</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-File-Locking">perlopentut File 
Locking</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-IO-Layers">perlopentut IO 
Layers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Opening-Text-Files-for-Writing">perlopentut Opening Text 
Files for Writing</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
 perlpacktut
@@ -5067,7 +5008,7 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlport-Supported-Platforms">perlport Supported 
Platforms</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlport-EOL-Platforms-_0028Perl-5_002e14_0029">perlport EOL Platforms 
(Perl 5.14)</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlport-EOL-Platforms">perlport EOL 
Platforms</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlport-Supported-Platforms-_0028Perl-5_002e8_0029">perlport Supported 
Platforms (Perl 5.8)</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
@@ -5131,6 +5072,15 @@
 </pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#perlport-Alphabetical-Listing-of-Perl-Functions">perlport Alphabetical 
Listing of Perl Functions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+EOL Platforms
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#perlport-_0028Perl-5_002e20_0029">perlport (Perl 
5.20)</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perlport-_0028Perl-5_002e14_0029">perlport (Perl 
5.14)</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perlport-_0028Perl-5_002e12_0029">perlport (Perl 
5.12)</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
 perlpragma
 
 </pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#perlpragma-NAME">perlpragma NAME</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
@@ -5179,6 +5129,8 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlre-Creating-Custom-RE-Engines">perlre Creating Custom RE 
Engines</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perlre-Embedded-Code-Execution-Frequency">perlre Embedded Code Execution 
Frequency</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlre-PCRE_002fPython-Support">perlre PCRE/Python 
Support</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
@@ -5459,6 +5411,8 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a href="#perlref-WARNING">perlref 
WARNING</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perlref-Postfix-Dereference-Syntax">perlref Postfix Dereference 
Syntax</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
 <tr><td align="left" valign="top">&bull; <a href="#perlref-SEE-ALSO">perlref 
SEE ALSO</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
@@ -5479,6 +5433,11 @@
 <tr><td align="left" valign="top">&bull; <a 
href="#perlref-Function-Templates">perlref Function 
Templates</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+Postfix Dereference Syntax
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#perlref-Postfix-Reference-Slicing">perlref Postfix Reference 
Slicing</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
 perlreftut
 
 </pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#perlreftut-NAME">perlreftut NAME</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
@@ -5608,6 +5567,13 @@
 </pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#perlreguts-Perl_0027s-pprivate-structure">perlreguts Perl's 
<code>pprivate</code> structure</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+perlrepository
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#perlrepository-NAME">perlrepository 
NAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perlrepository-DESCRIPTION">perlrepository 
DESCRIPTION</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
 perlrequick
 
 </pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#perlrequick-NAME">perlrequick NAME</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
@@ -5708,8 +5674,6 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlretut-AUTHOR-AND-COPYRIGHT">perlretut AUTHOR AND 
COPYRIGHT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlretut-POD-ERRORS">perlretut POD 
ERRORS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
 Part 1: The basics
 
@@ -5889,7 +5853,9 @@
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
 DESCRIPTION
 
-</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#perlsub-Private-Variables-via-my_0028_0029">perlsub Private Variables 
via my()</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#perlsub-Signatures">perlsub Signatures</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perlsub-Private-Variables-via-my_0028_0029">perlsub Private Variables 
via my()</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlsub-Persistent-Private-Variables">perlsub Persistent Private 
Variables</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
@@ -5949,8 +5915,6 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlsyn-DESCRIPTION">perlsyn 
DESCRIPTION</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perlsyn-POD-ERRORS">perlsyn 
POD ERRORS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
 DESCRIPTION
 
@@ -6179,6 +6143,8 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perltrap-C_002fC_002b_002b-Traps">perltrap C/C++ 
Traps</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perltrap-JavaScript-Traps">perltrap JavaScript 
Traps</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perltrap-Sed-Traps">perltrap Sed Traps</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perltrap-Shell-Traps">perltrap Shell 
Traps</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
@@ -6246,7 +6212,7 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlunicode-Scripts">perlunicode 
<strong>Scripts</strong></a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlunicode-Use-of-_0022Is_0022-Prefix">perlunicode <strong>Use of 
&quot;Is&quot; Prefix</strong></a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlunicode-Use-of-the-_0022Is_0022-Prefix">perlunicode <strong>Use of 
the <code>&quot;Is&quot;</code> 
Prefix</strong></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlunicode-Blocks">perlunicode 
<strong>Blocks</strong></a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
@@ -6479,6 +6445,11 @@
 <tr><td align="left" valign="top">&bull; <a 
href="#perlvar-Deprecated-and-removed-variables">perlvar Deprecated and removed 
variables</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+Variables related to regular expressions
+
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#perlvar-Performance-issues">perlvar Performance 
issues</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
 Variables related to filehandles
 
 </pre></th></tr><tr><td align="left" valign="top">&bull; <a 
href="#perlvar-Variables-related-to-formats">perlvar Variables related to 
formats</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
@@ -6826,6 +6797,8 @@
 
     perlhist            Perl history records
     perldelta           Perl changes since previous version
+    perl5182delta       Perl changes in version 5.18.2
+    perl5181delta       Perl changes in version 5.18.1
     perl5180delta       Perl changes in version 5.18.0
     perl5161delta       Perl changes in version 5.16.1
     perl5162delta       Perl changes in version 5.16.2
@@ -6889,10 +6862,10 @@
 
 <pre class="verbatim">    perlaix             Perl notes for AIX
     perlamiga           Perl notes for AmigaOS
+    perlandroid         Perl notes for Android
     perlbs2000          Perl notes for POSIX-BC BS2000
     perlce              Perl notes for WinCE
     perlcygwin          Perl notes for Cygwin
-    perldgux            Perl notes for DG/UX
     perldos             Perl notes for DOS
     perlfreebsd         Perl notes for FreeBSD
     perlhaiku           Perl notes for Haiku
@@ -6912,6 +6885,7 @@
     perlriscos          Perl notes for RISC OS
     perlsolaris         Perl notes for Solaris
     perlsymbian         Perl notes for Symbian
+    perlsynology        Perl notes for Synology
     perltru64           Perl notes for Tru64
     perlvms             Perl notes for VMS
     perlvos             Perl notes for Stratus VOS
@@ -6928,6 +6902,7 @@
 
 <pre class="verbatim">    perlboot            
     perlbot             
+    perlrepository
     perltodo
     perltooc            
     perltoot            
@@ -7183,7 +7158,7 @@
     int     PerlIO_stdoutf(const char *fmt,...)
     int     PerlIO_puts(PerlIO *f,const char *string);
     int     PerlIO_putc(PerlIO *f,int ch);
-    int     PerlIO_write(PerlIO *f,const void *buf,size_t numbytes);
+    SSize_t PerlIO_write(PerlIO *f,const void *buf,size_t numbytes);
     int     PerlIO_printf(PerlIO *f, const char *fmt,...);
     int     PerlIO_vprintf(PerlIO *f, const char *fmt, va_list args);
     int     PerlIO_flush(PerlIO *f);
@@ -7194,7 +7169,7 @@
 
     int     PerlIO_getc(PerlIO *d);
     int     PerlIO_ungetc(PerlIO *f,int ch);
-    int     PerlIO_read(PerlIO *f, void *buf, size_t numbytes);
+    SSize_t PerlIO_read(PerlIO *f, void *buf, size_t numbytes);
 
     int     PerlIO_fileno(PerlIO *f);
 
@@ -7209,16 +7184,16 @@
 
     int     PerlIO_fast_gets(PerlIO *f);
     int     PerlIO_has_cntptr(PerlIO *f);
-    int     PerlIO_get_cnt(PerlIO *f);
+    SSize_t PerlIO_get_cnt(PerlIO *f);
     char   *PerlIO_get_ptr(PerlIO *f);
-    void    PerlIO_set_ptrcnt(PerlIO *f, char *ptr, int count);
+    void    PerlIO_set_ptrcnt(PerlIO *f, char *ptr, SSize_t count);
 
     int     PerlIO_canset_cnt(PerlIO *f);              /* deprecated */
     void    PerlIO_set_cnt(PerlIO *f, int count);      /* deprecated */
 
     int     PerlIO_has_base(PerlIO *f);
     char   *PerlIO_get_base(PerlIO *f);
-    int     PerlIO_get_bufsiz(PerlIO *f);
+    SSize_t PerlIO_get_bufsiz(PerlIO *f);
 
     PerlIO *PerlIO_importFILE(FILE *stdio, const char *mode);
     FILE   *PerlIO_exportFILE(PerlIO *f, int flags);
@@ -7261,16 +7236,8 @@
 introduced in perl5.003_02.
 </p>
 </dd>
-<dt>2. USE_SFIO</dt>
-<dd><a name="perlapio-2_002e-USE_005fSFIO"></a>
-<p>A &quot;legacy&quot; implementation in terms of the &quot;sfio&quot; 
library. Used for
-some specialist applications on Unix machines (&quot;sfio&quot; is not widely
-ported away from Unix).  Most of above are #define&rsquo;d to the sfio
-functions. PerlIO * is in this case Sfio_t *.
-</p>
-</dd>
-<dt>3. USE_PERLIO</dt>
-<dd><a name="perlapio-3_002e-USE_005fPERLIO"></a>
+<dt>2. USE_PERLIO</dt>
+<dd><a name="perlapio-2_002e-USE_005fPERLIO"></a>
 <p>Introduced just after perl5.7.0, this is a re-implementation of the
 above abstraction which allows perl more control over how IO is done
 as it decouples IO from the way the operating system and C library
@@ -8502,7 +8469,7 @@
 <a name="NAME-4"></a>
 <h3 class="section">5.1 NAME</h3>
 
-<p>perlboot - This document has been deleted
+<p>perlboot - Links to information on object-oriented programming in Perl
 </p>
 <hr>
 <a name="perlboot-DESCRIPTION"></a>
@@ -8516,6 +8483,9 @@
 <p>For information on OO programming with Perl, please see <a 
href="#perlootut-NAME">perlootut NAME</a>
 and <a href="#perlobj-NAME">perlobj NAME</a>.
 </p>
+<p>(The above documents supersede the tutorial that was formerly here in
+perlboot.)
+</p>
 <hr>
 <a name="perlbot"></a>
 <div class="header">
@@ -8541,7 +8511,7 @@
 <a name="NAME-5"></a>
 <h3 class="section">6.1 NAME</h3>
 
-<p>perlbot - This document has been deleted
+<p>perlbot - Links to information on object-oriented programming in Perl
 </p>
 <hr>
 <a name="perlbot-DESCRIPTION"></a>
@@ -8555,6 +8525,9 @@
 <p>For information on OO programming with Perl, please see <a 
href="#perlootut-NAME">perlootut NAME</a>
 and <a href="#perlobj-NAME">perlobj NAME</a>.
 </p>
+<p>(The above documents supersede the collection of tricks that was formerly 
here
+in perlbot.)
+</p>
 <hr>
 <a name="perlcall"></a>
 <div class="header">
@@ -11002,7 +10975,8 @@
     stderr                      PerlIO_stderr()
 
     fopen(fn, mode)             PerlIO_open(fn, mode)
-    freopen(fn, mode, stream)   PerlIO_reopen(fn, mode, perlio) (Deprecated)
+ freopen(fn, mode, stream)   PerlIO_reopen(fn, mode, perlio) (Dep-
+                               recated)
     fflush(stream)              PerlIO_flush(perlio)
     fclose(stream)              PerlIO_close(perlio)
 </pre>
@@ -11078,10 +11052,12 @@
     free(p)                             Safefree(p)
 
     strdup(p)                   savepv(p)
-    strndup(p, n)               savepvn(p, n) (Hey, strndup doesn't exist!)
+ strndup(p, n)                  savepvn(p, n) (Hey, strndup doesn't
+                                               exist!)
 
     strstr(big, little)         instr(big, little)
-    strcmp(s1, s2)              strLE(s1, s2) / strEQ(s1, s2) / strGT(s1,s2)
+ strcmp(s1, s2)                 strLE(s1, s2) / strEQ(s1, s2)
+                                              / strGT(s1,s2)
     strncmp(s1, s2, n)          strnNE(s1, s2, n) / strnEQ(s1, s2, n)
 </pre>
 <p>Notice the different order of arguments to <code>Copy</code> and 
<code>Move</code> than used
@@ -11122,29 +11098,51 @@
 <a name="Character-Class-Tests"></a>
 <h4 class="subsection">9.2.6 Character Class Tests</h4>
 
-<p>There are two types of character class tests that Perl implements: one
-type deals in <code>char</code>s and are thus <strong>not</strong> Unicode 
aware (and hence
-deprecated unless you <strong>know</strong> you should use them) and the other 
type
-deal in <code>UV</code>s and know about Unicode properties. In the following
-table, <code>c</code> is a <code>char</code>, and <code>u</code> is a Unicode 
codepoint.
-</p>
-<pre class="verbatim">    Instead Of:                 Use:            But 
better use:
-
-    isalnum(c)                  isALNUM(c)      isALNUM_uni(u)
-    isalpha(c)                  isALPHA(c)      isALPHA_uni(u)
-    iscntrl(c)                  isCNTRL(c)      isCNTRL_uni(u)
-    isdigit(c)                  isDIGIT(c)      isDIGIT_uni(u)
-    isgraph(c)                  isGRAPH(c)      isGRAPH_uni(u)
-    islower(c)                  isLOWER(c)      isLOWER_uni(u)
-    isprint(c)                  isPRINT(c)      isPRINT_uni(u)
-    ispunct(c)                  isPUNCT(c)      isPUNCT_uni(u)
-    isspace(c)                  isSPACE(c)      isSPACE_uni(u)
-    isupper(c)                  isUPPER(c)      isUPPER_uni(u)
-    isxdigit(c)                 isXDIGIT(c)     isXDIGIT_uni(u)
-
-    tolower(c)                  toLOWER(c)      toLOWER_uni(u)
-    toupper(c)                  toUPPER(c)      toUPPER_uni(u)
-</pre>
+<p>There are several types of character class tests that Perl implements.
+The only ones described here are those that directly correspond to C
+library functions that operate on 8-bit characters, but there are
+equivalents that operate on wide characters, and UTF-8 encoded strings.
+All are more fully described in <a 
href="perlapi.html#Character-classes">(perlapi)Character classes</a> and
+<a href="perlapi.html#Character-case-changing">(perlapi)Character case 
changing</a>.
+</p>
+<p>The C library routines listed in the table below return values based on
+the current locale.  Use the entries in the final column for that
+functionality.  The other two columns always assume a POSIX (or C)
+locale.  The entries in the ASCII column are only meaningful for ASCII
+inputs, returning FALSE for anything else.  Use these only when you
+<strong>know</strong> that is what you want.  The entries in the Latin1 column 
assume
+that the non-ASCII 8-bit characters are as Unicode defines, them, the
+same as ISO-8859-1, often called Latin 1.
+</p>
+<pre class="verbatim"> Instead Of:  Use for ASCII:   Use for Latin1:      Use 
for locale:
+
+ isalnum(c)  isALPHANUMERIC(c) isALPHANUMERIC_L1(c) isALPHANUMERIC_LC(c)
+ isalpha(c)  isALPHA(c)        isALPHA_L1(c)        isALPHA_LC(u )
+ isascii(c)  isASCII(c)                             isASCII_LC(c)
+ isblank(c)  isBLANK(c)        isBLANK_L1(c)        isBLANK_LC(c)
+ iscntrl(c)  isCNTRL(c)        isCNTRL_L1(c)        isCNTRL_LC(c)
+ isdigit(c)  isDIGIT(c)        isDIGIT_L1(c)        isDIGIT_LC(c)
+ isgraph(c)  isGRAPH(c)        isGRAPH_L1(c)        isGRAPH_LC(c)
+ islower(c)  isLOWER(c)        isLOWER_L1(c)        isLOWER_LC(c)
+ isprint(c)  isPRINT(c)        isPRINT_L1(c)        isPRINT_LC(c)
+ ispunct(c)  isPUNCT(c)        isPUNCT_L1(c)        isPUNCT_LC(c)
+ isspace(c)  isSPACE(c)        isSPACE_L1(c)        isSPACE_LC(c)
+ isupper(c)  isUPPER(c)        isUPPER_L1(c)        isUPPER_LC(c)
+ isxdigit(c) isXDIGIT(c)       isXDIGIT_L1(c)       isXDIGIT_LC(c)
+
+ tolower(c)  toLOWER(c)        toLOWER_L1(c)        toLOWER_LC(c)
+ toupper(c)  toUPPER(c)                             toUPPER_LC(c)
+</pre>
+<p>To emphasize that you are operating only on ASCII characters, you can
+append <code>_A</code> to each of the macros in the ASCII column: 
<code>isALPHA_A</code>,
+<code>isDIGIT_A</code>, and so on.
+</p>
+<p>(There is no entry in the Latin1 column for <code>isascii</code> even 
though there
+is an <code>isASCII_L1</code>, which is identical to <code>isASCII</code>;  the
+latter name is clearer.  There is no entry in the Latin1 column for
+<code>toupper</code> because the result can be non-Latin1.  You have to use
+<code>toUPPER_uni</code>, as described in <a 
href="perlapi.html#Character-case-changing">(perlapi)Character case 
changing</a>.)
+</p>
 <hr>
 <a name="perlclib-stdlib_002eh-functions"></a>
 <div class="header">
@@ -11703,8 +11701,14 @@
 If working under the effect of the <code>use utf8;</code> pragma, the following
 rules apply:
 </p>
-<pre class="verbatim">    / (?[ ( \p{Word} &amp; \p{XID_Start} ) + [_] ]) 
\p{XID_Continue}* /x
+<pre class="verbatim">    / (?[ ( \p{Word} &amp; \p{XID_Start} ) + [_] ])
+      (?[ ( \p{Word} &amp; \p{XID_Continue} ) ]) *    /x
 </pre>
+<p>That is, a &quot;start&quot; character followed by any number of 
&quot;continue&quot;
+characters.  Perl requires every character in an identifier to also
+match <code>\w</code> (this prevents some problematic cases); and Perl
+additionally accepts identfier names beginning with an underscore.
+</p>
 <p>If not under <code>use utf8</code>, the source is treated as ASCII + 128 
extra
 controls, and identifiers should match
 </p>
@@ -11718,13 +11722,9 @@
 can contain several parts delimited by double colons.
 Single quotes have similar rules, but with the exception that they are not
 legal at the end of an identifier: That is, <code>$'foo</code> and 
<code>$foo'bar</code> are
-legal, but <code>$foo'bar'</code> are not.
+legal, but <code>$foo'bar'</code> is not.
 </p>
-<p>Finally, if the identifier is preceded by a sigil &ndash;
-More so, normal identifiers can start or end with any number
-of double colons (::), and can contain several parts delimited
-by double colons.
-And additionally, if the identifier is preceded by a sigil &ndash;
+<p>Additionally, if the identifier is preceded by a sigil &ndash;
 that is, if the identifier is part of a variable name &ndash; it
 may optionally be enclosed in braces.
 </p>
@@ -11752,12 +11752,13 @@
       (?&lt;basic_identifier&gt;
         # is use utf8 on?
           (?(?{ (caller(0))[8] &amp; $utf8::hint_bits })
-              (?&amp;Perl_XIDS) \p{XID_Continue}*
+              (?&amp;Perl_XIDS) (?&amp;Perl_XIDC)*
             | (?aa) (?!\d) \w+
           )
       )
       (?&lt;sigil&gt; [&amp;address@hidden)
       (?&lt;Perl_XIDS&gt; (?[ ( \p{Word} &amp; \p{XID_Start} ) + [_] ]) )
+      (?&lt;Perl_XIDC&gt; (?[ \p{Word} &amp; \p{XID_Continue} ]) )
   )
  /x
 </pre>
@@ -11770,17 +11771,20 @@
 <dt>A sigil, followed solely by digits matching \p{POSIX_Digit}, like 
<code>$0</code>, <code>$1</code>, or <code>$10000</code>.</dt>
 <dd><a 
name="perldata-A-sigil_002c-followed-solely-by-digits-matching-_005cp_007bPOSIX_005fDigit_007d_002c-like-_00240_002c-_00241_002c-or-_002410000_002e"></a>
 </dd>
-<dt>A sigil, followed by either a caret and a single POSIX uppercase letter, 
like <code>$^V</code> or <code>$^W</code>, or a sigil followed by a literal 
control character matching the <code>\p{POSIX_Cntrl}</code> property. Due to a 
historical oddity, if not running under <code>use utf8</code>, the 128 extra 
controls in the <code>[0x80-0xff]</code> range may also be used in length one 
variables.</dt>
-<dd><a 
name="perldata-A-sigil_002c-followed-by-either-a-caret-and-a-single-POSIX-uppercase-letter_002c-like-_0024_005eV-or-_0024_005eW_002c-or-a-sigil-followed-by-a-literal-control-character-matching-the-_005cp_007bPOSIX_005fCntrl_007d-property_002e-Due-to-a-historical-oddity_002c-if-not-running-under-use-utf8_002c-the-128-extra-controls-in-the-_005b0x80_002d0xff_005d-range-may-also-be-used-in-length-one-variables_002e"></a>
+<dt>A sigil, followed by either a caret and a single POSIX uppercase letter, 
like <code>$^V</code> or <code>$^W</code>, or a sigil followed by a literal 
control character matching the <code>\p{POSIX_Cntrl}</code> property. Due to a 
historical oddity, if not running under <code>use utf8</code>, the 128 extra 
controls in the <code>[0x80-0xff]</code> range may also be used in length one 
variables.  The use of a literal control character is deprecated.  Support for 
this form will be removed in a future version of perl.</dt>
+<dd><a 
name="perldata-A-sigil_002c-followed-by-either-a-caret-and-a-single-POSIX-uppercase-letter_002c-like-_0024_005eV-or-_0024_005eW_002c-or-a-sigil-followed-by-a-literal-control-character-matching-the-_005cp_007bPOSIX_005fCntrl_007d-property_002e-Due-to-a-historical-oddity_002c-if-not-running-under-use-utf8_002c-the-128-extra-controls-in-the-_005b0x80_002d0xff_005d-range-may-also-be-used-in-length-one-variables_002e-The-use-of-a-literal-control-character-is-deprecated_002e-Support-for-this-form-will-be-removed-in-a-future-version-of-perl_002e"></a>
 </dd>
-<dt>Similar to the above, a sigil, followed by bareword text in brackets, 
where the first character is either a caret followed by an uppercase letter, or 
a literal control, like <code>${^GLOBAL_PHASE}</code> or 
<code>${\7LOBAL_PHASE}</code>.</dt>
-<dd><a 
name="perldata-Similar-to-the-above_002c-a-sigil_002c-followed-by-bareword-text-in-brackets_002c-where-the-first-character-is-either-a-caret-followed-by-an-uppercase-letter_002c-or-a-literal-control_002c-like-_0024_007b_005eGLOBAL_005fPHASE_007d-or-_0024_007b_005c7LOBAL_005fPHASE_007d_002e"></a>
+<dt>Similar to the above, a sigil, followed by bareword text in brackets, 
where the first character is either a caret followed by an uppercase letter, or 
a literal control, like <code>${^GLOBAL_PHASE}</code> or 
<code>${\7LOBAL_PHASE}</code>.  The use of a literal control character is 
deprecated.  Support for this form will be removed in a future version of 
perl.</dt>
+<dd><a 
name="perldata-Similar-to-the-above_002c-a-sigil_002c-followed-by-bareword-text-in-brackets_002c-where-the-first-character-is-either-a-caret-followed-by-an-uppercase-letter_002c-or-a-literal-control_002c-like-_0024_007b_005eGLOBAL_005fPHASE_007d-or-_0024_007b_005c7LOBAL_005fPHASE_007d_002e-The-use-of-a-literal-control-character-is-deprecated_002e-Support-for-this-form-will-be-removed-in-a-future-version-of-perl_002e"></a>
 </dd>
 <dt>A sigil followed by a single character matching the 
<code>\p{POSIX_Punct}</code> property, like <code>$!</code> or 
<code>%+</code>.</dt>
 <dd><a 
name="perldata-A-sigil-followed-by-a-single-character-matching-the-_005cp_007bPOSIX_005fPunct_007d-property_002c-like-_0024_0021-or-_0025_002b_002e"></a>
 </dd>
 </dl>
 
+<p>Note that as of Perl 5.20, literal control characters in variable names
+are deprecated.
+</p>
 <hr>
 <a name="perldata-Context"></a>
 <div class="header">
@@ -12559,6 +12563,51 @@
 hash indicates whether you are getting back a singular value (a
 scalar) or a plural one (a list).
 </p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a 
href="#perldata-Key_002fValue-Hash-Slices" accesskey="1">perldata Key/Value 
Hash Slices</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perldata-Index_002fValue-Array-Slices" accesskey="2">perldata 
Index/Value Array Slices</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="perldata-Key_002fValue-Hash-Slices"></a>
+<div class="header">
+<p>
+Next: <a href="#perldata-Index_002fValue-Array-Slices" accesskey="n" 
rel="next">perldata Index/Value Array Slices</a>, Up: <a 
href="#perldata-Slices" accesskey="u" rel="up">perldata Slices</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
+</div>
+<a name="Key_002fValue-Hash-Slices"></a>
+<h4 class="subsubsection">11.2.9.1 Key/Value Hash Slices</h4>
+
+<p>Starting in Perl 5.20, a hash slice operation
+with the % symbol is a variant of slice operation
+returning a list of key/value pairs rather than just values:
+</p>
+<pre class="verbatim">    %h = (blonk =&gt; 2, foo =&gt; 3, squink =&gt; 5, 
bar =&gt; 8);
+    %subset = %h{'foo', 'bar'}; # key/value hash slice
+    # %subset is now (foo =&gt; 3, bar =&gt; 8)
+</pre>
+<p>However, the result of such a slice cannot be localized, deleted or used
+in assignment.  These are otherwise very much consistent with hash slices
+using the @ symbol.
+</p>
+<hr>
+<a name="perldata-Index_002fValue-Array-Slices"></a>
+<div class="header">
+<p>
+Previous: <a href="#perldata-Key_002fValue-Hash-Slices" accesskey="p" 
rel="prev">perldata Key/Value Hash Slices</a>, Up: <a href="#perldata-Slices" 
accesskey="u" rel="up">perldata Slices</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+</div>
+<a name="Index_002fValue-Array-Slices"></a>
+<h4 class="subsubsection">11.2.9.2 Index/Value Array Slices</h4>
+
+<p>Similar to key/value hash slices (and also introduced
+in Perl 5.20), the % array slice syntax returns a list
+of index/value pairs:
+</p>
+<pre class="verbatim">    @a = &quot;a&quot;..&quot;z&quot;;
+    @list = %a[3,4,6];
+    # @list is now (3, &quot;d&quot;, 4, &quot;e&quot;, 6, &quot;g&quot;)
+</pre>
 <hr>
 <a name="perldata-Typeglobs-and-Filehandles"></a>
 <div class="header">
@@ -12887,8 +12936,8 @@
     unlink $filename;
 
 
-    my $db = tie %hash, 'DB_File', $filename, O_CREAT|O_RDWR, 0666, $DB_HASH 
-      or die &quot;Cannot open $filename: $!\n&quot;;
+    my $db = tie %hash, 'DB_File', $filename, O_CREAT|O_RDWR, 0666,
+        $DB_HASH or die &quot;Cannot open $filename: $!\n&quot;;
 
     $db-&gt;filter_fetch_key  ( sub { $_ = unpack(&quot;i&quot;, $_) } );
     $db-&gt;filter_store_key  ( sub { $_ = pack (&quot;i&quot;, $_) } );
@@ -13054,6 +13103,15 @@
 name of the called subroutine. (This doesn&rsquo;t happen if the subroutine
 was compiled in the <code>DB</code> package.)
 
+<p>If the call is to an lvalue subroutine, and <code>&amp;DB::lsub</code>
+is defined <code>&amp;DB::lsub</code>(<em>args</em>) is called instead, 
otherwise falling
+back to <code>&amp;DB::sub</code>(<em>args</em>).
+</p>
+</li><li> When execution of the program uses <code>goto</code> to enter a 
non-XS
+subroutine and the 0x80 bit is set in <code>$^P</code>, a call to 
<code>&amp;DB::goto</code>
+is made, with <code>$DB::sub</code> holding the name of the subroutine being
+entered.
+
 </li></ul>
 
 <p>Note that if <code>&amp;DB::sub</code> needs external data for it to work, 
no
@@ -13560,7 +13618,7 @@
 <a name="Types-of-Nodes"></a>
 <h4 class="subsection">13.5.2 Types of Nodes</h4>
 
-<p>Here are the possible types, with short descriptions:
+<p>Here are the current possible types, with short descriptions:
 </p>
 <pre class="verbatim"> # TYPE arg-description [num-args] [longjump-len] 
DESCRIPTION
 
@@ -13578,20 +13636,20 @@
  EOL                no         Match &quot;&quot; at end of line.
  MEOL               no         Same, assuming multiline.
  SEOL               no         Same, assuming singleline.
- BOUND              no         Match &quot;&quot; at any word boundary using
-                               native charset semantics for non-utf8
+ BOUND           no         Match &quot;&quot; at any word boundary using 
native
+                            charset rules for non-utf8
  BOUNDL             no         Match &quot;&quot; at any locale word boundary
- BOUNDU             no         Match &quot;&quot; at any word boundary using
-                               Unicode semantics
+ BOUNDU          no         Match &quot;&quot; at any word boundary using 
Unicode
+                            rules
  BOUNDA             no         Match &quot;&quot; at any word boundary using 
ASCII
-                               semantics
+                            rules
  NBOUND             no         Match &quot;&quot; at any word non-boundary 
using
-                               native charset semantics for non-utf8
+                            native charset rules for non-utf8
  NBOUNDL            no         Match &quot;&quot; at any locale word 
non-boundary
  NBOUNDU            no         Match &quot;&quot; at any word non-boundary 
using
-                               Unicode semantics
+                            Unicode rules
  NBOUNDA            no         Match &quot;&quot; at any word non-boundary 
using
-                               ASCII semantics
+                            ASCII rules
  GPOS               no         Matches where last m//g left off.
 
  # [Special] alternatives:
@@ -13599,28 +13657,23 @@
  REG_ANY            no         Match any one character (except newline).
  SANY               no         Match any one character.
  CANY               no         Match any one byte.
- ANYOF              sv         Match character in (or not in) this
-                               class, single char match only
- ANYOF_WARN_SUPER   sv         Match character in (or not in) this
-                               class, warn (if enabled) upon matching a
-                               char above Unicode max;
- ANYOF_SYNTHETIC    sv         Synthetic start class
-
- POSIXD             none       Some [[:class:]] under /d; the FLAGS
-                               field gives which one
- POSIXL             none       Some [[:class:]] under /l; the FLAGS
-                               field gives which one
- POSIXU             none       Some [[:class:]] under /u; the FLAGS
-                               field gives which one
- POSIXA             none       Some [[:class:]] under /a; the FLAGS
-                               field gives which one
+ ANYOF           sv         Match character in (or not in) this class,
+                            single char match only
+
+ POSIXD          none       Some [[:class:]] under /d; the FLAGS field
+                            gives which one
+ POSIXL          none       Some [[:class:]] under /l; the FLAGS field
+                            gives which one
+ POSIXU          none       Some [[:class:]] under /u; the FLAGS field
+                            gives which one
+ POSIXA          none       Some [[:class:]] under /a; the FLAGS field
+                            gives which one
  NPOSIXD            none       complement of POSIXD, [[:^class:]]
  NPOSIXL            none       complement of POSIXL, [[:^class:]]
  NPOSIXU            none       complement of POSIXU, [[:^class:]]
  NPOSIXA            none       complement of POSIXA, [[:^class:]]
 
- CLUMP              no         Match any extended grapheme cluster
-                               sequence
+ CLUMP           no         Match any extended grapheme cluster sequence
 
  # Alternation
 
@@ -13645,21 +13698,21 @@
  # Literals
 
  EXACT              str        Match this string (preceded by length).
- EXACTF             str        Match this non-UTF-8 string (not
-                               guaranteed to be folded) using /id rules
-                               (w/len).
+ EXACTF          str        Match this non-UTF-8 string (not guaranteed
+                            to be folded) using /id rules (w/len).
  EXACTFL            str        Match this string (not guaranteed to be
                                folded) using /il rules (w/len).
  EXACTFU            str        Match this string (folded iff in UTF-8,
-                               length in folding doesn't change if not
-                               in UTF-8) using /iu rules (w/len).
+                            length in folding doesn't change if not in
+                            UTF-8) using /iu rules (w/len).
  EXACTFA            str        Match this string (not guaranteed to be
                                folded) using /iaa rules (w/len).
  EXACTFU_SS         str        Match this string (folded iff in UTF-8,
-                               length in folding may change even if not
-                               in UTF-8) using /iu rules (w/len).
- EXACTFU_TRICKYFOLD str        Match this folded UTF-8 string using /iu
-                               rules
+                            length in folding may change even if not in
+                            UTF-8) using /iu rules (w/len).
+ EXACTFA_NO_TRIE str        Match this string (which is not trie-able;
+                            not guaranteed to be folded) using /iaa
+                            rules (w/len).
 
  # Do nothing types
 
@@ -13675,10 +13728,8 @@
  #               (one character per match) are implemented with STAR
  #               and PLUS for speed and to minimize recursive plunges.
  #
- STAR               node       Match this (simple) thing 0 or more
-                               times.
- PLUS               node       Match this (simple) thing 1 or more
-                               times.
+ STAR            node       Match this (simple) thing 0 or more times.
+ PLUS            node       Match this (simple) thing 1 or more times.
 
  CURLY              sv 2       Match this simple thing {n,m} times.
  CURLYN             no 2       Capture next-after-this simple thing
@@ -13687,8 +13738,7 @@
  CURLYX             sv 2       Match this complex thing {n,m} times.
 
  # This terminator creates a loop structure for CURLYX
- WHILEM             no         Do curly processing and see if rest
-                               matches.
+ WHILEM          no         Do curly processing and see if rest matches.
 
  # Buffer related
 
@@ -13697,30 +13747,26 @@
  CLOSE              num 1      Analogous to OPEN.
 
  REF                num 1      Match some already matched string
- REFF               num 1      Match already matched string, folded
-                               using native charset semantics for non-
-                               utf8
- REFFL              num 1      Match already matched string, folded in
-                               loc.
- REFFU              num 1      Match already matched string, folded
-                               using unicode semantics for non-utf8
- REFFA              num 1      Match already matched string, folded
-                               using unicode semantics for non-utf8, no
-                               mixing ASCII, non-ASCII
+ REFF            num 1      Match already matched string, folded using
+                            native charset rules for non-utf8
+ REFFL           num 1      Match already matched string, folded in loc.
+ REFFU           num 1      Match already matched string, folded using
+                            unicode rules for non-utf8
+ REFFA           num 1      Match already matched string, folded using
+                            unicode rules for non-utf8, no mixing ASCII,
+                            non-ASCII
 
  # Named references.  Code in regcomp.c assumes that these all are after
  # the numbered references
  NREF               no-sv 1    Match some already matched string
- NREFF              no-sv 1    Match already matched string, folded
-                               using native charset semantics for non-
-                               utf8
- NREFFL             no-sv 1    Match already matched string, folded in
-                               loc.
- NREFFU             num 1      Match already matched string, folded
-                               using unicode semantics for non-utf8
- NREFFA             num 1      Match already matched string, folded
-                               using unicode semantics for non-utf8, no
-                               mixing ASCII, non-ASCII
+ NREFF           no-sv 1    Match already matched string, folded using
+                            native charset rules for non-utf8
+ NREFFL          no-sv 1    Match already matched string, folded in loc.
+ NREFFU          num 1      Match already matched string, folded using
+                            unicode rules for non-utf8
+ NREFFA          num 1      Match already matched string, folded using
+                            unicode rules for non-utf8, no mixing ASCII,
+                            non-ASCII
 
  IFMATCH            off 1 2    Succeeds if the following matches.
  UNLESSM            off 1 2    Fails if the following matches.
@@ -13761,8 +13807,7 @@
                     charclass  charclass data
 
  # Regex Subroutines
- GOSUB              num/ofs 2L recurse to paren arg1 at (signed) ofs
-                               arg2
+ GOSUB           num/ofs 2L recurse to paren arg1 at (signed) ofs arg2
  GOSTART            no         recurse to start of pattern
 
  # Special conditionals
@@ -13781,12 +13826,12 @@
                                backtracking through this
  MARKPOINT          no-sv 1    Push the current location for rollback by
                                cut.
- SKIP               no-sv 1    On failure skip forward (to the mark)
-                               before retrying
+ SKIP            no-sv 1    On failure skip forward (to the mark) before
+                            retrying
  COMMIT             no-sv 1    Pattern fails outright if backtracking
                                through this
- CUTGROUP           no-sv 1    On failure go to the next alternation in
-                               the group
+ CUTGROUP        no-sv 1    On failure go to the next alternation in the
+                            group
 
  # Control what to keep in $&amp;.
  KEEPS              no         $&amp; begins here.
@@ -15070,9 +15115,9 @@
 <p>Interactively supply an arbitrary <code>expression</code> using 
<code>-e</code>.
 </p>
 </dd>
-<dt>perl -d:Ptkdb program_name</dt>
-<dd><a name="perldebug-perl-_002dd_003aPtkdb-program_005fname"></a>
-<p>Debug a given program via the <code>Devel::Ptkdb</code> GUI.
+<dt>perl -d:ptkdb program_name</dt>
+<dd><a name="perldebug-perl-_002dd_003aptkdb-program_005fname"></a>
+<p>Debug a given program via the <code>Devel::ptkdb</code> GUI.
 </p>
 </dd>
 <dt>perl -dt threaded_program_name</dt>
@@ -15478,24 +15523,24 @@
 for a list of these.
 </p>
 </dd>
-<dt>&lt; ? &gt;</dt>
-<dd><a name="perldebug-_003c-_003f-_003e"></a>
+<dt>&lt; ?</dt>
+<dd><a name="perldebug-_003c-_003f"></a>
 <p>List out all pre-prompt Perl command actions.
 </p>
 </dd>
-<dt>&lt; [ command ] &gt;</dt>
-<dd><a name="perldebug-_003c-_005b-command-_005d-_003e"></a>
+<dt>&lt; [ command ]</dt>
+<dd><a name="perldebug-_003c-_005b-command-_005d"></a>
 <p>Set an action (Perl command) to happen before every debugger prompt.
 A multi-line command may be entered by backslashing the newlines.
 </p>
 </dd>
-<dt>&lt; * &gt;</dt>
-<dd><a name="perldebug-_003c-_002a-_003e"></a>
+<dt>&lt; *</dt>
+<dd><a name="perldebug-_003c-_002a"></a>
 <p>Delete all pre-prompt Perl command actions.
 </p>
 </dd>
-<dt>&lt;&lt; command &gt;</dt>
-<dd><a name="perldebug-_003c_003c-command-_003e"></a>
+<dt>&lt;&lt; command</dt>
+<dd><a name="perldebug-_003c_003c-command"></a>
 <p>Add an action (Perl command) to happen before every debugger prompt.
 A multi-line command may be entered by backwhacking the newlines.
 </p>
@@ -15518,8 +15563,8 @@
 <p>Delete all post-prompt Perl command actions.
 </p>
 </dd>
-<dt>&gt;&gt; command &gt; &gt;&gt;&gt;</dt>
-<dd><a name="perldebug-_003e_003e-command-_003e-_003e_003e_003e"></a>
+<dt>&gt;&gt; command  &gt;&gt;&gt;</dt>
+<dd><a name="perldebug-_003e_003e-command-_003e_003e_003e"></a>
 <p>Adds an action (Perl command) to happen after the prompt when you&rsquo;ve
 just given a command to return to executing the script.  A multi-line
 command may be entered by backslashing the newlines.
@@ -16182,7 +16227,7 @@
 <a name="Editor-Support-for-Debugging"></a>
 <h4 class="subsection">15.3.8 Editor Support for Debugging</h4>
 
-<p>If you have the FSF&rsquo;s version of <strong>emacs</strong> installed on 
your system,
+<p>If you have the GNU&rsquo;s version of <strong>emacs</strong> installed on 
your system,
 it can interact with the Perl debugger to provide an integrated
 software development environment reminiscent of its interactions
 with C debuggers.
@@ -16192,13 +16237,6 @@
 syntax-directed editor that understands (some of) Perl&rsquo;s syntax.
 See <a href="perlfaq3.html#Top">(perlfaq3)</a>.
 </p>
-<p>A similar setup by Tom Christiansen for interacting with any
-vendor-shipped <strong>vi</strong> and the X11 window system is also available.
-This works similarly to the integrated multiwindow support that
-<strong>emacs</strong> provides, where the debugger drives the editor.  At the
-time of this writing, however, that tool&rsquo;s eventual location in the
-Perl distribution was uncertain.
-</p>
 <p>Users of <strong>vi</strong> should also look into <strong>vim</strong> and 
<strong>gvim</strong>, the mousey
 and windy version, for coloring of Perl keywords.
 </p>
@@ -16398,8 +16436,8 @@
 <p>(X) You can&rsquo;t allocate more than 64K on an MS-DOS machine.
 </p>
 </dd>
-<dt>&rsquo;%c&rsquo; allowed only after types %s</dt>
-<dd><a name="perldiag-_0027_0025c_0027-allowed-only-after-types-_0025s"></a>
+<dt>&rsquo;%c&rsquo; allowed only after types %s in %s</dt>
+<dd><a 
name="perldiag-_0027_0025c_0027-allowed-only-after-types-_0025s-in-_0025s"></a>
 <p>(F) The modifiers &rsquo;!&rsquo;, &rsquo;&lt;&rsquo; and 
&rsquo;&gt;&rsquo; are allowed in pack() or unpack() only
 after certain types.  See &lsquo;perlfunc pack&rsquo;.
 </p>
@@ -16437,6 +16475,14 @@
 a missing quote, operator, parenthesis pair or declaration.
 </p>
 </dd>
+<dt>Ambiguous use of -%s resolved as -&amp;%s()</dt>
+<dd><a 
name="perldiag-Ambiguous-use-of-_002d_0025s-resolved-as-_002d_0026_0025s_0028_0029"></a>
+<p>(S ambiguous) You wrote something like <code>-foo</code>, which might be the
+string <code>&quot;-foo&quot;</code>, or a call to the function 
<code>foo</code>, negated.  If you meant
+the string, just write <code>&quot;-foo&quot;</code>.  If you meant the 
function call,
+write <code>-foo()</code>.
+</p>
+</dd>
 <dt>Ambiguous use of %c resolved as operator %c</dt>
 <dd><a name="perldiag-Ambiguous-use-of-_0025c-resolved-as-operator-_0025c"></a>
 <p>(S ambiguous) <code>%</code>, <code>&amp;</code>, and <code>*</code> are 
both infix operators (modulus,
@@ -16480,14 +16526,6 @@
 off warnings with <code>no warnings 'ambiguous';</code>.
 </p>
 </dd>
-<dt>Ambiguous use of -%s resolved as -&amp;%s()</dt>
-<dd><a 
name="perldiag-Ambiguous-use-of-_002d_0025s-resolved-as-_002d_0026_0025s_0028_0029"></a>
-<p>(S ambiguous) You wrote something like <code>-foo</code>, which might be the
-string <code>&quot;-foo&quot;</code>, or a call to the function 
<code>foo</code>, negated.  If you meant
-the string, just write <code>&quot;-foo&quot;</code>.  If you meant the 
function call,
-write <code>-foo()</code>.
-</p>
-</dd>
 <dt>&rsquo;|&rsquo; and &rsquo;&lt;&rsquo; may not both be specified on 
command line</dt>
 <dd><a 
name="perldiag-_0027_007c_0027-and-_0027_003c_0027-may-not-both-be-specified-on-command-line"></a>
 <p>(F) An error peculiar to VMS.  Perl does its own command line
@@ -16527,37 +16565,6 @@
 <p>(F) msgsnd() requires a string at least as long as sizeof(long).
 </p>
 </dd>
-<dt>%s argument is not a HASH or ARRAY element or a subroutine</dt>
-<dd><a 
name="perldiag-_0025s-argument-is-not-a-HASH-or-ARRAY-element-or-a-subroutine"></a>
-<p>(F) The argument to exists() must be a hash or array element or a
-subroutine with an ampersand, such as:
-</p>
-<pre class="verbatim">    $foo{$bar}
-    $ref-&gt;{&quot;susie&quot;}[12]
-    &amp;do_something
-</pre>
-</dd>
-<dt>%s argument is not a HASH or ARRAY element or slice</dt>
-<dd><a 
name="perldiag-_0025s-argument-is-not-a-HASH-or-ARRAY-element-or-slice"></a>
-<p>(F) The argument to delete() must be either a hash or array element,
-such as:
-</p>
-<pre class="verbatim">    $foo{$bar}
-    $ref-&gt;{&quot;susie&quot;}[12]
-</pre>
-<p>or a hash or array slice, such as:
-</p>
-<pre class="verbatim">    @foo[$bar, $baz, $xyzzy]
-    @{$ref-&gt;[12]}{&quot;susie&quot;, &quot;queue&quot;}
-</pre>
-</dd>
-<dt>%s argument is not a subroutine name</dt>
-<dd><a name="perldiag-_0025s-argument-is-not-a-subroutine-name"></a>
-<p>(F) The argument to exists() for <code>exists &amp;sub</code> must be a 
subroutine
-name, and not a subroutine call.  <code>exists &amp;sub()</code> will generate 
this
-error.
-</p>
-</dd>
 <dt>Argument &quot;%s&quot; isn&rsquo;t numeric%s</dt>
 <dd><a name="perldiag-Argument-_0022_0025s_0022-isn_0027t-numeric_0025s"></a>
 <p>(W numeric) The indicated string was fed as an argument to an operator
@@ -16584,11 +16591,11 @@
 </dd>
 <dt>A sequence of multiple spaces in a charnames alias definition is 
deprecated</dt>
 <dd><a 
name="perldiag-A-sequence-of-multiple-spaces-in-a-charnames-alias-definition-is-deprecated"></a>
-<p>(D) You defined a character name which had multiple space characters in
-a row.  Change them to single spaces.  Usually these names are defined
-in the <code>:alias</code> import argument to <code>use charnames</code>, but 
they could be
-defined by a translator installed into <code>$^H{charnames}</code>.  See
-<a href="charnames.html#CUSTOM-ALIASES">(charnames)CUSTOM ALIASES</a>.
+<p>(D deprecated) You defined a character name which had multiple space
+characters in a row.  Change them to single spaces.  Usually these
+names are defined in the <code>:alias</code> import argument to <code>use 
charnames</code>, but
+they could be defined by a translator installed into 
<code>$^H{charnames}</code>.
+See <a href="charnames.html#CUSTOM-ALIASES">(charnames)CUSTOM ALIASES</a>.
 </p>
 </dd>
 <dt>assertion botched: %s</dt>
@@ -16596,8 +16603,8 @@
 <p>(X) The malloc package that comes with Perl had an internal failure.
 </p>
 </dd>
-<dt>Assertion failed: file &quot;%s&quot;</dt>
-<dd><a name="perldiag-Assertion-failed_003a-file-_0022_0025s_0022"></a>
+<dt>Assertion %s failed: file &quot;%s&quot;, line %d</dt>
+<dd><a 
name="perldiag-Assertion-_0025s-failed_003a-file-_0022_0025s_0022_002c-line-_0025d"></a>
 <p>(X) A general assertion failed.  The file in question must be examined.
 </p>
 </dd>
@@ -16614,21 +16621,19 @@
 know which context to supply to the right side.
 </p>
 </dd>
-<dt>A thread exited while %d threads were running</dt>
-<dd><a name="perldiag-A-thread-exited-while-_0025d-threads-were-running"></a>
-<p>(W threads)(S) When using threaded Perl, a thread (not necessarily
-the main thread) exited while there were still other threads running.
-Usually it&rsquo;s a good idea first to collect the return values of the
-created threads by joining them, and only then to exit from the main
-thread.  See <a href="threads.html#Top">(threads)</a>.
-</p>
-</dd>
 <dt>Attempt to access disallowed key &rsquo;%s&rsquo; in a restricted hash</dt>
 <dd><a 
name="perldiag-Attempt-to-access-disallowed-key-_0027_0025s_0027-in-a-restricted-hash"></a>
 <p>(F) The failing code has attempted to get or set a key which is not in
 the current set of allowed keys of a restricted hash.
 </p>
 </dd>
+<dt>Attempt to bless into a freed package</dt>
+<dd><a name="perldiag-Attempt-to-bless-into-a-freed-package"></a>
+<p>(F) You wrote <code>bless $foo</code> with one argument after somehow 
causing
+the current package to be freed.  Perl cannot figure out what to
+do, so it throws up in hands in despair.
+</p>
+</dd>
 <dt>Attempt to bless into a reference</dt>
 <dd><a name="perldiag-Attempt-to-bless-into-a-reference"></a>
 <p>(F) The CLASSNAME argument to the bless() operator is expected to be
@@ -16708,13 +16713,6 @@
 corrupted.
 </p>
 </dd>
-<dt>Attempt to join self</dt>
-<dd><a name="perldiag-Attempt-to-join-self"></a>
-<p>(F) You tried to join a thread from within itself, which is an
-impossible task.  You may be joining the wrong thread, or you may need
-to move the join() to some other thread.
-</p>
-</dd>
 <dt>Attempt to pack pointer to temporary value</dt>
 <dd><a name="perldiag-Attempt-to-pack-pointer-to-temporary-value"></a>
 <p>(W pack) You tried to pass a temporary value (like the result of a
@@ -16759,6 +16757,13 @@
 will be removed in a future release of Perl 5.
 </p>
 </dd>
+<dt>Attribute prototype(%s) discards earlier prototype attribute in same 
sub</dt>
+<dd><a 
name="perldiag-Attribute-prototype_0028_0025s_0029-discards-earlier-prototype-attribute-in-same-sub"></a>
+<p>(W misc) A sub was declared as sub foo : prototype(A) : prototype(B) {}, for
+example.  Since each sub can only have one prototype, the earlier
+declaration(s) are discarded while the last one is applied.
+</p>
+</dd>
 <dt>Attribute &quot;unique&quot; is deprecated</dt>
 <dd><a name="perldiag-Attribute-_0022unique_0022-is-deprecated"></a>
 <p>(D deprecated) You have used the attributes pragma to modify
@@ -16917,8 +16922,8 @@
 depends on its correct operation, Perl just gave up.
 </p>
 </dd>
-<dt>\1 better written as $1</dt>
-<dd><a name="perldiag-_005c1-better-written-as-_00241"></a>
+<dt>\%d better written as $%d</dt>
+<dd><a name="perldiag-_005c_0025d-better-written-as-_0024_0025d"></a>
 <p>(W syntax) Outside of patterns, backreferences live on as variables.
 The use of backslashes is grandfathered on the right-hand side of a
 substitution, but stylistically it&rsquo;s better to use the variable form
@@ -16945,16 +16950,16 @@
 Check your control flow and number of arguments.
 </p>
 </dd>
-<dt>&quot;\b{&quot; is deprecated; use &quot;\b\{&quot; or &quot;\b[{]&quot; 
instead in regex; marked by &lt;&ndash; HERE in m/%s/</dt>
+<dt>&quot;\b{&quot; is deprecated; use &quot;\b\{&quot; or &quot;\b[{]&quot; 
instead in regex; marked by &lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-_0022_005cb_007b_0022-is-deprecated_003b-use-_0022_005cb_005c_007b_0022-or-_0022_005cb_005b_007b_005d_0022-instead-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 </dd>
-<dt>&quot;\B{&quot; is deprecated; use &quot;\B\{&quot; or &quot;\B[{]&quot; 
instead in regex; marked by &lt;&ndash; HERE in m/%s/</dt>
+<dt>&quot;\B{&quot; is deprecated; use &quot;\B\{&quot; or &quot;\B[{]&quot; 
instead in regex; marked by &lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-_0022_005cB_007b_0022-is-deprecated_003b-use-_0022_005cB_005c_007b_0022-or-_0022_005cB_005b_007b_005d_0022-instead-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(W deprecated) Use of an unescaped &quot;{&quot; immediately following a
-<code>\b</code> or <code>\B</code> is now deprecated so as to reserve its use 
for Perl
-itself in a future release.  You can either precede the brace with a
-backslash, or enclose it in square brackets; the latter is the way to go
-if the pattern delimiters are <code>{}</code>.
+<p>(D deprecated) Use of an unescaped &quot;{&quot; immediately following
+a <code>\b</code> or <code>\B</code> is now deprecated so as to reserve its 
use for Perl
+itself in a future release.  You can either precede the brace
+with a backslash, or enclose it in square brackets; the latter
+is the way to go if the pattern delimiters are <code>{}</code>.
 </p>
 </dd>
 <dt>Bit vector size &gt; 32 non-portable</dt>
@@ -16968,6 +16973,12 @@
 copiable.
 </p>
 </dd>
+<dt>Bizarre SvTYPE [%d]</dt>
+<dd><a name="perldiag-Bizarre-SvTYPE-_005b_0025d_005d"></a>
+<p>(P) When starting a new thread or returning values from a thread, Perl
+encountered an invalid data type.
+</p>
+</dd>
 <dt>Buffer overflow in prime_env_iter: %s</dt>
 <dd><a 
name="perldiag-Buffer-overflow-in-prime_005fenv_005fiter_003a-_0025s"></a>
 <p>(W internal) A warning peculiar to VMS.  While Perl was preparing to
@@ -16975,12 +16986,6 @@
 which was too long, so it was truncated to the string shown.
 </p>
 </dd>
-<dt>Bizarre SvTYPE [%d]</dt>
-<dd><a name="perldiag-Bizarre-SvTYPE-_005b_0025d_005d"></a>
-<p>(P) When starting a new thread or return values from a thread, Perl
-encountered an invalid data type.
-</p>
-</dd>
 <dt>Callback called exit</dt>
 <dd><a name="perldiag-Callback-called-exit"></a>
 <p>(F) A subroutine invoked from an external package via call_sv()
@@ -16999,6 +17004,12 @@
 the warning.  See <a href="#perlsub-NAME">perlsub NAME</a>.
 </p>
 </dd>
+<dt>Calling POSIX::%s() is deprecated</dt>
+<dd><a 
name="perldiag-Calling-POSIX_003a_003a_0025s_0028_0029-is-deprecated"></a>
+<p>(D deprecated) You called a function whose use is deprecated.  See
+the function&rsquo;s name in <a href="POSIX.html#Top">(POSIX)</a> for details.
+</p>
+</dd>
 <dt>Cannot compress integer in pack</dt>
 <dd><a name="perldiag-Cannot-compress-integer-in-pack"></a>
 <p>(F) An argument to pack(&quot;w&quot;,...) was too large to compress.  The 
BER
@@ -17102,6 +17113,18 @@
     $BADREF-&gt;process(1,2,3);
 </pre>
 </dd>
+<dt>Can&rsquo;t call mro_isa_changed_in() on anonymous symbol table</dt>
+<dd><a 
name="perldiag-Can_0027t-call-mro_005fisa_005fchanged_005fin_0028_0029-on-anonymous-symbol-table"></a>
+<p>(P) Perl got confused as to whether a hash was a plain hash or a
+symbol table hash when trying to update @ISA caches.
+</p>
+</dd>
+<dt>Can&rsquo;t call mro_method_changed_in() on anonymous symbol table</dt>
+<dd><a 
name="perldiag-Can_0027t-call-mro_005fmethod_005fchanged_005fin_0028_0029-on-anonymous-symbol-table"></a>
+<p>(F) An XS module tried to call <code>mro_method_changed_in</code> on a hash 
that was
+not attached to the symbol table.
+</p>
+</dd>
 <dt>Can&rsquo;t chdir to %s</dt>
 <dd><a name="perldiag-Can_0027t-chdir-to-_0025s"></a>
 <p>(F) You called <code>perl -x/foo/bar</code>, but <samp>/foo/bar</samp> is 
not a directory
@@ -17344,6 +17367,12 @@
 See &lsquo;perlfunc goto&rsquo;.
 </p>
 </dd>
+<dt>Can&rsquo;t goto subroutine from an eval-%s</dt>
+<dd><a name="perldiag-Can_0027t-goto-subroutine-from-an-eval_002d_0025s"></a>
+<p>(F) The &quot;goto subroutine&quot; call can&rsquo;t be used to jump out of 
an eval
+&quot;string&quot; or block.
+</p>
+</dd>
 <dt>Can&rsquo;t goto subroutine from a sort sub (or similar callback)</dt>
 <dd><a 
name="perldiag-Can_0027t-goto-subroutine-from-a-sort-sub-_0028or-similar-callback_0029"></a>
 <p>(F) The &quot;goto subroutine&quot; call can&rsquo;t be used to jump out of 
the
@@ -17351,12 +17380,6 @@
 as the reduce() function in List::Util).
 </p>
 </dd>
-<dt>Can&rsquo;t goto subroutine from an eval-%s</dt>
-<dd><a name="perldiag-Can_0027t-goto-subroutine-from-an-eval_002d_0025s"></a>
-<p>(F) The &quot;goto subroutine&quot; call can&rsquo;t be used to jump out of 
an eval
-&quot;string&quot; or block.
-</p>
-</dd>
 <dt>Can&rsquo;t goto subroutine outside a subroutine</dt>
 <dd><a name="perldiag-Can_0027t-goto-subroutine-outside-a-subroutine"></a>
 <p>(F) The deeply magical &quot;goto subroutine&quot; call can only replace one
@@ -17479,7 +17502,7 @@
 </dd>
 <dt>Can&rsquo;t make loaded symbols global on this platform while loading 
%s</dt>
 <dd><a 
name="perldiag-Can_0027t-make-loaded-symbols-global-on-this-platform-while-loading-_0025s"></a>
-<p>(W) A module passed the flag 0x01 to DynaLoader::dl_load_file() to request
+<p>(S) A module passed the flag 0x01 to DynaLoader::dl_load_file() to request
 that symbols from the stated file are made available globally within the
 process, but that functionality is not available on this platform.  Whilst
 the module likely will still work, this may prevent the perl interpreter
@@ -17787,6 +17810,9 @@
 </dd>
 <dt>Can&rsquo;t use string (&quot;%s&quot;) as %s ref while &quot;strict 
refs&quot; in use</dt>
 <dd><a 
name="perldiag-Can_0027t-use-string-_0028_0022_0025s_0022_0029-as-_0025s-ref-while-_0022strict-refs_0022-in-use"></a>
+</dd>
+<dt>Can&rsquo;t use string (&quot;%s&quot;...) as %s ref while &quot;strict 
refs&quot; in use</dt>
+<dd><a 
name="perldiag-Can_0027t-use-string-_0028_0022_0025s_0022_002e_002e_002e_0029-as-_0025s-ref-while-_0022strict-refs_0022-in-use"></a>
 <p>(F) You&rsquo;ve told Perl to dereference a string, something which
 <code>use strict</code> blocks to prevent it happening accidentally.  See
 <a href="#perlref-Symbolic-references">perlref Symbolic references</a>.  This 
can be triggered by an <code>@</code> or <code>$</code>
@@ -17834,15 +17860,18 @@
 Perhaps you need to copy the value to a temporary, and repeat that.
 </p>
 </dd>
-<dt>Character following &quot;\c&quot; must be ASCII</dt>
-<dd><a name="perldiag-Character-following-_0022_005cc_0022-must-be-ASCII"></a>
-<p>(F)(W deprecated, syntax) In <code>\c<em>X</em></code>, <em>X</em> must be 
an ASCII character.
-It is planned to make this fatal in all instances in Perl v5.20.  In the
-cases where it isn&rsquo;t fatal, the character this evaluates to is
+<dt>Character following &quot;\c&quot; must be printable ASCII</dt>
+<dd><a 
name="perldiag-Character-following-_0022_005cc_0022-must-be-printable-ASCII"></a>
+<p>(F)(D deprecated, syntax) In <code>\c<em>X</em></code>, <em>X</em> must be 
a printable
+(non-control) ASCII character.  This is fatal starting in v5.20 for
+non-ASCII characters, and it is planned to make this fatal in all
+instances in Perl v5.22.  In
+the cases where it isn&rsquo;t fatal, the character this evaluates to is
 derived by exclusive or&rsquo;ing the code point of this character with 0x40.
 </p>
-<p>Note that non-alphabetic ASCII characters are discouraged here as well,
-and using non-printable ones will be deprecated starting in v5.18.
+<p>Note that ASCII characters that don&rsquo;t map to control characters are
+discouraged here as well, and will generate the warning (when enabled)
+<a 
href="#perldiag-_0022_005cc_0025c_0022-is-more-clearly-written-simply-as-_0022_0025s_0022">&quot;\c%c&quot;
 is more clearly written simply as &quot;%s&quot;</a>.
 </p>
 </dd>
 <dt>Character in &rsquo;C&rsquo; format wrapped in pack</dt>
@@ -17861,19 +17890,6 @@
 instead.
 </p>
 </dd>
-<dt>Character in &rsquo;W&rsquo; format wrapped in pack</dt>
-<dd><a name="perldiag-Character-in-_0027W_0027-format-wrapped-in-pack"></a>
-<p>(W pack) You said
-</p>
-<pre class="verbatim">    pack(&quot;U0W&quot;, $x)
-</pre>
-<p>where $x is either less than 0 or more than 255.  However, 
<code>U0</code>-mode
-expects all values to fall in the interval [0, 255], so Perl behaved
-as if you meant:
-</p>
-<pre class="verbatim">    pack(&quot;U0W&quot;, $x &amp; 255)
-</pre>
-</dd>
 <dt>Character in &rsquo;c&rsquo; format wrapped in pack</dt>
 <dd><a name="perldiag-Character-in-_0027c_0027-format-wrapped-in-pack"></a>
 <p>(W pack) You said
@@ -17903,6 +17919,19 @@
 <pre class="verbatim">   unpack(&quot;H&quot;, &quot;\x{a1}&quot;)
 </pre>
 </dd>
+<dt>Character in &rsquo;W&rsquo; format wrapped in pack</dt>
+<dd><a name="perldiag-Character-in-_0027W_0027-format-wrapped-in-pack"></a>
+<p>(W pack) You said
+</p>
+<pre class="verbatim">    pack(&quot;U0W&quot;, $x)
+</pre>
+<p>where $x is either less than 0 or more than 255.  However, 
<code>U0</code>-mode
+expects all values to fall in the interval [0, 255], so Perl behaved
+as if you meant:
+</p>
+<pre class="verbatim">    pack(&quot;U0W&quot;, $x &amp; 255)
+</pre>
+</dd>
 <dt>Character(s) in &rsquo;%c&rsquo; format wrapped in pack</dt>
 <dd><a 
name="perldiag-Character_0028s_0029-in-_0027_0025c_0027-format-wrapped-in-pack"></a>
 <p>(W pack) You tried something like
@@ -17929,15 +17958,6 @@
 <pre class="verbatim">   unpack(&quot;s&quot;, &quot;\x{f3}b&quot;)
 </pre>
 </dd>
-<dt>&quot;\c{&quot; is deprecated and is more clearly written as 
&quot;;&quot;</dt>
-<dd><a 
name="perldiag-_0022_005cc_007b_0022-is-deprecated-and-is-more-clearly-written-as-_0022_003b_0022"></a>
-<p>(D deprecated, syntax) The <code>\c<em>X</em></code> construct is intended 
to be a way
-to specify non-printable characters.  You used it with a &quot;{&quot; which
-evaluates to &quot;;&quot;, which is printable.  It is planned to remove the
-ability to specify a semi-colon this way in Perl 5.20.  Just use a
-semi-colon or a backslash-semi-colon without the &quot;\c&quot;.
-</p>
-</dd>
 <dt>&quot;\c%c&quot; is more clearly written simply as &quot;%s&quot;</dt>
 <dd><a 
name="perldiag-_0022_005cc_0025c_0022-is-more-clearly-written-simply-as-_0022_0025s_0022"></a>
 <p>(W syntax) The <code>\c<em>X</em></code> construct is intended to be a way 
to specify
@@ -17951,17 +17971,17 @@
 <p>(F) Creating a new thread inside the <code>s///</code> operator is not 
supported.
 </p>
 </dd>
-<dt>close() on unopened filehandle %s</dt>
-<dd><a name="perldiag-close_0028_0029-on-unopened-filehandle-_0025s"></a>
-<p>(W unopened) You tried to close a filehandle that was never opened.
-</p>
-</dd>
 <dt>closedir() attempted on invalid dirhandle %s</dt>
 <dd><a 
name="perldiag-closedir_0028_0029-attempted-on-invalid-dirhandle-_0025s"></a>
 <p>(W io) The dirhandle you tried to close is either closed or not really
 a dirhandle.  Check your control flow.
 </p>
 </dd>
+<dt>close() on unopened filehandle %s</dt>
+<dd><a name="perldiag-close_0028_0029-on-unopened-filehandle-_0025s"></a>
+<p>(W unopened) You tried to close a filehandle that was never opened.
+</p>
+</dd>
 <dt>Closure prototype called</dt>
 <dd><a name="perldiag-Closure-prototype-called"></a>
 <p>(F) If a closure has attributes, the subroutine passed to an attribute
@@ -17977,10 +17997,7 @@
 </dd>
 <dt>Code point 0x%X is not Unicode, may not be portable</dt>
 <dd><a 
name="perldiag-Code-point-0x_0025X-is-not-Unicode_002c-may-not-be-portable"></a>
-</dd>
-<dt>Code point 0x%X is not Unicode, all \p{} matches fail; all \P{} matches  
succeed</dt>
-<dd><a 
name="perldiag-Code-point-0x_0025X-is-not-Unicode_002c-all-_005cp_007b_007d-matches-fail_003b-all-_005cP_007b_007d-matches-succeed"></a>
-<p>(S utf8, non_unicode) You had a code point above the Unicode maximum
+<p>(S non_unicode) You had a code point above the Unicode maximum
 of U+10FFFF.
 </p>
 <p>Perl allows strings to contain a superset of Unicode code points, up
@@ -17990,32 +18007,11 @@
 but not higher.  Code points above 0xFFFF_FFFF require larger than a
 32 bit word.
 </p>
-<p>None of the Unicode or Perl-defined properties will match a non-Unicode
-code point.  For example,
-</p>
-<pre class="verbatim">    chr(0x7FF_FFFF) =~ /\p{Any}/
-</pre>
-<p>will not match, because the code point is not in Unicode.  But
-</p>
-<pre class="verbatim">    chr(0x7FF_FFFF) =~ /\P{Any}/
-</pre>
-<p>will match.
-</p>
-<p>This may be counterintuitive at times, as both these fail:
-</p>
-<pre class="verbatim"> chr(0x110000) =~ /\p{ASCII_Hex_Digit=True}/      # 
Fails.
- chr(0x110000) =~ /\p{ASCII_Hex_Digit=False}/     # Also fails!
-</pre>
-<p>and both these succeed:
-</p>
-<pre class="verbatim"> chr(0x110000) =~ /\P{ASCII_Hex_Digit=True}/      # 
Succeeds.
- chr(0x110000) =~ /\P{ASCII_Hex_Digit=False}/     # Also succeeds!
-</pre>
 </dd>
 <dt>%s: Command not found</dt>
 <dd><a name="perldiag-_0025s_003a-Command-not-found"></a>
 <p>(A) You&rsquo;ve accidentally run your script through <strong>csh</strong> 
or another shell
-shell instead of Perl.  Check the #! line, or manually feed your script
+instead of Perl.  Check the #! line, or manually feed your script
 into Perl yourself.  The #! line at the top of your file could look like
 </p>
 <pre class="verbatim">  #!/usr/bin/perl -w
@@ -18041,30 +18037,6 @@
 on <em>Mastering Regular Expressions</em>.)
 </p>
 </dd>
-<dt>cond_broadcast() called on unlocked variable</dt>
-<dd><a 
name="perldiag-cond_005fbroadcast_0028_0029-called-on-unlocked-variable"></a>
-<p>(W threads) Within a thread-enabled program, you tried to
-call cond_broadcast() on a variable which wasn&rsquo;t locked.
-The cond_broadcast() function is used to wake up another thread
-that is waiting in a cond_wait().  To ensure that the signal isn&rsquo;t
-sent before the other thread has a chance to enter the wait, it
-is usual for the signaling thread first to wait for a lock on
-variable.  This lock attempt will only succeed after the other
-thread has entered cond_wait() and thus relinquished the lock.
-</p>
-</dd>
-<dt>cond_signal() called on unlocked variable</dt>
-<dd><a 
name="perldiag-cond_005fsignal_0028_0029-called-on-unlocked-variable"></a>
-<p>(W threads) Within a thread-enabled program, you tried to
-call cond_signal() on a variable which wasn&rsquo;t locked.  The
-cond_signal() function is used to wake up another thread that
-is waiting in a cond_wait().  To ensure that the signal isn&rsquo;t
-sent before the other thread has a chance to enter the wait, it
-is usual for the signaling thread first to wait for a lock on
-variable.  This lock attempt will only succeed after the other
-thread has entered cond_wait() and thus relinquished the lock.
-</p>
-</dd>
 <dt>connect() on closed socket %s</dt>
 <dd><a name="perldiag-connect_0028_0029-on-closed-socket-_0025s"></a>
 <p>(W closed) You tried to do a connect on a closed socket.  Did you forget
@@ -18083,15 +18055,7 @@
 <dd><a 
name="perldiag-Constant_0028_0025s_0029_003a-_0024_005eH_007b_0025s_007d-is-not-defined"></a>
 <p>(F) The parser found inconsistencies while attempting to define an
 overloaded constant.  Perhaps you forgot to load the corresponding
-<a href="overload.html#Top">(overload)</a> pragma?.
-</p>
-</dd>
-<dt>Constant(%s) unknown</dt>
-<dd><a name="perldiag-Constant_0028_0025s_0029-unknown"></a>
-<p>(F) The parser found inconsistencies either while attempting to define
-an overloaded constant, or when trying to find the character name
-specified in the <code>\N{...}</code> escape.  Perhaps you forgot to load the
-corresponding <a href="overload.html#Top">(overload)</a> pragma?.
+<a href="overload.html#Top">(overload)</a> pragma?
 </p>
 </dd>
 <dt>Constant is not %s reference</dt>
@@ -18117,6 +18081,14 @@
 workarounds.
 </p>
 </dd>
+<dt>Constant(%s) unknown</dt>
+<dd><a name="perldiag-Constant_0028_0025s_0029-unknown"></a>
+<p>(F) The parser found inconsistencies either while attempting
+to define an overloaded constant, or when trying to find the
+character name specified in the <code>\N{...}</code> escape.  Perhaps you
+forgot to load the corresponding <a href="overload.html#Top">(overload)</a> 
pragma?.
+</p>
+</dd>
 <dt>Copy method did not return a reference</dt>
 <dd><a name="perldiag-Copy-method-did-not-return-a-reference"></a>
 <p>(F) The method which overloads &quot;=&quot; is buggy.  See
@@ -18139,6 +18111,13 @@
 <p>(F) The CORE:: namespace is reserved for Perl keywords.
 </p>
 </dd>
+<dt>Corrupted regexp opcode %d &gt; %d</dt>
+<dd><a name="perldiag-Corrupted-regexp-opcode-_0025d-_003e-_0025d"></a>
+<p>(P) This is either an error in Perl, or, if you&rsquo;re using
+one, your <a href="#perlreapi-NAME">custom regular expression engine</a>.  If 
not the
+latter, report the problem through the <a 
href="perlbug.html#Top">(perlbug)</a> utility.
+</p>
+</dd>
 <dt>corrupted regexp pointers</dt>
 <dd><a name="perldiag-corrupted-regexp-pointers"></a>
 <p>(P) The regular expression engine got confused by what the regular
@@ -18156,14 +18135,6 @@
 <p>(P) The malloc package that comes with Perl had an internal failure.
 </p>
 </dd>
-<dt>Corrupted regexp opcode %d &gt; %d</dt>
-<dd><a name="perldiag-Corrupted-regexp-opcode-_0025d-_003e-_0025d"></a>
-<p>(F)
-This is either an error in Perl, or, if you&rsquo;re using one, your
-<a href="#perlreapi-NAME">custom regular expression engine</a>.  If not the 
latter,
-report the problem through the <a href="perlbug.html#Top">(perlbug)</a> 
utility.
-</p>
-</dd>
 <dt>Count after length/code in unpack</dt>
 <dd><a name="perldiag-Count-after-length_002fcode-in-unpack"></a>
 <p>(F) You had an unpack template indicating a counted-length string, but
@@ -18215,7 +18186,7 @@
 it&rsquo;s loaded, etc.
 </p>
 </dd>
-<dt>(?(DEFINE)....) does not allow branches in regex; marked by &lt;&ndash; 
HERE in  m/%s/</dt>
+<dt>(?(DEFINE)....) does not allow branches in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-_0028_003f_0028DEFINE_0029_002e_002e_002e_002e_0029-does-not-allow-branches-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) You used something like <code>(?(DEFINE)...|..)</code> which is 
illegal.  The
 most likely cause of this error is that you left out a parenthesis inside
@@ -18231,6 +18202,33 @@
 there are neither package declarations nor a <code>$VERSION</code>.
 </p>
 </dd>
+<dt>delete argument is index/value array slice, use array slice</dt>
+<dd><a 
name="perldiag-delete-argument-is-index_002fvalue-array-slice_002c-use-array-slice"></a>
+<p>(F) You used index/value array slice syntax (<code>%array[...]</code>) as
+the argument to <code>delete</code>.  You probably meant 
<code>@array[...]</code> with
+an @ symbol instead.
+</p>
+</dd>
+<dt>delete argument is key/value hash slice, use hash slice</dt>
+<dd><a 
name="perldiag-delete-argument-is-key_002fvalue-hash-slice_002c-use-hash-slice"></a>
+<p>(F) You used key/value hash slice syntax (<code>%hash{...}</code>) as the 
argument to
+<code>delete</code>.  You probably meant <code>@hash{...}</code> with an @ 
symbol instead.
+</p>
+</dd>
+<dt>delete argument is not a HASH or ARRAY element or slice</dt>
+<dd><a 
name="perldiag-delete-argument-is-not-a-HASH-or-ARRAY-element-or-slice"></a>
+<p>(F) The argument to <code>delete</code> must be either a hash or array 
element,
+such as:
+</p>
+<pre class="verbatim">    $foo{$bar}
+    $ref-&gt;{&quot;susie&quot;}[12]
+</pre>
+<p>or a hash or array slice, such as:
+</p>
+<pre class="verbatim">    @foo[$bar, $baz, $xyzzy]
+    @{$ref-&gt;[12]}{&quot;susie&quot;, &quot;queue&quot;}
+</pre>
+</dd>
 <dt>Delimiter for here document is too long</dt>
 <dd><a name="perldiag-Delimiter-for-here-document-is-too-long"></a>
 <p>(F) In a here document construct like <code>&lt;&lt;FOO</code>, the label 
<code>FOO</code> is too
@@ -18254,7 +18252,7 @@
 </p>
 <pre class="verbatim">    { my $x; sub f { return $x++ } }
 </pre>
-<p>Beginning with perl 5.9.4, you can also use <code>state</code> variables to 
have
+<p>Beginning with perl 5.10.0, you can also use <code>state</code> variables 
to have
 lexicals that are initialized only once (see <a 
href="feature.html#Top">(feature)</a>):
 </p>
 <pre class="verbatim">    sub f { state $x; return $x++ }
@@ -18323,8 +18321,14 @@
 See &lsquo;perlfunc pack&rsquo;.
 </p>
 </dd>
-<dt>Don&rsquo;t know how to handle magic of type &rsquo;%s&rsquo;</dt>
-<dd><a 
name="perldiag-Don_0027t-know-how-to-handle-magic-of-type-_0027_0025s_0027"></a>
+<dt>Don&rsquo;t know how to get file name</dt>
+<dd><a name="perldiag-Don_0027t-know-how-to-get-file-name"></a>
+<p>(P) <code>PerlIO_getname</code>, a perl internal I/O function specific to 
VMS, was
+somehow called on another platform.  This should not happen.
+</p>
+</dd>
+<dt>Don&rsquo;t know how to handle magic of type \%o</dt>
+<dd><a 
name="perldiag-Don_0027t-know-how-to-handle-magic-of-type-_005c_0025o"></a>
 <p>(P) The internal handling of magical variables has been cursed.
 </p>
 </dd>
@@ -18368,6 +18372,15 @@
 type in a pack template.  See &lsquo;perlfunc pack&rsquo;.
 </p>
 </dd>
+<dt>each on reference is experimental</dt>
+<dd><a name="perldiag-each-on-reference-is-experimental"></a>
+<p>(S experimental::autoderef) <code>each</code> with a scalar argument is 
experimental
+and may change or be removed in a future Perl version.  If you want to
+take the risk of using this feature, simply disable this warning:
+</p>
+<pre class="verbatim">    no warnings &quot;experimental::autoderef&quot;;
+</pre>
+</dd>
 <dt>elseif should be elsif</dt>
 <dd><a name="perldiag-elseif-should-be-elsif"></a>
 <p>(S syntax) There is no keyword &quot;elseif&quot; in Perl because Larry 
thinks
@@ -18376,7 +18389,7 @@
 unlikely to be what you want.
 </p>
 </dd>
-<dt>Empty \%c{} in regex; marked by &lt;&ndash; HERE in m/%s/</dt>
+<dt>Empty \%c{} in regex; marked by &lt;&ndash;&nbsp;HERE<!-- /@w --> in 
m/%s/</dt>
 <dd><a 
name="perldiag-Empty-_005c_0025c_007b_007d-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) <code>\p</code> and <code>\P</code> are used to introduce a named 
Unicode property, as
 described in <a href="#perlunicode-NAME">perlunicode NAME</a> and <a 
href="#perlre-NAME">perlre NAME</a>.  You used <code>\p</code> or 
<code>\P</code> in
@@ -18448,7 +18461,7 @@
 pragma is in effect.  See <a 
href="#perlre-_0028_003f_007b-code-_007d_0029">perlre <code>(?{ code 
})</code></a>.
 </p>
 </dd>
-<dt>EVAL without pos change exceeded limit in regex; marked by &lt;&ndash; 
HERE in  m/%s/</dt>
+<dt>EVAL without pos change exceeded limit in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-EVAL-without-pos-change-exceeded-limit-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) You used a pattern that nested too many EVAL calls without consuming
 any text.  Restructure the pattern so that text is consumed.
@@ -18476,6 +18489,22 @@
 <p>(F) The final summary message when a Perl compilation fails.
 </p>
 </dd>
+<dt>exists argument is not a HASH or ARRAY element or a subroutine</dt>
+<dd><a 
name="perldiag-exists-argument-is-not-a-HASH-or-ARRAY-element-or-a-subroutine"></a>
+<p>(F) The argument to <code>exists</code> must be a hash or array element or a
+subroutine with an ampersand, such as:
+</p>
+<pre class="verbatim">    $foo{$bar}
+    $ref-&gt;{&quot;susie&quot;}[12]
+    &amp;do_something
+</pre>
+</dd>
+<dt>exists argument is not a subroutine name</dt>
+<dd><a name="perldiag-exists-argument-is-not-a-subroutine-name"></a>
+<p>(F) The argument to <code>exists</code> for <code>exists &amp;sub</code> 
must be a subroutine name,
+and not a subroutine call.  <code>exists &amp;sub()</code> will generate this 
error.
+</p>
+</dd>
 <dt>Exiting eval via %s</dt>
 <dd><a name="perldiag-Exiting-eval-via-_0025s"></a>
 <p>(W exiting) You are exiting an eval by unconventional means, such as a
@@ -18507,10 +18536,9 @@
 as a return, a goto, or a loop control statement.
 </p>
 </dd>
-<dt>Expecting close bracket in regex; marked by &lt;&ndash; HERE in m/%s/</dt>
+<dt>Expecting close bracket in regex; marked by &lt;&ndash;&nbsp;HERE<!-- /@w 
--> in m/%s/</dt>
 <dd><a 
name="perldiag-Expecting-close-bracket-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(F)
-You wrote something like
+<p>(F) You wrote something like
 </p>
 <pre class="verbatim"> (?13
 </pre>
@@ -18519,6 +18547,27 @@
 but omitted the <code>&quot;)&quot;</code>.
 </p>
 </dd>
+<dt>Expecting &rsquo;(?flags:(?[...&rsquo; in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
+<dd><a 
name="perldiag-Expecting-_0027_0028_003fflags_003a_0028_003f_005b_002e_002e_002e_0027-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<p>(F) The <code>(?[...])</code> extended character class regular expression 
construct
+only allows character classes (including character class escapes like
+<code>\d</code>), operators, and parentheses.  The one exception is 
<code>(?flags:...)</code>
+containing at least one flag and exactly one <code>(?[...])</code> construct.
+This allows a regular expression containing just <code>(?[...])</code> to be
+interpolated.  If you see this error message, then you probably
+have some other <code>(?...)</code> construct inside your character class.  See
+<a 
href="#perlrecharclass-Extended-Bracketed-Character-Classes">perlrecharclass 
Extended Bracketed Character Classes</a>.
+</p>
+</dd>
+<dt>Experimental subroutine signatures not enabled</dt>
+<dd><a name="perldiag-Experimental-subroutine-signatures-not-enabled"></a>
+<p>(F) To use subroutine signatures, you must first enable them:
+</p>
+<pre class="verbatim">    no warnings &quot;experimental::signatures&quot;;
+    use feature &quot;signatures&quot;;
+    sub foo ($left, $right) { ... }
+</pre>
+</dd>
 <dt>Experimental &quot;%s&quot; subs not enabled</dt>
 <dd><a name="perldiag-Experimental-_0022_0025s_0022-subs-not-enabled"></a>
 <p>(F) To use lexical subs, you must first enable them:
@@ -18549,13 +18598,14 @@
 queue of such routines has been prematurely ended.
 </p>
 </dd>
-<dt>False [] range &quot;%s&quot; in regex; marked by &lt;&ndash; HERE in 
m/%s/</dt>
+<dt>False [] range &quot;%s&quot; in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-False-_005b_005d-range-_0022_0025s_0022-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(W regexp) A character class range must start and end at a literal
+<p>(W regexp)(F) A character class range must start and end at a literal
 character, not another character class like <code>\d</code> or 
<code>[:alpha:]</code>.  The &quot;-&quot;
-in your false range is interpreted as a literal &quot;-&quot;.  Consider 
quoting the
-&quot;-&quot;, &quot;\-&quot;.  The &lt;&ndash; HERE shows whereabouts in the 
regular expression the
-problem was discovered.  See <a href="#perlre-NAME">perlre NAME</a>.
+in your false range is interpreted as a literal &quot;-&quot;.  In a 
<code>(?[...])</code>
+construct, this is an error, rather than a warning.  Consider quoting
+the &quot;-&quot;, &quot;\-&quot;.  The &lt;&ndash;&nbsp;HERE<!-- /@w --> 
shows whereabouts in the regular expression
+the problem was discovered.  See <a href="#perlre-NAME">perlre NAME</a>.
 </p>
 </dd>
 <dt>Fatal VMS error (status=%d) at %s, line %d</dt>
@@ -18703,10 +18753,10 @@
 </dd>
 <dt>given is experimental</dt>
 <dd><a name="perldiag-given-is-experimental"></a>
-<p>(S experimental::smartmatch) <code>given</code> depends on both a lexical 
<code>$_</code> and
-smartmatch, both of which are experimental, so its behavior may change or
-even be removed in any future release of perl.
-See the explanation under <a 
href="#perlsyn-Experimental-Details-on-given-and-when">perlsyn Experimental 
Details on given and when</a>.
+<p>(S experimental::smartmatch) <code>given</code> depends on smartmatch, which
+is experimental, so its behavior may change or even be removed
+in any future release of perl.  See the explanation under
+<a href="#perlsyn-Experimental-Details-on-given-and-when">perlsyn Experimental 
Details on given and when</a>.
 </p>
 </dd>
 <dt>Global symbol &quot;%s&quot; requires explicit package name</dt>
@@ -18773,19 +18823,19 @@
 has since been undefined.
 </p>
 </dd>
-<dt>()-group starts with a count</dt>
-<dd><a name="perldiag-_0028_0029_002dgroup-starts-with-a-count"></a>
-<p>(F) A ()-group started with a count.  A count is supposed to follow
-something: a template character or a ()-group.  See &lsquo;perlfunc 
pack&rsquo;.
-</p>
-</dd>
-<dt>Group name must start with a non-digit word character in regex; marked by  
&lt;&ndash; HERE in m/%s/</dt>
+<dt>Group name must start with a non-digit word character in regex; marked by  
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Group-name-must-start-with-a-non_002ddigit-word-character-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) Group names must follow the rules for perl identifiers, meaning
 they must start with a non-digit word character. A common cause of
 this error is using (?&amp;0) instead of (?0). See <a 
href="#perlre-NAME">perlre NAME</a>.
 </p>
 </dd>
+<dt>()-group starts with a count</dt>
+<dd><a name="perldiag-_0028_0029_002dgroup-starts-with-a-count"></a>
+<p>(F) A ()-group started with a count.  A count is supposed to follow
+something: a template character or a ()-group.  See &lsquo;perlfunc 
pack&rsquo;.
+</p>
+</dd>
 <dt>%s had compilation errors.</dt>
 <dd><a name="perldiag-_0025s-had-compilation-errors_002e"></a>
 <p>(F) The final summary message when a <code>perl -c</code> fails.
@@ -18817,17 +18867,6 @@
 <a href="#perlport-NAME">perlport NAME</a> for more on portability concerns.
 </p>
 </dd>
-<dt>-i used with no filenames on the command line, reading from STDIN</dt>
-<dd><a 
name="perldiag-_002di-used-with-no-filenames-on-the-command-line_002c-reading-from-STDIN"></a>
-<p>(S inplace) The <code>-i</code> option was passed on the command line, 
indicating
-that the script is intended to edit files inplace, but no files were
-given.  This is usually a mistake, since editing STDIN inplace doesn&rsquo;t
-make sense, and can be confusing because it can make perl look like
-it is hanging when it is really just trying to read from STDIN.  You
-should either pass a filename to edit, or remove <code>-i</code> from the 
command
-line.  See <a href="#perlrun-NAME">perlrun NAME</a> for more details.
-</p>
-</dd>
 <dt>Identifier too long</dt>
 <dd><a name="perldiag-Identifier-too-long"></a>
 <p>(F) Perl limits identifiers (names for variables, functions, etc.) to
@@ -18836,11 +18875,11 @@
 of Perl are likely to eliminate these arbitrary limitations.
 </p>
 </dd>
-<dt>Ignoring zero length \N{} in character class in regex; marked by 
&lt;&ndash; HERE in m/%s/</dt>
+<dt>Ignoring zero length \N{} in character class in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Ignoring-zero-length-_005cN_007b_007d-in-character-class-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(W regexp) Named Unicode character escapes <code>(\N{...})</code> may 
return a zero-length
-sequence.  When such an escape is used in a character class its
-behaviour is not well defined.  Check that the correct escape has
+<p>(W regexp) Named Unicode character escapes <code>(\N{...})</code> may 
return a
+zero-length sequence.  When such an escape is used in a character class
+its behaviour is not well defined.  Check that the correct escape has
 been used, and the correct charname handler is in scope.
 </p>
 </dd>
@@ -18858,8 +18897,10 @@
 </dd>
 <dt>Illegal character after &rsquo;_&rsquo; in prototype for %s : %s</dt>
 <dd><a 
name="perldiag-Illegal-character-after-_0027_005f_0027-in-prototype-for-_0025s-_003a-_0025s"></a>
-<p>(W illegalproto) An illegal character was found in a prototype declaration.
-Legal characters in prototypes are $, @, %, *, ;, [, ], &amp;, \, and +.
+<p>(W illegalproto) An illegal character was found in a prototype
+declaration.  The &rsquo;_&rsquo; in a prototype must be followed by a 
&rsquo;;&rsquo;,
+indicating the rest of the parameters are optional, or one of &rsquo;@&rsquo;
+or &rsquo;%&rsquo;, since those two will accept 0 or more final parameters.
 </p>
 </dd>
 <dt>Illegal character \%o (carriage return)</dt>
@@ -18875,6 +18916,9 @@
 <dd><a 
name="perldiag-Illegal-character-in-prototype-for-_0025s-_003a-_0025s"></a>
 <p>(W illegalproto) An illegal character was found in a prototype declaration.
 Legal characters in prototypes are $, @, %, *, ;, [, ], &amp;, \, and +.
+Perhaps you were trying to write a subroutine signature but didn&rsquo;t enable
+that feature first (<code>use feature 'signatures'</code>), so your signature 
was
+instead interpreted as a bad prototype.
 </p>
 </dd>
 <dt>Illegal declaration of anonymous subroutine</dt>
@@ -18925,10 +18969,9 @@
 Interpretation of the octal number stopped before the 8 or 9.
 </p>
 </dd>
-<dt>Illegal pattern in regex; marked by &lt;&ndash; HERE in m/%s/</dt>
+<dt>Illegal pattern in regex; marked by &lt;&ndash;&nbsp;HERE<!-- /@w --> in 
m/%s/</dt>
 <dd><a 
name="perldiag-Illegal-pattern-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(F)
-You wrote something like
+<p>(F) You wrote something like
 </p>
 <pre class="verbatim"> (?+foo)
 </pre>
@@ -18970,32 +19013,9 @@
 also result in this warning.  See <a href="#perlcall-G_005fKEEPERR">perlcall 
G_KEEPERR</a>.
 </p>
 </dd>
-<dt>In &rsquo;(*VERB...)&rsquo;, splitting the initial &rsquo;(*&rsquo; is 
deprecated in regex; marked by &lt;&ndash; HERE in m/%s/</dt>
-<dd><a 
name="perldiag-In-_0027_0028_002aVERB_002e_002e_002e_0029_0027_002c-splitting-the-initial-_0027_0028_002a_0027-is-deprecated-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(D regexp, deprecated)
-The two-character sequence <code>&quot;(*&quot;</code> in this context in a 
regular
-expression pattern should be an indivisible token, with nothing
-intervening between the <code>&quot;(&quot;</code> and the 
<code>&quot;*&quot;</code>, but you separated them.
-Due to an accident of implementation, this prohibition was not enforced,
-but we do plan to forbid it in a future Perl version.  This message
-serves as giving you fair warning of this pending change.
-</p>
-</dd>
-<dt>In &rsquo;(?...)&rsquo;, splitting the initial &rsquo;(?&rsquo; is 
deprecated in regex; marked by &lt;&ndash; HERE in m/%s/</dt>
-<dd><a 
name="perldiag-In-_0027_0028_003f_002e_002e_002e_0029_0027_002c-splitting-the-initial-_0027_0028_003f_0027-is-deprecated-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(D regexp, deprecated)
-The two-character sequence <code>&quot;(?&quot;</code> in this context in a 
regular
-expression pattern should be an indivisible token, with nothing
-intervening between the <code>&quot;(&quot;</code> and the 
<code>&quot;?&quot;</code>, but you separated them.
-Due to an accident of implementation, this prohibition was not enforced,
-but we do plan to forbid it in a future Perl version.  This message
-serves as giving you fair warning of this pending change.
-</p>
-</dd>
-<dt>Incomplete expression within &rsquo;(?[ ])&rsquo; in regex; marked by 
&lt;&ndash; HERE in m/%s/</dt>
+<dt>Incomplete expression within &rsquo;(?[ ])&rsquo; in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Incomplete-expression-within-_0027_0028_003f_005b-_005d_0029_0027-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(F)
-There was a syntax error within the <code>(?[ ])</code>.  This can happen if 
the
+<p>(F) There was a syntax error within the <code>(?[ ])</code>.  This can 
happen if the
 expression inside the construct was completely empty, or if there are
 too many or few operands for the number of operators.  Perl is not smart
 enough to give you a more precise indication as to what is wrong.
@@ -19015,15 +19035,12 @@
 encoding is limited to code points no larger than 2147483647 (0x7FFFFFFF).
 </p>
 </dd>
-<dt>Infinite recursion in regex; marked by &lt;&ndash; HERE in m/%s/</dt>
-<dd><a 
name="perldiag-Infinite-recursion-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<dt>Infinite recursion in regex</dt>
+<dd><a name="perldiag-Infinite-recursion-in-regex"></a>
 <p>(F) You used a pattern that references itself without consuming any input
 text.  You should check the pattern to ensure that recursive patterns
 either consume text or fail.
 </p>
-<p>The &lt;&ndash; HERE shows whereabouts in the regular expression the 
problem was
-discovered.
-</p>
 </dd>
 <dt>Initialization of state variables in list context currently forbidden</dt>
 <dd><a 
name="perldiag-Initialization-of-state-variables-in-list-context-currently-forbidden"></a>
@@ -19034,6 +19051,30 @@
 supported in a future perl release.
 </p>
 </dd>
+<dt>%%s[%s] in scalar context better written as $%s[%s]</dt>
+<dd><a 
name="perldiag-_0025_0025s_005b_0025s_005d-in-scalar-context-better-written-as-_0024_0025s_005b_0025s_005d"></a>
+<p>(W syntax) In scalar context, you&rsquo;ve used an array index/value slice
+(indicated by %) to select a single element of an array.  Generally
+it&rsquo;s better to ask for a scalar value (indicated by $).  The difference
+is that <code>$foo[&amp;bar]</code> always behaves like a scalar, both in the 
value it
+returns and when evaluating its argument, while <code>%foo[&amp;bar]</code> 
provides
+a list context to its subscript, which can do weird things if you&rsquo;re
+expecting only one subscript.  When called in list context, it also
+returns the index (what <code>&amp;bar</code> returns) in addition to the 
value.
+</p>
+</dd>
+<dt>%%s{%s} in scalar context better written as $%s{%s}</dt>
+<dd><a 
name="perldiag-_0025_0025s_007b_0025s_007d-in-scalar-context-better-written-as-_0024_0025s_007b_0025s_007d"></a>
+<p>(W syntax) In scalar context, you&rsquo;ve used a hash key/value slice
+(indicated by %) to select a single element of a hash.  Generally it&rsquo;s
+better to ask for a scalar value (indicated by $).  The difference
+is that <code>$foo{&amp;bar}</code> always behaves like a scalar, both in the 
value
+it returns and when evaluating its argument, while <code>@foo{&amp;bar}</code> 
and
+provides a list context to its subscript, which can do weird things
+if you&rsquo;re expecting only one subscript.  When called in list context,
+it also returns the key in addition to the value.
+</p>
+</dd>
 <dt>Insecure dependency in %s</dt>
 <dd><a name="perldiag-Insecure-dependency-in-_0025s"></a>
 <p>(F) You tried to do something that the tainting mechanism didn&rsquo;t like.
@@ -19070,6 +19111,17 @@
 See <a href="#perlunicode-User_002dDefined-Character-Properties">perlunicode 
User-Defined Character Properties</a> and <a href="#perlsec-NAME">perlsec 
NAME</a>.
 </p>
 </dd>
+<dt>In &rsquo;(?...)&rsquo;, splitting the initial &rsquo;(?&rsquo; is 
deprecated in regex; marked by &lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
+<dd><a 
name="perldiag-In-_0027_0028_003f_002e_002e_002e_0029_0027_002c-splitting-the-initial-_0027_0028_003f_0027-is-deprecated-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<p>(D regexp, deprecated) The two-character sequence 
<code>&quot;(?&quot;</code> in
+this context in a regular expression pattern should be an
+indivisible token, with nothing intervening between the 
<code>&quot;(&quot;</code>
+and the <code>&quot;?&quot;</code>, but you separated them.  Due to an 
accident of
+implementation, this prohibition was not enforced, but we do
+plan to forbid it in a future Perl version.  This message
+serves as giving you fair warning of this pending change.
+</p>
+</dd>
 <dt>Integer overflow in format string for %s</dt>
 <dd><a name="perldiag-Integer-overflow-in-format-string-for-_0025s"></a>
 <p>(F) The indexes and widths specified in the format string of 
<code>printf()</code>
@@ -19112,10 +19164,10 @@
 to use some odd mathematical operation as a version, like 100/9.
 </p>
 </dd>
-<dt>Internal disaster in regex; marked by &lt;&ndash; HERE in m/%s/</dt>
+<dt>Internal disaster in regex; marked by &lt;&ndash;&nbsp;HERE<!-- /@w --> in 
m/%s/</dt>
 <dd><a 
name="perldiag-Internal-disaster-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(P) Something went badly wrong in the regular expression parser.
-The &lt;&ndash; HERE shows whereabouts in the regular expression the problem 
was
+The &lt;&ndash;&nbsp;HERE<!-- /@w --> shows whereabouts in the regular 
expression the problem was
 discovered.
 </p>
 </dd>
@@ -19129,10 +19181,20 @@
 terminate the Perl script and execute the specified command.
 </p>
 </dd>
-<dt>Internal urp in regex; marked by &lt;&ndash; HERE in m/%s/</dt>
+<dt>internal %&lt;num&gt;p might conflict with future printf extensions</dt>
+<dd><a 
name="perldiag-internal-_0025_003cnum_003ep-might-conflict-with-future-printf-extensions"></a>
+<p>(S internal) Perl&rsquo;s internal routine that handles <code>printf</code> 
and <code>sprintf</code>
+formatting follows a slightly different set of rules when called from
+C or XS code.  Specifically, formats consisting of digits followed
+by &quot;p&quot; (e.g., &quot;%7p&quot;) are reserved for future use.  If you 
see this
+message, then an XS module tried to call that routine with one such
+reserved format.
+</p>
+</dd>
+<dt>Internal urp in regex; marked by &lt;&ndash;&nbsp;HERE<!-- /@w --> in 
m/%s/</dt>
 <dd><a 
name="perldiag-Internal-urp-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(P) Something went badly awry in the regular expression parser.  The
-&lt;&ndash; HERE shows whereabouts in the regular expression the problem was
+&lt;&ndash;&nbsp;HERE<!-- /@w --> shows whereabouts in the regular expression 
the problem was
 discovered.
 </p>
 </dd>
@@ -19156,52 +19218,47 @@
 recognized by Perl or by a user-supplied handler.  See <a 
href="attributes.html#Top">(attributes)</a>.
 </p>
 </dd>
-<dt>Invalid [] range &quot;%*.*s&quot; in regex; marked by &lt;&ndash; HERE in 
m/%s/</dt>
-<dd><a 
name="perldiag-Invalid-_005b_005d-range-_0022_0025_002a_002e_002as_0022-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(F)
-You wrote something like
+<dt>Invalid character in charnames alias definition; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in &rsquo;%s</dt>
+<dd><a 
name="perldiag-Invalid-character-in-charnames-alias-definition_003b-marked-by-_003c_002d_002d-HERE-in-_0027_0025s"></a>
+<p>(F) You tried to create a custom alias for a character name, with
+the <code>:alias</code> option to <code>use charnames</code> and the specified 
character in
+the indicated name isn&rsquo;t valid.  See <a 
href="charnames.html#CUSTOM-ALIASES">(charnames)CUSTOM ALIASES</a>.
 </p>
-<pre class="verbatim"> [z-a]
-</pre>
-<p>in a regular expression pattern.  Ranges must be specified with the
-lowest code point first.  Instead write
+</dd>
+<dt>Invalid \0 character in %s for %s: %s\0%s</dt>
+<dd><a 
name="perldiag-Invalid-_005c0-character-in-_0025s-for-_0025s_003a-_0025s_005c0_0025s"></a>
+<p>(W syscalls) Embedded \0 characters in pathnames or other system call
+arguments produce a warning as of 5.20.  The parts after the \0 were
+formerly ignored by system calls.
 </p>
-<pre class="verbatim"> [a-z]
-</pre>
 </dd>
-<dt>Invalid character in \N{...}; marked by &lt;&ndash; HERE in \N{%s}</dt>
+<dt>Invalid character in \N{...}; marked by &lt;&ndash;&nbsp;HERE<!-- /@w --> 
in \N{%s}</dt>
 <dd><a 
name="perldiag-Invalid-character-in-_005cN_007b_002e_002e_002e_007d_003b-marked-by-_003c_002d_002d-HERE-in-_005cN_007b_0025s_007d"></a>
 <p>(F) Only certain characters are valid for character names.  The
 indicated one isn&rsquo;t.  See <a 
href="charnames.html#CUSTOM-ALIASES">(charnames)CUSTOM ALIASES</a>.
 </p>
 </dd>
-<dt>Invalid character in charnames alias definition; marked by &lt;&ndash; 
HERE in &rsquo;%s</dt>
-<dd><a 
name="perldiag-Invalid-character-in-charnames-alias-definition_003b-marked-by-_003c_002d_002d-HERE-in-_0027_0025s"></a>
-<p>(F) You tried to create a custom alias for a character name, with
-the <code>:alias</code> option to <code>use charnames</code> and the specified 
character in
-the indicated name isn&rsquo;t valid.  See <a 
href="charnames.html#CUSTOM-ALIASES">(charnames)CUSTOM ALIASES</a>.
-</p>
-</dd>
 <dt>Invalid conversion in %s: &quot;%s&quot;</dt>
 <dd><a name="perldiag-Invalid-conversion-in-_0025s_003a-_0022_0025s_0022"></a>
 <p>(W printf) Perl does not understand the given format conversion.  See
 &lsquo;perlfunc sprintf&rsquo;.
 </p>
 </dd>
-<dt>Invalid escape in the specified encoding in regex; marked by &lt;&ndash; 
HERE in  m/%s/</dt>
+<dt>Invalid escape in the specified encoding in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Invalid-escape-in-the-specified-encoding-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(W regexp) The numeric escape (for example <code>\xHH</code>) of value &lt; 
256
+<p>(W regexp)(F) The numeric escape (for example <code>\xHH</code>) of value 
&lt; 256
 didn&rsquo;t correspond to a single character through the conversion
 from the encoding specified by the encoding pragma.
-The escape was replaced with REPLACEMENT CHARACTER (U+FFFD) instead.
-The &lt;&ndash; HERE shows whereabouts in the regular expression the
+The escape was replaced with REPLACEMENT CHARACTER (U+FFFD)
+instead, except within <code>(?[&nbsp;&nbsp;&nbsp;])</code><!-- /@w -->, where 
it is a fatal error.
+The &lt;&ndash;&nbsp;HERE<!-- /@w --> shows whereabouts in the regular 
expression the
 escape was discovered.
 </p>
 </dd>
 <dt>Invalid hexadecimal number in \N{U+...}</dt>
 <dd><a 
name="perldiag-Invalid-hexadecimal-number-in-_005cN_007bU_002b_002e_002e_002e_007d"></a>
 </dd>
-<dt>Invalid hexadecimal number in \N{U+...} in regex; marked by &lt;&ndash; 
HERE in  m/%s/</dt>
+<dt>Invalid hexadecimal number in \N{U+...} in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Invalid-hexadecimal-number-in-_005cN_007bU_002b_002e_002e_002e_007d-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) The character constant represented by <code>...</code> is not a valid 
hexadecimal
 number.  Either it is empty, or you tried to use a character other than
@@ -19238,12 +19295,12 @@
 See also <a href="#perlrun-_002dDletters">perlrun 
<strong>-D</strong><em>letters</em></a>.
 </p>
 </dd>
-<dt>Invalid [] range &quot;%s&quot; in regex; marked by &lt;&ndash; HERE in 
m/%s/</dt>
+<dt>Invalid [] range &quot;%s&quot; in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Invalid-_005b_005d-range-_0022_0025s_0022-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) The range specified in a character class had a minimum character
 greater than the maximum character.  One possibility is that you forgot the
 <code>{}</code> from your ending <code>\x{}</code> - <code>\x</code> without 
the curly braces can go only
-up to <code>ff</code>.  The &lt;&ndash; HERE shows whereabouts in the regular 
expression the
+up to <code>ff</code>.  The &lt;&ndash;&nbsp;HERE<!-- /@w --> shows 
whereabouts in the regular expression the
 problem was discovered.  See <a href="#perlre-NAME">perlre NAME</a>.
 </p>
 </dd>
@@ -19309,6 +19366,17 @@
 an arbitrary reference was blessed into the &quot;version&quot; class.
 </p>
 </dd>
+<dt>In &rsquo;(*VERB...)&rsquo;, splitting the initial &rsquo;(*&rsquo; is 
deprecated in regex; marked by &lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
+<dd><a 
name="perldiag-In-_0027_0028_002aVERB_002e_002e_002e_0029_0027_002c-splitting-the-initial-_0027_0028_002a_0027-is-deprecated-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<p>(D regexp, deprecated) The two-character sequence 
<code>&quot;(*&quot;</code> in
+this context in a regular expression pattern should be an
+indivisible token, with nothing intervening between the 
<code>&quot;(&quot;</code>
+and the <code>&quot;*&quot;</code>, but you separated them.  Due to an 
accident of
+implementation, this prohibition was not enforced, but we do
+plan to forbid it in a future Perl version.  This message
+serves as giving you fair warning of this pending change.
+</p>
+</dd>
 <dt>ioctl is not implemented</dt>
 <dd><a name="perldiag-ioctl-is-not-implemented"></a>
 <p>(F) Your machine apparently doesn&rsquo;t implement ioctl(), which is pretty
@@ -19337,7 +19405,7 @@
 <dt>$* is no longer supported</dt>
 <dd><a name="perldiag-_0024_002a-is-no-longer-supported"></a>
 <p>(D deprecated, syntax) The special variable <code>$*</code>, deprecated in 
older
-perls, has been removed as of 5.9.0 and is no longer supported.  In
+perls, has been removed as of 5.10.0 and is no longer supported.  In
 previous versions of perl the use of <code>$*</code> enabled or disabled 
multi-line
 matching within a string.
 </p>
@@ -19350,7 +19418,7 @@
 <dt>$# is no longer supported</dt>
 <dd><a name="perldiag-_0024_0023-is-no-longer-supported"></a>
 <p>(D deprecated, syntax) The special variable <code>$#</code>, deprecated in 
older
-perls, has been removed as of 5.9.3 and is no longer supported.  You
+perls, has been removed as of 5.10.0 and is no longer supported.  You
 should use the printf/sprintf functions instead.
 </p>
 </dd>
@@ -19367,11 +19435,31 @@
 unaware of.
 </p>
 </dd>
+<dt>-i used with no filenames on the command line, reading from STDIN</dt>
+<dd><a 
name="perldiag-_002di-used-with-no-filenames-on-the-command-line_002c-reading-from-STDIN"></a>
+<p>(S inplace) The <code>-i</code> option was passed on the command line, 
indicating
+that the script is intended to edit files in place, but no files were
+given.  This is usually a mistake, since editing STDIN in place doesn&rsquo;t
+make sense, and can be confusing because it can make perl look like
+it is hanging when it is really just trying to read from STDIN.  You
+should either pass a filename to edit, or remove <code>-i</code> from the 
command
+line.  See <a href="#perlrun-NAME">perlrun NAME</a> for more details.
+</p>
+</dd>
 <dt>Junk on end of regexp in regex m/%s/</dt>
 <dd><a name="perldiag-Junk-on-end-of-regexp-in-regex-m_002f_0025s_002f"></a>
 <p>(P) The regular expression parser is confused.
 </p>
 </dd>
+<dt>keys on reference is experimental</dt>
+<dd><a name="perldiag-keys-on-reference-is-experimental"></a>
+<p>(S experimental::autoderef) <code>keys</code> with a scalar argument is 
experimental
+and may change or be removed in a future Perl version.  If you want to
+take the risk of using this feature, simply disable this warning:
+</p>
+<pre class="verbatim">    no warnings &quot;experimental::autoderef&quot;;
+</pre>
+</dd>
 <dt>Label not found for &quot;last %s&quot;</dt>
 <dd><a name="perldiag-Label-not-found-for-_0022last-_0025s_0022"></a>
 <p>(F) You named a loop to break out of, but you&rsquo;re not currently in a 
loop
@@ -19406,8 +19494,8 @@
 an undefined value for the length.  See &lsquo;perlfunc pack&rsquo;.
 </p>
 </dd>
-<dt>length() used on %s</dt>
-<dd><a name="perldiag-length_0028_0029-used-on-_0025s"></a>
+<dt>length() used on %s (did you mean &quot;scalar(%s)&quot;?)</dt>
+<dd><a 
name="perldiag-length_0028_0029-used-on-_0025s-_0028did-you-mean-_0022scalar_0028_0025s_0029_0022_003f_0029"></a>
 <p>(W syntax) You used length() on either an array or a hash when you
 probably wanted a count of the items.
 </p>
@@ -19508,6 +19596,13 @@
 <p>See also <a href="attributes.html#Top">(attributes)attributes.pm</a>.
 </p>
 </dd>
+<dt>Magical list constants are not supported</dt>
+<dd><a name="perldiag-Magical-list-constants-are-not-supported"></a>
+<p>(F) You assigned a magical array to a stash element, and then tried
+to use the subroutine from the same slot.  You are asking Perl to do
+something it cannot do, details subject to change between Perl versions.
+</p>
+</dd>
 <dt>Malformed integer in [] in pack</dt>
 <dd><a name="perldiag-Malformed-integer-in-_005b_005d-in-pack"></a>
 <p>(F) Between the brackets enclosing a numeric repeat count only digits
@@ -19541,6 +19636,9 @@
 syntax of function prototypes is given a brief compile-time check for
 obvious errors like invalid characters.  A more rigorous check is run
 when the function is called.
+Perhaps the function&rsquo;s author was trying to write a subroutine signature
+but didn&rsquo;t enable that feature first (<code>use feature 
'signatures'</code>),
+so the signature was instead interpreted as a bad prototype.
 </p>
 </dd>
 <dt>Malformed UTF-8 character (%s)</dt>
@@ -19598,10 +19696,51 @@
 doing it Perl met a malformed Unicode surrogate.
 </p>
 </dd>
-<dt>%s matches null string many times in regex; marked by &lt;&ndash; HERE in 
m/%s/</dt>
+<dt>Mandatory parameter follows optional parameter</dt>
+<dd><a name="perldiag-Mandatory-parameter-follows-optional-parameter"></a>
+<p>(F) In a subroutine signature, you wrote something like &quot;$a = undef,
+$b&quot;, making an earlier parameter optional and a later one mandatory.
+Parameters are filled from left to right, so it&rsquo;s impossible for the
+caller to omit an earlier one and pass a later one.  If you want to act
+as if the parameters are filled from right to left, declare the rightmost
+optional and then shuffle the parameters around in the subroutine&rsquo;s body.
+</p>
+</dd>
+<dt>Matched non-Unicode code point 0x%X against Unicode property; may not be 
portable</dt>
+<dd><a 
name="perldiag-Matched-non_002dUnicode-code-point-0x_0025X-against-Unicode-property_003b-may-not-be-portable"></a>
+<p>(S non_unicode) Perl allows strings to contain a superset of
+Unicode code points; each code point may be as large as what is storable
+in an unsigned integer on your system, but these may not be accepted by
+other languages/systems.  This message occurs when you matched a string
+containing such a code point against a regular expression pattern, and
+the code point was matched against a Unicode property, <code>\p{...}</code> or
+<code>\P{...}</code>.  Unicode properties are only defined on Unicode code 
points,
+so the result of this match is undefined by Unicode, but Perl (starting
+in v5.20) treats non-Unicode code points as if they were typical
+unassigned Unicode ones, and matched this one accordingly.  Whether a
+given property matches these code points or not is specified in
+<a 
href="perluniprops.html#Properties-accessible-through-_005cp_007b_007d-and-_005cP_007b_007d">(perluniprops)Properties
 accessible through \p{} and \P{}</a>.
+</p>
+<p>This message is suppressed (unless it has been made fatal) if it is
+immaterial to the results of the match if the code point is Unicode or
+not.  For example, the property <code>\p{ASCII_Hex_Digit}</code> only can match
+the 22 characters <code>[0-9A-Fa-f]</code>, so obviously all other code points,
+Unicode or not, won&rsquo;t match it.  (And <code>\P{ASCII_Hex_Digit}</code> 
will match
+every code point except these 22.)
+</p>
+<p>Getting this message indicates that the outcome of the match arguably
+should have been the opposite of what actually happened.  If you think
+that is the case, you may wish to make the <code>non_unicode</code> warnings
+category fatal; if you agree with Perl&rsquo;s decision, you may wish to turn
+off this category.
+</p>
+<p>See <a href="#perlunicode-Beyond-Unicode-code-points">perlunicode Beyond 
Unicode code points</a> for more information.
+</p>
+</dd>
+<dt>%s matches null string many times in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-_0025s-matches-null-string-many-times-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(W regexp) The pattern you&rsquo;ve specified would be an infinite loop if 
the
-regular expression engine didn&rsquo;t specifically check for that.  The 
&lt;&ndash; HERE
+regular expression engine didn&rsquo;t specifically check for that.  The 
&lt;&ndash;&nbsp;HERE<!-- /@w -->
 shows whereabouts in the regular expression the problem was discovered.
 See <a href="#perlre-NAME">perlre NAME</a>.
 </p>
@@ -19668,7 +19807,7 @@
 <dt>Missing braces on \N{}</dt>
 <dd><a name="perldiag-Missing-braces-on-_005cN_007b_007d"></a>
 </dd>
-<dt>Missing braces on \N{} in regex; marked by &lt;&ndash; HERE in m/%s/</dt>
+<dt>Missing braces on \N{} in regex; marked by &lt;&ndash;&nbsp;HERE<!-- /@w 
--> in m/%s/</dt>
 <dd><a 
name="perldiag-Missing-braces-on-_005cN_007b_007d-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) Wrong syntax of character name literal <code>\N{charname}</code> within
 double-quotish context.  This can also happen when there is a space
@@ -19701,9 +19840,14 @@
 character name.
 </p>
 </dd>
+<dt>Missing &rsquo;]&rsquo; in prototype for %s : %s</dt>
+<dd><a 
name="perldiag-Missing-_0027_005d_0027-in-prototype-for-_0025s-_003a-_0025s"></a>
+<p>(W illegalproto) A grouping was started with <code>[</code> but never 
closed with <code>]</code>.
+</p>
+</dd>
 <dt>Missing name in &quot;%s sub&quot;</dt>
 <dd><a name="perldiag-Missing-name-in-_0022_0025s-sub_0022"></a>
-<p>(F) The reserved syntax for lexically scoped subroutines requires that
+<p>(F) The syntax for lexically scoped subroutines requires that
 they have a name with which they can be found.
 </p>
 </dd>
@@ -19720,7 +19864,7 @@
 &quot;%s found where operator expected&quot;.  Often the missing operator is a 
comma.
 </p>
 </dd>
-<dt>Missing right brace on \%c{} in regex; marked by &lt;&ndash; HERE in 
m/%s/</dt>
+<dt>Missing right brace on \%c{} in regex; marked by &lt;&ndash;&nbsp;HERE<!-- 
/@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Missing-right-brace-on-_005c_0025c_007b_007d-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) Missing right brace in <code>\x{...}</code>, <code>\p{...}</code>, 
<code>\P{...}</code>, or <code>\N{...}</code>.
 </p>
@@ -19819,6 +19963,33 @@
 See &lsquo;perlfunc open&rsquo; for details.
 </p>
 </dd>
+<dt>mprotect for COW string %p %u failed with %d</dt>
+<dd><a 
name="perldiag-mprotect-for-COW-string-_0025p-_0025u-failed-with-_0025d"></a>
+<p>(S) You compiled perl with <strong>-D</strong>PERL_DEBUG_READONLY_COW (see
+<a href="#perlguts-Copy-on-Write">perlguts Copy on Write</a>), but a shared 
string buffer
+could not be made read-only.
+</p>
+</dd>
+<dt>mprotect for %p %u failed with %d</dt>
+<dd><a name="perldiag-mprotect-for-_0025p-_0025u-failed-with-_0025d"></a>
+<p>(S) You compiled perl with <strong>-D</strong>PERL_DEBUG_READONLY_OPS (see 
<a href="#perlhacktips-NAME">perlhacktips NAME</a>),
+but an op tree could not be made read-only.
+</p>
+</dd>
+<dt>mprotect RW for COW string %p %u failed with %d</dt>
+<dd><a 
name="perldiag-mprotect-RW-for-COW-string-_0025p-_0025u-failed-with-_0025d"></a>
+<p>(S) You compiled perl with <strong>-D</strong>PERL_DEBUG_READONLY_COW (see
+<a href="#perlguts-Copy-on-Write">perlguts Copy on Write</a>), but a read-only 
shared string
+buffer could not be made mutable.
+</p>
+</dd>
+<dt>mprotect RW for %p %u failed with %d</dt>
+<dd><a name="perldiag-mprotect-RW-for-_0025p-_0025u-failed-with-_0025d"></a>
+<p>(S) You compiled perl with <strong>-D</strong>PERL_DEBUG_READONLY_OPS (see
+<a href="#perlhacktips-NAME">perlhacktips NAME</a>), but a read-only op tree 
could not be made
+mutable before freeing the ops.
+</p>
+</dd>
 <dt>msg%s not implemented</dt>
 <dd><a name="perldiag-msg_0025s-not-implemented"></a>
 <p>(F) You don&rsquo;t have System V message IPC on your system.
@@ -19843,6 +20014,15 @@
 that yet.
 </p>
 </dd>
+<dt>&quot;my %s&quot; used in sort comparison</dt>
+<dd><a name="perldiag-_0022my-_0025s_0022-used-in-sort-comparison"></a>
+<p>(W syntax) The package variables $a and $b are used for sort comparisons.
+You used $a or $b in as an operand to the <code>&lt;=&gt;</code> or 
<code>cmp</code> operator inside a
+sort comparison block, and the variable had earlier been declared as a
+lexical variable.  Either qualify the sort variable with the package
+name, or rename the lexical variable.
+</p>
+</dd>
 <dt>&quot;my&quot; variable %s can&rsquo;t be in a package</dt>
 <dd><a 
name="perldiag-_0022my_0022-variable-_0025s-can_0027t-be-in-a-package"></a>
 <p>(F) Lexically scoped variables aren&rsquo;t in a package, so it 
doesn&rsquo;t make
@@ -19852,58 +20032,22 @@
 </dd>
 <dt>Name &quot;%s::%s&quot; used only once: possible typo</dt>
 <dd><a 
name="perldiag-Name-_0022_0025s_003a_003a_0025s_0022-used-only-once_003a-possible-typo"></a>
-<p>(W once) Typographical errors often show up as unique variable names.
-If you had a good reason for having a unique name, then just mention it
-again somehow to suppress the message.  The <code>our</code> declaration is
-provided for this purpose.
-</p>
-<p>NOTE: This warning detects symbols that have been used only once so $c, @c,
-%c, *c, &amp;c, sub c{}, c(), and c (the filehandle or format) are considered
-the same; if a program uses $c only once but also uses any of the others it
-will not trigger this warning.
-</p>
-</dd>
-<dt>\N in a character class must be a named character: \N{...} in regex;  
marked by &lt;&ndash; HERE in m/%s/</dt>
-<dd><a 
name="perldiag-_005cN-in-a-character-class-must-be-a-named-character_003a-_005cN_007b_002e_002e_002e_007d-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(F) The new (5.12) meaning of <code>\N</code> as <code>[^\n]</code> is not 
valid in a bracketed
-character class, for the same reason that <code>.</code> in a character class 
loses
-its specialness: it matches almost everything, which is probably not
-what you want.
-</p>
-</dd>
-<dt>\N{NAME} must be resolved by the lexer in regex; marked by &lt;&ndash; 
HERE in m/%s/</dt>
-<dd><a 
name="perldiag-_005cN_007bNAME_007d-must-be-resolved-by-the-lexer-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(F) When compiling a regex pattern, an unresolved named character or
-sequence was encountered.  This can happen in any of several ways that
-bypass the lexer, such as using single-quotish context, or an extra
-backslash in double-quotish:
-</p>
-<pre class="verbatim">    $re = '\N{SPACE}';  # Wrong!
-    $re = &quot;\\N{SPACE}&quot;; # Wrong!
-    /$re/;
-</pre>
-<p>Instead, use double-quotes with a single backslash:
-</p>
-<pre class="verbatim">    $re = &quot;\N{SPACE}&quot;;  # ok
-    /$re/;
-</pre>
-<p>The lexer can be bypassed as well by creating the pattern from smaller
-components:
-</p>
-<pre class="verbatim">    $re = '\N';
-    /${re}{SPACE}/;     # Wrong!
-</pre>
-<p>It&rsquo;s not a good idea to split a construct in the middle like this, 
and it
-doesn&rsquo;t work here.  Instead use the solution above.
-</p>
-<p>Finally, the message also can happen under the <code>/x</code> regex 
modifier when the
-<code>\N</code> is separated by spaces from the <code>{</code>, in which case, 
remove the spaces.
+<p>(W once) Typographical errors often show up as unique variable
+names.  If you had a good reason for having a unique name, then
+just mention it again somehow to suppress the message.  The <code>our</code>
+declaration is also provided for this purpose.
+</p>
+<p>NOTE: This warning detects package symbols that have been used only
+once. This means lexical variables will never trigger this warning.
+It also means that all of the package variables $c, @c, %c, as well
+as *c, &amp;c, sub c{}, c(), and c (the filehandle or
+format) are considered the same; if a program uses $c only once
+but also uses any of the others it will not trigger this warning.
+Symbols beginning with an underscore and symbols using special
+identifiers (q.v. <a href="#perldata-NAME">perldata NAME</a>) are exempt from 
this warning.
 </p>
-<pre class="verbatim">    /\N {SPACE}/x;      # Wrong!
-    /\N{SPACE}/x;       # ok
-</pre>
 </dd>
-<dt>Need exactly 3 octal digits in regex; marked by &lt;&ndash; HERE in 
m/%s/</dt>
+<dt>Need exactly 3 octal digits in regex; marked by &lt;&ndash;&nbsp;HERE<!-- 
/@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Need-exactly-3-octal-digits-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) Within <code>(?[&nbsp;&nbsp;&nbsp;])</code><!-- /@w -->, all constants 
interpreted as octal need to be
 exactly 3 digits long.  This helps catch some ambiguities.  If your
@@ -19914,8 +20058,8 @@
  (?[ [ \007 8 ] ])   # Clearer
 </pre>
 <p>The maximum number this construct can express is <code>\777</code>.  If you
-need a larger one, you need to use <a 
href="#perlrebackslash-Octal-escapes">\o{}</a>
-instead.  If you meant two separate things, you need to separate them
+need a larger one, you need to use <a 
href="#perlrebackslash-Octal-escapes">\o{}</a> instead.  If you meant
+two separate things, you need to separate them:
 </p>
 <pre class="verbatim"> (?[ [ \7776 ] ])        # Syntax error!
  (?[ [ \o{7776} ] ])     # One meaning
@@ -19941,10 +20085,10 @@
 greater than or equal to zero.
 </p>
 </dd>
-<dt>Nested quantifiers in regex; marked by &lt;&ndash; HERE in m/%s/</dt>
+<dt>Nested quantifiers in regex; marked by &lt;&ndash;&nbsp;HERE<!-- /@w --> 
in m/%s/</dt>
 <dd><a 
name="perldiag-Nested-quantifiers-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) You can&rsquo;t quantify a quantifier without intervening parentheses.
-So things like ** or +* or ?* are illegal.  The &lt;&ndash; HERE shows
+So things like ** or +* or ?* are illegal.  The &lt;&ndash;&nbsp;HERE<!-- /@w 
--> shows
 whereabouts in the regular expression the problem was discovered.
 </p>
 <p>Note that the minimal matching quantifiers, <code>*?</code>, 
<code>+?</code>, and
@@ -19964,6 +20108,56 @@
 See <a href="mro.html#Top">(mro)</a>.
 </p>
 </dd>
+<dt>\N in a character class must be a named character: \N{...} in regex;  
marked by &lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
+<dd><a 
name="perldiag-_005cN-in-a-character-class-must-be-a-named-character_003a-_005cN_007b_002e_002e_002e_007d-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<p>(F) The new (as of Perl 5.12) meaning of <code>\N</code> as 
<code>[^\n]</code> is not valid in a
+bracketed character class, for the same reason that <code>.</code> in a 
character
+class loses its specialness: it matches almost everything, which is
+probably not what you want.
+</p>
+</dd>
+<dt>\N{} in character class restricted to one character in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
+<dd><a 
name="perldiag-_005cN_007b_007d-in-character-class-restricted-to-one-character-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<p>(F) Named Unicode character escapes <code>(\N{...})</code> may return a
+multi-character sequence.  Such an escape may not be used in
+a character class, because character classes always match one
+character of input.  Check that the correct escape has been used,
+and the correct charname handler is in scope.  The &lt;&ndash;&nbsp;HERE<!-- 
/@w --> shows
+whereabouts in the regular expression the problem was discovered.
+</p>
+</dd>
+<dt>\N{NAME} must be resolved by the lexer in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
+<dd><a 
name="perldiag-_005cN_007bNAME_007d-must-be-resolved-by-the-lexer-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<p>(F) When compiling a regex pattern, an unresolved named character or
+sequence was encountered.  This can happen in any of several ways that
+bypass the lexer, such as using single-quotish context, or an extra
+backslash in double-quotish:
+</p>
+<pre class="verbatim">    $re = '\N{SPACE}';  # Wrong!
+    $re = &quot;\\N{SPACE}&quot;; # Wrong!
+    /$re/;
+</pre>
+<p>Instead, use double-quotes with a single backslash:
+</p>
+<pre class="verbatim">    $re = &quot;\N{SPACE}&quot;;  # ok
+    /$re/;
+</pre>
+<p>The lexer can be bypassed as well by creating the pattern from smaller
+components:
+</p>
+<pre class="verbatim">    $re = '\N';
+    /${re}{SPACE}/;     # Wrong!
+</pre>
+<p>It&rsquo;s not a good idea to split a construct in the middle like this, and
+it doesn&rsquo;t work here.  Instead use the solution above.
+</p>
+<p>Finally, the message also can happen under the <code>/x</code> regex 
modifier when the
+<code>\N</code> is separated by spaces from the <code>{</code>, in which case, 
remove the spaces.
+</p>
+<pre class="verbatim">    /\N {SPACE}/x;      # Wrong!
+    /\N{SPACE}/x;       # ok
+</pre>
+</dd>
 <dt>No %s allowed while running setuid</dt>
 <dd><a name="perldiag-No-_0025s-allowed-while-running-setuid"></a>
 <p>(F) Certain operations are deemed to be too insecure for a setuid or
@@ -20065,12 +20259,43 @@
 or <code>next::can</code>.  See <a href="mro.html#Top">(mro)</a>.
 </p>
 </dd>
+<dt>Non-hex character in regex; marked by &lt;&ndash;&nbsp;HERE<!-- /@w --> in 
m/%s/</dt>
+<dd><a 
name="perldiag-Non_002dhex-character-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<p>(F) In a regular expression, there was a non-hexadecimal character where
+a hex one was expected, like
+</p>
+<pre class="verbatim"> (?[ [ \xDG ] ])
+ (?[ [ \x{DEKA} ] ])
+</pre>
+</dd>
+<dt>Non-octal character in regex; marked by &lt;&ndash;&nbsp;HERE<!-- /@w --> 
in m/%s/</dt>
+<dd><a 
name="perldiag-Non_002doctal-character-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<p>(F) In a regular expression, there was a non-octal character where
+an octal one was expected, like
+</p>
+<pre class="verbatim"> (?[ [ \o{1278} ] ])
+</pre>
+</dd>
+<dt>Non-octal character &rsquo;%c&rsquo;.  Resolved as &quot;%s&quot;</dt>
+<dd><a 
name="perldiag-Non_002doctal-character-_0027_0025c_0027_002e-Resolved-as-_0022_0025s_0022"></a>
+<p>(W digit) In parsing an octal numeric constant, a character was
+unexpectedly encountered that isn&rsquo;t octal.  The resulting value
+is as indicated.
+</p>
+</dd>
 <dt>&quot;no&quot; not allowed in expression</dt>
 <dd><a name="perldiag-_0022no_0022-not-allowed-in-expression"></a>
 <p>(F) The &quot;no&quot; keyword is recognized and executed at compile time, 
and
 returns no useful value.  See <a href="#perlmod-NAME">perlmod NAME</a>.
 </p>
 </dd>
+<dt>Non-string passed as bitmask</dt>
+<dd><a name="perldiag-Non_002dstring-passed-as-bitmask"></a>
+<p>(W misc) A number has been passed as a bitmask argument to select().
+Use the vec() function to construct the file descriptor bitmasks for
+select.  See <a href="#perlfunc-select">perlfunc select</a>.
+</p>
+</dd>
 <dt>No output file after &gt; on command line</dt>
 <dd><a name="perldiag-No-output-file-after-_003e-on-command-line"></a>
 <p>(F) An error peculiar to VMS.  Perl handles its own command line
@@ -20110,6 +20335,12 @@
 your system.
 </p>
 </dd>
+<dt>No such class %s</dt>
+<dd><a name="perldiag-No-such-class-_0025s"></a>
+<p>(F) You provided a class qualifier in a &quot;my&quot;, &quot;our&quot; or 
&quot;state&quot;
+declaration, but this class doesn&rsquo;t exist at this point in your program.
+</p>
+</dd>
 <dt>No such class field &quot;%s&quot; in variable %s of type %s</dt>
 <dd><a 
name="perldiag-No-such-class-field-_0022_0025s_0022-in-variable-_0025s-of-type-_0025s"></a>
 <p>(F) You tried to access a key from a hash through the indicated typed
@@ -20118,12 +20349,6 @@
 <a href="fields.html#Top">(fields)</a> pragma.
 </p>
 </dd>
-<dt>No such class %s</dt>
-<dd><a name="perldiag-No-such-class-_0025s"></a>
-<p>(F) You provided a class qualifier in a &quot;my&quot;, &quot;our&quot; or 
&quot;state&quot;
-declaration, but this class doesn&rsquo;t exist at this point in your program.
-</p>
-</dd>
 <dt>No such hook: %s</dt>
 <dd><a name="perldiag-No-such-hook_003a-_0025s"></a>
 <p>(F) You specified a signal hook that was not recognized by Perl.
@@ -20220,6 +20445,14 @@
 yourself.
 </p>
 </dd>
+<dt>(?[...]) not valid in locale in regex; marked by &lt;&ndash;&nbsp;HERE<!-- 
/@w --> in m/%s/</dt>
+<dd><a 
name="perldiag-_0028_003f_005b_002e_002e_002e_005d_0029-not-valid-in-locale-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<p>(F) <code>(?[...])</code> cannot be used within the scope of a 
<code>use&nbsp;locale<!-- /@w --></code> or with
+an <code>/l</code> regular expression modifier, as that would require deferring
+to run-time the calculation of what it should evaluate to, and it is
+regex compile-time only.
+</p>
+</dd>
 <dt>no UTC offset information; assuming local time is UTC</dt>
 <dd><a 
name="perldiag-no-UTC-offset-information_003b-assuming-local-time-is-UTC"></a>
 <p>(S) A warning peculiar to VMS.  Perl was unable to find the local
@@ -20229,48 +20462,6 @@
 need to be added to UTC to get local time.
 </p>
 </dd>
-<dt>Non-hex character in regex; marked by &lt;&ndash; HERE in m/%s/</dt>
-<dd><a 
name="perldiag-Non_002dhex-character-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(F)
-In a regular expression, there was a non-hexadecimal character where
-a hex one was expected, like
-</p>
-<pre class="verbatim"> (?[ [ \xDG ] ])
- (?[ [ \x{DEKA} ] ])
-</pre>
-</dd>
-<dt>Non-octal character &rsquo;%c&rsquo;.  Resolved as &quot;%s&quot;</dt>
-<dd><a 
name="perldiag-Non_002doctal-character-_0027_0025c_0027_002e-Resolved-as-_0022_0025s_0022"></a>
-<p>(W digit) In parsing an octal numeric constant, a character was
-unexpectedly encountered that isn&rsquo;t octal.  The resulting value
-is as indicated.
-</p>
-</dd>
-<dt>Non-octal character in regex; marked by &lt;&ndash; HERE in m/%s/</dt>
-<dd><a 
name="perldiag-Non_002doctal-character-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(F)
-In a regular expression, there was a non-octal character where
-an octal one was expected, like
-</p>
-<pre class="verbatim"> (?[ [ \o{1278} ] ])
-</pre>
-</dd>
-<dt>Non-string passed as bitmask</dt>
-<dd><a name="perldiag-Non_002dstring-passed-as-bitmask"></a>
-<p>(W misc) A number has been passed as a bitmask argument to select().
-Use the vec() function to construct the file descriptor bitmasks for
-select.  See <a href="#perlfunc-select">perlfunc select</a>.
-</p>
-</dd>
-<dt>(?[...]) not valid in locale in regex; marked by &lt;&ndash; HERE in 
m/%s/</dt>
-<dd><a 
name="perldiag-_0028_003f_005b_002e_002e_002e_005d_0029-not-valid-in-locale-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(F)
-<code>(?[...])</code> cannot be used within the scope of a 
<code>use&nbsp;locale<!-- /@w --></code> or
-with an <code>/l</code> regular expression modifier, as that would require
-deferring to run-time the calculation of what it should evaluate to, and
-it is regex compile-time only.
-</p>
-</dd>
 <dt>Null filename used</dt>
 <dd><a name="perldiag-Null-filename-used"></a>
 <p>(F) You can&rsquo;t require the null filename, especially because on many
@@ -20321,15 +20512,6 @@
 the braces.
 </p>
 </dd>
-<dt>&quot;my %s&quot; used in sort comparison</dt>
-<dd><a name="perldiag-_0022my-_0025s_0022-used-in-sort-comparison"></a>
-<p>(W syntax) The package variables $a and $b are used for sort comparisons.
-You used $a or $b in as an operand to the <code>&lt;=&gt;</code> or 
<code>cmp</code> operator inside a
-sort comparison block, and the variable had earlier been declared as a
-lexical variable.  Either qualify the sort variable with the package
-name, or rename the lexical variable.
-</p>
-</dd>
 <dt>Octal number &gt; 037777777777 non-portable</dt>
 <dd><a name="perldiag-Octal-number-_003e-037777777777-non_002dportable"></a>
 <p>(W portable) The octal number you specified is larger than 2**32-1
@@ -20337,6 +20519,16 @@
 <a href="#perlport-NAME">perlport NAME</a> for more on portability concerns.
 </p>
 </dd>
+<dt>Odd name/value argument for subroutine</dt>
+<dd><a name="perldiag-Odd-name_002fvalue-argument-for-subroutine"></a>
+<p>(F) A subroutine using a slurpy hash parameter in its signature
+received an odd number of arguments to populate the hash.  It requires
+the arguments to be paired, with the same number of keys as values.
+The caller of the subroutine is presumably at fault.  Inconveniently,
+this error will be reported at the location of the subroutine, not that
+of the caller.
+</p>
+</dd>
 <dt>Odd number of arguments for overload::constant</dt>
 <dd><a 
name="perldiag-Odd-number-of-arguments-for-overload_003a_003aconstant"></a>
 <p>(W overload) The call to overload::constant contained an odd number of
@@ -20379,13 +20571,6 @@
 that isn&rsquo;t open.  Check your control flow.  See also <a 
href="#perlfunc-_002dX">perlfunc -X</a>.
 </p>
 </dd>
-<dt>Strings with code points over 0xFF may not be mapped into in-memory file 
handles</dt>
-<dd><a 
name="perldiag-Strings-with-code-points-over-0xFF-may-not-be-mapped-into-in_002dmemory-file-handles"></a>
-<p>(W utf8) You tried to open a reference to a scalar for read or append
-where the scalar contained code points over 0xFF.  In-memory files
-model on-disk files and can only contain bytes.
-</p>
-</dd>
 <dt>oops: oopsAV</dt>
 <dd><a name="perldiag-oops_003a-oopsAV"></a>
 <p>(S internal) An internal warning that the grammar is screwed up.
@@ -20412,10 +20597,9 @@
 and is deprecated.
 </p>
 </dd>
-<dt>Operand with no preceding operator in regex; marked by &lt;&ndash; HERE in 
m/%s/</dt>
+<dt>Operand with no preceding operator in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Operand-with-no-preceding-operator-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(F)
-You wrote something like
+<p>(F) You wrote something like
 </p>
 <pre class="verbatim"> (?[ \p{Digit} \p{Thai} ])
 </pre>
@@ -20433,9 +20617,9 @@
 </dd>
 <dt>Operation &quot;%s&quot; returns its argument for non-Unicode code point 
0x%X</dt>
 <dd><a 
name="perldiag-Operation-_0022_0025s_0022-returns-its-argument-for-non_002dUnicode-code-point-0x_0025X"></a>
-<p>(S utf8, non_unicode) You performed an operation requiring Unicode
-semantics on a code point that is not in Unicode, so what it should do
-is not defined.  Perl has chosen to have it do nothing, and warn you.
+<p>(S non_unicode) You performed an operation requiring Unicode semantics
+on a code point that is not in Unicode, so what it should do is not
+defined.  Perl has chosen to have it do nothing, and warn you.
 </p>
 <p>If the operation shown is &quot;ToFold&quot;, it means that case-insensitive
 matching in a regular expression was done on the code point.
@@ -20446,12 +20630,12 @@
 </dd>
 <dt>Operation &quot;%s&quot; returns its argument for UTF-16 surrogate 
U+%X</dt>
 <dd><a 
name="perldiag-Operation-_0022_0025s_0022-returns-its-argument-for-UTF_002d16-surrogate-U_002b_0025X"></a>
-<p>(S utf8, surrogate) You performed an operation requiring Unicode
-semantics on a Unicode surrogate.  Unicode frowns upon the use of
-surrogates for anything but storing strings in UTF-16, but semantics
-are (reluctantly) defined for the surrogates, and they are to do
-nothing for this operation.  Because the use of surrogates can be
-dangerous, Perl warns.
+<p>(S surrogate) You performed an operation requiring Unicode
+semantics on a Unicode surrogate.  Unicode frowns upon the use
+of surrogates for anything but storing strings in UTF-16, but
+semantics are (reluctantly) defined for the surrogates, and
+they are to do nothing for this operation.  Because the use of
+surrogates can be dangerous, Perl warns.
 </p>
 <p>If the operation shown is &quot;ToFold&quot;, it means that case-insensitive
 matching in a regular expression was done on the code point.
@@ -20469,6 +20653,14 @@
 &quot;*foo * &rsquo;foo&rsquo;&quot;.
 </p>
 </dd>
+<dt>Optional parameter lacks default expression</dt>
+<dd><a name="perldiag-Optional-parameter-lacks-default-expression"></a>
+<p>(F) In a subroutine signature, you wrote something like &quot;$a =&quot;, 
making a
+named optional parameter without a default value.  A nameless optional
+parameter is permitted to have no default value, but a named one must
+have a specific default.  You probably want &quot;$a = undef&quot;.
+</p>
+</dd>
 <dt>&quot;our&quot; variable %s redeclared</dt>
 <dd><a name="perldiag-_0022our_0022-variable-_0025s-redeclared"></a>
 <p>(W misc) You seem to have already declared the same global once before
@@ -20685,7 +20877,7 @@
 </dd>
 <dt>panic: kid popen errno read</dt>
 <dd><a name="perldiag-panic_003a-kid-popen-errno-read"></a>
-<p>(F) forked child returned an incomprehensible message about its errno.
+<p>(F) A forked child returned an incomprehensible message about its errno.
 </p>
 </dd>
 <dt>panic: last, type=%u</dt>
@@ -20719,7 +20911,8 @@
 </dd>
 <dt>panic: memory wrap</dt>
 <dd><a name="perldiag-panic_003a-memory-wrap"></a>
-<p>(P) Something tried to allocate more memory than possible.
+<p>(P) Something tried to allocate either more memory than possible or a
+negative amount.
 </p>
 </dd>
 <dt>panic: pad_alloc, %p!=%p</dt>
@@ -20805,13 +20998,20 @@
 <p>(P) scan_num() got called on something that wasn&rsquo;t a number.
 </p>
 </dd>
-<dt>panic: Sequence (?{...}): no code block found</dt>
-<dd><a 
name="perldiag-panic_003a-Sequence-_0028_003f_007b_002e_002e_002e_007d_0029_003a-no-code-block-found"></a>
-<p>(P) while compiling a pattern that has embedded (?{}) or (??{}) code
+<dt>panic: Sequence (?{...}): no code block found in regex m/%s/</dt>
+<dd><a 
name="perldiag-panic_003a-Sequence-_0028_003f_007b_002e_002e_002e_007d_0029_003a-no-code-block-found-in-regex-m_002f_0025s_002f"></a>
+<p>(P) While compiling a pattern that has embedded (?{}) or (??{}) code
 blocks, perl couldn&rsquo;t locate the code block that should have already been
 seen and compiled by perl before control passed to the regex compiler.
 </p>
 </dd>
+<dt>panic: strxfrm() gets absurd - a =&gt; %u, ab =&gt; %u</dt>
+<dd><a 
name="perldiag-panic_003a-strxfrm_0028_0029-gets-absurd-_002d-a-_003d_003e-_0025u_002c-ab-_003d_003e-_0025u"></a>
+<p>(P) The interpreter&rsquo;s sanity check of the C function strxfrm() failed.
+In your current locale the returned transformation of the string &quot;ab&quot;
+is shorter than that of the string &quot;a&quot;, which makes no sense.
+</p>
+</dd>
 <dt>panic: sv_chop %s</dt>
 <dd><a name="perldiag-panic_003a-sv_005fchop-_0025s"></a>
 <p>(P) The sv_chop() routine was passed a position that is not within the
@@ -20824,13 +21024,6 @@
 was string.
 </p>
 </dd>
-<dt>panic: strxfrm() gets absurd - a =&gt; %u, ab =&gt; %u</dt>
-<dd><a 
name="perldiag-panic_003a-strxfrm_0028_0029-gets-absurd-_002d-a-_003d_003e-_0025u_002c-ab-_003d_003e-_0025u"></a>
-<p>(P) The interpreter&rsquo;s sanity check of the C function strxfrm() failed.
-In your current locale the returned transformation of the string 
&quot;ab&quot; is
-shorter than that of the string &quot;a&quot;, which makes no sense.
-</p>
-</dd>
 <dt>panic: top_env</dt>
 <dd><a name="perldiag-panic_003a-top_005fenv"></a>
 <p>(P) The compiler attempted to do a goto, or something weird like that.
@@ -20890,15 +21083,12 @@
 giving details of the malformation.
 </p>
 </dd>
-<dt>Pattern subroutine nesting without pos change exceeded limit in regex;  
marked by &lt;&ndash; HERE in m/%s/</dt>
-<dd><a 
name="perldiag-Pattern-subroutine-nesting-without-pos-change-exceeded-limit-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<dt>Pattern subroutine nesting without pos change exceeded limit in regex</dt>
+<dd><a 
name="perldiag-Pattern-subroutine-nesting-without-pos-change-exceeded-limit-in-regex"></a>
 <p>(F) You used a pattern that uses too many nested subpattern calls without
 consuming any text.  Restructure the pattern so text is consumed before
 the nesting limit is exceeded.
 </p>
-<p>The &lt;&ndash; HERE shows whereabouts in the regular expression the 
problem was
-discovered.
-</p>
 </dd>
 <dt><code>-p</code> destination: %s</dt>
 <dd><a name="perldiag-_002dp-destination_003a-_0025s"></a>
@@ -20914,14 +21104,12 @@
 that a method requires a package that has not been loaded.
 </p>
 </dd>
-<dt>Perl folding rules are not up-to-date for 0x%X; please use the perlbug  
utility to report; in regex; marked by &lt;&ndash; HERE in m/%s/</dt>
+<dt>Perl folding rules are not up-to-date for 0x%X; please use the perlbug  
utility to report; in regex; marked by &lt;&ndash;&nbsp;HERE<!-- /@w --> in 
m/%s/</dt>
 <dd><a 
name="perldiag-Perl-folding-rules-are-not-up_002dto_002ddate-for-0x_0025X_003b-please-use-the-perlbug-utility-to-report_003b-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(D regexp, deprecated) You used a regular expression with
-case-insensitive matching, and there is a bug in Perl in which the
-built-in regular expression folding rules are not accurate.  This may
-lead to incorrect results.  Please report this as a bug using the
-<a href="perlbug.html#Top">(perlbug)</a> utility.  (This message is marked 
deprecated, so that it by
-default will be turned-on.)
+<p>(S regexp) You used a regular expression with case-insensitive matching,
+and there is a bug in Perl in which the built-in regular expression
+folding rules are not accurate.  This may lead to incorrect results.
+Please report this as a bug using the <a href="perlbug.html#Top">(perlbug)</a> 
utility.
 </p>
 </dd>
 <dt>Perl_my_%s() not available</dt>
@@ -20942,8 +21130,8 @@
 is equivalent to v5.100.
 </p>
 </dd>
-<dt>Perl %s required&ndash;this is only version %s, stopped</dt>
-<dd><a 
name="perldiag-Perl-_0025s-required_002d_002dthis-is-only-version-_0025s_002c-stopped"></a>
+<dt>Perl %s required&ndash;this is only %s, stopped</dt>
+<dd><a 
name="perldiag-Perl-_0025s-required_002d_002dthis-is-only-_0025s_002c-stopped"></a>
 <p>(F) The module in question uses features of a version of Perl more
 recent than the currently running version.  How long has it been since
 you upgraded, anyway?  See <a href="#perlfunc-require">perlfunc require</a>.
@@ -20968,6 +21156,13 @@
 wrong and the version check should just be removed.
 </p>
 </dd>
+<dt>perl: warning: Non hex character in &rsquo;$ENV{PERL_HASH_SEED}&rsquo;, 
seed only partially set</dt>
+<dd><a 
name="perldiag-perl_003a-warning_003a-Non-hex-character-in-_0027_0024ENV_007bPERL_005fHASH_005fSEED_007d_0027_002c-seed-only-partially-set"></a>
+<p>(S) PERL_HASH_SEED should match /^\s*(?:0x)?[0-9a-fA-F]+\s*\z/ but it
+contained a non hex character.  This could mean you are not using the
+hash seed you think you are.
+</p>
+</dd>
 <dt>perl: warning: Setting locale failed.</dt>
 <dd><a name="perldiag-perl_003a-warning_003a-Setting-locale-failed_002e"></a>
 <p>(S) The whole warning message will look something like:
@@ -20991,16 +21186,9 @@
 <a href="#perllocale-NAME">perllocale NAME</a> section <strong>LOCALE 
PROBLEMS</strong>.
 </p>
 </dd>
-<dt>perl: warning: Non hex character in &rsquo;$ENV{PERL_HASH_SEED}&rsquo;, 
seed only partially set</dt>
-<dd><a 
name="perldiag-perl_003a-warning_003a-Non-hex-character-in-_0027_0024ENV_007bPERL_005fHASH_005fSEED_007d_0027_002c-seed-only-partially-set"></a>
-<p>(W) PERL_HASH_SEED should match /^\s*(?:0x)?[0-9a-fA-F]+\s*\z/ but it
-contained a non hex character. This could mean you are not using the hash
-seed you think you are.
-</p>
-</dd>
 <dt>perl: warning: strange setting in &rsquo;$ENV{PERL_PERTURB_KEYS}&rsquo;: 
&rsquo;%s&rsquo;</dt>
 <dd><a 
name="perldiag-perl_003a-warning_003a-strange-setting-in-_0027_0024ENV_007bPERL_005fPERTURB_005fKEYS_007d_0027_003a-_0027_0025s_0027"></a>
-<p>(W) Perl was run with the environment variable PERL_PERTURB_KEYS defined
+<p>(S) Perl was run with the environment variable PERL_PERTURB_KEYS defined
 but containing an unexpected value. The legal values of this setting
 are as follows.
 </p>
@@ -21008,7 +21196,8 @@
   --------+---------------+-----------------------------------------
   0       | NO            | Disables key traversal randomization
   1       | RANDOM        | Enables full key traversal randomization
-  2       | DETERMINISTIC | Enables repeatable key traversal randomization
+  2       | DETERMINISTIC | Enables repeatable key traversal
+          |               | randomization
 </pre>
 <p>Both numeric and string values are accepted, but note that string values are
 case sensitive. The default for this setting is &quot;RANDOM&quot; or 1.
@@ -21026,9 +21215,18 @@
 <p>(F) The unpack format P must have an explicit size, not &quot;*&quot;.
 </p>
 </dd>
-<dt>POSIX class [:%s:] unknown in regex; marked by &lt;&ndash; HERE in 
m/%s/</dt>
+<dt>pop on reference is experimental</dt>
+<dd><a name="perldiag-pop-on-reference-is-experimental"></a>
+<p>(S experimental::autoderef) <code>pop</code> with a scalar argument is 
experimental
+and may change or be removed in a future Perl version.  If you want to
+take the risk of using this feature, simply disable this warning:
+</p>
+<pre class="verbatim">    no warnings &quot;experimental::autoderef&quot;;
+</pre>
+</dd>
+<dt>POSIX class [:%s:] unknown in regex; marked by 
&lt;&ndash;&nbsp;HERE&nbsp;in&nbsp;m/%s/<!-- /@w --></dt>
 <dd><a 
name="perldiag-POSIX-class-_005b_003a_0025s_003a_005d-unknown-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(F) The class in the character class [: :] syntax is unknown.  The 
&lt;&ndash; HERE
+<p>(F) The class in the character class [: :] syntax is unknown.  The 
&lt;&ndash;&nbsp;HERE<!-- /@w -->
 shows whereabouts in the regular expression the problem was discovered.
 Note that the POSIX character classes do <strong>not</strong> have the 
<code>is</code> prefix
 the corresponding C interfaces have: in other words, it&rsquo;s 
<code>[[:print:]]</code>,
@@ -21041,33 +21239,33 @@
 the BSD version, which takes a pid.
 </p>
 </dd>
-<dt>POSIX syntax [%c %c] belongs inside character classes in regex; marked by  
&lt;&ndash; HERE in m/%s/</dt>
+<dt>POSIX syntax [%c %c] belongs inside character classes in regex; marked by  
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-POSIX-syntax-_005b_0025c-_0025c_005d-belongs-inside-character-classes-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(W regexp) The character class constructs [: :], [= =], and [. .]  go
 <em>inside</em> character classes, the [] are part of the construct, for 
example:
 /[012[:alpha:]345]/.  Note that [= =] and [. .] are not currently
 implemented; they are simply placeholders for future extensions and
-will cause fatal errors.  The &lt;&ndash; HERE shows whereabouts in the regular
+will cause fatal errors.  The &lt;&ndash;&nbsp;HERE<!-- /@w --> shows 
whereabouts in the regular
 expression the problem was discovered.  See <a href="#perlre-NAME">perlre 
NAME</a>.
 </p>
 </dd>
-<dt>POSIX syntax [. .] is reserved for future extensions in regex; marked by  
&lt;&ndash; HERE in m/%s/</dt>
+<dt>POSIX syntax [. .] is reserved for future extensions in regex; marked by  
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-POSIX-syntax-_005b_002e-_002e_005d-is-reserved-for-future-extensions-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) Within regular expression character classes ([]) the syntax beginning
 with &quot;[.&quot; and ending with &quot;.]&quot; is reserved for future 
extensions.  If you
 need to represent those character sequences inside a regular expression
 character class, just quote the square brackets with the backslash: 
&quot;\[.&quot;
-and &quot;.\]&quot;.  The &lt;&ndash; HERE shows whereabouts in the regular 
expression the
+and &quot;.\]&quot;.  The &lt;&ndash;&nbsp;HERE<!-- /@w --> shows whereabouts 
in the regular expression the
 problem was discovered.  See <a href="#perlre-NAME">perlre NAME</a>.
 </p>
 </dd>
-<dt>POSIX syntax [= =] is reserved for future extensions in regex; marked by  
&lt;&ndash; HERE in m/%s/</dt>
+<dt>POSIX syntax [= =] is reserved for future extensions in regex; marked by  
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-POSIX-syntax-_005b_003d-_003d_005d-is-reserved-for-future-extensions-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) Within regular expression character classes ([]) the syntax beginning
 with &quot;[=&quot; and ending with &quot;=]&quot; is reserved for future 
extensions.  If you
 need to represent those character sequences inside a regular expression
 character class, just quote the square brackets with the backslash: 
&quot;\[=&quot;
-and &quot;=\]&quot;.  The &lt;&ndash; HERE shows whereabouts in the regular 
expression the
+and &quot;=\]&quot;.  The &lt;&ndash;&nbsp;HERE<!-- /@w --> shows whereabouts 
in the regular expression the
 problem was discovered.  See <a href="#perlre-NAME">perlre NAME</a>.
 </p>
 </dd>
@@ -21126,6 +21324,29 @@
 Perl assumes that memory is now corrupted.  See &lsquo;perlfunc ioctl&rsquo;.
 </p>
 </dd>
+<dt>Possible precedence issue with control flow operator</dt>
+<dd><a 
name="perldiag-Possible-precedence-issue-with-control-flow-operator"></a>
+<p>(W syntax) There is a possible problem with the mixing of a control
+flow operator (e.g. <code>return</code>) and a low-precedence operator like
+<code>or</code>.  Consider:
+</p>
+<pre class="verbatim">    sub { return $a or $b; }
+</pre>
+<p>This is parsed as:
+</p>
+<pre class="verbatim">    sub { (return $a) or $b; }
+</pre>
+<p>Which is effectively just:
+</p>
+<pre class="verbatim">    sub { return $a; }
+</pre>
+<p>Either use parentheses or the high-precedence variant of the operator.
+</p>
+<p>Note this may be also triggered for constructs like:
+</p>
+<pre class="verbatim">    sub { 1 if die; }
+</pre>
+</dd>
 <dt>Possible precedence problem on bitwise %c operator</dt>
 <dd><a 
name="perldiag-Possible-precedence-problem-on-bitwise-_0025c-operator"></a>
 <p>(W precedence) Your program uses a bitwise logical operator in conjunction
@@ -21162,6 +21383,22 @@
 to the array you apparently lost track of.
 </p>
 </dd>
+<dt>Postfix dereference is experimental</dt>
+<dd><a name="perldiag-Postfix-dereference-is-experimental"></a>
+<p>(S experimental::postderef) This warning is emitted if you use
+the experimental postfix dereference syntax.  Simply suppress the
+warning if you want to use the feature, but know that in doing
+so you are taking the risk of using an experimental feature which
+may change or be removed in a future Perl version:
+</p>
+<pre class="verbatim">    no warnings &quot;experimental::postderef&quot;;
+    use feature &quot;postderef&quot;, &quot;postderef_qq&quot;;
+    $ref-&gt;$*;
+    $aref-&gt;@*;
+    $aref-&gt;@address@hidden;
+    ... etc ...
+</pre>
+</dd>
 <dt>Precedence problem: open %s should be open(%s)</dt>
 <dd><a 
name="perldiag-Precedence-problem_003a-open-_0025s-should-be-open_0028_0025s_0029"></a>
 <p>(S precedence) The old irregular construct
@@ -21204,14 +21441,13 @@
 in <a href="perlos2.html#Top">(perlos2)</a>.
 </p>
 </dd>
-<dt>Property &rsquo;%s&rsquo; is unknown in regex; marked by &lt;&ndash; HERE 
in m/%s/</dt>
+<dt>Property &rsquo;%s&rsquo; is unknown in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Property-_0027_0025s_0027-is-unknown-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(F)
-The named property which you specified via <code>\p</code> or <code>\P</code> 
is not one
+<p>(F) The named property which you specified via <code>\p</code> or 
<code>\P</code> is not one
 known to Perl.  Perhaps you misspelled the name?  See
 <a 
href="perluniprops.html#Properties-accessible-through-_005cp_007b_007d-and-_005cP_007b_007d">(perluniprops)Properties
 accessible through \p{} and \P{}</a>
-for a complete list of available official properties.  If it is a
-<a href="#perlunicode-User_002dDefined-Character-Properties">user-defined 
property</a>
+for a complete list of available official
+properties.  If it is a <a 
href="#perlunicode-User_002dDefined-Character-Properties">user-defined 
property</a>
 it must have been defined by the time the regular expression is
 compiled.
 </p>
@@ -21234,6 +21470,14 @@
 definition.
 </p>
 </dd>
+<dt>Prototype &rsquo;%s&rsquo; overridden by attribute 
&rsquo;prototype(%s)&rsquo; in %s</dt>
+<dd><a 
name="perldiag-Prototype-_0027_0025s_0027-overridden-by-attribute-_0027prototype_0028_0025s_0029_0027-in-_0025s"></a>
+<p>(W prototype) A prototype was declared in both the parentheses after
+the sub name and via the prototype attribute.  The prototype in
+parentheses is useless, since it will be replaced by the prototype
+from the attribute before it&rsquo;s ever used.
+</p>
+</dd>
 <dt>\p{} uses Unicode rules, not locale rules</dt>
 <dd><a 
name="perldiag-_005cp_007b_007d-uses-Unicode-rules_002c-not-locale-rules"></a>
 <p>(W) You compiled a regular expression that contained a Unicode property
@@ -21259,26 +21503,38 @@
 change when upper cased.
 </p>
 </dd>
-<dt>Quantifier {n,m} with n &gt; m can&rsquo;t match in regex</dt>
-<dd><a 
name="perldiag-Quantifier-_007bn_002cm_007d-with-n-_003e-m-can_0027t-match-in-regex"></a>
-<p>(W regexp) Minima should be less than or equal to maxima.  If you really
-want your regexp to match something 0 times, just put {0}.
+<dt>push on reference is experimental</dt>
+<dd><a name="perldiag-push-on-reference-is-experimental"></a>
+<p>(S experimental::autoderef) <code>push</code> with a scalar argument is 
experimental
+and may change or be removed in a future Perl version.  If you want to
+take the risk of using this feature, simply disable this warning:
 </p>
+<pre class="verbatim">    no warnings &quot;experimental::autoderef&quot;;
+</pre>
 </dd>
-<dt>Quantifier follows nothing in regex; marked by &lt;&ndash; HERE in 
m/%s/</dt>
+<dt>Quantifier follows nothing in regex; marked by 
&lt;&ndash;&nbsp;HERE&nbsp;in&nbsp;m/%s/<!-- /@w --></dt>
 <dd><a 
name="perldiag-Quantifier-follows-nothing-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) You started a regular expression with a quantifier.  Backslash it if
-you meant it literally.  The &lt;&ndash; HERE shows whereabouts in the regular
+you meant it literally.  The &lt;&ndash;&nbsp;HERE<!-- /@w --> shows 
whereabouts in the regular
 expression the problem was discovered.  See <a href="#perlre-NAME">perlre 
NAME</a>.
 </p>
 </dd>
-<dt>Quantifier in {,} bigger than %d in regex; marked by &lt;&ndash; HERE in 
m/%s/</dt>
+<dt>Quantifier in {,} bigger than %d in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Quantifier-in-_007b_002c_007d-bigger-than-_0025d-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) There is currently a limit to the size of the min and max values of
-the {min,max} construct.  The &lt;&ndash; HERE shows whereabouts in the regular
+the {min,max} construct.  The &lt;&ndash;&nbsp;HERE<!-- /@w --> shows 
whereabouts in the regular
 expression the problem was discovered.  See <a href="#perlre-NAME">perlre 
NAME</a>.
 </p>
 </dd>
+<dt>Quantifier {n,m} with n &gt; m can&rsquo;t match in regex</dt>
+<dd><a 
name="perldiag-Quantifier-_007bn_002cm_007d-with-n-_003e-m-can_0027t-match-in-regex"></a>
+</dd>
+<dt>Quantifier {n,m} with n &gt; m can&rsquo;t match in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
+<dd><a 
name="perldiag-Quantifier-_007bn_002cm_007d-with-n-_003e-m-can_0027t-match-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<p>(W regexp) Minima should be less than or equal to maxima.  If you really
+want your regexp to match something 0 times, just put {0}.
+</p>
+</dd>
 <dt>Quantifier unexpected on zero-length expression in regex; marked by 
&lt;&ndash;  HERE in m/%s/</dt>
 <dd><a 
name="perldiag-Quantifier-unexpected-on-zero_002dlength-expression-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(W regexp) You applied a regular expression quantifier in a place where
@@ -21291,12 +21547,6 @@
 discovered.
 </p>
 </dd>
-<dt>Quantifier {n,m} with n &gt; m can&rsquo;t match in regex; marked by 
&lt;&ndash; HERE in m/%s/</dt>
-<dd><a 
name="perldiag-Quantifier-_007bn_002cm_007d-with-n-_003e-m-can_0027t-match-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(W regexp) Minima should be less than or equal to maxima.  If you really
-want your regexp to match something 0 times, just put {0}.
-</p>
-</dd>
 <dt>Range iterator outside integer range</dt>
 <dd><a name="perldiag-Range-iterator-outside-integer-range"></a>
 <p>(F) One (or both) of the numeric arguments to the range operator 
&quot;..&quot;
@@ -21391,7 +21641,7 @@
 Doing so has no effect.
 </p>
 </dd>
-<dt>Reference to invalid group 0 in regex; marked by &lt;&ndash; HERE in 
m/%s/</dt>
+<dt>Reference to invalid group 0 in regex; marked by &lt;&ndash;&nbsp;HERE<!-- 
/@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Reference-to-invalid-group-0-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) You used <code>\g0</code> or similar in a regular expression.  You may 
refer
 to capturing parentheses only with strictly positive integers
@@ -21399,7 +21649,7 @@
 backreferences).  Using 0 does not make sense.
 </p>
 </dd>
-<dt>Reference to nonexistent group in regex; marked by &lt;&ndash; HERE in 
m/%s/</dt>
+<dt>Reference to nonexistent group in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Reference-to-nonexistent-group-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) You used something like <code>\7</code> in your regular expression, but 
there are
 not at least seven sets of capturing parentheses in the expression.  If
@@ -21410,7 +21660,7 @@
 discovered.
 </p>
 </dd>
-<dt>Reference to nonexistent named group in regex; marked by &lt;&ndash; HERE 
in m/%s/</dt>
+<dt>Reference to nonexistent named group in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Reference-to-nonexistent-named-group-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) You used something like <code>\k'NAME'</code> or 
<code>\k&lt;NAME&gt;</code> in your regular
 expression, but there is no corresponding named capturing parentheses
@@ -21421,7 +21671,7 @@
 discovered.
 </p>
 </dd>
-<dt>Reference to nonexistent or unclosed group in regex; marked by &lt;&ndash; 
HERE  in m/%s/</dt>
+<dt>Reference to nonexistent or unclosed group in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Reference-to-nonexistent-or-unclosed-group-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) You used something like <code>\g{-7}</code> in your regular expression, 
but there
 are not at least seven sets of closed capturing parentheses in the
@@ -21440,9 +21690,9 @@
 <dt>Regexp modifier &quot;/%c&quot; may appear a maximum of twice</dt>
 <dd><a 
name="perldiag-Regexp-modifier-_0022_002f_0025c_0022-may-appear-a-maximum-of-twice"></a>
 </dd>
-<dt>Regexp modifier &quot;/%c&quot; may not appear twice</dt>
-<dd><a 
name="perldiag-Regexp-modifier-_0022_002f_0025c_0022-may-not-appear-twice"></a>
-<p>(F syntax, regexp) The regular expression pattern had too many occurrences
+<dt>Regexp modifier &quot;%c&quot; may appear a maximum of twice in regex; 
marked by &lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
+<dd><a 
name="perldiag-Regexp-modifier-_0022_0025c_0022-may-appear-a-maximum-of-twice-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<p>(F) The regular expression pattern had too many occurrences
 of the specified modifier.  Remove the extraneous ones.
 </p>
 </dd>
@@ -21454,9 +21704,21 @@
 the minus), instead of the one you want to turn off.
 </p>
 </dd>
+<dt>Regexp modifier &quot;/%c&quot; may not appear twice</dt>
+<dd><a 
name="perldiag-Regexp-modifier-_0022_002f_0025c_0022-may-not-appear-twice"></a>
+</dd>
+<dt>Regexp modifier &quot;%c&quot; may not appear twice in regex; marked by 
&lt;&ndash; HERE in m/%s/</dt>
+<dd><a 
name="perldiag-Regexp-modifier-_0022_0025c_0022-may-not-appear-twice-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<p>(F) The regular expression pattern had too many occurrences
+of the specified modifier.  Remove the extraneous ones.
+</p>
+</dd>
 <dt>Regexp modifiers &quot;/%c&quot; and &quot;/%c&quot; are mutually 
exclusive</dt>
 <dd><a 
name="perldiag-Regexp-modifiers-_0022_002f_0025c_0022-and-_0022_002f_0025c_0022-are-mutually-exclusive"></a>
-<p>(F syntax, regexp) The regular expression pattern had more than one of these
+</dd>
+<dt>Regexp modifiers &quot;%c&quot; and &quot;%c&quot; are mutually exclusive 
in regex; marked by &lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
+<dd><a 
name="perldiag-Regexp-modifiers-_0022_0025c_0022-and-_0022_0025c_0022-are-mutually-exclusive-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<p>(F) The regular expression pattern had more than one of these
 mutually exclusive modifiers.  Retain only the modifier that is
 supposed to be there.
 </p>
@@ -21467,8 +21729,8 @@
 earlier.
 </p>
 </dd>
-<dt>Repeated format line will never terminate (~~ and @# incompatible)</dt>
-<dd><a 
name="perldiag-Repeated-format-line-will-never-terminate-_0028_007e_007e-and-_0040_0023-incompatible_0029"></a>
+<dt>Repeated format line will never terminate (~~ and @#)</dt>
+<dd><a 
name="perldiag-Repeated-format-line-will-never-terminate-_0028_007e_007e-and-_0040_0023_0029"></a>
 <p>(F) Your format contains the ~~ repeat-until-blank sequence and a
 numeric field that will never go blank so that the repetition never
 terminates.  You might use ^# instead.  See <a href="#perlform-NAME">perlform 
NAME</a>.
@@ -21499,8 +21761,8 @@
 </dd>
 <dt>rewinddir() attempted on invalid dirhandle %s</dt>
 <dd><a 
name="perldiag-rewinddir_0028_0029-attempted-on-invalid-dirhandle-_0025s"></a>
-<p>(W io) The dirhandle you tried to do a rewinddir() on is either closed or 
not
-really a dirhandle.  Check your control flow.
+<p>(W io) The dirhandle you tried to do a rewinddir() on is either closed
+or not really a dirhandle.  Check your control flow.
 </p>
 </dd>
 <dt>Scalars leaked: %d</dt>
@@ -21550,10 +21812,10 @@
 construct.  Remember that bracketing delimiters count nesting level.
 Missing the leading <code>$</code> from a variable <code>$m</code> may cause 
this error.
 </p>
-<p>Note that since Perl 5.9.0 a // can also be the <em>defined-or</em>
+<p>Note that since Perl 5.10.0 a // can also be the <em>defined-or</em>
 construct, not just the empty search pattern.  Therefore code written
-in Perl 5.9.0 or later that uses the // as the <em>defined-or</em> can be
-misparsed by pre-5.9.0 Perls as a non-terminated search pattern.
+in Perl 5.10.0 or later that uses the // as the <em>defined-or</em> can be
+misparsed by pre-5.10.0 Perls as a non-terminated search pattern.
 </p>
 </dd>
 <dt>Search pattern not terminated or ternary operator parsed as search 
pattern</dt>
@@ -21613,36 +21875,30 @@
 before now.  Check your control flow.
 </p>
 </dd>
-<dt>Sequence (? incomplete in regex; marked by &lt;&ndash; HERE in m/%s/</dt>
+<dt>Sequence (? incomplete in regex; marked by &lt;&ndash;&nbsp;HERE<!-- /@w 
--> in m/%s/</dt>
 <dd><a 
name="perldiag-Sequence-_0028_003f-incomplete-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) A regular expression ended with an incomplete extension (?.  The
-&lt;&ndash; HERE shows whereabouts in the regular expression the problem was
+&lt;&ndash;&nbsp;HERE<!-- /@w --> shows whereabouts in the regular expression 
the problem was
 discovered.  See <a href="#perlre-NAME">perlre NAME</a>.
 </p>
 </dd>
-<dt>Sequence (?%s...) not implemented in regex; marked by &lt;&ndash; HERE in 
m/%s/</dt>
-<dd><a 
name="perldiag-Sequence-_0028_003f_0025s_002e_002e_002e_0029-not-implemented-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<dt>Sequence (?%c...) not implemented in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
+<dd><a 
name="perldiag-Sequence-_0028_003f_0025c_002e_002e_002e_0029-not-implemented-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) A proposed regular expression extension has the character reserved
-but has not yet been written.  The &lt;&ndash; HERE shows whereabouts in the
+but has not yet been written.  The &lt;&ndash;&nbsp;HERE<!-- /@w --> shows 
whereabouts in the
 regular expression the problem was discovered.  See <a 
href="#perlre-NAME">perlre NAME</a>.
 </p>
 </dd>
-<dt>Sequence (?%s...) not recognized in regex; marked by &lt;&ndash; HERE in 
m/%s/</dt>
+<dt>Sequence (?%s...) not recognized in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Sequence-_0028_003f_0025s_002e_002e_002e_0029-not-recognized-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(F) You used a regular expression extension that doesn&rsquo;t make sense.  
The
-&lt;&ndash; HERE shows whereabouts in the regular expression the problem was
-discovered.  This happens when using the <code>(?^...)</code> construct to tell
+<p>(F) You used a regular expression extension that doesn&rsquo;t make sense.
+The &lt;&ndash;&nbsp;HERE<!-- /@w --> shows whereabouts in the regular 
expression the problem was
+discovered.  This may happen when using the <code>(?^...)</code> construct to 
tell
 Perl to use the default regular expression modifiers, and you
 redundantly specify a default modifier.  For other
 causes, see <a href="#perlre-NAME">perlre NAME</a>.
 </p>
 </dd>
-<dt>Sequence \%s... not terminated in regex; marked by &lt;&ndash; HERE in 
m/%s/</dt>
-<dd><a 
name="perldiag-Sequence-_005c_0025s_002e_002e_002e-not-terminated-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(F) The regular expression expects a mandatory argument following the escape
-sequence and this has been omitted or incorrectly written.
-</p>
-</dd>
 <dt>Sequence (?#... not terminated in regex m/%s/</dt>
 <dd><a 
name="perldiag-Sequence-_0028_003f_0023_002e_002e_002e-not-terminated-in-regex-m_002f_0025s_002f"></a>
 <p>(F) A regular expression comment must be terminated by a closing
@@ -21650,19 +21906,55 @@
 <a href="#perlre-NAME">perlre NAME</a>.
 </p>
 </dd>
+<dt>Sequence (?&amp;... not terminated in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
+<dd><a 
name="perldiag-Sequence-_0028_003f_0026_002e_002e_002e-not-terminated-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<p>(F) A named reference of the form <code>(?&amp;...)</code> was missing the 
final
+closing parenthesis after the name.  The &lt;&ndash;&nbsp;HERE<!-- /@w --> 
shows whereabouts
+in the regular expression the problem was discovered.
+</p>
+</dd>
+<dt>Sequence (?%c... not terminated in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
+<dd><a 
name="perldiag-Sequence-_0028_003f_0025c_002e_002e_002e-not-terminated-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<p>(F) A named group of the form <code>(?'...')</code> or 
<code>(?&lt;...&gt;)</code> was missing the final
+closing quote or angle bracket.  The &lt;&ndash;&nbsp;HERE<!-- /@w --> shows 
whereabouts in the
+regular expression the problem was discovered.
+</p>
+</dd>
+<dt>Sequence (?(%c... not terminated in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
+<dd><a 
name="perldiag-Sequence-_0028_003f_0028_0025c_002e_002e_002e-not-terminated-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<p>(F) A named reference of the form <code>(?('...')...)</code> or 
<code>(?(&lt;...&gt;)...)</code> was
+missing the final closing quote or angle bracket after the name.  The
+&lt;&ndash;&nbsp;HERE<!-- /@w --> shows whereabouts in the regular expression 
the problem was
+discovered.
+</p>
+</dd>
+<dt>Sequence \%s... not terminated in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
+<dd><a 
name="perldiag-Sequence-_005c_0025s_002e_002e_002e-not-terminated-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<p>(F) The regular expression expects a mandatory argument following the escape
+sequence and this has been omitted or incorrectly written.
+</p>
+</dd>
 <dt>Sequence (?{...}) not terminated with &rsquo;)&rsquo;</dt>
 <dd><a 
name="perldiag-Sequence-_0028_003f_007b_002e_002e_002e_007d_0029-not-terminated-with-_0027_0029_0027"></a>
 <p>(F) The end of the perl code contained within the {...} must be
 followed immediately by a &rsquo;)&rsquo;.
 </p>
 </dd>
-<dt>500 Server error</dt>
-<dd><a name="perldiag-500-Server-error"></a>
-<p>See Server error.
+<dt>Sequence ?P=... not terminated in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
+<dd><a 
name="perldiag-Sequence-_003fP_003d_002e_002e_002e-not-terminated-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<p>(F) A named reference of the form <code>(?P=...)</code> was missing the 
final
+closing parenthesis after the name.  The &lt;&ndash;&nbsp;HERE<!-- /@w --> 
shows whereabouts
+in the regular expression the problem was discovered.
+</p>
+</dd>
+<dt>Sequence (?R) not terminated in regex m/%s/</dt>
+<dd><a 
name="perldiag-Sequence-_0028_003fR_0029-not-terminated-in-regex-m_002f_0025s_002f"></a>
+<p>(F) An <code>(?R)</code> or <code>(?0)</code> sequence in a regular 
expression was missing the
+final parenthesis.
 </p>
 </dd>
-<dt>Server error</dt>
-<dd><a name="perldiag-Server-error"></a>
+<dt>Server error (a.k.a. &quot;500 Server error&quot;)</dt>
+<dd><a 
name="perldiag-Server-error-_0028a_002ek_002ea_002e-_0022500-Server-error_0022_0029"></a>
 <p>(A) This is the error message generally seen in a browser window
 when trying to run a CGI program (including SSI) over the web.  The
 actual error text varies widely from server to server.  The most
@@ -21728,6 +22020,41 @@
 &lsquo;perlfunc setsockopt&rsquo;.
 </p>
 </dd>
+<dt>Setting $/ to a reference to %s as a form of slurp is deprecated, treating 
as undef</dt>
+<dd><a 
name="perldiag-Setting-_0024_002f-to-a-reference-to-_0025s-as-a-form-of-slurp-is-deprecated_002c-treating-as-undef"></a>
+<p>(W deprecated) You assigned a reference to a scalar to <code>$/</code> 
where the
+referenced item is not a positive integer.  In older perls this 
<strong>appeared</strong>
+to work the same as setting it to <code>undef</code> but was in fact internally
+different, less efficient and with very bad luck could have resulted in
+your file being split by a stringified form of the reference.
+</p>
+<p>In Perl 5.20.0 this was changed so that it would be 
<strong>exactly</strong> the same as
+setting <code>$/</code> to undef, with the exception that this warning would be
+thrown.
+</p>
+<p>You are recommended to change your code to set <code>$/</code> to 
<code>undef</code> explicitly
+if you wish to slurp the file. In future versions of Perl assigning
+a reference to will throw a fatal error.
+</p>
+</dd>
+<dt>Setting $/ to %s reference is forbidden</dt>
+<dd><a name="perldiag-Setting-_0024_002f-to-_0025s-reference-is-forbidden"></a>
+<p>(F) You tried to assign a reference to a non integer to <code>$/</code>.  
In older
+Perls this would have behaved similarly to setting it to a reference to
+a positive integer, where the integer was the address of the reference.
+As of Perl 5.20.0 this is a fatal error, to allow future versions of Perl
+to use non-integer refs for more interesting purposes.
+</p>
+</dd>
+<dt>shift on reference is experimental</dt>
+<dd><a name="perldiag-shift-on-reference-is-experimental"></a>
+<p>(S experimental::autoderef) <code>shift</code> with a scalar argument is 
experimental
+and may change or be removed in a future Perl version.  If you want to
+take the risk of using this feature, simply disable this warning:
+</p>
+<pre class="verbatim">    no warnings &quot;experimental::autoderef&quot;;
+</pre>
+</dd>
 <dt>shm%s not implemented</dt>
 <dd><a name="perldiag-shm_0025s-not-implemented"></a>
 <p>(F) You don&rsquo;t have System V shared memory IPC on your system.
@@ -21780,6 +22107,20 @@
 requested.
 </p>
 </dd>
+<dt>Slurpy parameter not last</dt>
+<dd><a name="perldiag-Slurpy-parameter-not-last"></a>
+<p>(F) In a subroutine signature, you put something after a slurpy (array or
+hash) parameter.  The slurpy parameter takes all the available arguments,
+so there can&rsquo;t be any left to fill later parameters.
+</p>
+</dd>
+<dt>Smart matching a non-overloaded object breaks encapsulation</dt>
+<dd><a 
name="perldiag-Smart-matching-a-non_002doverloaded-object-breaks-encapsulation"></a>
+<p>(F) You should not use the <code>~~</code> operator on an object that does 
not
+overload it: Perl refuses to use the object&rsquo;s underlying structure
+for the smart match.
+</p>
+</dd>
 <dt>Smartmatch is experimental</dt>
 <dd><a name="perldiag-Smartmatch-is-experimental"></a>
 <p>(S experimental::smartmatch) This warning is emitted if you
@@ -21790,13 +22131,6 @@
 overhauled.
 </p>
 </dd>
-<dt>Smart matching a non-overloaded object breaks encapsulation</dt>
-<dd><a 
name="perldiag-Smart-matching-a-non_002doverloaded-object-breaks-encapsulation"></a>
-<p>(F) You should not use the <code>~~</code> operator on an object that does 
not
-overload it: Perl refuses to use the object&rsquo;s underlying structure for
-the smart match.
-</p>
-</dd>
 <dt>sort is now a reserved word</dt>
 <dd><a name="perldiag-sort-is-now-a-reserved-word"></a>
 <p>(F) An ancient error message that almost nobody ever runs into anymore.
@@ -21826,6 +22160,16 @@
 See &lsquo;perlfunc splice&rsquo;.
 </p>
 </dd>
+<dt>splice on reference is experimental</dt>
+<dd><a name="perldiag-splice-on-reference-is-experimental"></a>
+<p>(S experimental::autoderef) <code>splice</code> with a scalar argument
+is experimental and may change or be removed in a future
+Perl version.  If you want to take the risk of using this
+feature, simply disable this warning:
+</p>
+<pre class="verbatim">    no warnings &quot;experimental::autoderef&quot;;
+</pre>
+</dd>
 <dt>Split loop</dt>
 <dd><a name="perldiag-Split-loop"></a>
 <p>(P) The split was looping infinitely.  (Obviously, a split shouldn&rsquo;t
@@ -21842,13 +22186,6 @@
 a block by itself.
 </p>
 </dd>
-<dt>&quot;state&quot; variable %s can&rsquo;t be in a package</dt>
-<dd><a 
name="perldiag-_0022state_0022-variable-_0025s-can_0027t-be-in-a-package"></a>
-<p>(F) Lexically scoped variables aren&rsquo;t in a package, so it 
doesn&rsquo;t make
-sense to try to declare one with a package qualifier on the front.  Use
-local() if you want to localize a package variable.
-</p>
-</dd>
 <dt>&quot;state %s&quot; used in sort comparison</dt>
 <dd><a name="perldiag-_0022state-_0025s_0022-used-in-sort-comparison"></a>
 <p>(W syntax) The package variables $a and $b are used for sort comparisons.
@@ -21858,12 +22195,26 @@
 name, or rename the lexical variable.
 </p>
 </dd>
+<dt>&quot;state&quot; variable %s can&rsquo;t be in a package</dt>
+<dd><a 
name="perldiag-_0022state_0022-variable-_0025s-can_0027t-be-in-a-package"></a>
+<p>(F) Lexically scoped variables aren&rsquo;t in a package, so it 
doesn&rsquo;t make
+sense to try to declare one with a package qualifier on the front.  Use
+local() if you want to localize a package variable.
+</p>
+</dd>
 <dt>stat() on unopened filehandle %s</dt>
 <dd><a name="perldiag-stat_0028_0029-on-unopened-filehandle-_0025s"></a>
 <p>(W unopened) You tried to use the stat() function on a filehandle that
 was either never opened or has since been closed.
 </p>
 </dd>
+<dt>Strings with code points over 0xFF may not be mapped into in-memory file 
handles</dt>
+<dd><a 
name="perldiag-Strings-with-code-points-over-0xFF-may-not-be-mapped-into-in_002dmemory-file-handles"></a>
+<p>(W utf8) You tried to open a reference to a scalar for read or append
+where the scalar contained code points over 0xFF.  In-memory files
+model on-disk files and can only contain bytes.
+</p>
+</dd>
 <dt>Stub found while resolving method &quot;%s&quot; overloading 
&quot;%s&quot; in package &quot;%s&quot;</dt>
 <dd><a 
name="perldiag-Stub-found-while-resolving-method-_0022_0025s_0022-overloading-_0022_0025s_0022-in-package-_0022_0025s_0022"></a>
 <p>(P) Overloading resolution over @ISA tree may be broken by importation
@@ -21876,21 +22227,21 @@
 <p>(W closure) During compilation, an inner named subroutine or eval is
 attempting to capture an outer lexical subroutine that is not currently
 available.  This can happen for one of two reasons.  First, the lexical
-subroutine may be declared in an outer anonymous subroutine that has not
-yet been created.  (Remember that named subs are created at compile time,
-while anonymous subs are created at run-time.)  For example,
+subroutine may be declared in an outer anonymous subroutine that has
+not yet been created.  (Remember that named subs are created at compile
+time, while anonymous subs are created at run-time.)  For example,
 </p>
 <pre class="verbatim">    sub { my sub a {...} sub f { \&amp;a } }
 </pre>
-<p>At the time that f is created, it can&rsquo;t capture the current the 
&quot;a&quot; sub,
+<p>At the time that f is created, it can&rsquo;t capture the current 
&quot;a&quot; sub,
 since the anonymous subroutine hasn&rsquo;t been created yet.  Conversely, the
 following won&rsquo;t give a warning since the anonymous subroutine has by now
 been created and is live:
 </p>
 <pre class="verbatim">    sub { my sub a {...} eval 'sub f { \&amp;a }' 
}-&gt;();
 </pre>
-<p>The second situation is caused by an eval accessing a variable that has
-gone out of scope, for example,
+<p>The second situation is caused by an eval accessing a lexical subroutine
+that has gone out of scope, for example,
 </p>
 <pre class="verbatim">    sub f {
         my sub a {...}
@@ -21958,7 +22309,13 @@
 inferior to its current type.
 </p>
 </dd>
-<dt>Switch (?(condition)... contains too many branches in regex; marked by  
&lt;&ndash; HERE in m/%s/</dt>
+<dt>SWASHNEW didn&rsquo;t return an HV ref</dt>
+<dd><a name="perldiag-SWASHNEW-didn_0027t-return-an-HV-ref"></a>
+<p>(P) Something went wrong internally when Perl was trying to look up
+Unicode characters.
+</p>
+</dd>
+<dt>Switch (?(condition)... contains too many branches in regex; marked by  
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Switch-_0028_003f_0028condition_0029_002e_002e_002e-contains-too-many-branches-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) A (?(condition)if-clause|else-clause) construct can have at most
 two branches (the if-clause and the else-clause).  If you want one or
@@ -21967,15 +22324,27 @@
 </p>
 <pre class="verbatim">    (?(condition)(?:this|that|other)|else-clause)
 </pre>
-<p>The &lt;&ndash; HERE shows whereabouts in the regular expression the problem
+<p>The &lt;&ndash;&nbsp;HERE<!-- /@w --> shows whereabouts in the regular 
expression the problem
 was discovered.  See <a href="#perlre-NAME">perlre NAME</a>.
 </p>
 </dd>
-<dt>Switch condition not recognized in regex; marked by &lt;&ndash; HERE in 
m/%s/</dt>
+<dt>Switch condition not recognized in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Switch-condition-not-recognized-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(F) If the argument to the (?(...)if-clause|else-clause) construct is
-a number, it can be only a number.  The &lt;&ndash; HERE shows whereabouts in
-the regular expression the problem was discovered.  See <a 
href="#perlre-NAME">perlre NAME</a>.
+<p>(F) The condition part of a (?(condition)if-clause|else-clause) construct
+is not known.  The condition must be one of the following:
+</p>
+<pre class="verbatim"> (1) (2) ...        true if 1st, 2nd, etc., capture 
matched
+ (&lt;NAME&gt;) ('NAME')  true if named capture matched
+ (?=...) (?&lt;=...)   true if subpattern matches
+ (?!...) (?&lt;!...)   true if subpattern fails to match
+ (?{ CODE })        true if code returns a true value
+ (R)                true if evaluating inside recursion
+ (R1) (R2) ...      true if directly inside capture group 1, 2, etc.
+ (R&amp;NAME)           true if directly inside named capture
+ (DEFINE)           always false; for defining named subpatterns
+</pre>
+<p>The &lt;&ndash; HERE shows whereabouts in the regular expression the 
problem was
+discovered.  See <a href="#perlre-NAME">perlre NAME</a>.
 </p>
 </dd>
 <dt>switching effective %s is not implemented</dt>
@@ -21984,11 +22353,6 @@
 and effective uids or gids.
 </p>
 </dd>
-<dt>%s syntax OK</dt>
-<dd><a name="perldiag-_0025s-syntax-OK"></a>
-<p>(F) The final summary message when a <code>perl -c</code> succeeds.
-</p>
-</dd>
 <dt>syntax error</dt>
 <dd><a name="perldiag-syntax-error"></a>
 <p>(F) Probably means you had a syntax error.  Common reasons include:
@@ -22025,6 +22389,17 @@
 or &quot;my $var&quot; or &quot;our $var&quot;.
 </p>
 </dd>
+<dt>Syntax error in (?[...]) in regex m/%s/</dt>
+<dd><a 
name="perldiag-Syntax-error-in-_0028_003f_005b_002e_002e_002e_005d_0029-in-regex-m_002f_0025s_002f"></a>
+<p>(F) Perl could not figure out what you meant inside this construct; this
+notifies you that it is giving up trying.
+</p>
+</dd>
+<dt>%s syntax OK</dt>
+<dd><a name="perldiag-_0025s-syntax-OK"></a>
+<p>(F) The final summary message when a <code>perl -c</code> succeeds.
+</p>
+</dd>
 <dt>sysread() on closed filehandle %s</dt>
 <dd><a name="perldiag-sysread_0028_0029-on-closed-filehandle-_0025s"></a>
 <p>(W closed) You tried to read from a closed filehandle.
@@ -22035,13 +22410,6 @@
 <p>(W unopened) You tried to read from a filehandle that was never opened.
 </p>
 </dd>
-<dt>Syntax error in (?[...]) in regex m/%s/</dt>
-<dd><a 
name="perldiag-Syntax-error-in-_0028_003f_005b_002e_002e_002e_005d_0029-in-regex-m_002f_0025s_002f"></a>
-<p>(F)
-Perl could not figure out what you meant inside this construct; this
-notifies you that it is giving up trying.
-</p>
-</dd>
 <dt>System V %s is not implemented on this machine</dt>
 <dd><a name="perldiag-System-V-_0025s-is-not-implemented-on-this-machine"></a>
 <p>(F) You tried to do something with a function beginning with 
&quot;sem&quot;,
@@ -22105,6 +22473,12 @@
 will deny it.
 </p>
 </dd>
+<dt>The %s function is unimplemented</dt>
+<dd><a name="perldiag-The-_0025s-function-is-unimplemented"></a>
+<p>(F) The function indicated isn&rsquo;t implemented on this architecture,
+according to the probings of Configure.
+</p>
+</dd>
 <dt>The lexical_subs feature is experimental</dt>
 <dd><a name="perldiag-The-lexical_005fsubs-feature-is-experimental"></a>
 <p>(S experimental::lexical_subs) This warning is emitted if you
@@ -22131,24 +22505,19 @@
 <pre class="verbatim">    no warnings &quot;experimental::regex_sets&quot;;
 </pre>
 </dd>
-<dt>The %s feature is experimental</dt>
-<dd><a name="perldiag-The-_0025s-feature-is-experimental"></a>
-<p>(S experimental) This warning is emitted if you enable an experimental
-feature via <code>use feature</code>.  Simply suppress the warning if you want
-to use the feature, but know that in doing so you are taking the risk
-of using an experimental feature which may change or be removed in a
-future Perl version:
-</p>
-<pre class="verbatim">    no warnings &quot;experimental::lexical_subs&quot;;
-    use feature &quot;lexical_subs&quot;;
+<dt>The signatures feature is experimental</dt>
+<dd><a name="perldiag-The-signatures-feature-is-experimental"></a>
+<p>(S experimental::signatures) This warning is emitted if you unwrap a
+subroutine&rsquo;s arguments using a signature.  Simply suppress the warning
+if you want to use the feature, but know that in doing so you are taking
+the risk of using an experimental feature which may change or be removed
+in a future Perl version:
+</p>
+<pre class="verbatim">    no warnings &quot;experimental::signatures&quot;;
+    use feature &quot;signatures&quot;;
+    sub foo ($left, $right) { ... }
 </pre>
 </dd>
-<dt>The %s function is unimplemented</dt>
-<dd><a name="perldiag-The-_0025s-function-is-unimplemented"></a>
-<p>(F) The function indicated isn&rsquo;t implemented on this architecture, 
according
-to the probings of Configure.
-</p>
-</dd>
 <dt>The stat preceding %s wasn&rsquo;t an lstat</dt>
 <dd><a name="perldiag-The-stat-preceding-_0025s-wasn_0027t-an-lstat"></a>
 <p>(F) It makes no sense to test the current stat buffer for symbolic
@@ -22185,11 +22554,6 @@
 with default options.
 </p>
 </dd>
-<dt>thread failed to start: %s</dt>
-<dd><a name="perldiag-thread-failed-to-start_003a-_0025s"></a>
-<p>(W threads)(S) The entry point function of threads-&gt;create() failed for 
some reason.
-</p>
-</dd>
 <dt>times not implemented</dt>
 <dd><a name="perldiag-times-not-implemented"></a>
 <p>(F) Your version of the C library apparently doesn&rsquo;t do times().  I
@@ -22232,6 +22596,14 @@
 system call to call, silly dilly.
 </p>
 </dd>
+<dt>Too few arguments for subroutine</dt>
+<dd><a name="perldiag-Too-few-arguments-for-subroutine"></a>
+<p>(F) A subroutine using a signature received fewer arguments than required
+by the signature.  The caller of the subroutine is presumably at fault.
+Inconveniently, this error will be reported at the location of the
+subroutine, not that of the caller.
+</p>
+</dd>
 <dt>Too late for &quot;-%s&quot; option</dt>
 <dd><a name="perldiag-Too-late-for-_0022_002d_0025s_0022-option"></a>
 <p>(X) The #! line (or local equivalent) in a Perl script contains the
@@ -22266,6 +22638,14 @@
 <p>(F) The function requires fewer arguments than you specified.
 </p>
 </dd>
+<dt>Too many arguments for subroutine</dt>
+<dd><a name="perldiag-Too-many-arguments-for-subroutine"></a>
+<p>(F) A subroutine using a signature received more arguments than required
+by the signature.  The caller of the subroutine is presumably at fault.
+Inconveniently, this error will be reported at the location of the
+subroutine, not that of the caller.
+</p>
+</dd>
 <dt>Too many )&rsquo;s</dt>
 <dd><a name="perldiag-Too-many-_0029_0027s"></a>
 <p>(A) You&rsquo;ve accidentally run your script through <strong>csh</strong> 
instead of Perl.
@@ -22286,10 +22666,10 @@
 </dd>
 <dt>Trailing white-space in a charnames alias definition is deprecated</dt>
 <dd><a 
name="perldiag-Trailing-white_002dspace-in-a-charnames-alias-definition-is-deprecated"></a>
-<p>(D) You defined a character name which ended in a space character.
-Remove the trailing space(s).  Usually these names are defined in the
-<code>:alias</code> import argument to <code>use charnames</code>, but they 
could be defined
-by a translator installed into <code>$^H{charnames}</code>.
+<p>(D deprecated) You defined a character name which ended in a space
+character.  Remove the trailing space(s).  Usually these names are
+defined in the <code>:alias</code> import argument to <code>use 
charnames</code>, but they
+could be defined by a translator installed into <code>$^H{charnames}</code>.
 See <a href="charnames.html#CUSTOM-ALIASES">(charnames)CUSTOM ALIASES</a>.
 </p>
 </dd>
@@ -22432,34 +22812,9 @@
 representative, who probably put it there in the first place.
 </p>
 </dd>
-<dt>Unexpected &rsquo;(&rsquo; with no preceding operator in regex; marked by 
&lt;&ndash; HERE in m/%s/</dt>
-<dd><a 
name="perldiag-Unexpected-_0027_0028_0027-with-no-preceding-operator-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(F)
-You had something like this:
-</p>
-<pre class="verbatim"> (?[ \p{Digit} ( \p{Lao} + \p{Thai} ) ])
-</pre>
-<p>There should be an operator before the <code>&quot;(&quot;</code>, as 
there&rsquo;s no indication
-as to how the digits are to be combined with the characters in the Lao
-and Thai scripts.
-</p>
-</dd>
-<dt>Unexpected &rsquo;)&rsquo; in regex; marked by &lt;&ndash; HERE in 
m/%s/</dt>
-<dd><a 
name="perldiag-Unexpected-_0027_0029_0027-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(F)
-You had something like this:
-</p>
-<pre class="verbatim"> (?[ ( \p{Digit} + ) ])
-</pre>
-<p>The <code>&quot;)&quot;</code> is out-of-place.  Something apparently was 
supposed to be
-combined with the digits, or the <code>&quot;+&quot;</code> shouldn&rsquo;t be 
there, or something
-like that.  Perl can&rsquo;t figure out what was intended.
-</p>
-</dd>
-<dt>Unexpected binary operator &rsquo;%c&rsquo; with no preceding operand in 
regex; marked by &lt;&ndash; HERE in m/%s/</dt>
+<dt>Unexpected binary operator &rsquo;%c&rsquo; with no preceding operand in 
regex; marked by &lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Unexpected-binary-operator-_0027_0025c_0027-with-no-preceding-operand-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(F)
-You had something like this:
+<p>(F) You had something like this:
 </p>
 <pre class="verbatim"> (?[ | \p{Digit} ])
 </pre>
@@ -22467,10 +22822,9 @@
 no operand on the left.
 </p>
 </dd>
-<dt>Unexpected character in regex; marked by &lt;&ndash; HERE in m/%s/</dt>
+<dt>Unexpected character in regex; marked by &lt;&ndash;&nbsp;HERE<!-- /@w --> 
in m/%s/</dt>
 <dd><a 
name="perldiag-Unexpected-character-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(F)
-You had something like this:
+<p>(F) You had something like this:
 </p>
 <pre class="verbatim"> (?[ z ])
 </pre>
@@ -22489,18 +22843,58 @@
 internal consistency check.  It encountered a malformed op tree.
 </p>
 </dd>
+<dt>Unexpected exit %u</dt>
+<dd><a name="perldiag-Unexpected-exit-_0025u"></a>
+<p>(S) exit() was called or the script otherwise finished gracefully when
+<code>PERL_EXIT_WARN</code> was set in <code>PL_exit_flags</code>.
+</p>
+</dd>
+<dt>Unexpected exit failure %d</dt>
+<dd><a name="perldiag-Unexpected-exit-failure-_0025d"></a>
+<p>(S) An uncaught die() was called when <code>PERL_EXIT_WARN</code> was set in
+<code>PL_exit_flags</code>.
+</p>
+</dd>
+<dt>Unexpected &rsquo;)&rsquo; in regex; marked by &lt;&ndash;&nbsp;HERE<!-- 
/@w --> in m/%s/</dt>
+<dd><a 
name="perldiag-Unexpected-_0027_0029_0027-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<p>(F) You had something like this:
+</p>
+<pre class="verbatim"> (?[ ( \p{Digit} + ) ])
+</pre>
+<p>The <code>&quot;)&quot;</code> is out-of-place.  Something apparently was 
supposed to
+be combined with the digits, or the <code>&quot;+&quot;</code> shouldn&rsquo;t 
be there, or
+something like that.  Perl can&rsquo;t figure out what was intended.
+</p>
+</dd>
+<dt>Unexpected &rsquo;(&rsquo; with no preceding operator in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
+<dd><a 
name="perldiag-Unexpected-_0027_0028_0027-with-no-preceding-operator-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<p>(F) You had something like this:
+</p>
+<pre class="verbatim"> (?[ \p{Digit} ( \p{Lao} + \p{Thai} ) ])
+</pre>
+<p>There should be an operator before the <code>&quot;(&quot;</code>, as 
there&rsquo;s
+no indication as to how the digits are to be combined
+with the characters in the Lao and Thai scripts.
+</p>
+</dd>
 <dt>Unicode non-character U+%X is illegal for open interchange</dt>
 <dd><a 
name="perldiag-Unicode-non_002dcharacter-U_002b_0025X-is-illegal-for-open-interchange"></a>
-<p>(S utf8, nonchar) Certain codepoints, such as U+FFFE and U+FFFF, are
+<p>(S nonchar) Certain codepoints, such as U+FFFE and U+FFFF, are
 defined by the Unicode standard to be non-characters.  Those are
 legal codepoints, but are reserved for internal use; so, applications
-shouldn&rsquo;t attempt to exchange them.  If you know what you are doing
+shouldn&rsquo;t attempt to exchange them.  An application may not be
+expecting any of these characters at all, and receiving them
+may lead to bugs.  If you know what you are doing
 you can turn off this warning by <code>no warnings 'nonchar';</code>.
 </p>
+<p>This is not really a &quot;serious&quot; error, but it is supposed to be 
raised
+by default even if warnings are not enabled, and currently the only
+way to do that in Perl is to mark it as serious.
+</p>
 </dd>
 <dt>Unicode surrogate U+%X is illegal in UTF-8</dt>
 <dd><a 
name="perldiag-Unicode-surrogate-U_002b_0025X-is-illegal-in-UTF_002d8"></a>
-<p>(S utf8, surrogate) You had a UTF-16 surrogate in a context where they are
+<p>(S surrogate) You had a UTF-16 surrogate in a context where they are
 not considered acceptable.  These code points, between U+D800 and
 U+DFFF (inclusive), are used by Unicode only for UTF-16.  However, Perl
 internally allows all unsigned integer code points (up to the size limit
@@ -22510,12 +22904,6 @@
 off this warning by <code>no warnings 'surrogate';</code>.
 </p>
 </dd>
-<dt>Unknown BYTEORDER</dt>
-<dd><a name="perldiag-Unknown-BYTEORDER"></a>
-<p>(F) There are no byte-swapping functions for a machine with this byte
-order.
-</p>
-</dd>
 <dt>Unknown charname &rsquo;%s&rsquo;</dt>
 <dd><a name="perldiag-Unknown-charname-_0027_0025s_0027"></a>
 <p>(F) The name you used inside <code>\N{}</code> is unknown to Perl.  Check 
the
@@ -22558,11 +22946,6 @@
 subvert Perl&rsquo;s population of %ENV for nefarious purposes.
 </p>
 </dd>
-<dt>Unknown &quot;re&quot; subpragma &rsquo;%s&rsquo; (known ones are: %s)</dt>
-<dd><a 
name="perldiag-Unknown-_0022re_0022-subpragma-_0027_0025s_0027-_0028known-ones-are_003a-_0025s_0029"></a>
-<p>(W) You tried to use an unknown subpragma of the &quot;re&quot; pragma.
-</p>
-</dd>
 <dt>Unknown regex modifier &quot;%s&quot;</dt>
 <dd><a name="perldiag-Unknown-regex-modifier-_0022_0025s_0022"></a>
 <p>(F) Alphanumerics immediately following the closing delimiter
@@ -22579,8 +22962,13 @@
 <pre class="verbatim"> if ($a =~ /foo/ and $bar == 3) { ... }
 </pre>
 </dd>
-<dt>Unknown switch condition (?(%s in regex; marked by &lt;&ndash; HERE in 
m/%s/</dt>
-<dd><a 
name="perldiag-Unknown-switch-condition-_0028_003f_0028_0025s-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<dt>Unknown &quot;re&quot; subpragma &rsquo;%s&rsquo; (known ones are: %s)</dt>
+<dd><a 
name="perldiag-Unknown-_0022re_0022-subpragma-_0027_0025s_0027-_0028known-ones-are_003a-_0025s_0029"></a>
+<p>(W) You tried to use an unknown subpragma of the &quot;re&quot; pragma.
+</p>
+</dd>
+<dt>Unknown switch condition (?(...)) in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
+<dd><a 
name="perldiag-Unknown-switch-condition-_0028_003f_0028_002e_002e_002e_0029_0029-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) The condition part of a (?(condition)if-clause|else-clause) construct
 is not known.  The condition must be one of the following:
 </p>
@@ -22604,13 +22992,13 @@
 of the <code>-C</code> switch for the list of known options.
 </p>
 </dd>
-<dt>Unknown Unicode option value %x</dt>
-<dd><a name="perldiag-Unknown-Unicode-option-value-_0025x"></a>
+<dt>Unknown Unicode option value %d</dt>
+<dd><a name="perldiag-Unknown-Unicode-option-value-_0025d"></a>
 <p>(F) You specified an unknown Unicode option.  See <a 
href="#perlrun-NAME">perlrun NAME</a> documentation
 of the <code>-C</code> switch for the list of known options.
 </p>
 </dd>
-<dt>Unknown verb pattern &rsquo;%s&rsquo; in regex; marked by &lt;&ndash; HERE 
in m/%s/</dt>
+<dt>Unknown verb pattern &rsquo;%s&rsquo; in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Unknown-verb-pattern-_0027_0025s_0027-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) You either made a typo or have incorrectly put a <code>*</code> 
quantifier
 after an open brace in your pattern.  Check the pattern and review
@@ -22627,9 +23015,20 @@
 module first.
 </p>
 </dd>
-<dt>Unmatched &rsquo;%c&rsquo; in POSIX class in regex; marked by &lt;&ndash; 
HERE in m/%s/</dt>
+<dt>Unmatched &rsquo;[&rsquo; in POSIX class in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
+<dd><a 
name="perldiag-Unmatched-_0027_005b_0027-in-POSIX-class-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<p>(F) You had something like this:
+</p>
+<pre class="verbatim"> (?[ [:digit: ])
+</pre>
+<p>That should be written:
+</p>
+<pre class="verbatim"> (?[ [:digit:] ])
+</pre>
+</dd>
+<dt>Unmatched &rsquo;%c&rsquo; in POSIX class in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Unmatched-_0027_0025c_0027-in-POSIX-class-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>You had something like this:
+<p>(F) You had something like this:
 </p>
 <pre class="verbatim"> (?[ [:alnum] ])
 </pre>
@@ -22638,34 +23037,22 @@
 <pre class="verbatim"> (?[ [:alnum:] ])
 </pre>
 </dd>
-<dt>Unmatched [ in regex; marked by &lt;&ndash; HERE in m/%s/</dt>
+<dt>Unmatched [ in regex; marked by &lt;&ndash;&nbsp;HERE<!-- /@w --> in 
m/%s/</dt>
 <dd><a 
name="perldiag-Unmatched-_005b-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) The brackets around a character class must match.  If you wish to
 include a closing bracket in a character class, backslash it or put it
-first.  The &lt;&ndash; HERE shows whereabouts in the regular expression the
+first.  The &lt;&ndash;&nbsp;HERE<!-- /@w --> shows whereabouts in the regular 
expression the
 problem was discovered.  See <a href="#perlre-NAME">perlre NAME</a>.
 </p>
 </dd>
-<dt>Unmatched &rsquo;[&rsquo; in POSIX class in regex; marked by &lt;&ndash; 
HERE in m/%s/</dt>
-<dd><a 
name="perldiag-Unmatched-_0027_005b_0027-in-POSIX-class-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(F)
-You had something like this:
-</p>
-<pre class="verbatim"> (?[ [:digit: ])
-</pre>
-<p>That should be written:
-</p>
-<pre class="verbatim"> (?[ [:digit:] ])
-</pre>
-</dd>
-<dt>Unmatched ( in regex; marked by &lt;&ndash; HERE in m/%s/</dt>
+<dt>Unmatched ( in regex; marked by &lt;&ndash;&nbsp;HERE<!-- /@w --> in 
m/%s/</dt>
 <dd><a 
name="perldiag-Unmatched-_0028-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 </dd>
-<dt>Unmatched ) in regex; marked by &lt;&ndash; HERE in m/%s/</dt>
+<dt>Unmatched ) in regex; marked by &lt;&ndash;&nbsp;HERE<!-- /@w --> in 
m/%s/</dt>
 <dd><a 
name="perldiag-Unmatched-_0029-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) Unbackslashed parentheses must always be balanced in regular
 expressions.  If you&rsquo;re a vi user, the % key is valuable for finding
-the matching parenthesis.  The &lt;&ndash; HERE shows whereabouts in the
+the matching parenthesis.  The &lt;&ndash;&nbsp;HERE<!-- /@w --> shows 
whereabouts in the
 regular expression the problem was discovered.  See <a 
href="#perlre-NAME">perlre NAME</a>.
 </p>
 </dd>
@@ -22685,27 +23072,27 @@
 subroutine.
 </p>
 </dd>
-<dt>Unrecognized character %s; marked by &lt;&ndash; HERE after %s near column 
%d</dt>
+<dt>Unrecognized character %s; marked by &lt;&ndash;&nbsp;HERE<!-- /@w --> 
after %s near column %d</dt>
 <dd><a 
name="perldiag-Unrecognized-character-_0025s_003b-marked-by-_003c_002d_002d-HERE-after-_0025s-near-column-_0025d"></a>
 <p>(F) The Perl parser has no idea what to do with the specified character
-in your Perl script (or eval) near the specified column.  Perhaps you tried 
-to run a compressed script, a binary program, or a directory as a Perl program.
+in your Perl script (or eval) near the specified column.  Perhaps you
+tried  to run a compressed script, a binary program, or a directory as
+a Perl program.
 </p>
 </dd>
-<dt>Unrecognized escape \%c in character class in regex; marked by &lt;&ndash; 
HERE in m/%s/</dt>
+<dt>Unrecognized escape \%c in character class in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Unrecognized-escape-_005c_0025c-in-character-class-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(F)
-You used a backslash-character combination which is not recognized by
-Perl inside character classes.  This is a fatal error when the character
-class is used within <code>(?[ ])</code>.
+<p>(F) You used a backslash-character combination which is not
+recognized by Perl inside character classes.  This is a fatal
+error when the character class is used within <code>(?[ ])</code>.
 </p>
 </dd>
-<dt>Unrecognized escape \%c in character class passed through in regex;  
marked by &lt;&ndash; HERE in m/%s/</dt>
+<dt>Unrecognized escape \%c in character class passed through in regex;  
marked by &lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Unrecognized-escape-_005c_0025c-in-character-class-passed-through-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(W regexp) You used a backslash-character combination which is not
 recognized by Perl inside character classes.  The character was
 understood literally, but this may change in a future version of Perl.
-The &lt;&ndash; HERE shows whereabouts in the regular expression the
+The &lt;&ndash;&nbsp;HERE<!-- /@w --> shows whereabouts in the regular 
expression the
 escape was discovered.
 </p>
 </dd>
@@ -22716,11 +23103,11 @@
 change in a future version of Perl.
 </p>
 </dd>
-<dt>Unrecognized escape \%s passed through in regex; marked by &lt;&ndash; 
HERE in m/%s/</dt>
+<dt>Unrecognized escape \%s passed through in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Unrecognized-escape-_005c_0025s-passed-through-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(W regexp) You used a backslash-character combination which is not
 recognized by Perl.  The character(s) were understood literally, but
-this may change in a future version of Perl.  The &lt;&ndash; HERE shows
+this may change in a future version of Perl.  The &lt;&ndash;&nbsp;HERE<!-- 
/@w --> shows
 whereabouts in the regular expression the escape was discovered.
 </p>
 </dd>
@@ -22738,6 +23125,16 @@
 bad switch on your behalf.)
 </p>
 </dd>
+<dt>unshift on reference is experimental</dt>
+<dd><a name="perldiag-unshift-on-reference-is-experimental"></a>
+<p>(S experimental::autoderef) <code>unshift</code> with a scalar argument
+is experimental and may change or be removed in a future
+Perl version.  If you want to take the risk of using this
+feature, simply disable this warning:
+</p>
+<pre class="verbatim">    no warnings &quot;experimental::autoderef&quot;;
+</pre>
+</dd>
 <dt>Unsuccessful %s on filename containing newline</dt>
 <dd><a name="perldiag-Unsuccessful-_0025s-on-filename-containing-newline"></a>
 <p>(W newline) A file operation was attempted on a filename, and that
@@ -22813,10 +23210,15 @@
 <pre class="verbatim">    &lt;&lt;&quot;foo&quot;
 </pre>
 </dd>
-<dt>Unterminated \g{...} pattern in regex; marked by &lt;&ndash; HERE in 
m/%s/</dt>
+<dt>Unterminated \g... pattern in regex; marked by &lt;&ndash;&nbsp;HERE<!-- 
/@w --> in m/%s/</dt>
+<dd><a 
name="perldiag-Unterminated-_005cg_002e_002e_002e-pattern-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+</dd>
+<dt>Unterminated \g{...} pattern in regex; marked by &lt;&ndash;&nbsp;HERE<!-- 
/@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Unterminated-_005cg_007b_002e_002e_002e_007d-pattern-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(F) You missed a close brace on a \g{..} pattern (group reference) in
-a regular expression.  Fix the pattern and retry.
+<p>(F) In a regular expression, you had a <code>\g</code> that wasn&rsquo;t 
followed by a
+proper group reference.  In the case of <code>\g{</code>, the closing brace is
+missing; otherwise the <code>\g</code> must be followed by an integer.  Fix the
+pattern and retry.
 </p>
 </dd>
 <dt>Unterminated &lt;&gt; operator</dt>
@@ -22827,13 +23229,13 @@
 earlier in the line, and you really meant a &quot;less than&quot;.
 </p>
 </dd>
-<dt>Unterminated verb pattern argument in regex; marked by &lt;&ndash; HERE in 
m/%s/</dt>
+<dt>Unterminated verb pattern argument in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Unterminated-verb-pattern-argument-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) You used a pattern of the form <code>(*VERB:ARG)</code> but did not 
terminate
 the pattern with a <code>)</code>.  Fix the pattern and retry.
 </p>
 </dd>
-<dt>Unterminated verb pattern in regex; marked by &lt;&ndash; HERE in 
m/%s/</dt>
+<dt>Unterminated verb pattern in regex; marked by &lt;&ndash;&nbsp;HERE<!-- 
/@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Unterminated-verb-pattern-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) You used a pattern of the form <code>(*VERB)</code> but did not 
terminate
 the pattern with a <code>)</code>.  Fix the pattern and retry.
@@ -22869,29 +23271,10 @@
 arrays.  <code>$]</code> is the Perl version number in decimal.
 </p>
 </dd>
-<dt>Use \\x{...} for more than two hex characters in regex; marked by 
&lt;&ndash; HERE in m/%s/</dt>
-<dd><a 
name="perldiag-Use-_005c_005cx_007b_002e_002e_002e_007d-for-more-than-two-hex-characters-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(F)
-In a regular expression, you said something like
-</p>
-<pre class="verbatim"> (?[ [ \xBEEF ] ])
-</pre>
-<p>Perl isn&rsquo;t sure if you meant this
-</p>
-<pre class="verbatim"> (?[ [ \x{BEEF} ] ])
-</pre>
-<p>or if you meant this
-</p>
-<pre class="verbatim"> (?[ [ \x{BE} E F ] ])
-</pre>
-<p>You need to add either braces or blanks to disambiguate.
-</p>
-</dd>
-<dt>Use of each() on hash after insertion without resetting hash iterator 
results in undefined behavior</dt>
-<dd><a 
name="perldiag-Use-of-each_0028_0029-on-hash-after-insertion-without-resetting-hash-iterator-results-in-undefined-behavior"></a>
-<p>(S internal) The behavior of <code>each()</code> after insertion is 
undefined, it may
-skip items, or visit items more than once. Consider using <code>keys()</code> 
instead
-of <code>each()</code>.
+<dt>Use &quot;%s&quot; instead of &quot;%s&quot;</dt>
+<dd><a name="perldiag-Use-_0022_0025s_0022-instead-of-_0022_0025s_0022"></a>
+<p>(F) The second listed construct is no longer legal.  Use the first one
+instead.
 </p>
 </dd>
 <dt>Useless assignment to a temporary</dt>
@@ -22901,7 +23284,7 @@
 be discarded, so the assignment had no effect.
 </p>
 </dd>
-<dt>Useless (?-%s) - don&rsquo;t use /%s modifier in regex; marked by 
&lt;&ndash; HERE in  m/%s/</dt>
+<dt>Useless (?-%s) - don&rsquo;t use /%s modifier in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Useless-_0028_003f_002d_0025s_0029-_002d-don_0027t-use-_002f_0025s-modifier-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(W regexp) You have used an internal modifier such as (?-o) that has no
 meaning unless removed from the entire regexp:
@@ -22923,7 +23306,7 @@
 some point in the future, but in the meantime such code is discouraged.
 </p>
 </dd>
-<dt>Useless (?%s) - use /%s modifier in regex; marked by &lt;&ndash; HERE in 
m/%s/</dt>
+<dt>Useless (?%s) - use /%s modifier in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Useless-_0028_003f_0025s_0029-_002d-use-_002f_0025s-modifier-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(W regexp) You have used an internal modifier such as (?o) that has no
 meaning unless applied to the entire regexp:
@@ -22964,7 +23347,7 @@
  s[foo[a-z]bar][baz]
 </pre>
 <p>The backslashes have no effect when a regular expression pattern is
-delimitted by <code>{}</code>, <code>[]</code>, or <code>()</code>, which 
ordinarily are
+delimited by <code>{}</code>, <code>[]</code>, or <code>()</code>, which 
ordinarily are
 metacharacters, and the delimiters are also used, paired, within the
 interior of the pattern.  It is planned that a future Perl release will
 change the meaning of constructs like these so that the backslashes
@@ -22977,6 +23360,18 @@
 <code>\L</code> or <code>\Q</code> preceding it.
 </p>
 </dd>
+<dt>Useless use of greediness modifier &rsquo;%c&rsquo; in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
+<dd><a 
name="perldiag-Useless-use-of-greediness-modifier-_0027_0025c_0027-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<p>(W regexp) You specified something like these:
+</p>
+<pre class="verbatim"> qr/a{3}?/
+ qr/b{1,1}+/
+</pre>
+<p>The <code>&quot;?&quot;</code> and <code>&quot;+&quot;</code> don&rsquo;t 
have any effect, as they modify whether to
+match more or fewer when there is a choice, and by specifying to match
+exactly a given numer, there is no room left for a choice.
+</p>
+</dd>
 <dt>Useless use of %s in void context</dt>
 <dd><a name="perldiag-Useless-use-of-_0025s-in-void-context"></a>
 <p>(W void) You did something without a side effect in a context that does
@@ -23018,6 +23413,12 @@
 about.
 </p>
 </dd>
+<dt>Useless use of (?-p) in regex; marked by &lt;&ndash;&nbsp;HERE<!-- /@w --> 
in m/%s/</dt>
+<dd><a 
name="perldiag-Useless-use-of-_0028_003f_002dp_0029-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<p>(W regexp) The <code>p</code> modifier cannot be turned off once set.  
Trying to do
+so is futile.
+</p>
+</dd>
 <dt>Useless use of &quot;re&quot; pragma</dt>
 <dd><a name="perldiag-Useless-use-of-_0022re_0022-pragma"></a>
 <p>(W) You did <code>use re;</code> without any arguments.  That isn&rsquo;t 
very useful.
@@ -23032,13 +23433,6 @@
 <p>This is not very useful, and perl currently optimizes this away.
 </p>
 </dd>
-<dt>Useless use of (?-p) in regex; marked by &lt;&ndash; HERE in m/%s/</dt>
-<dd><a 
name="perldiag-Useless-use-of-_0028_003f_002dp_0029-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(W regexp)
-The <code>p</code> modifier cannot be turned off once set.  Trying to do so is
-futile.
-</p>
-</dd>
 <dt>Useless use of %s with no values</dt>
 <dd><a name="perldiag-Useless-use-of-_0025s-with-no-values"></a>
 <p>(W syntax) You used the push() or unshift() function with no arguments
@@ -23049,22 +23443,6 @@
 you can write it as <code>push(@tied_array,())</code> to avoid this warning.
 </p>
 </dd>
-<dt>Useless (%s%c) - %suse /%c modifier in regex; marked by &lt;&ndash; HERE 
in m/%s/</dt>
-<dd><a 
name="perldiag-Useless-_0028_0025s_0025c_0029-_002d-_0025suse-_002f_0025c-modifier-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(W regexp)
-The <code>/g</code> and <code>/o</code> regular expression modifiers are 
global and can&rsquo;t be
-turned off once set; hence things like <code>(?g)</code> or 
<code>(?-o:)</code> do nothing.
-</p>
-</dd>
-<dt>Useless (%sc) - %suse /gc modifier in regex; marked by &lt;&ndash; HERE in 
m/%s/</dt>
-<dd><a 
name="perldiag-Useless-_0028_0025sc_0029-_002d-_0025suse-_002fgc-modifier-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
-<p>(W regexp)
-The <code>/c</code> regular expression modifier is global, can&rsquo;t be 
turned off
-once set, and doesn&rsquo;t do anything without the <code>/g</code> modifier 
being
-specified as well; hence things like <code>(?c)</code> or <code>(?-c:)</code> 
do nothing,
-nor do thing like <code>(?gc)</code> nor <code>(?-gc:)</code> .
-</p>
-</dd>
 <dt>&quot;use&quot; not allowed in expression</dt>
 <dd><a name="perldiag-_0022use_0022-not-allowed-in-expression"></a>
 <p>(F) The &quot;use&quot; keyword is recognized and executed at compile time, 
and
@@ -23080,13 +23458,8 @@
 <dt>Use of bare &lt;&lt; to mean &lt;&lt;&quot;&quot; is deprecated</dt>
 <dd><a 
name="perldiag-Use-of-bare-_003c_003c-to-mean-_003c_003c_0022_0022-is-deprecated"></a>
 <p>(D deprecated) You are now encouraged to use the explicitly quoted
-form if you wish to use an empty line as the terminator of the here-document.
-</p>
-</dd>
-<dt>Use of comma-less variable list is deprecated</dt>
-<dd><a name="perldiag-Use-of-comma_002dless-variable-list-is-deprecated"></a>
-<p>(D deprecated) The values you give to a format should be
-separated by commas, not just aligned on a line.
+form if you wish to use an empty line as the terminator of the
+here-document.
 </p>
 </dd>
 <dt>Use of chdir(&rdquo;) or chdir(undef) as chdir() deprecated</dt>
@@ -23113,6 +23486,19 @@
 used.  (This may change in the future.)
 </p>
 </dd>
+<dt>Use of comma-less variable list is deprecated</dt>
+<dd><a name="perldiag-Use-of-comma_002dless-variable-list-is-deprecated"></a>
+<p>(D deprecated) The values you give to a format should be
+separated by commas, not just aligned on a line.
+</p>
+</dd>
+<dt>Use of each() on hash after insertion without resetting hash iterator 
results in undefined behavior</dt>
+<dd><a 
name="perldiag-Use-of-each_0028_0029-on-hash-after-insertion-without-resetting-hash-iterator-results-in-undefined-behavior"></a>
+<p>(S internal) The behavior of <code>each()</code> after insertion is 
undefined;
+it may skip items, or visit items more than once.  Consider using
+<code>keys()</code> instead of <code>each()</code>.
+</p>
+</dd>
 <dt>Use of := for an empty attribute list is not allowed</dt>
 <dd><a 
name="perldiag-Use-of-_003a_003d-for-an-empty-attribute-list-is-not-allowed"></a>
 <p>(F) The construction <code>my $x := 42</code> used to parse as equivalent to
@@ -23195,8 +23581,16 @@
 old way has bad side effects.
 </p>
 </dd>
-<dt>Use of -l on filehandle %s</dt>
-<dd><a name="perldiag-Use-of-_002dl-on-filehandle-_0025s"></a>
+<dt>Use of literal control characters in variable names is deprecated</dt>
+<dd><a 
name="perldiag-Use-of-literal-control-characters-in-variable-names-is-deprecated"></a>
+<p>(D deprecated) Using literal control characters in the source to refer
+to the ^FOO variables, like <code>$^X</code> and <code>${^GLOBAL_PHASE}</code> 
is now
+deprecated.  This only affects code like <code>$\cT</code>, where \cT is a 
control in
+the source code: <code>${&quot;\cT&quot;}</code> and <code>$^T</code> remain 
valid.
+</p>
+</dd>
+<dt>Use of -l on filehandle%s</dt>
+<dd><a name="perldiag-Use-of-_002dl-on-filehandle_0025s"></a>
 <p>(W io) A filehandle represents an opened file, and when you opened the file
 it already went past any symlink you are presumably trying to look for.
 The operation returned <code>undef</code>.  Use a filename instead.
@@ -23268,13 +23662,30 @@
 the name of the variable (if any) that was undefined.  In some cases
 it cannot do this, so it also tells you what operation you used the
 undefined value in.  Note, however, that perl optimizes your program
-anid the operation displayed in the warning may not necessarily appear
+and the operation displayed in the warning may not necessarily appear
 literally in your program.  For example, <code>&quot;that $foo&quot;</code> is 
usually
 optimized into <code>&quot;that &quot; . $foo</code>, and the warning will 
refer to the
 <code>concatenation (.)</code> operator, even though there is no 
<code>.</code> in
 your program.
 </p>
 </dd>
+<dt>Use \x{...} for more than two hex characters in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
+<dd><a 
name="perldiag-Use-_005cx_007b_002e_002e_002e_007d-for-more-than-two-hex-characters-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<p>(F) In a regular expression, you said something like
+</p>
+<pre class="verbatim"> (?[ [ \xBEEF ] ])
+</pre>
+<p>Perl isn&rsquo;t sure if you meant this
+</p>
+<pre class="verbatim"> (?[ [ \x{BEEF} ] ])
+</pre>
+<p>or if you meant this
+</p>
+<pre class="verbatim"> (?[ [ \x{BE} E F ] ])
+</pre>
+<p>You need to add either braces or blanks to disambiguate.
+</p>
+</dd>
 <dt>Using a hash as a reference is deprecated</dt>
 <dd><a name="perldiag-Using-a-hash-as-a-reference-is-deprecated"></a>
 <p>(D deprecated) You tried to use a hash as a reference, as in
@@ -23291,7 +23702,7 @@
 and will be removed in a future version.
 </p>
 </dd>
-<dt>Using just the first character returned by \N{} in character class in  
regex; marked by &lt;&ndash; HERE in m/%s/</dt>
+<dt>Using just the first character returned by \N{} in character class in  
regex; marked by &lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Using-just-the-first-character-returned-by-_005cN_007b_007d-in-character-class-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(W regexp) A charnames handler may return a sequence of more than one
 character.  Currently all but the first one are discarded when used in
@@ -23308,7 +23719,7 @@
 </dd>
 <dt>UTF-16 surrogate U+%X</dt>
 <dd><a name="perldiag-UTF_002d16-surrogate-U_002b_0025X"></a>
-<p>(S utf8, surrogate) You had a UTF-16 surrogate in a context where they are
+<p>(S surrogate) You had a UTF-16 surrogate in a context where they are
 not considered acceptable.  These code points, between U+D800 and
 U+DFFF (inclusive), are used by Unicode only for UTF-16.  However, Perl
 internally allows all unsigned integer code points (up to the size limit
@@ -23336,6 +23747,16 @@
 1024 characters.
 </p>
 </dd>
+<dt>values on reference is experimental</dt>
+<dd><a name="perldiag-values-on-reference-is-experimental"></a>
+<p>(S experimental::autoderef) <code>values</code> with a scalar argument
+is experimental and may change or be removed in a future
+Perl version.  If you want to take the risk of using this
+feature, simply disable this warning:
+</p>
+<pre class="verbatim">    no warnings &quot;experimental::autoderef&quot;;
+</pre>
+</dd>
 <dt>Variable &quot;%s&quot; is not available</dt>
 <dd><a name="perldiag-Variable-_0022_0025s_0022-is-not-available"></a>
 <p>(W closure) During compilation, an inner named subroutine or eval is
@@ -23363,8 +23784,8 @@
     }
     f()-&gt;();
 </pre>
-<p>Here, when the &rsquo;$a&rsquo; in the eval is being compiled, f() is not 
currently being
-executed, so its $a is not available for capture.
+<p>Here, when the &rsquo;$a&rsquo; in the eval is being compiled, f() is not 
currently
+being executed, so its $a is not available for capture.
 </p>
 </dd>
 <dt>Variable &quot;%s&quot; is not imported%s</dt>
@@ -23422,13 +23843,13 @@
 with alpha parts.
 </p>
 </dd>
-<dt>Verb pattern &rsquo;%s&rsquo; has a mandatory argument in regex; marked by 
&lt;&ndash; HERE  in m/%s/</dt>
+<dt>Verb pattern &rsquo;%s&rsquo; has a mandatory argument in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Verb-pattern-_0027_0025s_0027-has-a-mandatory-argument-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) You used a verb pattern that requires an argument.  Supply an
 argument or check that you are using the right verb.
 </p>
 </dd>
-<dt>Verb pattern &rsquo;%s&rsquo; may not have an argument in regex; marked by 
&lt;&ndash; HERE  in m/%s/</dt>
+<dt>Verb pattern &rsquo;%s&rsquo; may not have an argument in regex; marked by 
&lt;&ndash;&nbsp;HERE<!-- /@w --> in m/%s/</dt>
 <dd><a 
name="perldiag-Verb-pattern-_0027_0025s_0027-may-not-have-an-argument-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
 <p>(F) You used a verb pattern that is not allowed an argument.  Remove the 
 argument or check that you are using the right verb.
@@ -23485,8 +23906,8 @@
 <p>(S experimental::smartmatch) <code>when</code> depends on smartmatch, which 
is
 experimental.  Additionally, it has several special cases that may
 not be immediately obvious, and their behavior may change or
-even be removed in any future release of perl.
-See the explanation under <a 
href="#perlsyn-Experimental-Details-on-given-and-when">perlsyn Experimental 
Details on given and when</a>.
+even be removed in any future release of perl.  See the explanation
+under <a href="#perlsyn-Experimental-Details-on-given-and-when">perlsyn 
Experimental Details on given and when</a>.
 </p>
 </dd>
 <dt>Wide character in %s</dt>
@@ -23517,9 +23938,9 @@
 </dd>
 <dt>%s &quot;\x%X&quot; does not map to Unicode</dt>
 <dd><a 
name="perldiag-_0025s-_0022_005cx_0025X_0022-does-not-map-to-Unicode"></a>
-<p>(F) When reading in different encodings, Perl tries to map everything
-into Unicode characters.  The bytes you read in are not legal in
-this encoding.  For example
+<p>(S utf8) When reading in different encodings, Perl tries to
+map everything into Unicode characters.  The bytes you read
+in are not legal in this encoding.  For example
 </p>
 <pre class="verbatim">    utf8 &quot;\xE4&quot; does not map to Unicode
 </pre>
@@ -23557,11 +23978,20 @@
 </dd>
 <dt>Your random numbers are not that random</dt>
 <dd><a name="perldiag-Your-random-numbers-are-not-that-random"></a>
-<p>(F) When trying to initialise the random seed for hashes, Perl could
+<p>(F) When trying to initialize the random seed for hashes, Perl could
 not get any randomness out of your system.  This usually indicates
 Something Very Wrong.
 </p>
 </dd>
+<dt>Zero length \N{} in regex; marked by &lt;&ndash;&nbsp;HERE<!-- /@w --> in 
m/%s/</dt>
+<dd><a 
name="perldiag-Zero-length-_005cN_007b_007d-in-regex_003b-marked-by-_003c_002d_002d-HERE-in-m_002f_0025s_002f"></a>
+<p>(F) Named Unicode character escapes <code>(\N{...})</code> may return a 
zero-length
+sequence.  Such an escape was used in an extended character class, i.e.
+<code>(?[...])</code>, which is not permitted.  Check that the correct escape 
has
+been used, and the correct charnames handler is in scope.  The 
&lt;&ndash;&nbsp;HERE<!-- /@w -->
+shows whereabouts in the regular expression the problem was discovered.
+</p>
+</dd>
 </dl>
 
 <hr>
@@ -23573,7 +24003,7 @@
 <a name="SEE-ALSO-9"></a>
 <h3 class="section">16.3 SEE ALSO</h3>
 
-<p><a href="warnings.html#Top">(warnings)</a>, <a 
href="#perllexwarn-NAME">perllexwarn NAME</a>, <a 
href="diagnostics.html#Top">(diagnostics)</a>.
+<p><a href="warnings.html#Top">(warnings)</a>, <a 
href="diagnostics.html#Top">(diagnostics)</a>.
 </p>
 <hr>
 <a name="perldsc"></a>
@@ -24895,7 +25325,7 @@
 <dd><a name="perldtrace-loaded_002dfile_0028FILENAME_0029"></a>
 <p>Fires when Perl has successfully loaded an individual file, whether
 from <code>use</code>, <code>require</code>, or <code>do</code>. This probe 
fires after the file
-is read from disk and its contentss evaluated. The filename argument
+is read from disk and its contents evaluated. The filename argument
 is converted to local filesystem paths instead of providing
 <code>Module::Name</code>-style names.
 </p>
@@ -24994,9 +25424,9 @@
 <h3 class="section">18.7 REFERENCES</h3>
 
 <dl compact="compact">
-<dt>DTrace User Guide</dt>
-<dd><a name="perldtrace-DTrace-User-Guide"></a>
-<p><a 
href="http://download.oracle.com/docs/cd/E19082-01/819-3620/index.html";>http://download.oracle.com/docs/cd/E19082-01/819-3620/index.html</a>
+<dt>DTrace Dynamic Tracing Guide</dt>
+<dd><a name="perldtrace-DTrace-Dynamic-Tracing-Guide"></a>
+<p><a 
href="http://dtrace.org/guide/preface.html";>http://dtrace.org/guide/preface.html</a>
 </p>
 </dd>
 <dt>DTrace: Dynamic Tracing in Oracle Solaris, Mac OS X and FreeBSD</dt>
@@ -25018,7 +25448,8 @@
 <dl compact="compact">
 <dt><a href="Devel-DTrace-Provider.html#Top">(Devel-DTrace-Provider)</a></dt>
 <dd><a name="perldtrace-Devel_002dDTrace_002dProvider"></a>
-<p>This CPAN module lets you create application-level DTrace probes written in 
Perl.
+<p>This CPAN module lets you create application-level DTrace probes written in
+Perl.
 </p>
 </dd>
 </dl>
@@ -25440,7 +25871,7 @@
 corresponding to <em>The Unicode Standard, Version 6.1</em> albeit with
 substitutions such as s/LATIN// and s/VULGAR// in all cases, s/CAPITAL
 LETTER// in some cases, and s/SMALL LETTER ([A-Z])/\l$1/ in some other
-cases.  Controls are listed using their Unicode 6.1 abbreviatons.
+cases.  Controls are listed using their Unicode 6.2 abbreviations.
 The differences between the 0037 and 1047 sets are
 flagged with **.  The differences between the 1047 and POSIX-BC sets
 are flagged with ##.  All ord() numbers listed are decimal.  If you
@@ -26048,7 +26479,7 @@
 as control characters in perl, e.g. <code>(chr(0)</code> eq 
<code>\c@</code>)&gt;
 <code>(chr(1)</code> eq <code>\cA</code>)&gt;, and so on.  Perl on EBCDIC 
platforms has been
 ported to take <code>\c@</code> to chr(0) and <code>\cA</code> to chr(1), etc. 
as well, but the
-thirty three characters that result depend on which code page you are
+characters that result depend on which code page you are
 using.  The table below uses the standard acronyms for the controls.
 The POSIX-BC and 1047 sets are
 identical throughout this range and differ from the 0037 set at only
@@ -26058,10 +26489,12 @@
 0037 platforms.  Note also that <code>\c\</code> cannot be the final element 
in a string
 or regex, as it will absorb the terminator.   But <code>\c\<em>X</em></code> 
is a <code>FILE
 SEPARATOR</code> concatenated with <em>X</em> for all <em>X</em>.
+The outlier <code>\c?</code> on ASCII, which yields a non-C0 control 
<code>DEL</code>,
+yields the outlier control <code>APC</code> on EBCDIC, the one that 
isn&rsquo;t in the
+block of contiguous controls.
 </p>
 <pre class="verbatim"> chr   ord   8859-1    0037    1047 &amp;&amp; POSIX-BC
  -----------------------------------------------------------------------
- \c?   127   &lt;DEL&gt;       &quot;            &quot;
  \c@     0   &lt;NUL&gt;     &lt;NUL&gt;        &lt;NUL&gt;
  \cA     1   &lt;SOH&gt;     &lt;SOH&gt;        &lt;SOH&gt;
  \cB     2   &lt;STX&gt;     &lt;STX&gt;        &lt;STX&gt;
@@ -26094,7 +26527,13 @@
  \c]    29   &lt;GS&gt;      &lt;GS&gt;         &lt;GS&gt;
  \c^    30   &lt;RS&gt;      &lt;RS&gt;         &lt;RS&gt;
  \c_    31   &lt;US&gt;      &lt;US&gt;         &lt;US&gt;
+ \c?    *    &lt;DEL&gt;     &lt;APC&gt;        &lt;APC&gt;
 </pre>
+<p><code>*</code> Note: <code>\c?</code> maps to ordinal 127 
(<code>DEL</code>) on ASCII platforms, but
+since ordinal 127 is a not a control character on EBCDIC machines,
+<code>\c?</code> instead maps to <code>APC</code>, which is 255 in 0037 and 
1047, and 95 in
+POSIX-BC.
+</p>
 <hr>
 <a name="perlebcdic-FUNCTION-DIFFERENCES"></a>
 <div class="header">
@@ -26235,85 +26674,51 @@
         $char =~ /[\200-\237]/;
     }
 
-    sub is_latin_1 {
+    sub is_latin_1 {    # But not ASCII; not C1
         my $char = substr(shift,0,1);
         $char =~ /[\240-\377]/;
     }
 </pre>
-<p>The above would be adequate if the concern was only with numeric code 
points.
-However, the concern may be with characters rather than code points
-and on an EBCDIC platform it may be desirable for constructs such as
-<code>if (is_print_ascii(&quot;A&quot;)) {print &quot;A is a printable 
character\n&quot;;}</code> to print
-out the expected message.  One way to represent the above collection
-of character classification subs that is capable of working across the
-four coded character sets discussed in this document is as follows:
+<p>These are valid only on ASCII platforms, but can be easily rewritten to
+work on any platform as follows:
 </p>
 <pre class="verbatim">    sub Is_c0 {
         my $char = substr(shift,0,1);
-        if (ord('^')==94)  { # ascii
-            return $char =~ /[\000-\037]/;
-        }
-        if (ord('^')==176) { # 0037
-            return $char =~ 
/[\000-\003\067\055-\057\026\005\045\013-\023\074\075\062\046\030\031\077\047\034-\037]/;
-        }
-        if (ord('^')==95 || ord('^')==106) { # 1047 || posix-bc
-            return $char =~ 
/[\000-\003\067\055-\057\026\005\025\013-\023\074\075\062\046\030\031\077\047\034-\037]/;
-        }
+        return $char =~ /[[:cntrl:]]/
+               &amp;&amp; $char =~ /[[:ascii:]]/
+               &amp;&amp; ! Is_delete($char);
     }
 
     sub Is_print_ascii {
         my $char = substr(shift,0,1);
-        $char =~ /[ 
!&quot;\#\$%&amp;'()*+,\-.\/0-9:;&lt;=&gt;address@hidden|}~]/;
+
+        return $char =~ /[[:print:]]/ &amp;&amp; $char =~ /[[:ascii:]]/;
+
+        # Alternatively:
+        # return $char
+        #      =~ /[ 
!&quot;\#\$%&amp;'()*+,\-.\/0-9:;&lt;=&gt;address@hidden|}~]/;
     }
 
     sub Is_delete {
         my $char = substr(shift,0,1);
-        if (ord('^')==94)  { # ascii
-            return $char eq &quot;\177&quot;;
-        }
-        else  {              # ebcdic
-            return $char eq &quot;\007&quot;;
-        }
+        return utf8::native_to_unicode(ord $char) == 0x7F;
     }
 
     sub Is_c1 {
+        use feature 'unicode_strings';
         my $char = substr(shift,0,1);
-        if (ord('^')==94)  { # ascii
-            return $char =~ /[\200-\237]/;
-        }
-        if (ord('^')==176) { # 0037
-            return $char =~ 
/[\040-\044\025\006\027\050-\054\011\012\033\060\061\032\063-\066\010\070-\073\040\024\076\377]/;
-        }
-        if (ord('^')==95)  { # 1047
-            return $char =~ 
/[\040-\045\006\027\050-\054\011\012\033\060\061\032\063-\066\010\070-\073\040\024\076\377]/;
-        }
-        if (ord('^')==106) { # posix-bc
-            return $char =~
-              
/[\040-\045\006\027\050-\054\011\012\033\060\061\032\063-\066\010\070-\073\040\024\076\137]/;
-        }
+        return $char =~ /[[:cntrl:]]/ &amp;&amp; $char !~ /[[:ascii:]]/;
     }
 
-    sub Is_latin_1 {
+    sub Is_latin_1 {    # But not ASCII; not C1
+        use feature 'unicode_strings';
         my $char = substr(shift,0,1);
-        if (ord('^')==94)  { # ascii
-            return $char =~ /[\240-\377]/;
-        }
-        if (ord('^')==176) { # 0037
-            return $char =~
-              
/[\101\252\112\261\237\262\152\265\275\264\232\212\137\312\257\274\220\217\352\372\276\240\266\263\235\332\233\213\267\270\271\253\144\145\142\146\143\147\236\150\164\161-\163\170\165-\167\254\151\355\356\353\357\354\277\200\375\376\373\374\255\256\131\104\105\102\106\103\107\234\110\124\121-\123\130\125-\127\214\111\315\316\313\317\314\341\160\335\336\333\334\215\216\337]/;
-        }
-        if (ord('^')==95)  { # 1047
-            return $char =~
-              
/[\101\252\112\261\237\262\152\265\273\264\232\212\260\312\257\274\220\217\352\372\276\240\266\263\235\332\233\213\267\270\271\253\144\145\142\146\143\147\236\150\164\161-\163\170\165-\167\254\151\355\356\353\357\354\277\200\375\376\373\374\272\256\131\104\105\102\106\103\107\234\110\124\121-\123\130\125-\127\214\111\315\316\313\317\314\341\160\335\336\333\334\215\216\337]/;
-        }
-        if (ord('^')==106) { # posix-bc
-            return $char =~
-              
/[\101\252\260\261\237\262\320\265\171\264\232\212\272\312\257\241\220\217\352\372\276\240\266\263\235\332\233\213\267\270\271\253\144\145\142\146\143\147\236\150\164\161-\163\170\165-\167\254\151\355\356\353\357\354\277\200\340\376\335\374\255\256\131\104\105\102\106\103\107\234\110\124\121-\123\130\125-\127\214\111\315\316\313\317\314\341\160\300\336\333\334\215\216\337]/;
-        }
+        return ord($char) &lt; 256
+               &amp;&amp; $char !~ [[:ascii:]]
+               &amp;&amp; $char !~ [[:cntrl:]];
     }
 </pre>
-<p>Note however that only the <code>Is_ascii_print()</code> sub is really 
independent
-of coded character set.  Another way to write <code>Is_latin_1()</code> would 
be
+<p>Another way to write <code>Is_latin_1()</code> would be
 to use the characters in the range explicitly:
 </p>
 <pre class="verbatim">    sub Is_latin_1 {
@@ -26545,7 +26950,8 @@
     );
     # The following regular expression does not address the
     # mappings for: ('.' =&gt; '%2E', '/' =&gt; '%2F', ':' =&gt; '%3A')
-    $url =~ s/([\t 
&quot;#%&amp;\(\),;&lt;=&gt;address@hidden|}~])/sprintf(&quot;%%%02X&quot;,$e2a_1047[ord($1)])/ge;
+    $url =~ s/([\t &quot;#%&amp;\(\),;&lt;=&gt;address@hidden|}~])/
+                sprintf(&quot;%%%02X&quot;,$e2a_1047[ord($1)])/xge;
 </pre>
 <p>where a more complete solution would split the URL into components
 and apply a full s/// substitution only to the appropriate parts.
@@ -26632,7 +27038,8 @@
         @e2a =               # EBCDIC to ASCII map (as shown above)
     }
     $qp_string =~
-      s/([^ 
!&quot;\#\$%&amp;'()*+,\-.\/0-9:;&lt;&gt;address@hidden|}~$delete])/sprintf(&quot;=%02X&quot;,$e2a[ord($1)])/ge;
+      s/([^ 
!&quot;\#\$%&amp;'()*+,\-.\/0-9:;&lt;&gt;address@hidden|}~$delete])/
+         sprintf(&quot;=%02X&quot;,$e2a[ord($1)])/xge;
 </pre>
 <p>(although in production code the substitutions might be done
 in the EBCDIC branch with the @e2a array and separately in the
@@ -26994,6 +27401,8 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlembed-Using-Perl-modules_002c-which-themselves-use-C-libraries_002c-from-your-C-program">perlembed
 Using Perl modules, which themselves use C libraries, from your C 
program</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perlembed-Using-embedded-Perl-with-POSIX-locales">perlembed Using 
embedded Perl with POSIX locales</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+</td></tr>
 </table>
 
 <hr>
@@ -27290,8 +27699,8 @@
 </pre>
 <p>Simple enough.  Now compile and run:
 </p>
-<pre class="verbatim">    % cc -o showtime showtime.c `perl -MExtUtils::Embed 
-e ccopts -e ldopts`
-
+<pre class="verbatim"> % cc -o showtime showtime.c \
+     `perl -MExtUtils::Embed -e ccopts -e ldopts`
     % showtime showtime.pl
     818284590
 </pre>
@@ -27358,7 +27767,8 @@
        printf(&quot;a = %f\n&quot;, SvNV(get_sv(&quot;a&quot;, 0)));
 
        /** Treat $a as a string **/
-       eval_pv(&quot;$a = 'rekcaH lreP rehtonA tsuJ'; $a = reverse($a);&quot;, 
TRUE);
+     eval_pv(
+       &quot;$a = 'rekcaH lreP rehtonA tsuJ'; $a = reverse($a);&quot;, TRUE);
        printf(&quot;a = %s\n&quot;, SvPV_nolen(get_sv(&quot;a&quot;, 0)));
 
        perl_destruct(my_perl);
@@ -27366,7 +27776,8 @@
        PERL_SYS_TERM();
    }
 </pre>
-<p>All of those strange functions with <em>sv</em> in their names help convert 
Perl scalars to C types.  They&rsquo;re described in <a 
href="#perlguts-NAME">perlguts NAME</a> and <a 
href="perlapi.html#Top">(perlapi)</a>.
+<p>All of those strange functions with <em>sv</em> in their names help convert 
Perl
+scalars to C types.  They&rsquo;re described in <a 
href="#perlguts-NAME">perlguts NAME</a> and <a 
href="perlapi.html#Top">(perlapi)</a>.
 </p>
 <p>If you compile and run <em>string.c</em>, you&rsquo;ll see the results of 
using
 <em>SvIV()</em> to create an <code>int</code>, <em>SvNV()</em> to create a 
<code>float</code>, and
@@ -27412,14 +27823,15 @@
 </pre>
 <p>Given a pointer to an <code>SV</code> and an <code>=~</code> operation 
(e.g.,
 <code>s/bob/robert/g</code> or <code>tr[A-Z][a-z]</code>), substitute() 
modifies the string
-within the <code>SV</code> as according to the operation, returning the number 
of substitutions
-made.
+within the <code>SV</code> as according to the operation, returning the number 
of
+substitutions made.
 </p>
-<pre class="verbatim">   int matches(SV *string, char *pattern, AV **matches);
+<pre class="verbatim">   SSize_t matches(SV *string, char *pattern, AV 
**matches);
 </pre>
 <p>Given an <code>SV</code>, a pattern, and a pointer to an empty 
<code>AV</code>,
 matches() evaluates <code>$string =~ $pattern</code> in a list context, and
-fills in <em>matches</em> with the array elements, returning the number of 
matches found.
+fills in <em>matches</em> with the array elements, returning the number of 
matches
+found.
 </p>
 <p>Here&rsquo;s a sample program, <em>match.c</em>, that uses all three (long 
lines have
 been wrapped here):
@@ -27474,7 +27886,8 @@
 
  /** substitute(string, pattern)
  **
- ** Used for =~ operations that modify their left-hand side (s/// and tr///)
+ ** Used for =~ operations that
+ ** modify their left-hand side (s/// and tr///)
  **
  ** Returns the number of successful matches, and
  ** modifies the input string if there were any.
@@ -27502,10 +27915,10 @@
  ** and fills in **matches with the matching substrings
  **/
 
- I32 matches(SV *string, char *pattern, AV **match_list)
+ SSize_t matches(SV *string, char *pattern, AV **match_list)
  {
      SV *command = newSV(0);
-     I32 num_matches;
+     SSize_t num_matches;
 
      sv_setpvf(command, &quot;my $string = '%s'; @array = ($string =~ 
%s)&quot;,
               SvPV_nolen(string), pattern);
@@ -27559,14 +27972,15 @@
      printf(&quot;matches: m/(wi..)/g found %d matches...\n&quot;, 
num_matches);
 
      for (i = 0; i &lt; num_matches; i++)
-        printf(&quot;match: %s\n&quot;, SvPV_nolen(*av_fetch(match_list, i, 
FALSE)));
+         printf(&quot;match: %s\n&quot;,
+                  SvPV_nolen(*av_fetch(match_list, i, FALSE)));
      printf(&quot;\n&quot;);
 
      /** Remove all vowels from text **/
      num_matches = substitute(&amp;text, &quot;s/[aeiou]//gi&quot;);
      if (num_matches) {
-        printf(&quot;substitute: s/[aeiou]//gi...%d substitutions 
made.\n&quot;,
-               num_matches);
+        printf(&quot;substitute: s/[aeiou]//gi...%lu substitutions 
made.\n&quot;,
+               (unsigned long)num_matches);
         printf(&quot;Now text is: %s\n\n&quot;, SvPV_nolen(text));
      }
 
@@ -27594,10 +28008,11 @@
 
    substitute: s/[aeiou]//gi...139 substitutions made.
    Now text is: Whn h s t  cnvnnc str nd th bll cms t sm mnt lk 76 cnts,
-   Mynrd s wr tht thr s smthng h *shld* d, smthng tht wll nbl hm t gt bck
-   qrtr, bt h hs n d *wht*.  H fmbls thrgh hs rd sqzy chngprs nd gvs th by
-   thr xtr pnns wth hs dllr, hpng tht h mght lck nt th crrct mnt.  Th by gvs
-   hm bck tw f hs wn pnns nd thn th bg shny qrtr tht s hs prz. -RCHH
+  Mynrd s wr tht thr s smthng h *shld* d, smthng tht wll nbl hm t gt
+  bck qrtr, bt h hs n d *wht*.  H fmbls thrgh hs rd sqzy chngprs nd
+  gvs th by thr xtr pnns wth hs dllr, hpng tht h mght lck nt th crrct
+  mnt.  Th by gvs hm bck tw f hs wn pnns nd thn th bg shny qrtr tht s
+  hs prz. -RCHH
 
    substitute: s/Perl/C...No substitution made.
 </pre>
@@ -27806,7 +28221,9 @@
  #include &lt;EXTERN.h&gt;
  #include &lt;perl.h&gt;
 
- /* 1 = clean out filename's symbol table after each request, 0 = don't */
+ /* 1 = clean out filename's symbol table after each request,
+    0 = don't
+ */
  #ifndef DO_CLEAN
  #define DO_CLEAN 0
  #endif
@@ -27830,7 +28247,8 @@
      }
      perl_construct(my_perl);
 
-     PL_origalen = 1; /* don't let $0 assignment update the proctitle or 
embedding[0] */
+     PL_origalen = 1; /* don't let $0 assignment update the
+                         proctitle or embedding[0] */
      exitstatus = perl_parse(my_perl, NULL, 2, embedding, NULL);
      PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
      if(!exitstatus) {
@@ -27840,7 +28258,8 @@
               fgets(filename, BUFFER_SIZE, stdin)) {
 
             filename[strlen(filename)-1] = '\0'; /* strip \n */
-            /* call the subroutine, passing it the filename as an argument */
+            /* call the subroutine,
+                     passing it the filename as an argument */
             args[0] = filename;
             call_argv(&quot;Embed::Persistent::eval_file&quot;,
                            G_DISCARD | G_EVAL, args);
@@ -27860,7 +28279,8 @@
 </pre>
 <p>Now compile:
 </p>
-<pre class="verbatim"> % cc -o persistent persistent.c `perl -MExtUtils::Embed 
-e ccopts -e ldopts`
+<pre class="verbatim"> % cc -o persistent persistent.c \
+        `perl -MExtUtils::Embed -e ccopts -e ldopts`
 </pre>
 <p>Here&rsquo;s an example script file:
 </p>
@@ -28038,7 +28458,8 @@
 </p>
 <p>Compile as usual:
 </p>
-<pre class="verbatim"> % cc -o multiplicity multiplicity.c `perl 
-MExtUtils::Embed -e ccopts -e ldopts`
+<pre class="verbatim"> % cc -o multiplicity multiplicity.c \
+  `perl -MExtUtils::Embed -e ccopts -e ldopts`
 </pre>
 <p>Run it, Run it:
 </p>
@@ -28050,14 +28471,14 @@
 <a 
name="perlembed-Using-Perl-modules_002c-which-themselves-use-C-libraries_002c-from-your-C-program"></a>
 <div class="header">
 <p>
-Previous: <a href="#perlembed-Maintaining-multiple-interpreter-instances" 
accesskey="p" rel="prev">perlembed Maintaining multiple interpreter 
instances</a>, Up: <a href="#perlembed-DESCRIPTION" accesskey="u" 
rel="up">perlembed DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
+Next: <a href="#perlembed-Using-embedded-Perl-with-POSIX-locales" 
accesskey="n" rel="next">perlembed Using embedded Perl with POSIX locales</a>, 
Previous: <a href="#perlembed-Maintaining-multiple-interpreter-instances" 
accesskey="p" rel="prev">perlembed Maintaining multiple interpreter 
instances</a>, Up: <a href="#perlembed-DESCRIPTION" accesskey="u" 
rel="up">perlembed DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
 </div>
 <a 
name="Using-Perl-modules_002c-which-themselves-use-C-libraries_002c-from-your-C-program"></a>
 <h4 class="subsection">20.2.13 Using Perl modules, which themselves use C 
libraries, from your C program</h4>
 
 <p>If you&rsquo;ve played with the examples above and tried to embed a script
-that <em>use()</em>s a Perl module (such as <em>Socket</em>) which itself uses 
a C or C++ library,
-this probably happened:
+that <em>use()</em>s a Perl module (such as <em>Socket</em>) which itself uses 
a C or C++
+library, this probably happened:
 </p>
 <pre class="verbatim"> Can't load module Socket, dynamic loading not available 
in this perl.
   (You may need to build a new perl executable which either supports
@@ -28071,9 +28492,9 @@
 </p>
 <pre class="verbatim"> perl_parse(my_perl, NULL, argc, my_argv, NULL);
 </pre>
-<p>That&rsquo;s where the glue code can be inserted to create the initial 
contact between
-Perl and linked C/C++ routines.  Let&rsquo;s take a look some pieces of 
<em>perlmain.c</em>
-to see how Perl does this:
+<p>That&rsquo;s where the glue code can be inserted to create the initial 
contact
+between Perl and linked C/C++ routines. Let&rsquo;s take a look some pieces of
+<em>perlmain.c</em> to see how Perl does this:
 </p>
 <pre class="verbatim"> static void xs_init (pTHX);
 
@@ -28127,6 +28548,31 @@
 <p>Consult <a href="perlxs.html#Top">(perlxs)</a>, <a 
href="#perlguts-NAME">perlguts NAME</a>, and <a 
href="perlapi.html#Top">(perlapi)</a> for more details.
 </p>
 <hr>
+<a name="perlembed-Using-embedded-Perl-with-POSIX-locales"></a>
+<div class="header">
+<p>
+Previous: <a 
href="#perlembed-Using-Perl-modules_002c-which-themselves-use-C-libraries_002c-from-your-C-program"
 accesskey="p" rel="prev">perlembed Using Perl modules, which themselves use C 
libraries, from your C program</a>, Up: <a href="#perlembed-DESCRIPTION" 
accesskey="u" rel="up">perlembed DESCRIPTION</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
+</div>
+<a name="Using-embedded-Perl-with-POSIX-locales"></a>
+<h4 class="subsection">20.2.14 Using embedded Perl with POSIX locales</h4>
+
+<p>(See <a href="#perllocale-NAME">perllocale NAME</a> for information about 
these.)
+When a Perl interpreter normally starts up, it tells the system it wants
+to use the system&rsquo;s default locale.  This is often, but not necessarily,
+the &quot;C&quot; or &quot;POSIX&quot; locale.  Absent a 
<code>&quot;use&nbsp;locale&quot;</code><!-- /@w --> within the perl
+code, this mostly has no effect (but see <a 
href="#perllocale-Not-within-the-scope-of-any-_0022use-locale_0022-variant">perllocale
 <strong>Not within the scope of any <code>&quot;use locale&quot;</code> 
variant</strong></a>).  Also, there is not a problem if the
+locale you want to use in your embedded Perl is the same as the system
+default.  However, this doesn&rsquo;t work if you have set up and want to use
+a locale that isn&rsquo;t the system default one.  Starting in Perl v5.20, you
+can tell the embedded Perl interpreter that the locale is already
+properly set up, and to skip doing its own normal initialization.  It
+skips if the environment variable <code>PERL_SKIP_LOCALE_INIT</code> is set 
(even
+if set to 0 or <code>&quot;&quot;</code>).  A Perl that has this capability 
will define the
+C pre-processor symbol <code>HAS_SKIP_LOCALE_INIT</code>.  This allows code 
that
+has to work with multiple Perl versions to do some sort of work-around
+when confronted with an earlier Perl.
+</p>
+<hr>
 <a name="perlembed-Hiding-Perl_005f"></a>
 <div class="header">
 <p>
@@ -28269,203 +28715,14 @@
 <h4 class="subsection">21.2.1 Current experiments</h4>
 
 <dl compact="compact">
-<dt>-Dusemultiplicity -Duseithreads</dt>
-<dd><a name="perlexperiment-_002dDusemultiplicity-_002dDuseithreads"></a>
-<p>Introduced in Perl 5.6.0
-</p>
-</dd>
-<dt>Long Doubles Still Don&rsquo;t Work In Solaris</dt>
-<dd><a name="perlexperiment-Long-Doubles-Still-Don_0027t-Work-In-Solaris"></a>
-<p>Introduced in Perl 5.7.0
-</p>
-</dd>
 <dt><code>our</code> can now have an experimental optional attribute 
<code>unique</code></dt>
 <dd><a 
name="perlexperiment-our-can-now-have-an-experimental-optional-attribute-unique"></a>
 <p>Introduced in Perl 5.8.0
 </p>
 <p>Deprecated in Perl 5.10.0
 </p>
-</dd>
-<dt>Linux abstract Unix domain sockets</dt>
-<dd><a name="perlexperiment-Linux-abstract-Unix-domain-sockets"></a>
-<p>Introduced in Perl 5.9.2
-</p>
-<p>See also <a href="Socket.html#Top">(Socket)</a>
-</p>
-</dd>
-<dt><a href="Pod-HTML2Pod.html#Top">(Pod-HTML2Pod)Pod::HTML2Pod</a></dt>
-<dd><a name="perlexperiment-Pod_003a_003aHTML2Pod"></a>
-</dd>
-<dt><a href="Pod-PXML.html#Top">(Pod-PXML)Pod::PXML</a></dt>
-<dd><a name="perlexperiment-Pod_003a_003aPXML"></a>
-</dd>
-<dt>The &lt;:pop&gt; IO pseudolayer</dt>
-<dd><a name="perlexperiment-The-_003c_003apop_003e-IO-pseudolayer"></a>
-<p>See also <a href="#perlrun-NAME">perlrun NAME</a>
-</p>
-</dd>
-<dt>The &lt;:win32&gt; IO pseudolayer</dt>
-<dd><a name="perlexperiment-The-_003c_003awin32_003e-IO-pseudolayer"></a>
-<p>See also <a href="#perlrun-NAME">perlrun NAME</a>
-</p>
-</dd>
-<dt>MLDBM</dt>
-<dd><a name="perlexperiment-MLDBM"></a>
-<p>See also <a href="#perldsc-NAME">perldsc NAME</a>
-</p>
-</dd>
-<dt>internal functions with M flag</dt>
-<dd><a name="perlexperiment-internal-functions-with-M-flag"></a>
-<p>See also <a href="#perlguts-NAME">perlguts NAME</a>
-</p>
-</dd>
-<dt>lex_start API</dt>
-<dd><a name="perlexperiment-lex_005fstart-API"></a>
-<p>Introduced in Perl 5.13.7
-</p>
-</dd>
-<dt>internal API for <code>%^H</code></dt>
-<dd><a name="perlexperiment-internal-API-for-_0025_005eH"></a>
-<p>Introduced in Perl 5.13.7
-</p>
-<p>See also <code>cophh_</code> in <a href="perlapi.html#Top">(perlapi)</a>.
-</p>
-</dd>
-<dt>alloccopstash</dt>
-<dd><a name="perlexperiment-alloccopstash"></a>
-<p>Introduced in Perl 5.18.0
-</p>
-</dd>
-<dt>av_create_and_push</dt>
-<dd><a name="perlexperiment-av_005fcreate_005fand_005fpush"></a>
-</dd>
-<dt>av_create_and_unshift_one</dt>
-<dd><a name="perlexperiment-av_005fcreate_005fand_005funshift_005fone"></a>
-</dd>
-<dt>av_create_and_unshift_one</dt>
-<dd><a name="perlexperiment-av_005fcreate_005fand_005funshift_005fone-1"></a>
-</dd>
-<dt>cop_store_label</dt>
-<dd><a name="perlexperiment-cop_005fstore_005flabel"></a>
-<p>Introduced in Perl 5.16.0
-</p>
-</dd>
-<dt>PL_keyword_plugin</dt>
-<dd><a name="perlexperiment-PL_005fkeyword_005fplugin"></a>
-</dd>
-<dt>gv_fetchmethod_*_flags</dt>
-<dd><a name="perlexperiment-gv_005ffetchmethod_005f_002a_005fflags"></a>
-<p>Introduced in Perl 5.16.0
-</p>
-</dd>
-<dt>hv_iternext_flags</dt>
-<dd><a name="perlexperiment-hv_005fiternext_005fflags"></a>
-</dd>
-<dt>lex_bufutf8</dt>
-<dd><a name="perlexperiment-lex_005fbufutf8"></a>
-</dd>
-<dt>lex_discard_to</dt>
-<dd><a name="perlexperiment-lex_005fdiscard_005fto"></a>
-</dd>
-<dt>lex_grow_linestr</dt>
-<dd><a name="perlexperiment-lex_005fgrow_005flinestr"></a>
-</dd>
-<dt>lex_next_chunk</dt>
-<dd><a name="perlexperiment-lex_005fnext_005fchunk"></a>
-</dd>
-<dt>lex_peek_unichar</dt>
-<dd><a name="perlexperiment-lex_005fpeek_005funichar"></a>
-</dd>
-<dt>lex_read_space</dt>
-<dd><a name="perlexperiment-lex_005fread_005fspace"></a>
-</dd>
-<dt>lex_read_to</dt>
-<dd><a name="perlexperiment-lex_005fread_005fto"></a>
-</dd>
-<dt>lex_read_unichar</dt>
-<dd><a name="perlexperiment-lex_005fread_005funichar"></a>
-</dd>
-<dt>lex_stuff_pv</dt>
-<dd><a name="perlexperiment-lex_005fstuff_005fpv"></a>
-</dd>
-<dt>lex_stuff_pvn</dt>
-<dd><a name="perlexperiment-lex_005fstuff_005fpvn"></a>
-</dd>
-<dt>lex_stuff_pvs</dt>
-<dd><a name="perlexperiment-lex_005fstuff_005fpvs"></a>
-</dd>
-<dt>lex_stuff_sv</dt>
-<dd><a name="perlexperiment-lex_005fstuff_005fsv"></a>
-</dd>
-<dt>lex_unstuff</dt>
-<dd><a name="perlexperiment-lex_005funstuff"></a>
-</dd>
-<dt>op_scope</dt>
-<dd><a name="perlexperiment-op_005fscope"></a>
-</dd>
-<dt>op_lvalue</dt>
-<dd><a name="perlexperiment-op_005flvalue"></a>
-</dd>
-<dt>parse_fullstmt</dt>
-<dd><a name="perlexperiment-parse_005ffullstmt"></a>
-</dd>
-<dt>parse_stmtseq</dt>
-<dd><a name="perlexperiment-parse_005fstmtseq"></a>
-</dd>
-<dt>PL_parser-&gt;bufend</dt>
-<dd><a name="perlexperiment-PL_005fparser_002d_003ebufend"></a>
-</dd>
-<dt>PL_parser-&gt;bufptr</dt>
-<dd><a name="perlexperiment-PL_005fparser_002d_003ebufptr"></a>
-</dd>
-<dt>PL_parser-&gt;linestart</dt>
-<dd><a name="perlexperiment-PL_005fparser_002d_003elinestart"></a>
-</dd>
-<dt>PL_parser-&gt;linestr</dt>
-<dd><a name="perlexperiment-PL_005fparser_002d_003elinestr"></a>
-</dd>
-<dt>Perl_signbit</dt>
-<dd><a name="perlexperiment-Perl_005fsignbit"></a>
-</dd>
-<dt>pad_findmy</dt>
-<dd><a name="perlexperiment-pad_005ffindmy"></a>
-</dd>
-<dt>sv_utf8_decode</dt>
-<dd><a name="perlexperiment-sv_005futf8_005fdecode"></a>
-</dd>
-<dt>sv_utf8_downgrade</dt>
-<dd><a name="perlexperiment-sv_005futf8_005fdowngrade"></a>
-</dd>
-<dt>bytes_from_utf8</dt>
-<dd><a name="perlexperiment-bytes_005ffrom_005futf8"></a>
-</dd>
-<dt>bytes_to_utf8</dt>
-<dd><a name="perlexperiment-bytes_005fto_005futf8"></a>
-</dd>
-<dt>utf8_to_bytes</dt>
-<dd><a name="perlexperiment-utf8_005fto_005fbytes"></a>
-</dd>
-<dt>Lvalue subroutines</dt>
-<dd><a name="perlexperiment-Lvalue-subroutines"></a>
-<p>Introduced in Perl 5.6.0
-</p>
-<p>See also <a href="#perlsub-NAME">perlsub NAME</a>
-</p>
-</dd>
-<dt>There is an <code>installhtml</code> target in the Makefile.</dt>
-<dd><a 
name="perlexperiment-There-is-an-installhtml-target-in-the-Makefile_002e"></a>
-</dd>
-<dt>Unicode in Perl on EBCDIC</dt>
-<dd><a name="perlexperiment-Unicode-in-Perl-on-EBCDIC"></a>
-</dd>
-<dt><code>(?{code})</code></dt>
-<dd><a name="perlexperiment-_0028_003f_007bcode_007d_0029"></a>
-<p>See also <a href="#perlre-NAME">perlre NAME</a>
-</p>
-</dd>
-<dt><code>(??{ code })</code></dt>
-<dd><a name="perlexperiment-_0028_003f_003f_007b-code-_007d_0029"></a>
-<p>See also <a href="#perlre-NAME">perlre NAME</a>
+<p>The ticket for this feature is
+<a href="https://rt.perl.org/rt3/Ticket/Display.html?id=119313";>[perl 
#119313]</a>.
 </p>
 </dd>
 <dt>Smart match (<code>~~</code>)</dt>
@@ -28474,36 +28731,29 @@
 </p>
 <p>Modified in Perl 5.10.1, 5.12.0
 </p>
+<p>Using this feature triggers warnings in the category
+<code>experimental::smartmatch</code>.
+</p>
+<p>The ticket for this feature is
+<a href="https://rt.perl.org/rt3/Ticket/Display.html?id=119317";>[perl 
#119317]</a>.
+</p>
 </dd>
 <dt>Lexical <code>$_</code></dt>
 <dd><a name="perlexperiment-Lexical-_0024_005f"></a>
 <p>Introduced in Perl 5.10.0
 </p>
-</dd>
-<dt>Backtracking control verbs</dt>
-<dd><a name="perlexperiment-Backtracking-control-verbs"></a>
-<p><code>(*ACCEPT)</code>
-</p>
-<p>Introduced in: Perl 5.10
-</p>
-<p>See also: <a href="#perlre-Special-Backtracking-Control-Verbs">perlre 
Special Backtracking Control Verbs</a>
+<p>Using this feature triggers warnings in the category
+<code>experimental::lexical_topic</code>.
 </p>
-</dd>
-<dt>Code expressions, conditional expressions, and independent expressions in 
regexes</dt>
-<dd><a 
name="perlexperiment-Code-expressions_002c-conditional-expressions_002c-and-independent-expressions-in-regexes"></a>
-</dd>
-<dt>gv_try_downgrade</dt>
-<dd><a name="perlexperiment-gv_005ftry_005fdowngrade"></a>
-<p>See also <a href="perlintern.html#Top">(perlintern)</a>
-</p>
-</dd>
-<dt>Experimental Support for Sun Studio Compilers for Linux OS</dt>
-<dd><a 
name="perlexperiment-Experimental-Support-for-Sun-Studio-Compilers-for-Linux-OS"></a>
-<p>See also <a href="perllinux.html#Top">(perllinux)</a>
+<p>The ticket for this feature is
+<a href="https://rt.perl.org/rt3/Ticket/Display.html?id=119315";>[perl 
#119315]</a>.
 </p>
 </dd>
 <dt>Pluggable keywords</dt>
 <dd><a name="perlexperiment-Pluggable-keywords"></a>
+<p>The ticket for this feature is
+<a href="https://rt.perl.org/rt3/Ticket/Display.html?id=119455";>[perl 
#119455]</a>.
+</p>
 <p>See <a 
href="perlapi.html#PL_005fkeyword_005fplugin">(perlapi)PL_keyword_plugin</a> 
for the mechanism.
 </p>
 <p>Introduced in: Perl 5.11.2
@@ -28513,6 +28763,9 @@
 <dd><a 
name="perlexperiment-Array-and-hash-container-functions-accept-references"></a>
 <p>Introduced in Perl 5.14.0
 </p>
+<p>The ticket for this feature is
+<a href="https://rt.perl.org/rt3/Ticket/Display.html?id=119437";>[perl 
#119437]</a>.
+</p>
 </dd>
 <dt>Lexical subroutines</dt>
 <dd><a name="perlexperiment-Lexical-subroutines"></a>
@@ -28520,13 +28773,58 @@
 </p>
 <p>See also: <a href="#perlsub-Lexical-Subroutines">perlsub Lexical 
Subroutines</a>
 </p>
+<p>Using this feature triggers warnings in the category
+<code>experimental::lexical_subs</code>.
+</p>
+<p>The ticket for this feature is
+<a href="https://rt.perl.org/rt3/Ticket/Display.html?id=120085";>[perl 
#120085]</a>.
+</p>
 </dd>
 <dt>Regular Expression Set Operations</dt>
 <dd><a name="perlexperiment-Regular-Expression-Set-Operations"></a>
 <p>Introduced in: Perl 5.18
 </p>
+<p>The ticket for this feature is
+<a href="https://rt.perl.org/rt3/Ticket/Display.html?id=119451";>[perl 
#119451]</a>.
+</p>
 <p>See also: <a 
href="#perlrecharclass-Extended-Bracketed-Character-Classes">perlrecharclass 
Extended Bracketed Character Classes</a>
 </p>
+<p>Using this feature triggers warnings in the category
+<code>experimental::regex_sets</code>.
+</p>
+</dd>
+<dt><code>\s</code> in regexp matches vertical tab</dt>
+<dd><a name="perlexperiment-_005cs-in-regexp-matches-vertical-tab"></a>
+<p>Introduced in Perl 5.18
+</p>
+</dd>
+<dt>Postfix dereference syntax</dt>
+<dd><a name="perlexperiment-Postfix-dereference-syntax"></a>
+<p>Introduced in Perl 5.20.0
+</p>
+<p>Using this feature triggers warnings in the category
+<code>experimental::postderef</code>.
+</p>
+<p>The ticket for this feature is
+<a href="https://rt.perl.org:443/rt3/Ticket/Display.html?id=120162";>[perl 
#120162]</a>.
+</p>
+</dd>
+<dt>The &lt;:win32&gt; IO pseudolayer</dt>
+<dd><a name="perlexperiment-The-_003c_003awin32_003e-IO-pseudolayer"></a>
+<p>The ticket for this feature is
+<a href="https://rt.perl.org/rt3/Ticket/Display.html?id=119453";>[perl 
#119453]</a>.
+</p>
+<p>See also <a href="#perlrun-NAME">perlrun NAME</a>
+</p>
+</dd>
+<dt>There is an <code>installhtml</code> target in the Makefile.</dt>
+<dd><a 
name="perlexperiment-There-is-an-installhtml-target-in-the-Makefile_002e"></a>
+<p>The ticket for this feature is
+<a href="https://rt.perl.org/rt3/Ticket/Display.html?id=116487";>[perl 
#116487]</a>.
+</p>
+</dd>
+<dt>Unicode in Perl on EBCDIC</dt>
+<dd><a name="perlexperiment-Unicode-in-Perl-on-EBCDIC"></a>
 </dd>
 </dl>
 
@@ -28545,20 +28843,14 @@
 They are also awarded +5 Stability and +3 Charisma.
 </p>
 <dl compact="compact">
-<dt>The <code>\N</code> regex character class</dt>
-<dd><a name="perlexperiment-The-_005cN-regex-character-class"></a>
-<p>The <code>\N</code> character class, not to be confused with the named 
character
-sequence <code>\N{NAME}</code>, denotes any non-newline character in a regular
-expression.
-</p>
-<p>Introduced in: Perl 5.12
+<dt>64-bit support</dt>
+<dd><a name="perlexperiment-64_002dbit-support"></a>
+<p>Introduced in Perl 5.005
 </p>
 </dd>
-<dt>fork() emulation</dt>
-<dd><a name="perlexperiment-fork_0028_0029-emulation"></a>
-<p>Introduced in Perl 5.6.1
-</p>
-<p>See also <a href="#perlfork-NAME">perlfork NAME</a>
+<dt>die accepts a reference</dt>
+<dd><a name="perlexperiment-die-accepts-a-reference"></a>
+<p>Introduced in Perl 5.005
 </p>
 </dd>
 <dt>DB module</dt>
@@ -28578,14 +28870,80 @@
 <p>Introduced in Perl 5.6.0
 </p>
 </dd>
-<dt>die accepts a reference</dt>
-<dd><a name="perlexperiment-die-accepts-a-reference"></a>
-<p>Introduced in Perl 5.005
+<dt>fork() emulation</dt>
+<dd><a name="perlexperiment-fork_0028_0029-emulation"></a>
+<p>Introduced in Perl 5.6.1
+</p>
+<p>See also <a href="#perlfork-NAME">perlfork NAME</a>
 </p>
 </dd>
-<dt>64-bit support</dt>
-<dd><a name="perlexperiment-64_002dbit-support"></a>
-<p>Introduced in Perl 5.005
+<dt>-Dusemultiplicity -Duseithreads</dt>
+<dd><a name="perlexperiment-_002dDusemultiplicity-_002dDuseithreads"></a>
+<p>Introduced in Perl 5.6.0
+</p>
+<p>Accepted in Perl 5.8.0
+</p>
+</dd>
+<dt>Support for long doubles</dt>
+<dd><a name="perlexperiment-Support-for-long-doubles"></a>
+<p>Introduced in Perl 5.6.0
+</p>
+<p>Accepted in Perl 5.8.1
+</p>
+</dd>
+<dt>The <code>\N</code> regex character class</dt>
+<dd><a name="perlexperiment-The-_005cN-regex-character-class"></a>
+<p>The <code>\N</code> character class, not to be confused with the named 
character
+sequence <code>\N{NAME}</code>, denotes any non-newline character in a regular
+expression.
+</p>
+<p>Introduced in Perl 5.12
+</p>
+<p>Exact version of acceptance unclear, but no later than Perl 5.18.
+</p>
+</dd>
+<dt><code>(?{code})</code> and <code>(??{ code })</code></dt>
+<dd><a 
name="perlexperiment-_0028_003f_007bcode_007d_0029-and-_0028_003f_003f_007b-code-_007d_0029"></a>
+<p>Introduced in Perl 5.6.0
+</p>
+<p>Accepted in Perl 5.20.0
+</p>
+<p>See also <a href="#perlre-NAME">perlre NAME</a>
+</p>
+</dd>
+<dt>Linux abstract Unix domain sockets</dt>
+<dd><a name="perlexperiment-Linux-abstract-Unix-domain-sockets"></a>
+<p>Introduced in Perl 5.9.2
+</p>
+<p>Accepted before Perl 5.20.0.  The Socket library is now primarily maintained
+on CPAN, rather than in the perl core.
+</p>
+<p>See also <a href="Socket.html#Top">(Socket)</a>
+</p>
+</dd>
+<dt>Lvalue subroutines</dt>
+<dd><a name="perlexperiment-Lvalue-subroutines"></a>
+<p>Introduced in Perl 5.6.0
+</p>
+<p>Accepted in Perl 5.20.0
+</p>
+<p>See also <a href="#perlsub-NAME">perlsub NAME</a>
+</p>
+</dd>
+<dt>Backtracking control verbs</dt>
+<dd><a name="perlexperiment-Backtracking-control-verbs"></a>
+<p><code>(*ACCEPT)</code>
+</p>
+<p>Introduced in: Perl 5.10
+</p>
+<p>Accepted in Perl 5.20.0
+</p>
+</dd>
+<dt>The &lt;:pop&gt; IO pseudolayer</dt>
+<dd><a name="perlexperiment-The-_003c_003apop_003e-IO-pseudolayer"></a>
+<p>See also <a href="#perlrun-NAME">perlrun NAME</a>
+</p>
+<p>Accepted in Perl 5.20.0
 </p>
 </dd>
 </dl>
@@ -28604,27 +28962,25 @@
 these features after we explicitly told you not to (see <a 
href="#perlpolicy-NAME">perlpolicy NAME</a>).
 </p>
 <dl compact="compact">
-<dt><code>legacy</code></dt>
-<dd><a name="perlexperiment-legacy"></a>
-<p>The experimental <code>legacy</code> pragma was swallowed by the 
<code>feature</code> pragma.
-</p>
-<p>Introduced in: 5.11.2
+<dt>5.005-style threading</dt>
+<dd><a name="perlexperiment-5_002e005_002dstyle-threading"></a>
+<p>Introduced in Perl 5.005
 </p>
-<p>Removed in: 5.11.3
+<p>Removed in Perl 5.10
 </p>
 </dd>
-<dt>Assertions</dt>
-<dd><a name="perlexperiment-Assertions"></a>
-<p>The <code>-A</code> command line switch
-</p>
-<p>Introduced in Perl 5.9.0
+<dt>perlcc</dt>
+<dd><a name="perlexperiment-perlcc"></a>
+<p>Introduced in Perl 5.005
 </p>
-<p>Removed in Perl 5.9.5
+<p>Moved from Perl 5.9.0 to CPAN
 </p>
 </dd>
-<dt>Test::Harness::Straps</dt>
-<dd><a name="perlexperiment-Test_003a_003aHarness_003a_003aStraps"></a>
-<p>Moved from Perl 5.10.1 to CPAN
+<dt>The pseudo-hash data type</dt>
+<dd><a name="perlexperiment-The-pseudo_002dhash-data-type"></a>
+<p>Introduced in Perl 5.6.0
+</p>
+<p>Removed in Perl 5.9.0
 </p>
 </dd>
 <dt>GetOpt::Long Options can now take multiple values at once 
(experimental)</dt>
@@ -28634,25 +28990,27 @@
 <p>Removed in Perl 5.8.8
 </p>
 </dd>
-<dt>The pseudo-hash data type</dt>
-<dd><a name="perlexperiment-The-pseudo_002dhash-data-type"></a>
-<p>Introduced in Perl 5.6.0
+<dt>Assertions</dt>
+<dd><a name="perlexperiment-Assertions"></a>
+<p>The <code>-A</code> command line switch
 </p>
-<p>Removed in Perl 5.9.0
+<p>Introduced in Perl 5.9.0
 </p>
-</dd>
-<dt>5.005-style threading</dt>
-<dd><a name="perlexperiment-5_002e005_002dstyle-threading"></a>
-<p>Introduced in Perl 5.005
+<p>Removed in Perl 5.9.5
 </p>
-<p>Removed in Perl 5.10
+</dd>
+<dt>Test::Harness::Straps</dt>
+<dd><a name="perlexperiment-Test_003a_003aHarness_003a_003aStraps"></a>
+<p>Moved from Perl 5.10.1 to CPAN
 </p>
 </dd>
-<dt>perlcc</dt>
-<dd><a name="perlexperiment-perlcc"></a>
-<p>Introduced in Perl 5.005
+<dt><code>legacy</code></dt>
+<dd><a name="perlexperiment-legacy"></a>
+<p>The experimental <code>legacy</code> pragma was swallowed by the 
<code>feature</code> pragma.
 </p>
-<p>Moved from Perl 5.9.0 to CPAN
+<p>Introduced in: 5.11.2
+</p>
+<p>Removed in: 5.11.3
 </p>
 </dd>
 </dl>
@@ -29981,7 +30339,7 @@
 extending a field to its desired width. This is the complete set of
 characters for field definitions:
 </p>
-<pre class="verbatim">  &gt; &gt;  &gt;&gt;    
+<pre class="verbatim">     &gt;&gt;    
    
 
    @    start of regular field
@@ -30298,7 +30656,7 @@
 </pre>
 <p>If you use the English module, you can even read the variable names:
 </p>
-<pre class="verbatim">    use English '-no_match_vars';
+<pre class="verbatim">    use English;
     $ofh = select(OUTF);
     $FORMAT_NAME     = &quot;My_Other_Format&quot;;
     $FORMAT_TOP_NAME = &quot;My_Top_Format&quot;;
@@ -30858,10 +31216,10 @@
 operator takes one argument, either a filename, a filehandle, or a dirhandle, 
 and tests the associated file to see if something is true about it.  If the
 argument is omitted, tests <code>$_</code>, except for <code>-t</code>, which 
tests STDIN.
-Unless otherwise documented, it returns <code>1</code> for true and 
<code>''</code> for false, or
-the undefined value if the file doesn&rsquo;t exist.  Despite the funny
-names, precedence is the same as any other named unary operator.  The
-operator may be any of:
+Unless otherwise documented, it returns <code>1</code> for true and 
<code>''</code> for false.
+If the file doesn&rsquo;t exist or can&rsquo;t be examined, it returns 
<code>undef</code> and
+sets <code>$!</code> (errno).  Despite the funny names, precedence is the same 
as any
+other named unary operator.  The operator may be any of:
 </p>
 <pre class="verbatim">    -r  File is readable by effective uid/gid.
     -w  File is writable by effective uid/gid.
@@ -30983,7 +31341,7 @@
 </pre>
 <p>As of Perl 5.10.0, as a form of purely syntactic sugar, you can stack file
 test operators, in a way that <code>-f -w -x $file</code> is equivalent to
-<code>-x $file &amp;&amp; -w _ &amp;&amp; -f _</code>.  (This is only fancy 
fancy: if you use
+<code>-x $file &amp;&amp; -w _ &amp;&amp; -f _</code>.  (This is only fancy 
syntax: if you use
 the return value of <code>-f $file</code> as an argument to another filetest
 operator, no special magic will happen.)
 </p>
@@ -31220,10 +31578,12 @@
 </dd>
 <dt>caller</dt>
 <dd><a name="perlfunc-caller"></a>
-<p>Returns the context of the current subroutine call.  In scalar context,
-returns the caller&rsquo;s package name if there <em>is</em> a caller (that 
is, if
+<p>Returns the context of the current pure perl subroutine call.  In scalar
+context, returns the caller&rsquo;s package name if there <em>is</em> a caller 
(that is, if
 we&rsquo;re in a subroutine or <code>eval</code> or <code>require</code>) and 
the undefined value
-otherwise.  In list context, returns
+otherwise.  caller never returns XS subs and they are skipped.  The next pure
+perl sub will appear instead of the XS sub in caller&rsquo;s return values. In 
list
+context, caller returns
 </p>
 <pre class="verbatim">    # 0         1          2
     ($package, $filename, $line) = caller;
@@ -31239,8 +31599,10 @@
     $wantarray, $evaltext, $is_require, $hints, $bitmask, $hinthash)
      = caller($i);
 </pre>
-<p>Here $subroutine may be <code>(eval)</code> if the frame is not a subroutine
-call, but an <code>eval</code>.  In such a case additional elements $evaltext 
and
+<p>Here, $subroutine is the function that the caller called (rather than the
+function containing the caller). Note that $subroutine may be 
<code>(eval)</code> if
+the frame is not a subroutine call, but an <code>eval</code>.  In such a case
+additional elements $evaltext and
 <code>$is_require</code> are set: <code>$is_require</code> is true if the 
frame is created by a
 <code>require</code> or <code>use</code> statement, $evaltext contains the 
text of the
 <code>eval EXPR</code> statement.  In particular, for an <code>eval 
BLOCK</code> statement,
@@ -31368,7 +31730,8 @@
         # ...
     }
 </pre>
-<p>If VARIABLE is a hash, it chomps the hash&rsquo;s values, but not its keys.
+<p>If VARIABLE is a hash, it chomps the hash&rsquo;s values, but not its keys,
+resetting the <code>each</code> iterator in the process.
 </p>
 <p>You can actually chomp anything that&rsquo;s an lvalue, including an 
assignment:
 </p>
@@ -31397,7 +31760,8 @@
 <p>Chops off the last character of a string and returns the character
 chopped.  It is much more efficient than <code>s/.$//s</code> because it 
neither
 scans nor copies the string.  If VARIABLE is omitted, chops <code>$_</code>.
-If VARIABLE is a hash, it chops the hash&rsquo;s values, but not its keys.
+If VARIABLE is a hash, it chops the hash&rsquo;s values, but not its keys,
+resetting the <code>each</code> iterator in the process.
 </p>
 <p>You can actually chop anything that&rsquo;s an lvalue, including an 
assignment.
 </p>
@@ -31448,7 +31812,7 @@
 <pre class="verbatim">    use POSIX qw(sysconf _PC_CHOWN_RESTRICTED);
     $can_chown_giveaway = not sysconf(_PC_CHOWN_RESTRICTED);
 </pre>
-<p>Portability issues: <a href="#perlport-chmod">perlport chmod</a>.
+<p>Portability issues: <a href="#perlport-chown">perlport chown</a>.
 </p>
 </dd>
 <dt>chr NUMBER</dt>
@@ -31486,6 +31850,9 @@
 reasons, this call is restricted to the superuser.  If FILENAME is
 omitted, does a <code>chroot</code> to <code>$_</code>.
 </p>
+<p><strong>NOTE:</strong>  It is good security practice to do 
<code>chdir(&quot;/&quot;)</code> (to the root
+directory) immediately after a <code>chroot()</code>.
+</p>
 <p>Portability issues: <a href="#perlport-chroot">perlport chroot</a>.
 </p>
 </dd>
@@ -31825,9 +32192,10 @@
 <p>delete() may also be used on arrays and array slices, but its behavior is 
less
 straightforward.  Although exists() will return false for deleted entries,
 deleting array elements never changes indices of existing values; use shift()
-or splice() for that.  However, if all deleted elements fall at the end of an
+or splice() for that.  However, if any deleted elements fall at the end of an
 array, the array&rsquo;s size shrinks to the position of the highest element 
that
-still tests true for exists(), or to 0 if none do.
+still tests true for exists(), or to 0 if none do. In other words, an
+array won&rsquo;t have trailing nonexistent elements after a delete.
 </p>
 <p><strong>WARNING:</strong> Calling delete on array values is deprecated and 
likely to
 be removed in a future version of Perl.
@@ -32003,12 +32371,6 @@
 See <a href="#perlsyn-NAME">perlsyn NAME</a> for alternative strategies.
 </p>
 </dd>
-<dt>do SUBROUTINE(LIST)</dt>
-<dd><a name="perlfunc-do-SUBROUTINE_0028LIST_0029"></a>
-<p>This form of subroutine call is deprecated.  SUBROUTINE can be a bareword
-or scalar variable.
-</p>
-</dd>
 <dt>do EXPR</dt>
 <dd><a name="perlfunc-do-EXPR"></a>
 <p>Uses the value of EXPR as a filename and executes the contents of the
@@ -32125,10 +32487,10 @@
 <code>keys</code>, and <code>values</code>.  The iterator is implicitly reset 
when <code>each</code> has
 reached the end as just described; it can be explicitly reset by calling
 <code>keys</code> or <code>values</code> on the hash or array.  If you add or 
delete a hash&rsquo;s
-elements while iterating over it, entries may be skipped or duplicated&ndash;so
-don&rsquo;t do that.  Exception: In the current implementation, it is always 
safe
-to delete the item most recently returned by <code>each()</code>, so the 
following
-code works properly:
+elements while iterating over it, the effect on the iterator is
+unspecified; for example, entries may be skipped or duplicated&ndash;so 
don&rsquo;t
+do that.  Exception: It is always safe to delete the item most recently
+returned by <code>each()</code>, so the following code works properly:
 </p>
 <pre class="verbatim">        while (($key, $value) = each %hash) {
           print $key, &quot;\n&quot;;
@@ -32229,7 +32591,8 @@
 </dd>
 <dt>eval</dt>
 <dd><a name="perlfunc-eval"></a>
-<p>In the first form, the return value of EXPR is parsed and executed as if it
+<p>In the first form, often referred to as a &quot;string eval&quot;, the 
return
+value of EXPR is parsed and executed as if it
 were a little Perl program.  The value of the expression (which is itself
 determined within scalar context) is first parsed, and if there were no
 errors, executed as a block within the lexical context of the current Perl
@@ -32252,6 +32615,12 @@
 always treats its input as a byte stream and works properly with source
 filters, and the <a href="feature.html#Top">(feature)</a> pragma.
 </p>
+<p>Problems can arise if the string expands a scalar containing a floating
+point number.  That scalar can expand to letters, such as 
<code>&quot;NaN&quot;</code> or
+<code>&quot;Infinity&quot;</code>; or, within the scope of a <code>use 
locale</code>, the decimal
+point character may be something other than a dot (such as a comma).
+None of these are likely to parse as you are likely expecting.
+</p>
 <p>In the second form, the code within the BLOCK is parsed only once&ndash;at 
the
 same time the code surrounding the <code>eval</code> itself was 
parsed&ndash;and executed
 within the context of the current Perl program.  This form is typically
@@ -32280,7 +32649,7 @@
 warnings to STDERR, nor does it stuff the text of warning messages into 
<code>$@</code>.
 To do either of those, you have to use the <code>$SIG{__WARN__}</code> 
facility, or
 turn off warnings inside the BLOCK or EXPR using 
<code>no&nbsp;warnings&nbsp;'all'</code><!-- /@w -->.
-See &lsquo;warn&rsquo;, <a href="#perlvar-NAME">perlvar NAME</a>, <a 
href="warnings.html#Top">(warnings)</a> and <a 
href="#perllexwarn-NAME">perllexwarn NAME</a>.
+See &lsquo;warn&rsquo;, <a href="#perlvar-NAME">perlvar NAME</a>, and <a 
href="warnings.html#Top">(warnings)</a>.
 </p>
 <p>Note that, because <code>eval</code> traps otherwise-fatal errors, it is 
useful for
 determining whether a particular feature (such as <code>socket</code> or 
<code>symlink</code>)
@@ -32417,15 +32786,13 @@
 <pre class="verbatim">    exec ('foo')   or print STDERR &quot;couldn't exec 
foo: $!&quot;;
     { exec ('foo') }; print STDERR &quot;couldn't exec foo: $!&quot;;
 </pre>
-<p>If there is more than one argument in LIST, or if LIST is an array
-with more than one value, calls execvp(3) with the arguments in LIST.
-If there is only one scalar argument or an array with one element in it,
-the argument is checked for shell metacharacters, and if there are any,
-the entire argument is passed to the system&rsquo;s command shell for parsing
-(this is <code>/bin/sh -c</code> on Unix platforms, but varies on other 
platforms).
-If there are no shell metacharacters in the argument, it is split into
-words and passed directly to <code>execvp</code>, which is more efficient.
-Examples:
+<p>If there is more than one argument in LIST, this calls execvp(3) with the
+arguments in LIST.  If there is only one element in LIST, the argument is
+checked for shell metacharacters, and if there are any, the entire
+argument is passed to the system&rsquo;s command shell for parsing (this is
+<code>/bin/sh -c</code> on Unix platforms, but varies on other platforms).  If
+there are no shell metacharacters in the argument, it is split into words
+and passed directly to <code>execvp</code>, which is more efficient.  Examples:
 </p>
 <pre class="verbatim">    exec '/bin/echo', 'Your arguments are: ', @ARGV;
     exec &quot;sort $outfile | uniq&quot;;
@@ -32621,8 +32988,16 @@
 </p>
 <p>If EXPR is omitted, uses <code>$_</code>.
 </p>
-<p>This function behaves the same way under various pragma, such as in a 
locale,
-as <a href="#perlfunc-lc">lc</a> does.
+<p>This function behaves the same way under various pragma, such as within
+<code>&quot;use&nbsp;feature&nbsp;<span 
class="nolinebreak">'unicode_strings&quot;</span></code><!-- /@w -->, as <a 
href="#perlfunc-lc">lc</a> does, with the single
+exception of <code>fc</code> of LATIN CAPITAL LETTER SHARP S (U+1E9E) within 
the
+scope of <code>use&nbsp;locale</code><!-- /@w -->.  The foldcase of this 
character would
+normally be <code>&quot;ss&quot;</code>, but as explained in the <a 
href="#perlfunc-lc">lc</a> section, case
+changes that cross the 255/256 boundary are problematic under locales,
+and are hence prohibited.  Therefore, this function under locale returns
+instead the string <code>&quot;\x{17F}\x{17F}&quot;</code>, which is the LATIN 
SMALL LETTER
+LONG S.  Since that character itself folds to <code>&quot;s&quot;</code>, the 
string of two
+of them together should be equivalent to a single U+1E9E when foldcased.
 </p>
 <p>While the Unicode Standard defines two additional forms of casefolding,
 one for Turkic languages and one that never maps one character into multiple
@@ -32693,8 +33068,14 @@
 <p>You can use this to find out whether two handles refer to the
 same underlying descriptor:
 </p>
-<pre class="verbatim">    if (fileno(THIS) == fileno(THAT)) {
+<pre class="verbatim">    if (fileno(THIS) != -1 &amp;&amp; fileno(THIS) == 
fileno(THAT)) {
         print &quot;THIS and THAT are dups\n&quot;;
+    } elsif (fileno(THIS) != -1 &amp;&amp; fileno(THAT) != -1) {
+        print &quot;THIS and THAT have different &quot; .
+            &quot;underlying file descriptors\n&quot;;
+    } else {
+        print &quot;At least one of THIS and THAT does &quot; .
+            &quot;not have a real file descriptor\n&quot;;
     }
 </pre>
 </dd>
@@ -32895,8 +33276,7 @@
 </p>
 <p>The <code>POSIX::getattr</code> function can do this more portably on
 systems purporting POSIX compliance.  See also the <code>Term::ReadKey</code>
-module from your nearest CPAN site; details on CPAN can be found under
-<a href="perlmodlib.html#CPAN">(perlmodlib)CPAN</a>.
+module from your nearest <a href="http://www.cpan.org";>CPAN</a> site.
 </p>
 </dd>
 <dt>getlogin</dt>
@@ -33052,13 +33432,15 @@
 system C library.  In list context, the return values from the
 various get routines are as follows:
 </p>
-<pre class="verbatim">    ($name,$passwd,$uid,$gid,
-       $quota,$comment,$gcos,$dir,$shell,$expire) = getpw*
-    ($name,$passwd,$gid,$members) = getgr*
-    ($name,$aliases,$addrtype,$length,@addrs) = gethost*
-    ($name,$aliases,$addrtype,$net) = getnet*
-    ($name,$aliases,$proto) = getproto*
-    ($name,$aliases,$port,$proto) = getserv*
+<pre class="verbatim"> # 0        1          2           3         4
+ ( $name,   $passwd,   $gid,       $members  ) = getgr*
+ ( $name,   $aliases,  $addrtype,  $net      ) = getnet*
+ ( $name,   $aliases,  $port,      $proto    ) = getserv*
+ ( $name,   $aliases,  $proto                ) = getproto*
+ ( $name,   $aliases,  $addrtype,  $length,  @addrs ) = gethost*
+ ( $name,   $passwd,   $uid,       $gid,     $quota,
+ $comment,  $gcos,     $dir,       $shell,   $expire ) = getpw*
+ # 5        6          7           8         9
 </pre>
 <p>(If the entry doesn&rsquo;t exist you get an empty list.)
 </p>
@@ -33279,7 +33661,7 @@
 </dd>
 <dt>goto &amp;NAME</dt>
 <dd><a name="perlfunc-goto-_0026NAME"></a>
-<p>The <code>goto-LABEL</code> form finds the statement labeled with LABEL and
+<p>The <code>goto LABEL</code> form finds the statement labeled with LABEL and
 resumes execution there.  It can&rsquo;t be used to get out of a block or
 subroutine given to <code>sort</code>.  It can be used to go almost anywhere
 else within the dynamic scope, including out of subroutines, but it&rsquo;s
@@ -33289,25 +33671,30 @@
 does not offer named loops combined with loop control.  Perl does, and
 this replaces most structured uses of <code>goto</code> in other languages.)
 </p>
-<p>The <code>goto-EXPR</code> form expects a label name, whose scope will be 
resolved
+<p>The <code>goto EXPR</code> form expects to evaluate <code>EXPR</code> to a 
code reference or
+a label name.  If it evaluates to a code reference, it will be handled
+like <code>goto &amp;NAME</code>, below.  This is especially useful for 
implementing
+tail recursion via <code>goto __SUB__</code>.
+</p>
+<p>If the expression evaluates to a label name, its scope will be resolved
 dynamically.  This allows for computed <code>goto</code>s per FORTRAN, but 
isn&rsquo;t
 necessarily recommended if you&rsquo;re optimizing for maintainability:
 </p>
 <pre class="verbatim">    goto (&quot;FOO&quot;, &quot;BAR&quot;, 
&quot;GLARCH&quot;)[$i];
 </pre>
-<p>As shown in this example, <code>goto-EXPR</code> is exempt from the 
&quot;looks like a
+<p>As shown in this example, <code>goto EXPR</code> is exempt from the 
&quot;looks like a
 function&quot; rule.  A pair of parentheses following it does not (necessarily)
 delimit its argument.  <code>goto(&quot;NE&quot;).&quot;XT&quot;</code> is 
equivalent to <code>goto NEXT</code>.
 Also, unlike most named operators, this has the same precedence as
 assignment.
 </p>
-<p>Use of <code>goto-LABEL</code> or <code>goto-EXPR</code> to jump into a 
construct is
+<p>Use of <code>goto LABEL</code> or <code>goto EXPR</code> to jump into a 
construct is
 deprecated and will issue a warning.  Even then, it may not be used to
 go into any construct that requires initialization, such as a
 subroutine or a <code>foreach</code> loop.  It also can&rsquo;t be used to go 
into a
 construct that is optimized away.
 </p>
-<p>The <code>goto-&amp;NAME</code> form is quite different from the other 
forms of
+<p>The <code>goto &amp;NAME</code> form is quite different from the other 
forms of
 <code>goto</code>.  In fact, it isn&rsquo;t a goto in the normal sense at all, 
and
 doesn&rsquo;t have the stigma associated with other gotos.  Instead, it
 exits the current subroutine (losing any changes set by local()) and
@@ -33561,9 +33948,10 @@
 </dd>
 <dt>kill SIGNAL</dt>
 <dd><a name="perlfunc-kill-SIGNAL"></a>
-<p>Sends a signal to a list of processes.  Returns the number of
-processes successfully signaled (which is not necessarily the
-same as the number actually killed).
+<p>Sends a signal to a list of processes.  Returns the number of arguments
+that were successfully used to signal (which is not necessarily the same
+as the number of processes actually killed, e.g. where a process group is
+killed).
 </p>
 <pre class="verbatim">    $cnt = kill 'HUP', $child1, $child2;
     kill 'KILL', @goners;
@@ -33579,10 +33967,11 @@
 </p>
 <p>A negative signal name is the same as a negative signal number, killing 
process
 groups instead of processes.  For example, <code>kill '-KILL', $pgrp</code> and
-<code>kill -9, $pgrp</code> will send <code>SIGKILL</code> to the entire 
process group specified. That
+<code>kill -9, $pgrp</code> will send <code>SIGKILL</code> to
+the entire process group specified.  That
 means you usually want to use positive not negative signals.
 </p>
-<p>If SIGNAL is either the number 0 or the string <code>ZERO</code> (or 
<code>SIGZZERO</code>),
+<p>If SIGNAL is either the number 0 or the string <code>ZERO</code> (or 
<code>SIGZERO</code>),
 no signal is sent to
 the process, but <code>kill</code> checks whether it&rsquo;s <em>possible</em> 
to send a signal to it
 (that means, to be brief, that the process is owned by the same user, or we are
@@ -33601,8 +33990,8 @@
 </p>
 <p>See <a href="#perlipc-Signals">perlipc Signals</a> for more details.
 </p>
-<p>On some platforms such as Windows where the fork() system call is not 
available.
-Perl can be built to emulate fork() at the interpreter level.
+<p>On some platforms such as Windows where the fork() system call is not
+available, Perl can be built to emulate fork() at the interpreter level.
 This emulation has limitations related to kill that have to be considered,
 for code running on Windows and in code intended to be portable.
 </p>
@@ -33669,20 +34058,23 @@
 <dl compact="compact">
 <dt>If <code>use bytes</code> is in effect:</dt>
 <dd><a name="perlfunc-If-use-bytes-is-in-effect_003a"></a>
-<p>The results follow ASCII semantics.  Only characters <code>A-Z</code> 
change, to <code>a-z</code>
-respectively.
+<p>The results follow ASCII rules.  Only the characters <code>A-Z</code> 
change,
+to <code>a-z</code> respectively.
 </p>
 </dd>
 <dt>Otherwise, if <code>use locale</code> (but not <code>use locale 
':not_characters'</code>) is in effect:</dt>
 <dd><a 
name="perlfunc-Otherwise_002c-if-use-locale-_0028but-not-use-locale-_0027_003anot_005fcharacters_0027_0029-is-in-effect_003a"></a>
 <p>Respects current LC_CTYPE locale for code points &lt; 256; and uses Unicode
-semantics for the remaining code points (this last can only happen if
+rules for the remaining code points (this last can only happen if
 the UTF8 flag is also set).  See <a href="#perllocale-NAME">perllocale 
NAME</a>.
 </p>
-<p>A deficiency in this is that case changes that cross the 255/256
+<p>Starting in v5.20, Perl wil use full Unicode rules if the locale is
+UTF-8.  Otherwise, there is a deficiency in this scheme, which is that
+case changes that cross the 255/256
 boundary are not well-defined.  For example, the lower case of LATIN CAPITAL
-LETTER SHARP S (U+1E9E) in Unicode semantics is U+00DF (on ASCII
-platforms).   But under <code>use locale</code>, the lower case of U+1E9E is
+LETTER SHARP S (U+1E9E) in Unicode rules is U+00DF (on ASCII
+platforms).   But under <code>use locale</code> (prior to v5.20 or not a UTF-8
+locale), the lower case of U+1E9E is
 itself, because 0xDF may not be LATIN SMALL LETTER SHARP S in the
 current locale, and Perl has no way of knowing if that character even
 exists in the locale, much less what code point it is.  Perl returns
@@ -33692,17 +34084,17 @@
 </dd>
 <dt>Otherwise, If EXPR has the UTF8 flag set:</dt>
 <dd><a name="perlfunc-Otherwise_002c-If-EXPR-has-the-UTF8-flag-set_003a"></a>
-<p>Unicode semantics are used for the case change.
+<p>Unicode rules are used for the case change.
 </p>
 </dd>
 <dt>Otherwise, if <code>use feature 'unicode_strings'</code> or <code>use 
locale ':not_characters'</code> is in effect:</dt>
 <dd><a 
name="perlfunc-Otherwise_002c-if-use-feature-_0027unicode_005fstrings_0027-or-use-locale-_0027_003anot_005fcharacters_0027-is-in-effect_003a"></a>
-<p>Unicode semantics are used for the case change.
+<p>Unicode rules are used for the case change.
 </p>
 </dd>
 <dt>Otherwise:</dt>
 <dd><a name="perlfunc-Otherwise_003a"></a>
-<p>ASCII semantics are used for the case change.  The lowercase of any 
character
+<p>ASCII rules are used for the case change.  The lowercase of any character
 outside the ASCII range is the character itself.
 </p>
 </dd>
@@ -34025,7 +34417,7 @@
 everyone happy.
 </p>
 <p>To recursively create a directory structure, look at
-the <code>mkpath</code> function of the <a 
href="File-Path.html#Top">(File-Path)</a> module.
+the <code>make_path</code> function of the <a 
href="File-Path.html#Top">(File-Path)</a> module.
 </p>
 </dd>
 <dt>msgctl ID,CMD,ARG</dt>
@@ -34081,28 +34473,35 @@
 <p>Portability issues: <a href="#perlport-msgsnd">perlport msgsnd</a>.
 </p>
 </dd>
-<dt>my EXPR</dt>
-<dd><a name="perlfunc-my-EXPR"></a>
+<dt>my VARLIST</dt>
+<dd><a name="perlfunc-my-VARLIST"></a>
 </dd>
-<dt>my TYPE EXPR</dt>
-<dd><a name="perlfunc-my-TYPE-EXPR"></a>
+<dt>my TYPE VARLIST</dt>
+<dd><a name="perlfunc-my-TYPE-VARLIST"></a>
 </dd>
-<dt>my EXPR : ATTRS</dt>
-<dd><a name="perlfunc-my-EXPR-_003a-ATTRS"></a>
+<dt>my VARLIST : ATTRS</dt>
+<dd><a name="perlfunc-my-VARLIST-_003a-ATTRS"></a>
 </dd>
-<dt>my TYPE EXPR : ATTRS</dt>
-<dd><a name="perlfunc-my-TYPE-EXPR-_003a-ATTRS"></a>
+<dt>my TYPE VARLIST : ATTRS</dt>
+<dd><a name="perlfunc-my-TYPE-VARLIST-_003a-ATTRS"></a>
 <p>A <code>my</code> declares the listed variables to be local (lexically) to 
the
-enclosing block, file, or <code>eval</code>.  If more than one value is listed,
+enclosing block, file, or <code>eval</code>.  If more than one variable is 
listed,
 the list must be placed in parentheses.
 </p>
 <p>The exact semantics and interface of TYPE and ATTRS are still
-evolving.  TYPE is currently bound to the use of the <code>fields</code> 
pragma,
+evolving.  TYPE may be a bareword, a constant declared
+with <code>use constant</code>, or <code>__PACKAGE__</code>.  It is
+currently bound to the use of the <code>fields</code> pragma,
 and attributes are handled using the <code>attributes</code> pragma, or 
starting
 from Perl 5.8.0 also via the <code>Attribute::Handlers</code> module.  See
 <a href="#perlsub-Private-Variables-via-my_0028_0029">perlsub Private 
Variables via my()</a> for details, and <a href="fields.html#Top">(fields)</a>,
 <a href="attributes.html#Top">(attributes)</a>, and <a 
href="Attribute-Handlers.html#Top">(Attribute-Handlers)</a>.
 </p>
+<p>Note that with a parenthesised list, <code>undef</code> can be used as a 
dummy
+placeholder, for example to skip assignment of initial values:
+</p>
+<pre class="verbatim">    my ( undef, $min, $hour ) = localtime;
+</pre>
 </dd>
 <dt>next LABEL</dt>
 <dd><a name="perlfunc-next-LABEL"></a>
@@ -34226,12 +34625,6 @@
 considered a symbolic reference, so <code>use strict &quot;refs&quot;</code> 
should <em>not</em> be
 in effect.)
 </p>
-<p>If EXPR is omitted, the global (package) scalar variable of the same
-name as the FILEHANDLE contains the filename.  (Note that lexical 
-variables&ndash;those declared with <code>my</code> or 
<code>state</code>&ndash;will not work for this
-purpose; so if you&rsquo;re using <code>my</code> or <code>state</code>, 
specify EXPR in your
-call to open.)
-</p>
 <p>If three (or more) arguments are specified, the open mode (including
 optional encoding) in the second argument are distinct from the filename in
 the third.  If MODE is <code>&lt;</code> or nothing, the file is opened for 
input.
@@ -34314,6 +34707,32 @@
 modules that can help with that problem)) always check
 the return value from opening a file.  
 </p>
+<p>The filehandle will be closed when its reference count reaches zero.
+If it is a lexically scoped variable declared with <code>my</code>, that 
usually
+means the end of the enclosing scope.  However, this automatic close
+does not check for errors, so it is better to explicitly close
+filehandles, especially those used for writing:
+</p>
+<pre class="verbatim">    close($handle)
+       || warn &quot;close failed: $!&quot;;
+</pre>
+<p>An older style is to use a bareword as the filehandle, as
+</p>
+<pre class="verbatim">    open(FH, &quot;&lt;&quot;, &quot;input.txt&quot;)
+       or die &quot;cannot open &lt; input.txt: $!&quot;;
+</pre>
+<p>Then you can use <code>FH</code> as the filehandle, in <code>close 
FH</code> and <code>&lt;FH&gt;</code> and so on.  Note that it&rsquo;s a global 
variable, so this form is
+not recommended in new code.
+</p>
+<p>As a shortcut a one-argument call takes the filename from the global
+scalar variable of the same name as the filehandle:
+</p>
+<pre class="verbatim">    $ARTICLE = 100;
+    open(ARTICLE) or die &quot;Can't find article $ARTICLE: $!\n&quot;;
+</pre>
+<p>Here <code>$ARTICLE</code> must be a global (package) scalar variable - not 
one
+declared with <code>my</code> or <code>state</code>.
+</p>
 <p>As a special case the three-argument form with a read/write mode and the 
third
 argument being <code>undef</code>:
 </p>
@@ -34338,11 +34757,7 @@
 </pre>
 <p>General examples:
 </p>
-<pre class="verbatim">    $ARTICLE = 100;
-    open(ARTICLE) or die &quot;Can't find article $ARTICLE: $!\n&quot;;
-    while (&lt;ARTICLE&gt;) {...
-
-    open(LOG, &quot;&gt;&gt;/usr/spool/news/twitlog&quot;);  # (log is 
reserved)
+<pre class="verbatim">    open(LOG, 
&quot;&gt;&gt;/usr/spool/news/twitlog&quot;);  # (log is reserved)
     # if the open fails, output is discarded
 
     open(my $dbase, &quot;+&lt;&quot;, &quot;dbase.mine&quot;)      # open for 
update
@@ -34586,34 +35001,6 @@
     seek(HANDLE, 0, 0);
     print &quot;File contains: &quot;, &lt;HANDLE&gt;;
 </pre>
-<p>Using the constructor from the <code>IO::Handle</code> package (or one of 
its
-subclasses, such as <code>IO::File</code> or <code>IO::Socket</code>), you can 
generate anonymous
-filehandles that have the scope of the variables used to hold them, then
-automatically (but silently) close once their reference counts become
-zero, typically at scope exit:
-</p>
-<pre class="verbatim">    use IO::File;
-    #...
-    sub read_myfile_munged {
-        my $ALL = shift;
-        # or just leave it undef to autoviv
-        my $handle = IO::File-&gt;new;
-        open($handle, &quot;&lt;&quot;, &quot;myfile&quot;) or die 
&quot;myfile: $!&quot;;
-        $first = &lt;$handle&gt;
-            or return ();     # Automatically closed here.
-        mung($first) or die &quot;mung failed&quot;;  # Or here.
-        return (first, &lt;$handle&gt;) if $ALL;  # Or here.
-        return $first;                      # Or here.
-    }
-</pre>
-<p><strong>WARNING:</strong> The previous example has a bug because the 
automatic
-close that happens when the refcount on <code>handle</code> reaches zero does 
not
-properly detect and report failures.  <em>Always</em> close the handle
-yourself and inspect the return value.
-</p>
-<pre class="verbatim">    close($handle) 
-        || warn &quot;close failed: $!&quot;;
-</pre>
 <p>See &lsquo;seek&rsquo; for some details about mixing reading and writing.
 </p>
 <p>Portability issues: <a href="#perlport-open">perlport open</a>.
@@ -34645,17 +35032,17 @@
 See <a href="#perlunicode-NAME">perlunicode NAME</a> for more about Unicode.
 </p>
 </dd>
-<dt>our EXPR</dt>
-<dd><a name="perlfunc-our-EXPR"></a>
+<dt>our VARLIST</dt>
+<dd><a name="perlfunc-our-VARLIST"></a>
 </dd>
-<dt>our TYPE EXPR</dt>
-<dd><a name="perlfunc-our-TYPE-EXPR"></a>
+<dt>our TYPE VARLIST</dt>
+<dd><a name="perlfunc-our-TYPE-VARLIST"></a>
 </dd>
-<dt>our EXPR : ATTRS</dt>
-<dd><a name="perlfunc-our-EXPR-_003a-ATTRS"></a>
+<dt>our VARLIST : ATTRS</dt>
+<dd><a name="perlfunc-our-VARLIST-_003a-ATTRS"></a>
 </dd>
-<dt>our TYPE EXPR : ATTRS</dt>
-<dd><a name="perlfunc-our-TYPE-EXPR-_003a-ATTRS"></a>
+<dt>our TYPE VARLIST : ATTRS</dt>
+<dd><a name="perlfunc-our-TYPE-VARLIST-_003a-ATTRS"></a>
 <p><code>our</code> makes a lexical alias to a package variable of the same 
name in the current
 package for use within the current lexical scope.
 </p>
@@ -34669,7 +35056,7 @@
 <code>use vars</code>, which allows use of an unqualified name <em>only</em> 
within the
 affected package, but across scopes.
 </p>
-<p>If more than one value is listed, the list must be placed
+<p>If more than one variable is listed, the list must be placed
 in parentheses.
 </p>
 <pre class="verbatim">    our $foo;
@@ -34718,6 +35105,11 @@
 <a href="#perlsub-Private-Variables-via-my_0028_0029">perlsub Private 
Variables via my()</a> for details, and <a href="fields.html#Top">(fields)</a>,
 <a href="attributes.html#Top">(attributes)</a>, and <a 
href="Attribute-Handlers.html#Top">(Attribute-Handlers)</a>.
 </p>
+<p>Note that with a parenthesised list, <code>undef</code> can be used as a 
dummy
+placeholder, for example to skip assignment of initial values:
+</p>
+<pre class="verbatim">    our ( undef, $min, $hour ) = localtime;
+</pre>
 </dd>
 <dt>pack TEMPLATE,LIST</dt>
 <dd><a name="perlfunc-pack-TEMPLATE_002cLIST"></a>
@@ -34809,11 +35201,11 @@
 <pre class="verbatim">    !   sSlLiI     Forces native (short, long, int) 
sizes instead
                    of fixed (16-/32-bit) sizes.
 
-        xX         Make x and X act as alignment commands.
+    !   xX         Make x and X act as alignment commands.
 
-        nNvV       Treat integers as signed instead of unsigned.
+    !   nNvV       Treat integers as signed instead of unsigned.
 
-        @.         Specify position as byte offset in the internal
+    !   @.         Specify position as byte offset in the internal
                    representation of the packed string.  Efficient
                    but dangerous.
 
@@ -35896,10 +36288,10 @@
 <dt>ref</dt>
 <dd><a name="perlfunc-ref"></a>
 <p>Returns a non-empty string if EXPR is a reference, the empty
-string otherwise.  If EXPR
-is not specified, <code>$_</code> will be used.  The value returned depends on 
the
-type of thing the reference is a reference to.
-Builtin types include:
+string otherwise.  If EXPR is not specified, <code>$_</code> will be used.  The
+value returned depends on the type of thing the reference is a reference to.
+</p>
+<p>Builtin types include:
 </p>
 <pre class="verbatim">    SCALAR
     ARRAY
@@ -35913,8 +36305,7 @@
     VSTRING
     Regexp
 </pre>
-<p>If the referenced object has been blessed into a package, then that package
-name is returned instead.  You can think of <code>ref</code> as a 
<code>typeof</code> operator.
+<p>You can think of <code>ref</code> as a <code>typeof</code> operator.
 </p>
 <pre class="verbatim">    if (ref($r) eq &quot;HASH&quot;) {
         print &quot;r is a reference to a hash.\n&quot;;
@@ -35931,6 +36322,17 @@
 <p>The result <code>Regexp</code> indicates that the argument is a regular 
expression
 resulting from <code>qr//</code>.
 </p>
+<p>If the referenced object has been blessed into a package, then that package
+name is returned instead.  But don&rsquo;t use that, as it&rsquo;s now 
considered
+&quot;bad practice&quot;.  For one reason, an object could be using a class 
called
+<code>Regexp</code> or <code>IO</code>, or even <code>HASH</code>.  Also, 
<code>ref</code> doesn&rsquo;t take into account
+subclasses, like <code>isa</code> does.
+</p>
+<p>Instead, use <code>blessed</code> (in the <a 
href="Scalar-Util.html#Top">(Scalar-Util)</a> module) for boolean
+checks, <code>isa</code> for specific class checks and <code>reftype</code> 
(also from
+<a href="Scalar-Util.html#Top">(Scalar-Util)</a>) for type checks.  (See <a 
href="#perlobj-NAME">perlobj NAME</a> for details and a
+<code>blessed/isa</code> example.)
+</p>
 <p>See also <a href="#perlref-NAME">perlref NAME</a>.
 </p>
 </dd>
@@ -35983,35 +36385,52 @@
 hasn&rsquo;t already been included.  The file is included via the do-FILE
 mechanism, which is essentially just a variety of <code>eval</code> with the
 caveat that lexical variables in the invoking script will be invisible
-to the included code.  Has semantics similar to the following subroutine:
+to the included code.  If it were implemented in pure Perl, it
+would have semantics similar to the following:
 </p>
-<pre class="verbatim">    sub require {
+<pre class="verbatim">    use Carp 'croak';
+    use version;
+
+    sub require {
        my ($filename) = @_;
+        if ( my $version = eval { version-&gt;parse($filename) } ) {
+            if ( $version &gt; $^V ) {
+               my $vn = $version-&gt;normal;
+               croak &quot;Perl $vn required--this is only $^V, stopped&quot;;
+            }
+            return 1;
+        }
+
        if (exists $INC{$filename}) {
            return 1 if $INC{$filename};
-           die &quot;Compilation failed in require&quot;;
+            croak &quot;Compilation failed in require&quot;;
        }
-       my ($realfilename,$result);
-       ITER: {
+
            foreach $prefix (@INC) {
-               $realfilename = &quot;$prefix/$filename&quot;;
-               if (-f $realfilename) {
-                   $INC{$filename} = $realfilename;
-                   $result = do $realfilename;
-                   last ITER;
-               }
+            if (ref($prefix)) {
+                #... do other stuff - see text below ....
            }
-           die &quot;Can't find $filename in address@hidden&quot;;
-       }
-       if ($@) {
+            # (see text below about possible appending of .pmc
+            # suffix to $filename)
+            my $realfilename = &quot;$prefix/$filename&quot;;
+            next if ! -e $realfilename || -d _ || -b _;
+            $INC{$filename} = $realfilename;
+            my $result = do($realfilename);
+                         # but run in caller's namespace
+
+            if (!defined $result) {
            $INC{$filename} = undef;
-           die $@;
-       } elsif (!$result) {
+                croak $@ ? &quot;address@hidden failed in require&quot;
+                         : &quot;Can't locate $filename: $!\n&quot;;
+            }
+            if (!$result) {
            delete $INC{$filename};
-           die &quot;$filename did not return true value&quot;;
-       } else {
+                croak &quot;$filename did not return true value&quot;;
+            }
+            $! = 0;
            return $result;
        }
+        croak &quot;Can't locate $filename in address@hidden ...&quot;;
     }
 </pre>
 <p>Note that the file will not be included twice under the same specified
@@ -36062,11 +36481,14 @@
 walks through @INC and encounters a subroutine, this subroutine gets
 called with two parameters, the first a reference to itself, and the
 second the name of the file to be included (e.g., 
&quot;<samp>Foo/Bar.pm</samp>&quot;).  The
-subroutine should return either nothing or else a list of up to three 
+subroutine should return either nothing or else a list of up to four 
 values in the following order:
 </p>
 <ol>
-<li> A filehandle, from which the file will be read.  
+<li> A reference to a scalar, containing any initial source code to prepend to
+the file or generator output.
+
+</li><li> A filehandle, from which the file will be read.  
 
 </li><li> A reference to a subroutine.  If there is no filehandle (previous 
item),
 then this subroutine is expected to generate one line of source code per
@@ -36952,8 +37374,8 @@
 If LENGTH is negative, removes the elements from OFFSET onward
 except for -LENGTH elements at the end of the array.
 If both OFFSET and LENGTH are omitted, removes everything.  If OFFSET is
-past the end of the array, Perl issues a warning, and splices at the
-end of the array.
+past the end of the array and a LENGTH was provided, Perl issues a warning,
+and splices at the end of the array.
 </p>
 <p>The following equivalences hold (assuming <code>$#a &gt;= $i</code> )
 </p>
@@ -36963,18 +37385,20 @@
     unshift(@a,$x,$y)   splice(@a,0,0,$x,$y)
     $a[$i] = $y         splice(@a,$i,1,$y)
 </pre>
-<p>Example, assuming array lengths are passed before arrays:
+<p><code>splice</code> can be used, for example, to implement n-ary queue 
processing:
 </p>
-<pre class="verbatim">    sub aeq {  # compare two list values
-        my(@a) = splice(@_,0,shift);
-        my(@b) = splice(@_,0,shift);
-        return 0 unless @a == @b;  # same len?
-        while (@a) {
-            return 0 if pop(@a) ne pop(@b);
+<pre class="verbatim">    sub nary_print {
+      my $n = shift;
+      while (my @next_n = splice @_, 0, $n) {
+        say join q{ -- }, @next_n;
         }
-        return 1;
     }
-    if (&amp;aeq($len,@foo[1..$len],address@hidden,@bar)) { ... }
+
+    nary_print(3, qw(a b c d e f g h));
+    # prints:
+    #   a -- b -- c
+    #   d -- e -- f
+    #   g -- h
 </pre>
 <p>Starting with Perl 5.14, <code>splice</code> can take scalar EXPR, which 
must hold a
 reference to an unblessed array.  The argument will be dereferenced
@@ -37045,7 +37469,7 @@
 <em>any</em> contiguous whitespace (not just a single space character) is used 
as
 a separator.  However, this special treatment can be avoided by specifying
 the pattern <code>/&nbsp;/</code><!-- /@w --> instead of the string 
<code>&quot;&nbsp;&quot;</code><!-- /@w -->, thereby allowing
-only a single space character to be a separator. In earlier Perl&rsquo;s this
+only a single space character to be a separator.  In earlier Perls this
 special case was restricted to the use of a plain 
<code>&quot;&nbsp;&quot;</code><!-- /@w --> as the
 pattern argument to split, in Perl 5.18.0 and later this special case is
 triggered by any expression which evaluates as the simple string 
<code>&quot;&nbsp;&quot;</code><!-- /@w -->.
@@ -37708,23 +38132,28 @@
 <p>Portability issues: <a href="#perlport-stat">perlport stat</a>.
 </p>
 </dd>
-<dt>state EXPR</dt>
-<dd><a name="perlfunc-state-EXPR"></a>
+<dt>state VARLIST</dt>
+<dd><a name="perlfunc-state-VARLIST"></a>
 </dd>
-<dt>state TYPE EXPR</dt>
-<dd><a name="perlfunc-state-TYPE-EXPR"></a>
+<dt>state TYPE VARLIST</dt>
+<dd><a name="perlfunc-state-TYPE-VARLIST"></a>
 </dd>
-<dt>state EXPR : ATTRS</dt>
-<dd><a name="perlfunc-state-EXPR-_003a-ATTRS"></a>
+<dt>state VARLIST : ATTRS</dt>
+<dd><a name="perlfunc-state-VARLIST-_003a-ATTRS"></a>
 </dd>
-<dt>state TYPE EXPR : ATTRS</dt>
-<dd><a name="perlfunc-state-TYPE-EXPR-_003a-ATTRS"></a>
+<dt>state TYPE VARLIST : ATTRS</dt>
+<dd><a name="perlfunc-state-TYPE-VARLIST-_003a-ATTRS"></a>
 <p><code>state</code> declares a lexically scoped variable, just like 
<code>my</code>.
 However, those variables will never be reinitialized, contrary to
 lexical variables that are reinitialized each time their enclosing block
 is entered.
 See <a href="#perlsub-Persistent-Private-Variables">perlsub Persistent Private 
Variables</a> for details.
 </p>
+<p>If more than one variable is listed, the list must be placed in
+parentheses.  With a parenthesised list, <code>undef</code> can be used as a
+dummy placeholder.  However, since initialization of state variables in
+list context is currently not possible this would serve no purpose.
+</p>
 <p><code>state</code> variables are enabled only when the <code>use feature 
&quot;state&quot;</code> pragma 
 is in effect, unless the keyword is written as <code>CORE::state</code>.
 See also <a href="feature.html#Top">(feature)</a>.
@@ -38002,8 +38431,7 @@
 <p>Note that <code>sysopen</code> depends on the fdopen() C library function.
 On many Unix systems, fdopen() is known to fail when file descriptors
 exceed a certain value, typically 255.  If you need more file
-descriptors than that, consider rebuilding Perl to use the <code>sfio</code>
-library, or perhaps using the POSIX::open() function.
+descriptors than that, consider using the POSIX::open() function.
 </p>
 <p>See <a href="#perlopentut-NAME">perlopentut NAME</a> for a kinder, gentler 
explanation of opening files.
 </p>
@@ -38354,7 +38782,7 @@
 <dt>tr///</dt>
 <dd><a name="perlfunc-tr_002f_002f_002f"></a>
 <p>The transliteration operator.  Same as <code>y///</code>.  See
-<a href="#perlop-Quote-and-Quote_002dlike-Operators">perlop Quote and 
Quote-like Operators</a>.
+<a href="#perlop-Quote_002dLike-Operators">perlop Quote-Like Operators</a>.
 </p>
 </dd>
 <dt>truncate FILEHANDLE,LENGTH</dt>
@@ -39195,9 +39623,11 @@
 </p>
 <p>Top of form processing is handled automatically:  if there is insufficient
 room on the current page for the formatted record, the page is advanced by
-writing a form feed, a special top-of-page format is used to format the new
+writing a form feed and a special top-of-page
+format is used to format the new
 page header before the record is written.  By default, the top-of-page
-format is the name of the filehandle with &quot;_TOP&quot; appended.  This 
would be a
+format is the name of the filehandle with &quot;_TOP&quot; appended, or 
&quot;top&quot;
+in the current package if the former does not exist.  This would be a
 problem with autovivified filehandles, but it may be dynamically set to the
 format of your choice by assigning the name to the <code>$^</code> variable 
while
 that filehandle is selected.  The number of lines remaining on the current
@@ -39215,7 +39645,7 @@
 <dt>y///</dt>
 <dd><a name="perlfunc-y_002f_002f_002f"></a>
 <p>The transliteration operator.  Same as <code>tr///</code>.  See
-<a href="#perlop-Quote-and-Quote_002dlike-Operators">perlop Quote and 
Quote-like Operators</a>.
+<a href="#perlop-Quote_002dLike-Operators">perlop Quote-Like Operators</a>.
 </p>
 </dd>
 </dl>
@@ -39335,9 +39765,6 @@
 <dt>gt</dt>
 <dd><a name="perlfunc-gt"></a>
 </dd>
-<dt>if</dt>
-<dd><a name="perlfunc-if"></a>
-</dd>
 <dt>le</dt>
 <dd><a name="perlfunc-le"></a>
 </dd>
@@ -39405,6 +39832,9 @@
 <dt>foreach</dt>
 <dd><a name="perlfunc-foreach"></a>
 </dd>
+<dt>if</dt>
+<dd><a name="perlfunc-if"></a>
+</dd>
 <dt>unless</dt>
 <dd><a name="perlfunc-unless"></a>
 </dd>
@@ -39428,7 +39858,7 @@
 <dt>when</dt>
 <dd><a name="perlfunc-when"></a>
 <p>These flow-control keywords related to the experimental switch feature are
-documented in <a href="#perlsyn-Switch-Statements">perlsyn Switch 
Statements</a> .
+documented in <a href="#perlsyn-Switch-Statements">perlsyn Switch 
Statements</a>.
 </p>
 </dd>
 </dl>
@@ -39581,7 +40011,7 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlgit-Committing-your-changes" accesskey="3">perlgit Committing your 
changes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlgit-Using-git-to-send-patch-emails" accesskey="4">perlgit Using git 
to send patch emails</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlgit-Sending-patch-emails" accesskey="4">perlgit Sending patch 
emails</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlgit-A-note-on-derived-files" accesskey="5">perlgit A note on derived 
files</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
@@ -39771,6 +40201,10 @@
 <pre class="verbatim">  % git format-patch -M origin..
   0001-Rename-Leon-Brocard-to-Orange-Brocard.patch
 </pre>
+<p>Or for a lot of changes, e.g. from a topic branch:
+</p>
+<pre class="verbatim">  % git format-patch --stdout -M origin.. &gt; 
topic-branch-changes.patch
+</pre>
 <p>You should now send an email to
 <a href="mailto:address@hidden";>address@hidden</a> with a description of your
 changes, and include this patch file as an attachment. In addition to
@@ -39796,7 +40230,7 @@
 <a name="perlgit-Committing-your-changes"></a>
 <div class="header">
 <p>
-Next: <a href="#perlgit-Using-git-to-send-patch-emails" accesskey="n" 
rel="next">perlgit Using git to send patch emails</a>, Previous: <a 
href="#perlgit-Patch-workflow" accesskey="p" rel="prev">perlgit Patch 
workflow</a>, Up: <a href="#perlgit-WORKING-WITH-THE-REPOSITORY" accesskey="u" 
rel="up">perlgit WORKING WITH THE REPOSITORY</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
+Next: <a href="#perlgit-Sending-patch-emails" accesskey="n" rel="next">perlgit 
Sending patch emails</a>, Previous: <a href="#perlgit-Patch-workflow" 
accesskey="p" rel="prev">perlgit Patch workflow</a>, Up: <a 
href="#perlgit-WORKING-WITH-THE-REPOSITORY" accesskey="u" rel="up">perlgit 
WORKING WITH THE REPOSITORY</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Committing-your-changes"></a>
 <h4 class="subsection">26.4.3 Committing your changes</h4>
@@ -39839,48 +40273,37 @@
 output.
 </p>
 <hr>
-<a name="perlgit-Using-git-to-send-patch-emails"></a>
+<a name="perlgit-Sending-patch-emails"></a>
 <div class="header">
 <p>
 Next: <a href="#perlgit-A-note-on-derived-files" accesskey="n" 
rel="next">perlgit A note on derived files</a>, Previous: <a 
href="#perlgit-Committing-your-changes" accesskey="p" rel="prev">perlgit 
Committing your changes</a>, Up: <a href="#perlgit-WORKING-WITH-THE-REPOSITORY" 
accesskey="u" rel="up">perlgit WORKING WITH THE REPOSITORY</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="Using-git-to-send-patch-emails"></a>
-<h4 class="subsection">26.4.4 Using git to send patch emails</h4>
+<a name="Sending-patch-emails"></a>
+<h4 class="subsection">26.4.4 Sending patch emails</h4>
 
-<p>Please read <a href="#perlhack-NAME">perlhack NAME</a> first in order to 
figure out where your patches
-should be sent.
-</p>
-<p>In your ~/git/perl repository, set the destination email to perl&rsquo;s bug
-tracker:
-</p>
-<pre class="verbatim">  $ git config sendemail.to address@hidden
-</pre>
-<p>Or maybe perl5-porters:
-</p>
-<pre class="verbatim">  $ git config sendemail.to address@hidden
-</pre>
-<p>Then you can use git directly to send your patch emails:
-</p>
-<pre class="verbatim">  $ git send-email 
0001-Rename-Leon-Brocard-to-Orange-Brocard.patch
-</pre>
-<p>You may need to set some configuration variables for your particular
-email service provider. For example, to set your global git config to
-send email via a gmail account:
-</p>
-<pre class="verbatim">  $ git config --global sendemail.smtpserver 
smtp.gmail.com
-  $ git config --global sendemail.smtpssl 1
-  $ git config --global sendemail.smtpuser address@hidden
-</pre>
-<p>With this configuration, you will be prompted for your gmail password
-when you run &rsquo;git send-email&rsquo;. You can also configure
-<code>sendemail.smtppass</code> with your password if you don&rsquo;t care 
about having
-your password in the .gitconfig file.
+<p>After you&rsquo;ve generated your patch you should sent it
+to address@hidden (as discussed <a href="#perlgit-Patch-workflow">in the 
previous
+section</a> with a normal mail client as an
+attachment, along with a description of the patch.
+</p>
+<p>You <strong>must not</strong> use git-send-email(1) to send patches 
generated with
+git-format-patch(1). The RT ticketing system living behind
address@hidden does not respect the inline contents of E-Mails,
+sending an inline patch to RT guarantees that your patch will be
+destroyed.
+</p>
+<p>Someone may download your patch from RT, which will result in the
+subject (the first line of the commit message) being omitted.  See RT
+#74192 and commit a4583001 for an example. Alternatively someone may
+apply your patch from RT after it arrived in their mailbox, by which
+time RT will have modified the inline content of the message.  See RT
+#74532 and commit f9bcfeac for a bad example of this failure mode.
 </p>
 <hr>
 <a name="perlgit-A-note-on-derived-files"></a>
 <div class="header">
 <p>
-Next: <a href="#perlgit-Cleaning-a-working-directory" accesskey="n" 
rel="next">perlgit Cleaning a working directory</a>, Previous: <a 
href="#perlgit-Using-git-to-send-patch-emails" accesskey="p" rel="prev">perlgit 
Using git to send patch emails</a>, Up: <a 
href="#perlgit-WORKING-WITH-THE-REPOSITORY" accesskey="u" rel="up">perlgit 
WORKING WITH THE REPOSITORY</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
+Next: <a href="#perlgit-Cleaning-a-working-directory" accesskey="n" 
rel="next">perlgit Cleaning a working directory</a>, Previous: <a 
href="#perlgit-Sending-patch-emails" accesskey="p" rel="prev">perlgit Sending 
patch emails</a>, Up: <a href="#perlgit-WORKING-WITH-THE-REPOSITORY" 
accesskey="u" rel="up">perlgit WORKING WITH THE REPOSITORY</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="A-note-on-derived-files"></a>
 <h4 class="subsection">26.4.5 A note on derived files</h4>
@@ -40497,7 +40920,8 @@
 </pre>
 <p>(which is likely to produce a warning like this, which can be ignored:
 </p>
-<pre class="verbatim">  remote: fatal: ambiguous argument 
'refs/heads/smoke-me/tonyc/win32stat': unknown revision or path not in the 
working tree.
+<pre class="verbatim">  remote: fatal: ambiguous argument 
'refs/heads/smoke-me/tonyc/win32stat':
+  unknown revision or path not in the working tree.
   remote: Use '--' to separate paths from revisions
 </pre>
 <p>) and then delete your local branch:
@@ -40880,15 +41304,19 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a href="#perlguts-Subroutines" 
accesskey="4">perlguts Subroutines</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perlguts-Compiled-code" 
accesskey="5">perlguts Compiled code</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#perlguts-Memory-Allocation" 
accesskey="5">perlguts Memory Allocation</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#perlguts-PerlIO" 
accesskey="6">perlguts PerlIO</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Examining-internal-data-structures-with-the-dump-functions" 
accesskey="6">perlguts Examining internal data structures with the 
<code>dump</code> functions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#perlguts-Compiled-code" 
accesskey="7">perlguts Compiled code</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlguts-How-multiple-interpreters-and-concurrency-are-supported" 
accesskey="7">perlguts How multiple interpreters and concurrency are 
supported</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Examining-internal-data-structures-with-the-dump-functions" 
accesskey="8">perlguts Examining internal data structures with the 
<code>dump</code> functions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Internal-Functions" accesskey="8">perlguts Internal 
Functions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlguts-How-multiple-interpreters-and-concurrency-are-supported" 
accesskey="9">perlguts How multiple interpreters and concurrency are 
supported</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perlguts-Unicode-Support" 
accesskey="9">perlguts Unicode Support</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Internal-Functions">perlguts Internal 
Functions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Unicode-Support">perlguts Unicode 
Support</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Custom-Operators">perlguts Custom 
Operators</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
@@ -40963,6 +41391,10 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Double_002dTyped-SVs">perlguts Double-Typed 
SVs</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Read_002dOnly-Values">perlguts Read-Only 
Values</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Copy-on-Write">perlguts Copy on 
Write</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Magic-Variables">perlguts Magic 
Variables</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Assigning-Magic">perlguts Assigning 
Magic</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
@@ -41026,9 +41458,8 @@
 value (UV), a double (NV), a string (PV), and another scalar (SV).
 (&quot;PV&quot; stands for &quot;Pointer Value&quot;.  You might think that it 
is misnamed
 because it is described as pointing only to strings.  However, it is
-possible to have it point to other things.  For example, inversion
-lists, used in regular expression data structures, are scalars, each
-consisting of an array of UVs which are accessed through PVs.  But,
+possible to have it point to other things  For example, it could point
+to an array of UVs.  But,
 using it for non-strings requires care, as the underlying assumption of
 much of the internals is that PVs are just for strings.  Often, for
 example, a trailing NUL is tacked on automatically.  The non-string use
@@ -41048,7 +41479,7 @@
 <samp>config.h</samp>) guaranteed to be large enough to represent the size of
 any string that perl can handle.
 </p>
-<p>In the unlikely case of a SV requiring more complex initialisation, you
+<p>In the unlikely case of a SV requiring more complex initialization, you
 can create an empty SV with newSV(len).  If <code>len</code> is 0 an empty SV 
of
 type NULL is returned, else an SV of type PV is returned with len + 1 (for
 the NUL) bytes of storage allocated, accessible via SvPVX.  In both cases
@@ -41122,7 +41553,8 @@
 might not be terminated by a NUL.
 </p>
 <p>Also remember that C doesn&rsquo;t allow you to safely say 
<code>foo(SvPV(s, len),
-len);</code>. It might work with your compiler, but it won&rsquo;t work for 
everyone.
+len);</code>.  It might work with your
+compiler, but it won&rsquo;t work for everyone.
 Break this sort of statement up into separate assignments:
 </p>
 <pre class="verbatim">    SV *s;
@@ -41181,7 +41613,8 @@
 yourself.  The third function processes its arguments like 
<code>sprintf</code> and
 appends the formatted output.  The fourth function works like 
<code>vsprintf</code>.
 You can specify the address and length of an array of SVs instead of the
-va_list argument. The fifth function extends the string stored in the first
+va_list argument.  The fifth function
+extends the string stored in the first
 SV with the string stored in the second SV.  It also forces the second SV
 to be interpreted as a string.
 </p>
@@ -41255,9 +41688,10 @@
 pointer. The efficiency comes by means of a little hack: instead of
 actually removing the characters, <code>sv_chop</code> sets the flag 
<code>OOK</code>
 (offset OK) to signal to other functions that the offset hack is in
-effect, and it puts the number of bytes chopped off into the IV field
-of the SV. It then moves the PV pointer (called <code>SvPVX</code>) forward 
that
-many bytes, and adjusts <code>SvCUR</code> and <code>SvLEN</code>.
+effect, and it moves the PV pointer (called <code>SvPVX</code>) forward
+by the number of bytes chopped off, and adjusts <code>SvCUR</code> and 
<code>SvLEN</code>
+accordingly.  (A portion of the space between the old and new PV
+pointers is used to store the count of chopped bytes.)
 </p>
 <p>Hence, at this point, the start of the buffer that we allocated lives
 at <code>SvPVX(sv) - SvIV(sv)</code> in memory and the PV pointer is pointing
@@ -41315,9 +41749,11 @@
 stored in your SV.  The &quot;p&quot; stands for private.
 </p>
 <p>There are various ways in which the private and public flags may differ.
-For example, a tied SV may have a valid underlying value in the IV slot
-(so SvIOKp is true), but the data should be accessed via the FETCH
-routine rather than directly, so SvIOK is false. Another is when
+For example, in perl 5.16 and earlier a tied SV may have a valid
+underlying value in the IV slot (so SvIOKp is true), but the data
+should be accessed via the FETCH routine rather than directly,
+so SvIOK is false.  (In perl 5.18 onwards, tied scalars use
+the flags the same way as untied scalars.)  Another is when
 numeric conversion has occurred and precision has been lost: only the
 private flag is set on &rsquo;lossy&rsquo; values. So when an NV is converted 
to an
 IV with loss, SvIOKp, SvNOKp and SvNOK will be set, while SvIOK wont be.
@@ -41340,7 +41776,7 @@
 </pre>
 <p>The second method both creates the AV and initially populates it with SVs:
 </p>
-<pre class="verbatim">    AV*  av_make(I32 num, SV **ptr);
+<pre class="verbatim">    AV*  av_make(SSize_t num, SV **ptr);
 </pre>
 <p>The second argument points to an array containing <code>num</code> 
<code>SV*</code>&rsquo;s.  Once the
 AV has been created, the SVs can be destroyed, if so desired.
@@ -41350,7 +41786,7 @@
 <pre class="verbatim">    void  av_push(AV*, SV*);
     SV*   av_pop(AV*);
     SV*   av_shift(AV*);
-    void  av_unshift(AV*, I32 num);
+    void  av_unshift(AV*, SSize_t num);
 </pre>
 <p>These should be familiar operations, with the exception of 
<code>av_unshift</code>.
 This routine adds <code>num</code> elements at the front of the array with the 
<code>undef</code>
@@ -41359,9 +41795,9 @@
 </p>
 <p>Here are some other functions:
 </p>
-<pre class="verbatim">    I32   av_top_index(AV*);
-    SV**  av_fetch(AV*, I32 key, I32 lval);
-    SV**  av_store(AV*, I32 key, SV* val);
+<pre class="verbatim">    SSize_t av_top_index(AV*);
+    SV**    av_fetch(AV*, SSize_t key, I32 lval);
+    SV**    av_store(AV*, SSize_t key, SV* val);
 </pre>
 <p>The <code>av_top_index</code> function returns the highest index value in 
an array (just
 like $#array in Perl).  If the array is empty, -1 is returned.  The
@@ -41378,7 +41814,7 @@
 </p>
 <pre class="verbatim">    void  av_clear(AV*);
     void  av_undef(AV*);
-    void  av_extend(AV*, I32 key);
+    void  av_extend(AV*, SSize_t key);
 </pre>
 <p>The <code>av_clear</code> function deletes all the elements in the AV* 
array, but
 does not actually delete the array itself.  The <code>av_undef</code> function 
will
@@ -41563,12 +41999,14 @@
 <pre class="verbatim">    my @av;
     $av[0] = undef;
 </pre>
-<p>Unfortunately, this isn&rsquo;t true. AVs use <code>&amp;PL_sv_undef</code> 
as a marker
+<p>Unfortunately, this isn&rsquo;t true.  In perl 5.18 and earlier, AVs use 
<code>&amp;PL_sv_undef</code> as a marker
 for indicating that an array element has not yet been initialized.
 Thus, <code>exists $av[0]</code> would be true for the above Perl code, but
-false for the array generated by the XS code.
+false for the array generated by the XS code.  In perl 5.20, storing
+&amp;PL_sv_undef will create a read-only element, because the scalar
+&amp;PL_sv_undef itself is stored, not a copy.
 </p>
-<p>Other problems can occur when storing <code>&amp;PL_sv_undef</code> in HVs:
+<p>Similar problems can occur when storing <code>&amp;PL_sv_undef</code> in 
HVs:
 </p>
 <pre class="verbatim">    hv_store( hv, &quot;key&quot;, 3, &amp;PL_sv_undef, 
0 );
 </pre>
@@ -41851,7 +42289,8 @@
 </pre>
 <p>You should be careful about creating mortal variables.  Strange things
 can happen if you make the same value mortal within multiple contexts,
-or if you make a variable mortal multiple times. Thinking of 
&quot;Mortalization&quot;
+or if you make a variable mortal multiple
+times.  Thinking of &quot;Mortalization&quot;
 as deferred <code>SvREFCNT_dec</code> should help to minimize such problems.
 For example if you are passing an SV which you <em>know</em> has a high enough 
REFCNT
 to survive its use on the stack you need not do any mortalization.
@@ -41929,7 +42368,7 @@
 <a name="perlguts-Double_002dTyped-SVs"></a>
 <div class="header">
 <p>
-Next: <a href="#perlguts-Magic-Variables" accesskey="n" rel="next">perlguts 
Magic Variables</a>, Previous: <a href="#perlguts-Stashes-and-Globs" 
accesskey="p" rel="prev">perlguts Stashes and Globs</a>, Up: <a 
href="#perlguts-Variables" accesskey="u" rel="up">perlguts Variables</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
+Next: <a href="#perlguts-Read_002dOnly-Values" accesskey="n" 
rel="next">perlguts Read-Only Values</a>, Previous: <a 
href="#perlguts-Stashes-and-Globs" accesskey="p" rel="prev">perlguts Stashes 
and Globs</a>, Up: <a href="#perlguts-Variables" accesskey="u" 
rel="up">perlguts Variables</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Double_002dTyped-SVs"></a>
 <h4 class="subsection">28.3.15 Double-Typed SVs</h4>
@@ -41973,13 +42412,75 @@
 macro <code>SvPOK_on</code> would need to be called instead of 
<code>SvIOK_on</code>.
 </p>
 <hr>
+<a name="perlguts-Read_002dOnly-Values"></a>
+<div class="header">
+<p>
+Next: <a href="#perlguts-Copy-on-Write" accesskey="n" rel="next">perlguts Copy 
on Write</a>, Previous: <a href="#perlguts-Double_002dTyped-SVs" accesskey="p" 
rel="prev">perlguts Double-Typed SVs</a>, Up: <a href="#perlguts-Variables" 
accesskey="u" rel="up">perlguts Variables</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+</div>
+<a name="Read_002dOnly-Values"></a>
+<h4 class="subsection">28.3.16 Read-Only Values</h4>
+
+<p>In Perl 5.16 and earlier, copy-on-write (see the next section) shared a
+flag bit with read-only scalars.  So the only way to test whether
+<code>sv_setsv</code>, etc., will raise a &quot;Modification of a read-only 
value&quot; error
+in those versions is:
+</p>
+<pre class="verbatim">    SvREADONLY(sv) &amp;&amp; !SvIsCOW(sv)
+</pre>
+<p>Under Perl 5.18 and later, SvREADONLY only applies to read-only variables,
+and, under 5.20, copy-on-write scalars can also be read-only, so the above
+check is incorrect.  You just want:
+</p>
+<pre class="verbatim">    SvREADONLY(sv)
+</pre>
+<p>If you need to do this check often, define your own macro like this:
+</p>
+<pre class="verbatim">    #if PERL_VERSION &gt;= 18
+    # define SvTRULYREADONLY(sv) SvREADONLY(sv)
+    #else
+    # define SvTRULYREADONLY(sv) (SvREADONLY(sv) &amp;&amp; !SvIsCOW(sv))
+    #endif
+</pre>
+<hr>
+<a name="perlguts-Copy-on-Write"></a>
+<div class="header">
+<p>
+Next: <a href="#perlguts-Magic-Variables" accesskey="n" rel="next">perlguts 
Magic Variables</a>, Previous: <a href="#perlguts-Read_002dOnly-Values" 
accesskey="p" rel="prev">perlguts Read-Only Values</a>, Up: <a 
href="#perlguts-Variables" accesskey="u" rel="up">perlguts Variables</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
+</div>
+<a name="Copy-on-Write"></a>
+<h4 class="subsection">28.3.17 Copy on Write</h4>
+
+<p>Perl implements a copy-on-write (COW) mechanism for scalars, in which
+string copies are not immediately made when requested, but are deferred
+until made necessary by one or the other scalar changing.  This is mostly
+transparent, but one must take care not to modify string buffers that are
+shared by multiple SVs.
+</p>
+<p>You can test whether an SV is using copy-on-write with 
<code>SvIsCOW(sv)</code>.
+</p>
+<p>You can force an SV to make its own copy of its string buffer by calling 
<code>sv_force_normal(sv)</code> or SvPV_force_nolen(sv).
+</p>
+<p>If you want to make the SV drop its string buffer, use
+<code>sv_force_normal_flags(sv, SV_COW_DROP_PV)</code> or simply
+<code>sv_setsv(sv, NULL)</code>.
+</p>
+<p>All of these functions will croak on read-only scalars (see the previous
+section for more on those).
+</p>
+<p>To test that your code is behaving correctly and not modifying COW buffers,
+on systems that support <a href="http://man.he.net/man2/mmap";>mmap(2)</a> 
(i.e., Unix) you can configure perl with
+<code>-Accflags=-DPERL_DEBUG_READONLY_COW</code> and it will turn buffer 
violations
+into crashes.  You will find it to be marvellously slow, so you may want to
+skip perl&rsquo;s own tests.
+</p>
+<hr>
 <a name="perlguts-Magic-Variables"></a>
 <div class="header">
 <p>
-Next: <a href="#perlguts-Assigning-Magic" accesskey="n" rel="next">perlguts 
Assigning Magic</a>, Previous: <a href="#perlguts-Double_002dTyped-SVs" 
accesskey="p" rel="prev">perlguts Double-Typed SVs</a>, Up: <a 
href="#perlguts-Variables" accesskey="u" rel="up">perlguts Variables</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
+Next: <a href="#perlguts-Assigning-Magic" accesskey="n" rel="next">perlguts 
Assigning Magic</a>, Previous: <a href="#perlguts-Copy-on-Write" accesskey="p" 
rel="prev">perlguts Copy on Write</a>, Up: <a href="#perlguts-Variables" 
accesskey="u" rel="up">perlguts Variables</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Magic-Variables"></a>
-<h4 class="subsection">28.3.16 Magic Variables</h4>
+<h4 class="subsection">28.3.18 Magic Variables</h4>
 
 <p>[This section still under construction.  Ignore everything here.  Post no
 bills.  Everything not permitted is forbidden.]
@@ -42008,7 +42509,7 @@
 Next: <a href="#perlguts-Magic-Virtual-Tables" accesskey="n" 
rel="next">perlguts Magic Virtual Tables</a>, Previous: <a 
href="#perlguts-Magic-Variables" accesskey="p" rel="prev">perlguts Magic 
Variables</a>, Up: <a href="#perlguts-Variables" accesskey="u" 
rel="up">perlguts Variables</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Assigning-Magic"></a>
-<h4 class="subsection">28.3.17 Assigning Magic</h4>
+<h4 class="subsection">28.3.19 Assigning Magic</h4>
 
 <p>Perl adds magic to an SV using the sv_magic function:
 </p>
@@ -42018,7 +42519,8 @@
 feature.
 </p>
 <p>If <code>sv</code> is not already magical, Perl uses the 
<code>SvUPGRADE</code> macro to
-convert <code>sv</code> to type <code>SVt_PVMG</code>. Perl then continues by 
adding new magic
+convert <code>sv</code> to type <code>SVt_PVMG</code>.
+Perl then continues by adding new magic
 to the beginning of the linked list of magical features.  Any prior entry
 of the same type of magic is deleted.  Note that this can be overridden,
 and multiple instances of the same type of magic can be associated with an
@@ -42035,8 +42537,9 @@
 <p>The sv_magic function uses <code>how</code> to determine which, if any, 
predefined
 &quot;Magic Virtual Table&quot; should be assigned to the 
<code>mg_virtual</code> field.
 See the <a href="#perlguts-Magic-Virtual-Tables">Magic Virtual Tables</a> 
section below.  The <code>how</code> argument is also
-stored in the <code>mg_type</code> field. The value of <code>how</code> should 
be chosen
-from the set of macros <code>PERL_MAGIC_foo</code> found in 
<samp>perl.h</samp>. Note that before
+stored in the <code>mg_type</code> field.  The value of
+<code>how</code> should be chosen from the set of macros
+<code>PERL_MAGIC_foo</code> found in <samp>perl.h</samp>.  Note that before
 these macros were added, Perl internals used to directly use character
 literals, so you may occasionally come across old code or documentation
 referring to &rsquo;U&rsquo; magic rather than <code>PERL_MAGIC_uvar</code> 
for example.
@@ -42064,7 +42567,8 @@
 was initially made magical.
 </p>
 <p>However, note that <code>sv_unmagic</code> removes all magic of a certain 
<code>type</code> from the
-<code>SV</code>. If you want to remove only certain magic of a 
<code>type</code> based on the magic
+<code>SV</code>.  If you want to remove only certain
+magic of a <code>type</code> based on the magic
 virtual table, use <code>sv_unmagicext</code> instead:
 </p>
 <pre class="verbatim">    int sv_unmagicext(SV *sv, int type, MGVTBL *vtbl);
@@ -42076,7 +42580,7 @@
 Next: <a href="#perlguts-Finding-Magic" accesskey="n" rel="next">perlguts 
Finding Magic</a>, Previous: <a href="#perlguts-Assigning-Magic" accesskey="p" 
rel="prev">perlguts Assigning Magic</a>, Up: <a href="#perlguts-Variables" 
accesskey="u" rel="up">perlguts Variables</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Magic-Virtual-Tables"></a>
-<h4 class="subsection">28.3.18 Magic Virtual Tables</h4>
+<h4 class="subsection">28.3.20 Magic Virtual Tables</h4>
 
 <p>The <code>mg_virtual</code> field in the <code>MAGIC</code> structure is a 
pointer to an
 <code>MGVTBL</code>, which is a structure of function pointers and stands for
@@ -42128,8 +42632,9 @@
 </p>
 <p>The last three slots are a recent addition, and for source code
 compatibility they are only checked for if one of the three flags
-MGf_COPY, MGf_DUP or MGf_LOCAL is set in mg_flags. This means that most
-code can continue declaring a vtable as a 5-element value. These three are
+MGf_COPY, MGf_DUP or MGf_LOCAL is set in mg_flags.
+This means that most code can continue declaring
+a vtable as a 5-element value.  These three are
 currently used exclusively by the threading code, and are highly subject
 to change.
 </p>
@@ -42284,15 +42789,17 @@
 Next: <a href="#perlguts-Understanding-the-Magic-of-Tied-Hashes-and-Arrays" 
accesskey="n" rel="next">perlguts Understanding the Magic of Tied Hashes and 
Arrays</a>, Previous: <a href="#perlguts-Magic-Virtual-Tables" accesskey="p" 
rel="prev">perlguts Magic Virtual Tables</a>, Up: <a href="#perlguts-Variables" 
accesskey="u" rel="up">perlguts Variables</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Finding-Magic"></a>
-<h4 class="subsection">28.3.19 Finding Magic</h4>
+<h4 class="subsection">28.3.21 Finding Magic</h4>
 
 <pre class="verbatim">    MAGIC *mg_find(SV *sv, int type); /* Finds the magic 
pointer of that
                                        * type */
 </pre>
 <p>This routine returns a pointer to a <code>MAGIC</code> structure stored in 
the SV.
-If the SV does not have that magical feature, <code>NULL</code> is returned. 
If the
+If the SV does not have that magical
+feature, <code>NULL</code> is returned.  If the
 SV has multiple instances of that magical feature, the first one will be
-returned. <code>mg_findext</code> can be used to find a <code>MAGIC</code> 
structure of an SV
+returned.  <code>mg_findext</code> can be used
+to find a <code>MAGIC</code> structure of an SV
 based on both its magic type and its magic virtual table:
 </p>
 <pre class="verbatim">    MAGIC *mg_findext(SV *sv, int type, MGVTBL *vtbl);
@@ -42313,7 +42820,7 @@
 Next: <a href="#perlguts-Localizing-changes" accesskey="n" rel="next">perlguts 
Localizing changes</a>, Previous: <a href="#perlguts-Finding-Magic" 
accesskey="p" rel="prev">perlguts Finding Magic</a>, Up: <a 
href="#perlguts-Variables" accesskey="u" rel="up">perlguts Variables</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Understanding-the-Magic-of-Tied-Hashes-and-Arrays"></a>
-<h4 class="subsection">28.3.20 Understanding the Magic of Tied Hashes and 
Arrays</h4>
+<h4 class="subsection">28.3.22 Understanding the Magic of Tied Hashes and 
Arrays</h4>
 
 <p>Tied hashes and arrays are magical beasts of the 
<code>PERL_MAGIC_tied</code>
 magic type.
@@ -42407,7 +42914,7 @@
 Previous: <a 
href="#perlguts-Understanding-the-Magic-of-Tied-Hashes-and-Arrays" 
accesskey="p" rel="prev">perlguts Understanding the Magic of Tied Hashes and 
Arrays</a>, Up: <a href="#perlguts-Variables" accesskey="u" rel="up">perlguts 
Variables</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Localizing-changes"></a>
-<h4 class="subsection">28.3.21 Localizing changes</h4>
+<h4 class="subsection">28.3.23 Localizing changes</h4>
 
 <p>Perl has a very handy construction
 </p>
@@ -42594,7 +43101,7 @@
 <a name="perlguts-Subroutines"></a>
 <div class="header">
 <p>
-Next: <a href="#perlguts-Compiled-code" accesskey="n" rel="next">perlguts 
Compiled code</a>, Previous: <a href="#perlguts-Variables" accesskey="p" 
rel="prev">perlguts Variables</a>, Up: <a href="#perlguts" accesskey="u" 
rel="up">perlguts</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
+Next: <a href="#perlguts-Memory-Allocation" accesskey="n" rel="next">perlguts 
Memory Allocation</a>, Previous: <a href="#perlguts-Variables" accesskey="p" 
rel="prev">perlguts Variables</a>, Up: <a href="#perlguts" accesskey="u" 
rel="up">perlguts</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Subroutines"></a>
 <h3 class="section">28.4 Subroutines</h3>
@@ -42606,15 +43113,11 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Calling-Perl-Routines-from-within-C-Programs" 
accesskey="3">perlguts Calling Perl Routines from within C 
Programs</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perlguts-Memory-Allocation" 
accesskey="4">perlguts Memory Allocation</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perlguts-PerlIO" 
accesskey="5">perlguts PerlIO</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Putting-a-C-value-on-Perl-stack" accesskey="6">perlguts Putting 
a C value on Perl stack</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Putting-a-C-value-on-Perl-stack" accesskey="4">perlguts Putting 
a C value on Perl stack</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perlguts-Scratchpads" 
accesskey="7">perlguts Scratchpads</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#perlguts-Scratchpads" 
accesskey="5">perlguts Scratchpads</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Scratchpads-and-recursion" accesskey="8">perlguts Scratchpads 
and recursion</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Scratchpads-and-recursion" accesskey="6">perlguts Scratchpads 
and recursion</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 </table>
 
@@ -42715,7 +43218,7 @@
 <a name="perlguts-Calling-Perl-Routines-from-within-C-Programs"></a>
 <div class="header">
 <p>
-Next: <a href="#perlguts-Memory-Allocation" accesskey="n" rel="next">perlguts 
Memory Allocation</a>, Previous: <a href="#perlguts-Autoloading-with-XSUBs" 
accesskey="p" rel="prev">perlguts Autoloading with XSUBs</a>, Up: <a 
href="#perlguts-Subroutines" accesskey="u" rel="up">perlguts Subroutines</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
+Next: <a href="#perlguts-Putting-a-C-value-on-Perl-stack" accesskey="n" 
rel="next">perlguts Putting a C value on Perl stack</a>, Previous: <a 
href="#perlguts-Autoloading-with-XSUBs" accesskey="p" rel="prev">perlguts 
Autoloading with XSUBs</a>, Up: <a href="#perlguts-Subroutines" accesskey="u" 
rel="up">perlguts Subroutines</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Calling-Perl-Routines-from-within-C-Programs"></a>
 <h4 class="subsection">28.4.3 Calling Perl Routines from within C Programs</h4>
@@ -42762,124 +43265,13 @@
 consult <a href="#perlcall-NAME">perlcall NAME</a>.
 </p>
 <hr>
-<a name="perlguts-Memory-Allocation"></a>
-<div class="header">
-<p>
-Next: <a href="#perlguts-PerlIO" accesskey="n" rel="next">perlguts PerlIO</a>, 
Previous: <a href="#perlguts-Calling-Perl-Routines-from-within-C-Programs" 
accesskey="p" rel="prev">perlguts Calling Perl Routines from within C 
Programs</a>, Up: <a href="#perlguts-Subroutines" accesskey="u" 
rel="up">perlguts Subroutines</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="Memory-Allocation"></a>
-<h4 class="subsection">28.4.4 Memory Allocation</h4>
-
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#perlguts-Allocation" 
accesskey="1">perlguts Allocation</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perlguts-Reallocation" 
accesskey="2">perlguts Reallocation</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perlguts-Moving" 
accesskey="3">perlguts Moving</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
-</td></tr>
-</table>
-
-<hr>
-<a name="perlguts-Allocation"></a>
-<div class="header">
-<p>
-Next: <a href="#perlguts-Reallocation" accesskey="n" rel="next">perlguts 
Reallocation</a>, Up: <a href="#perlguts-Memory-Allocation" accesskey="u" 
rel="up">perlguts Memory Allocation</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="Allocation"></a>
-<h4 class="subsubsection">28.4.4.1 Allocation</h4>
-
-<p>All memory meant to be used with the Perl API functions should be 
manipulated
-using the macros described in this section.  The macros provide the necessary
-transparency between differences in the actual malloc implementation that is
-used within perl.
-</p>
-<p>It is suggested that you enable the version of malloc that is distributed
-with Perl.  It keeps pools of various sizes of unallocated memory in
-order to satisfy allocation requests more quickly.  However, on some
-platforms, it may cause spurious malloc or free errors.
-</p>
-<p>The following three macros are used to initially allocate memory :
-</p>
-<pre class="verbatim">    Newx(pointer, number, type);
-    Newxc(pointer, number, type, cast);
-    Newxz(pointer, number, type);
-</pre>
-<p>The first argument <code>pointer</code> should be the name of a variable 
that will
-point to the newly allocated memory.
-</p>
-<p>The second and third arguments <code>number</code> and <code>type</code> 
specify how many of
-the specified type of data structure should be allocated.  The argument
-<code>type</code> is passed to <code>sizeof</code>.  The final argument to 
<code>Newxc</code>, <code>cast</code>,
-should be used if the <code>pointer</code> argument is different from the 
<code>type</code>
-argument.
-</p>
-<p>Unlike the <code>Newx</code> and <code>Newxc</code> macros, the 
<code>Newxz</code> macro calls <code>memzero</code>
-to zero out all the newly allocated memory.
-</p>
-<hr>
-<a name="perlguts-Reallocation"></a>
-<div class="header">
-<p>
-Next: <a href="#perlguts-Moving" accesskey="n" rel="next">perlguts Moving</a>, 
Previous: <a href="#perlguts-Allocation" accesskey="p" rel="prev">perlguts 
Allocation</a>, Up: <a href="#perlguts-Memory-Allocation" accesskey="u" 
rel="up">perlguts Memory Allocation</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="Reallocation"></a>
-<h4 class="subsubsection">28.4.4.2 Reallocation</h4>
-
-<pre class="verbatim">    Renew(pointer, number, type);
-    Renewc(pointer, number, type, cast);
-    Safefree(pointer)
-</pre>
-<p>These three macros are used to change a memory buffer size or to free a
-piece of memory no longer needed.  The arguments to <code>Renew</code> and 
<code>Renewc</code>
-match those of <code>New</code> and <code>Newc</code> with the exception of 
not needing the
-&quot;magic cookie&quot; argument.
-</p>
-<hr>
-<a name="perlguts-Moving"></a>
-<div class="header">
-<p>
-Previous: <a href="#perlguts-Reallocation" accesskey="p" rel="prev">perlguts 
Reallocation</a>, Up: <a href="#perlguts-Memory-Allocation" accesskey="u" 
rel="up">perlguts Memory Allocation</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="Moving"></a>
-<h4 class="subsubsection">28.4.4.3 Moving</h4>
-
-<pre class="verbatim">    Move(source, dest, number, type);
-    Copy(source, dest, number, type);
-    Zero(dest, number, type);
-</pre>
-<p>These three macros are used to move, copy, or zero out previously allocated
-memory.  The <code>source</code> and <code>dest</code> arguments point to the 
source and
-destination starting points.  Perl will move, copy, or zero out 
<code>number</code>
-instances of the size of the <code>type</code> data structure (using the 
<code>sizeof</code>
-function).
-</p>
-<hr>
-<a name="perlguts-PerlIO"></a>
-<div class="header">
-<p>
-Next: <a href="#perlguts-Putting-a-C-value-on-Perl-stack" accesskey="n" 
rel="next">perlguts Putting a C value on Perl stack</a>, Previous: <a 
href="#perlguts-Memory-Allocation" accesskey="p" rel="prev">perlguts Memory 
Allocation</a>, Up: <a href="#perlguts-Subroutines" accesskey="u" 
rel="up">perlguts Subroutines</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="PerlIO"></a>
-<h4 class="subsection">28.4.5 PerlIO</h4>
-
-<p>The most recent development releases of Perl have been experimenting with
-removing Perl&rsquo;s dependency on the &quot;normal&quot; standard I/O suite 
and allowing
-other stdio implementations to be used.  This involves creating a new
-abstraction layer that then calls whichever implementation of stdio Perl
-was compiled with.  All XSUBs should now use the functions in the PerlIO
-abstraction layer and not make any assumptions about what kind of stdio
-is being used.
-</p>
-<p>For a complete description of the PerlIO abstraction, consult <a 
href="#perlapio-NAME">perlapio NAME</a>.
-</p>
-<hr>
 <a name="perlguts-Putting-a-C-value-on-Perl-stack"></a>
 <div class="header">
 <p>
-Next: <a href="#perlguts-Scratchpads" accesskey="n" rel="next">perlguts 
Scratchpads</a>, Previous: <a href="#perlguts-PerlIO" accesskey="p" 
rel="prev">perlguts PerlIO</a>, Up: <a href="#perlguts-Subroutines" 
accesskey="u" rel="up">perlguts Subroutines</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+Next: <a href="#perlguts-Scratchpads" accesskey="n" rel="next">perlguts 
Scratchpads</a>, Previous: <a 
href="#perlguts-Calling-Perl-Routines-from-within-C-Programs" accesskey="p" 
rel="prev">perlguts Calling Perl Routines from within C Programs</a>, Up: <a 
href="#perlguts-Subroutines" accesskey="u" rel="up">perlguts Subroutines</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Putting-a-C-value-on-Perl-stack"></a>
-<h4 class="subsection">28.4.6 Putting a C value on Perl stack</h4>
+<h4 class="subsection">28.4.4 Putting a C value on Perl stack</h4>
 
 <p>A lot of opcodes (this is an elementary operation in the internal perl
 stack machine) put an SV* on the stack. However, as an optimization
@@ -42938,7 +43330,7 @@
 Next: <a href="#perlguts-Scratchpads-and-recursion" accesskey="n" 
rel="next">perlguts Scratchpads and recursion</a>, Previous: <a 
href="#perlguts-Putting-a-C-value-on-Perl-stack" accesskey="p" 
rel="prev">perlguts Putting a C value on Perl stack</a>, Up: <a 
href="#perlguts-Subroutines" accesskey="u" rel="up">perlguts Subroutines</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Scratchpads"></a>
-<h4 class="subsection">28.4.7 Scratchpads</h4>
+<h4 class="subsection">28.4.5 Scratchpads</h4>
 
 <p>The question remains on when the SVs which are <em>target</em>s for opcodes
 are created. The answer is that they are created when the current
@@ -42947,9 +43339,13 @@
 array is created, which is called a scratchpad for the current unit.
 </p>
 <p>A scratchpad keeps SVs which are lexicals for the current unit and are
-targets for opcodes. One can deduce that an SV lives on a scratchpad
+targets for opcodes.  A previous version of this document
+stated that one can deduce that an SV lives on a scratchpad
 by looking on its flags: lexicals have <code>SVs_PADMY</code> set, and
-<em>target</em>s have <code>SVs_PADTMP</code> set.
+<em>target</em>s have <code>SVs_PADTMP</code> set.  But this have never been 
fully true.
+<code>SVs_PADMY</code> could be set on a variable that no longer resides in 
any pad.
+While <em>target</em>s do have <code>SVs_PADTMP</code> set, it can also be set 
on variables
+that have never resided in a pad, but nonetheless act like <em>target</em>s.
 </p>
 <p>The correspondence between OPs and <em>target</em>s is not 1-to-1. Different
 OPs in the compile tree of the unit can use the same target, if this
@@ -42962,7 +43358,7 @@
 Previous: <a href="#perlguts-Scratchpads" accesskey="p" rel="prev">perlguts 
Scratchpads</a>, Up: <a href="#perlguts-Subroutines" accesskey="u" 
rel="up">perlguts Subroutines</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Scratchpads-and-recursion"></a>
-<h4 class="subsection">28.4.8 Scratchpads and recursion</h4>
+<h4 class="subsection">28.4.6 Scratchpads and recursion</h4>
 
 <p>In fact it is not 100% true that a compiled unit contains a pointer to
 the scratchpad AV. In fact it contains a pointer to an AV of
@@ -42985,13 +43381,124 @@
 marked with correct flags.
 </p>
 <hr>
+<a name="perlguts-Memory-Allocation"></a>
+<div class="header">
+<p>
+Next: <a href="#perlguts-PerlIO" accesskey="n" rel="next">perlguts PerlIO</a>, 
Previous: <a href="#perlguts-Subroutines" accesskey="p" rel="prev">perlguts 
Subroutines</a>, Up: <a href="#perlguts" accesskey="u" rel="up">perlguts</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
+</div>
+<a name="Memory-Allocation"></a>
+<h3 class="section">28.5 Memory Allocation</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="#perlguts-Allocation" 
accesskey="1">perlguts Allocation</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#perlguts-Reallocation" 
accesskey="2">perlguts Reallocation</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#perlguts-Moving" 
accesskey="3">perlguts Moving</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="perlguts-Allocation"></a>
+<div class="header">
+<p>
+Next: <a href="#perlguts-Reallocation" accesskey="n" rel="next">perlguts 
Reallocation</a>, Up: <a href="#perlguts-Memory-Allocation" accesskey="u" 
rel="up">perlguts Memory Allocation</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+</div>
+<a name="Allocation"></a>
+<h4 class="subsection">28.5.1 Allocation</h4>
+
+<p>All memory meant to be used with the Perl API functions should be 
manipulated
+using the macros described in this section.  The macros provide the necessary
+transparency between differences in the actual malloc implementation that is
+used within perl.
+</p>
+<p>It is suggested that you enable the version of malloc that is distributed
+with Perl.  It keeps pools of various sizes of unallocated memory in
+order to satisfy allocation requests more quickly.  However, on some
+platforms, it may cause spurious malloc or free errors.
+</p>
+<p>The following three macros are used to initially allocate memory :
+</p>
+<pre class="verbatim">    Newx(pointer, number, type);
+    Newxc(pointer, number, type, cast);
+    Newxz(pointer, number, type);
+</pre>
+<p>The first argument <code>pointer</code> should be the name of a variable 
that will
+point to the newly allocated memory.
+</p>
+<p>The second and third arguments <code>number</code> and <code>type</code> 
specify how many of
+the specified type of data structure should be allocated.  The argument
+<code>type</code> is passed to <code>sizeof</code>.  The final argument to 
<code>Newxc</code>, <code>cast</code>,
+should be used if the <code>pointer</code> argument is different from the 
<code>type</code>
+argument.
+</p>
+<p>Unlike the <code>Newx</code> and <code>Newxc</code> macros, the 
<code>Newxz</code> macro calls <code>memzero</code>
+to zero out all the newly allocated memory.
+</p>
+<hr>
+<a name="perlguts-Reallocation"></a>
+<div class="header">
+<p>
+Next: <a href="#perlguts-Moving" accesskey="n" rel="next">perlguts Moving</a>, 
Previous: <a href="#perlguts-Allocation" accesskey="p" rel="prev">perlguts 
Allocation</a>, Up: <a href="#perlguts-Memory-Allocation" accesskey="u" 
rel="up">perlguts Memory Allocation</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+</div>
+<a name="Reallocation"></a>
+<h4 class="subsection">28.5.2 Reallocation</h4>
+
+<pre class="verbatim">    Renew(pointer, number, type);
+    Renewc(pointer, number, type, cast);
+    Safefree(pointer)
+</pre>
+<p>These three macros are used to change a memory buffer size or to free a
+piece of memory no longer needed.  The arguments to <code>Renew</code> and 
<code>Renewc</code>
+match those of <code>New</code> and <code>Newc</code> with the exception of 
not needing the
+&quot;magic cookie&quot; argument.
+</p>
+<hr>
+<a name="perlguts-Moving"></a>
+<div class="header">
+<p>
+Previous: <a href="#perlguts-Reallocation" accesskey="p" rel="prev">perlguts 
Reallocation</a>, Up: <a href="#perlguts-Memory-Allocation" accesskey="u" 
rel="up">perlguts Memory Allocation</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+</div>
+<a name="Moving"></a>
+<h4 class="subsection">28.5.3 Moving</h4>
+
+<pre class="verbatim">    Move(source, dest, number, type);
+    Copy(source, dest, number, type);
+    Zero(dest, number, type);
+</pre>
+<p>These three macros are used to move, copy, or zero out previously allocated
+memory.  The <code>source</code> and <code>dest</code> arguments point to the 
source and
+destination starting points.  Perl will move, copy, or zero out 
<code>number</code>
+instances of the size of the <code>type</code> data structure (using the 
<code>sizeof</code>
+function).
+</p>
+<hr>
+<a name="perlguts-PerlIO"></a>
+<div class="header">
+<p>
+Next: <a href="#perlguts-Compiled-code" accesskey="n" rel="next">perlguts 
Compiled code</a>, Previous: <a href="#perlguts-Memory-Allocation" 
accesskey="p" rel="prev">perlguts Memory Allocation</a>, Up: <a 
href="#perlguts" accesskey="u" rel="up">perlguts</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
+</div>
+<a name="PerlIO"></a>
+<h3 class="section">28.6 PerlIO</h3>
+
+<p>The most recent development releases of Perl have been experimenting with
+removing Perl&rsquo;s dependency on the &quot;normal&quot; standard I/O suite 
and allowing
+other stdio implementations to be used.  This involves creating a new
+abstraction layer that then calls whichever implementation of stdio Perl
+was compiled with.  All XSUBs should now use the functions in the PerlIO
+abstraction layer and not make any assumptions about what kind of stdio
+is being used.
+</p>
+<p>For a complete description of the PerlIO abstraction, consult <a 
href="#perlapio-NAME">perlapio NAME</a>.
+</p>
+<hr>
 <a name="perlguts-Compiled-code"></a>
 <div class="header">
 <p>
-Next: <a 
href="#perlguts-Examining-internal-data-structures-with-the-dump-functions" 
accesskey="n" rel="next">perlguts Examining internal data structures with the 
<code>dump</code> functions</a>, Previous: <a href="#perlguts-Subroutines" 
accesskey="p" rel="prev">perlguts Subroutines</a>, Up: <a href="#perlguts" 
accesskey="u" rel="up">perlguts</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+Next: <a 
href="#perlguts-Examining-internal-data-structures-with-the-dump-functions" 
accesskey="n" rel="next">perlguts Examining internal data structures with the 
<code>dump</code> functions</a>, Previous: <a href="#perlguts-PerlIO" 
accesskey="p" rel="prev">perlguts PerlIO</a>, Up: <a href="#perlguts" 
accesskey="u" rel="up">perlguts</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Compiled-code"></a>
-<h3 class="section">28.5 Compiled code</h3>
+<h3 class="section">28.7 Compiled code</h3>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perlguts-Code-tree" 
accesskey="1">perlguts Code tree</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -43019,7 +43526,7 @@
 Next: <a href="#perlguts-Examining-the-tree" accesskey="n" rel="next">perlguts 
Examining the tree</a>, Up: <a href="#perlguts-Compiled-code" accesskey="u" 
rel="up">perlguts Compiled code</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Code-tree"></a>
-<h4 class="subsection">28.5.1 Code tree</h4>
+<h4 class="subsection">28.7.1 Code tree</h4>
 
 <p>Here we describe the internal form your code is converted to by
 Perl. Start with a simple example:
@@ -43054,7 +43561,7 @@
 Next: <a href="#perlguts-Compile-pass-1_003a-check-routines" accesskey="n" 
rel="next">perlguts Compile pass 1: check routines</a>, Previous: <a 
href="#perlguts-Code-tree" accesskey="p" rel="prev">perlguts Code tree</a>, Up: 
<a href="#perlguts-Compiled-code" accesskey="u" rel="up">perlguts Compiled 
code</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Examining-the-tree"></a>
-<h4 class="subsection">28.5.2 Examining the tree</h4>
+<h4 class="subsection">28.7.2 Examining the tree</h4>
 
 <p>If you have your perl compiled for debugging (usually done with
 <code>-DDEBUGGING</code> on the <code>Configure</code> command line), you may 
examine the
@@ -43136,7 +43643,7 @@
 Next: <a href="#perlguts-Compile-pass-1a_003a-constant-folding" accesskey="n" 
rel="next">perlguts Compile pass 1a: constant folding</a>, Previous: <a 
href="#perlguts-Examining-the-tree" accesskey="p" rel="prev">perlguts Examining 
the tree</a>, Up: <a href="#perlguts-Compiled-code" accesskey="u" 
rel="up">perlguts Compiled code</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Compile-pass-1_003a-check-routines"></a>
-<h4 class="subsection">28.5.3 Compile pass 1: check routines</h4>
+<h4 class="subsection">28.7.3 Compile pass 1: check routines</h4>
 
 <p>The tree is created by the compiler while <em>yacc</em> code feeds it
 the constructions it recognizes. Since <em>yacc</em> works bottom-up, so does
@@ -43169,7 +43676,7 @@
 Next: <a href="#perlguts-Compile-pass-2_003a-context-propagation" 
accesskey="n" rel="next">perlguts Compile pass 2: context propagation</a>, 
Previous: <a href="#perlguts-Compile-pass-1_003a-check-routines" accesskey="p" 
rel="prev">perlguts Compile pass 1: check routines</a>, Up: <a 
href="#perlguts-Compiled-code" accesskey="u" rel="up">perlguts Compiled 
code</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Compile-pass-1a_003a-constant-folding"></a>
-<h4 class="subsection">28.5.4 Compile pass 1a: constant folding</h4>
+<h4 class="subsection">28.7.4 Compile pass 1a: constant folding</h4>
 
 <p>Immediately after the check routine is called the returned node is
 checked for being compile-time executable.  If it is (the value is
@@ -43187,7 +43694,7 @@
 Next: <a href="#perlguts-Compile-pass-3_003a-peephole-optimization" 
accesskey="n" rel="next">perlguts Compile pass 3: peephole optimization</a>, 
Previous: <a href="#perlguts-Compile-pass-1a_003a-constant-folding" 
accesskey="p" rel="prev">perlguts Compile pass 1a: constant folding</a>, Up: <a 
href="#perlguts-Compiled-code" accesskey="u" rel="up">perlguts Compiled 
code</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Compile-pass-2_003a-context-propagation"></a>
-<h4 class="subsection">28.5.5 Compile pass 2: context propagation</h4>
+<h4 class="subsection">28.7.5 Compile pass 2: context propagation</h4>
 
 <p>When a context for a part of compile tree is known, it is propagated
 down through the tree.  At this time the context can have 5 values
@@ -43208,7 +43715,7 @@
 Next: <a href="#perlguts-Pluggable-runops" accesskey="n" rel="next">perlguts 
Pluggable runops</a>, Previous: <a 
href="#perlguts-Compile-pass-2_003a-context-propagation" accesskey="p" 
rel="prev">perlguts Compile pass 2: context propagation</a>, Up: <a 
href="#perlguts-Compiled-code" accesskey="u" rel="up">perlguts Compiled 
code</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Compile-pass-3_003a-peephole-optimization"></a>
-<h4 class="subsection">28.5.6 Compile pass 3: peephole optimization</h4>
+<h4 class="subsection">28.7.6 Compile pass 3: peephole optimization</h4>
 
 <p>After the compile tree for a subroutine (or for an <code>eval</code> or a 
file)
 is created, an additional pass over the code is performed. This pass
@@ -43256,7 +43763,7 @@
 Next: <a href="#perlguts-Compile_002dtime-scope-hooks" accesskey="n" 
rel="next">perlguts Compile-time scope hooks</a>, Previous: <a 
href="#perlguts-Compile-pass-3_003a-peephole-optimization" accesskey="p" 
rel="prev">perlguts Compile pass 3: peephole optimization</a>, Up: <a 
href="#perlguts-Compiled-code" accesskey="u" rel="up">perlguts Compiled 
code</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Pluggable-runops"></a>
-<h4 class="subsection">28.5.7 Pluggable runops</h4>
+<h4 class="subsection">28.7.7 Pluggable runops</h4>
 
 <p>The compile tree is executed in a runops function.  There are two runops
 functions, in <samp>run.c</samp> and in <samp>dump.c</samp>.  
<code>Perl_runops_debug</code> is used
@@ -43280,7 +43787,7 @@
 Previous: <a href="#perlguts-Pluggable-runops" accesskey="p" 
rel="prev">perlguts Pluggable runops</a>, Up: <a href="#perlguts-Compiled-code" 
accesskey="u" rel="up">perlguts Compiled code</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Compile_002dtime-scope-hooks"></a>
-<h4 class="subsection">28.5.8 Compile-time scope hooks</h4>
+<h4 class="subsection">28.7.8 Compile-time scope hooks</h4>
 
 <p>As of perl 5.14 it is possible to hook into the compile-time lexical
 scope mechanism using <code>Perl_blockhook_register</code>. This is used like
@@ -43360,7 +43867,7 @@
 Next: <a 
href="#perlguts-How-multiple-interpreters-and-concurrency-are-supported" 
accesskey="n" rel="next">perlguts How multiple interpreters and concurrency are 
supported</a>, Previous: <a href="#perlguts-Compiled-code" accesskey="p" 
rel="prev">perlguts Compiled code</a>, Up: <a href="#perlguts" accesskey="u" 
rel="up">perlguts</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Examining-internal-data-structures-with-the-dump-functions"></a>
-<h3 class="section">28.6 Examining internal data structures with the 
<code>dump</code> functions</h3>
+<h3 class="section">28.8 Examining internal data structures with the 
<code>dump</code> functions</h3>
 
 <p>To aid debugging, the source file <samp>dump.c</samp> contains a number of
 functions which produce formatted output of internal data structures.
@@ -43402,7 +43909,7 @@
 Next: <a href="#perlguts-Internal-Functions" accesskey="n" rel="next">perlguts 
Internal Functions</a>, Previous: <a 
href="#perlguts-Examining-internal-data-structures-with-the-dump-functions" 
accesskey="p" rel="prev">perlguts Examining internal data structures with the 
<code>dump</code> functions</a>, Up: <a href="#perlguts" accesskey="u" 
rel="up">perlguts</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="How-multiple-interpreters-and-concurrency-are-supported"></a>
-<h3 class="section">28.7 How multiple interpreters and concurrency are 
supported</h3>
+<h3 class="section">28.9 How multiple interpreters and concurrency are 
supported</h3>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a 
href="#perlguts-Background-and-PERL_005fIMPLICIT_005fCONTEXT" 
accesskey="1">perlguts Background and 
PERL_IMPLICIT_CONTEXT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -43424,7 +43931,7 @@
 Next: <a href="#perlguts-So-what-happened-to-dTHR_003f" accesskey="n" 
rel="next">perlguts So what happened to dTHR?</a>, Up: <a 
href="#perlguts-How-multiple-interpreters-and-concurrency-are-supported" 
accesskey="u" rel="up">perlguts How multiple interpreters and concurrency are 
supported</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Background-and-PERL_005fIMPLICIT_005fCONTEXT"></a>
-<h4 class="subsection">28.7.1 Background and PERL_IMPLICIT_CONTEXT</h4>
+<h4 class="subsection">28.9.1 Background and PERL_IMPLICIT_CONTEXT</h4>
 
 <p>The Perl interpreter can be regarded as a closed box: it has an API
 for feeding it code or otherwise making it do things, but it also has
@@ -43450,7 +43957,7 @@
 the function  Perl_GetVars().  The PERL_GLOBAL_STRUCT_PRIVATE goes
 one step further, there is still a single struct (allocated in main()
 either from heap or from stack) but there are no global data symbols
-pointing to it.  In either case the global struct should be initialised
+pointing to it.  In either case the global struct should be initialized
 as the very first thing in main() using Perl_init_global_struct() and
 correspondingly tear it down after perl_free() using Perl_free_global_struct(),
 please see <samp>miniperlmain.c</samp> for usage details.  You may also need
@@ -43479,7 +43986,8 @@
 which will be private.  All functions whose names begin <code>S_</code> are 
private
 (think &quot;S&quot; for &quot;secret&quot; or &quot;static&quot;).  All other 
functions begin with
 &quot;Perl_&quot;, but just because a function begins with &quot;Perl_&quot; 
does not mean it is
-part of the API. (See <a href="#perlguts-Internal-Functions">Internal 
Functions</a>.) The easiest way to be <strong>sure</strong> a
+part of the API.  (See <a href="#perlguts-Internal-Functions">Internal
+Functions</a>.)  The easiest way to be <strong>sure</strong> a
 function is part of the API is to find its entry in <a 
href="perlapi.html#Top">(perlapi)</a>.
 If it exists in <a href="perlapi.html#Top">(perlapi)</a>, it&rsquo;s part of 
the API.  If it doesn&rsquo;t, and you
 think it should be (i.e., you need it for your extension), send mail via
@@ -43561,7 +44069,7 @@
 Next: <a href="#perlguts-How-do-I-use-all-this-in-extensions_003f" 
accesskey="n" rel="next">perlguts How do I use all this in extensions?</a>, 
Previous: <a href="#perlguts-Background-and-PERL_005fIMPLICIT_005fCONTEXT" 
accesskey="p" rel="prev">perlguts Background and PERL_IMPLICIT_CONTEXT</a>, Up: 
<a href="#perlguts-How-multiple-interpreters-and-concurrency-are-supported" 
accesskey="u" rel="up">perlguts How multiple interpreters and concurrency are 
supported</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="So-what-happened-to-dTHR_003f"></a>
-<h4 class="subsection">28.7.2 So what happened to dTHR?</h4>
+<h4 class="subsection">28.9.2 So what happened to dTHR?</h4>
 
 <p><code>dTHR</code> was introduced in perl 5.005 to support the older thread 
model.
 The older thread model now uses the <code>THX</code> mechanism to pass context
@@ -43576,7 +44084,7 @@
 Next: <a 
href="#perlguts-Should-I-do-anything-special-if-I-call-perl-from-multiple-threads_003f"
 accesskey="n" rel="next">perlguts Should I do anything special if I call perl 
from multiple threads?</a>, Previous: <a 
href="#perlguts-So-what-happened-to-dTHR_003f" accesskey="p" 
rel="prev">perlguts So what happened to dTHR?</a>, Up: <a 
href="#perlguts-How-multiple-interpreters-and-concurrency-are-supported" 
accesskey="u" rel="up">perlguts How multiple interpreters and concurrency are 
supported</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="How-do-I-use-all-this-in-extensions_003f"></a>
-<h4 class="subsection">28.7.3 How do I use all this in extensions?</h4>
+<h4 class="subsection">28.9.3 How do I use all this in extensions?</h4>
 
 <p>When Perl is built with PERL_IMPLICIT_CONTEXT, extensions that call
 any functions in the Perl API will need to pass the initial context
@@ -43696,7 +44204,7 @@
 Next: <a href="#perlguts-Future-Plans-and-PERL_005fIMPLICIT_005fSYS" 
accesskey="n" rel="next">perlguts Future Plans and PERL_IMPLICIT_SYS</a>, 
Previous: <a href="#perlguts-How-do-I-use-all-this-in-extensions_003f" 
accesskey="p" rel="prev">perlguts How do I use all this in extensions?</a>, Up: 
<a href="#perlguts-How-multiple-interpreters-and-concurrency-are-supported" 
accesskey="u" rel="up">perlguts How multiple interpreters and concurrency are 
supported</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a 
name="Should-I-do-anything-special-if-I-call-perl-from-multiple-threads_003f"></a>
-<h4 class="subsection">28.7.4 Should I do anything special if I call perl from 
multiple threads?</h4>
+<h4 class="subsection">28.9.4 Should I do anything special if I call perl from 
multiple threads?</h4>
 
 <p>If you create interpreters in one thread and then proceed to call them in
 another, you need to make sure perl&rsquo;s own Thread Local Storage (TLS) 
slot is
@@ -43723,7 +44231,7 @@
 Previous: <a 
href="#perlguts-Should-I-do-anything-special-if-I-call-perl-from-multiple-threads_003f"
 accesskey="p" rel="prev">perlguts Should I do anything special if I call perl 
from multiple threads?</a>, Up: <a 
href="#perlguts-How-multiple-interpreters-and-concurrency-are-supported" 
accesskey="u" rel="up">perlguts How multiple interpreters and concurrency are 
supported</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Future-Plans-and-PERL_005fIMPLICIT_005fSYS"></a>
-<h4 class="subsection">28.7.5 Future Plans and PERL_IMPLICIT_SYS</h4>
+<h4 class="subsection">28.9.5 Future Plans and PERL_IMPLICIT_SYS</h4>
 
 <p>Just as PERL_IMPLICIT_CONTEXT provides a way to bundle up everything
 that the interpreter knows about itself and pass it around, so too are
@@ -43752,7 +44260,7 @@
 Next: <a href="#perlguts-Unicode-Support" accesskey="n" rel="next">perlguts 
Unicode Support</a>, Previous: <a 
href="#perlguts-How-multiple-interpreters-and-concurrency-are-supported" 
accesskey="p" rel="prev">perlguts How multiple interpreters and concurrency are 
supported</a>, Up: <a href="#perlguts" accesskey="u" rel="up">perlguts</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Internal-Functions"></a>
-<h3 class="section">28.8 Internal Functions</h3>
+<h3 class="section">28.10 Internal Functions</h3>
 
 <p>All of Perl&rsquo;s internal functions which will be exposed to the outside
 world are prefixed by <code>Perl_</code> so that they will not conflict with XS
@@ -43782,7 +44290,8 @@
 <dl compact="compact">
 <dt>A</dt>
 <dd><a name="perlguts-A"></a>
-<p>This function is a part of the public API. All such functions should also
+<p>This function is a part of the public
+API.  All such functions should also
 have &rsquo;d&rsquo;, very few do not.
 </p>
 </dd>
@@ -43898,7 +44407,7 @@
 Next: <a 
href="#perlguts-Pointer_002dTo_002dInteger-and-Integer_002dTo_002dPointer" 
accesskey="n" rel="next">perlguts Pointer-To-Integer and 
Integer-To-Pointer</a>, Up: <a href="#perlguts-Internal-Functions" 
accesskey="u" rel="up">perlguts Internal Functions</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Formatted-Printing-of-IVs_002c-UVs_002c-and-NVs"></a>
-<h4 class="subsection">28.8.1 Formatted Printing of IVs, UVs, and NVs</h4>
+<h4 class="subsection">28.10.1 Formatted Printing of IVs, UVs, and NVs</h4>
 
 <p>If you are printing IVs, UVs, or NVS instead of the stdio(3) style
 formatting codes like <code>%d</code>, <code>%ld</code>, <code>%f</code>, you 
should use the
@@ -43929,7 +44438,7 @@
 Next: <a href="#perlguts-Exception-Handling" accesskey="n" rel="next">perlguts 
Exception Handling</a>, Previous: <a 
href="#perlguts-Formatted-Printing-of-IVs_002c-UVs_002c-and-NVs" accesskey="p" 
rel="prev">perlguts Formatted Printing of IVs, UVs, and NVs</a>, Up: <a 
href="#perlguts-Internal-Functions" accesskey="u" rel="up">perlguts Internal 
Functions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Pointer_002dTo_002dInteger-and-Integer_002dTo_002dPointer"></a>
-<h4 class="subsection">28.8.2 Pointer-To-Integer and Integer-To-Pointer</h4>
+<h4 class="subsection">28.10.2 Pointer-To-Integer and Integer-To-Pointer</h4>
 
 <p>Because pointer size does not necessarily equal integer size,
 use the follow macros to do it right.
@@ -43956,7 +44465,7 @@
 Next: <a href="#perlguts-Source-Documentation" accesskey="n" 
rel="next">perlguts Source Documentation</a>, Previous: <a 
href="#perlguts-Pointer_002dTo_002dInteger-and-Integer_002dTo_002dPointer" 
accesskey="p" rel="prev">perlguts Pointer-To-Integer and 
Integer-To-Pointer</a>, Up: <a href="#perlguts-Internal-Functions" 
accesskey="u" rel="up">perlguts Internal Functions</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Exception-Handling"></a>
-<h4 class="subsection">28.8.3 Exception Handling</h4>
+<h4 class="subsection">28.10.3 Exception Handling</h4>
 
 <p>There are a couple of macros to do very basic exception handling in XS
 modules. You have to define <code>NO_XSLOCKS</code> before including 
<samp>XSUB.h</samp> to
@@ -43996,7 +44505,7 @@
 Next: <a href="#perlguts-Backwards-compatibility" accesskey="n" 
rel="next">perlguts Backwards compatibility</a>, Previous: <a 
href="#perlguts-Exception-Handling" accesskey="p" rel="prev">perlguts Exception 
Handling</a>, Up: <a href="#perlguts-Internal-Functions" accesskey="u" 
rel="up">perlguts Internal Functions</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Source-Documentation"></a>
-<h4 class="subsection">28.8.4 Source Documentation</h4>
+<h4 class="subsection">28.10.4 Source Documentation</h4>
 
 <p>There&rsquo;s an effort going on to document the internal functions and
 automatically produce reference manuals from them - <a 
href="perlapi.html#Top">(perlapi)</a> is one
@@ -44026,10 +44535,11 @@
 Previous: <a href="#perlguts-Source-Documentation" accesskey="p" 
rel="prev">perlguts Source Documentation</a>, Up: <a 
href="#perlguts-Internal-Functions" accesskey="u" rel="up">perlguts Internal 
Functions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Backwards-compatibility"></a>
-<h4 class="subsection">28.8.5 Backwards compatibility</h4>
+<h4 class="subsection">28.10.5 Backwards compatibility</h4>
 
-<p>The Perl API changes over time. New functions are added or the interfaces
-of existing functions are changed. The <code>Devel::PPPort</code> module tries 
to
+<p>The Perl API changes over time.  New functions are
+added or the interfaces of existing functions are
+changed.  The <code>Devel::PPPort</code> module tries to
 provide compatibility code for some of these changes, so XS writers don&rsquo;t
 have to code it themselves when supporting multiple versions of Perl.
 </p>
@@ -44053,7 +44563,7 @@
 Next: <a href="#perlguts-Custom-Operators" accesskey="n" rel="next">perlguts 
Custom Operators</a>, Previous: <a href="#perlguts-Internal-Functions" 
accesskey="p" rel="prev">perlguts Internal Functions</a>, Up: <a 
href="#perlguts" accesskey="u" rel="up">perlguts</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Unicode-Support"></a>
-<h3 class="section">28.9 Unicode Support</h3>
+<h3 class="section">28.11 Unicode Support</h3>
 
 <p>Perl 5.6.0 introduced Unicode support. It&rsquo;s important for porters and 
XS
 writers to understand this support and make sure that the code they
@@ -44081,7 +44591,7 @@
 Next: <a href="#perlguts-How-can-I-recognise-a-UTF_002d8-string_003f" 
accesskey="n" rel="next">perlguts How can I recognise a UTF-8 string?</a>, Up: 
<a href="#perlguts-Unicode-Support" accesskey="u" rel="up">perlguts Unicode 
Support</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="What-is-Unicode_002c-anyway_003f"></a>
-<h4 class="subsection">28.9.1 What <strong>is</strong> Unicode, anyway?</h4>
+<h4 class="subsection">28.11.1 What <strong>is</strong> Unicode, anyway?</h4>
 
 <p>In the olden, less enlightened times, we all used to use ASCII. Most of
 us did, anyway. The big problem with ASCII is that it&rsquo;s American. Well,
@@ -44112,7 +44622,7 @@
 Next: <a href="#perlguts-How-does-UTF_002d8-represent-Unicode-characters_003f" 
accesskey="n" rel="next">perlguts How does UTF-8 represent Unicode 
characters?</a>, Previous: <a href="#perlguts-What-is-Unicode_002c-anyway_003f" 
accesskey="p" rel="prev">perlguts What <strong>is</strong> Unicode, 
anyway?</a>, Up: <a href="#perlguts-Unicode-Support" accesskey="u" 
rel="up">perlguts Unicode Support</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="How-can-I-recognise-a-UTF_002d8-string_003f"></a>
-<h4 class="subsection">28.9.2 How can I recognise a UTF-8 string?</h4>
+<h4 class="subsection">28.11.2 How can I recognise a UTF-8 string?</h4>
 
 <p>You can&rsquo;t. This is because UTF-8 data is stored in bytes just like
 non-UTF-8 data. The Unicode character 200, (<code>0xC8</code> for you hex 
types)
@@ -44135,13 +44645,14 @@
 Next: <a href="#perlguts-How-does-Perl-store-UTF_002d8-strings_003f" 
accesskey="n" rel="next">perlguts How does Perl store UTF-8 strings?</a>, 
Previous: <a href="#perlguts-How-can-I-recognise-a-UTF_002d8-string_003f" 
accesskey="p" rel="prev">perlguts How can I recognise a UTF-8 string?</a>, Up: 
<a href="#perlguts-Unicode-Support" accesskey="u" rel="up">perlguts Unicode 
Support</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="How-does-UTF_002d8-represent-Unicode-characters_003f"></a>
-<h4 class="subsection">28.9.3 How does UTF-8 represent Unicode characters?</h4>
+<h4 class="subsection">28.11.3 How does UTF-8 represent Unicode 
characters?</h4>
 
 <p>As mentioned above, UTF-8 uses a variable number of bytes to store a
-character. Characters with values 0...127 are stored in one byte, just
-like good ol&rsquo; ASCII. Character 128 is stored as <code>v194.128</code>; 
this
-continues up to character 191, which is <code>v194.191</code>. Now we&rsquo;ve 
run out of
-bits (191 is binary <code>10111111</code>) so we move on; 192 is 
<code>v195.128</code>. And
+character.  Characters with values 0...127 are stored in one
+byte, just like good ol&rsquo; ASCII.  Character 128 is stored as
+<code>v194.128</code>; this continues up to character 191, which is
+<code>v194.191</code>.  Now we&rsquo;ve run out of bits (191 is binary
+<code>10111111</code>) so we move on; 192 is <code>v195.128</code>.  And
 so it goes on, moving to three bytes at character 2048.
 </p>
 <p>Assuming you know you&rsquo;re dealing with a UTF-8 string, you can find out
@@ -44162,7 +44673,7 @@
 <p>All bytes in a multi-byte UTF-8 character will have the high bit set,
 so you can test if you need to do something special with this
 character like this (the UTF8_IS_INVARIANT() is a macro that tests
-whether the byte can be encoded as a single byte even in UTF-8):
+whether the byte is encoded as a single byte even in UTF-8):
 </p>
 <pre class="verbatim">    U8 *utf;
     U8 *utf_end; /* 1 beyond buffer pointed to by utf */
@@ -44202,14 +44713,16 @@
 Next: <a href="#perlguts-How-do-I-convert-a-string-to-UTF_002d8_003f" 
accesskey="n" rel="next">perlguts How do I convert a string to UTF-8?</a>, 
Previous: <a 
href="#perlguts-How-does-UTF_002d8-represent-Unicode-characters_003f" 
accesskey="p" rel="prev">perlguts How does UTF-8 represent Unicode 
characters?</a>, Up: <a href="#perlguts-Unicode-Support" accesskey="u" 
rel="up">perlguts Unicode Support</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="How-does-Perl-store-UTF_002d8-strings_003f"></a>
-<h4 class="subsection">28.9.4 How does Perl store UTF-8 strings?</h4>
+<h4 class="subsection">28.11.4 How does Perl store UTF-8 strings?</h4>
 
 <p>Currently, Perl deals with Unicode strings and non-Unicode strings
 slightly differently. A flag in the SV, <code>SVf_UTF8</code>, indicates that 
the
 string is internally encoded as UTF-8. Without it, the byte value is the
 codepoint number and vice versa (in other words, the string is encoded
 as iso-8859-1, but <code>use feature 'unicode_strings'</code> is needed to get 
iso-8859-1
-semantics). You can check and manipulate this flag with the
+semantics).  This flag is only meaningful if the SV is <code>SvPOK</code>
+or immediately after stringification via <code>SvPV</code> or a similar
+macro.  You can check and manipulate this flag with the
 following macros:
 </p>
 <pre class="verbatim">    SvUTF8(sv)
@@ -44240,7 +44753,8 @@
 </pre>
 <p>The <code>char*</code> string does not tell you the whole story, and you 
can&rsquo;t
 copy or reconstruct an SV just by copying the string value. Check if the
-old SV has the UTF8 flag set, and act accordingly:
+old SV has the UTF8 flag set (<em>after</em> the <code>SvPV</code> call), and 
act
+accordingly:
 </p>
 <pre class="verbatim">    p = SvPV(sv, len);
     frobnicate(p);
@@ -44263,7 +44777,7 @@
 Next: <a href="#perlguts-Is-there-anything-else-I-need-to-know_003f" 
accesskey="n" rel="next">perlguts Is there anything else I need to know?</a>, 
Previous: <a href="#perlguts-How-does-Perl-store-UTF_002d8-strings_003f" 
accesskey="p" rel="prev">perlguts How does Perl store UTF-8 strings?</a>, Up: 
<a href="#perlguts-Unicode-Support" accesskey="u" rel="up">perlguts Unicode 
Support</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="How-do-I-convert-a-string-to-UTF_002d8_003f"></a>
-<h4 class="subsection">28.9.5 How do I convert a string to UTF-8?</h4>
+<h4 class="subsection">28.11.5 How do I convert a string to UTF-8?</h4>
 
 <p>If you&rsquo;re mixing UTF-8 and non-UTF-8 strings, it is necessary to 
upgrade
 one of the strings to UTF-8. If you&rsquo;ve got an SV, the easiest way to do
@@ -44294,13 +44808,14 @@
 Previous: <a href="#perlguts-How-do-I-convert-a-string-to-UTF_002d8_003f" 
accesskey="p" rel="prev">perlguts How do I convert a string to UTF-8?</a>, Up: 
<a href="#perlguts-Unicode-Support" accesskey="u" rel="up">perlguts Unicode 
Support</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Is-there-anything-else-I-need-to-know_003f"></a>
-<h4 class="subsection">28.9.6 Is there anything else I need to know?</h4>
+<h4 class="subsection">28.11.6 Is there anything else I need to know?</h4>
 
 <p>Not really. Just remember these things:
 </p>
 <ul>
 <li> There&rsquo;s no way to tell if a string is UTF-8 or not. You can tell if 
an SV
-is UTF-8 by looking at its <code>SvUTF8</code> flag. Don&rsquo;t forget to set 
the flag if
+is UTF-8 by looking at its <code>SvUTF8</code> flag after stringifying it
+with <code>SvPV</code> or a similar macro.  Don&rsquo;t forget to set the flag 
if
 something should be UTF-8. Treat the flag as part of the PV, even though
 it&rsquo;s not - if you pass on the PV to somewhere, pass on the flag too.
 
@@ -44311,7 +44826,8 @@
 <code>uvchr_to_utf8</code>, unless <code>UTF8_IS_INVARIANT(uv))</code> in 
which case
 you can use <code>*s = uv</code>.
 
-</li><li> Mixing UTF-8 and non-UTF-8 strings is tricky. Use 
<code>bytes_to_utf8</code> to get
+</li><li> Mixing UTF-8 and non-UTF-8 strings is
+tricky.  Use <code>bytes_to_utf8</code> to get
 a new string which is UTF-8 encoded, and then combine them.
 
 </li></ul>
@@ -44323,7 +44839,7 @@
 Next: <a href="#perlguts-AUTHORS" accesskey="n" rel="next">perlguts 
AUTHORS</a>, Previous: <a href="#perlguts-Unicode-Support" accesskey="p" 
rel="prev">perlguts Unicode Support</a>, Up: <a href="#perlguts" accesskey="u" 
rel="up">perlguts</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Custom-Operators"></a>
-<h3 class="section">28.10 Custom Operators</h3>
+<h3 class="section">28.12 Custom Operators</h3>
 
 <p>Custom operator support is an experimental feature that allows you to
 define your own ops. This is primarily to allow the building of
@@ -44452,7 +44968,7 @@
 Next: <a href="#perlguts-SEE-ALSO" accesskey="n" rel="next">perlguts SEE 
ALSO</a>, Previous: <a href="#perlguts-Custom-Operators" accesskey="p" 
rel="prev">perlguts Custom Operators</a>, Up: <a href="#perlguts" accesskey="u" 
rel="up">perlguts</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="AUTHORS-2"></a>
-<h3 class="section">28.11 AUTHORS</h3>
+<h3 class="section">28.13 AUTHORS</h3>
 
 <p>Until May 1997, this document was maintained by Jeff Okamoto
 &lt;address@hidden&gt;.  It is now maintained as part of Perl
@@ -44470,7 +44986,7 @@
 Previous: <a href="#perlguts-AUTHORS" accesskey="p" rel="prev">perlguts 
AUTHORS</a>, Up: <a href="#perlguts" accesskey="u" rel="up">perlguts</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="SEE-ALSO-14"></a>
-<h3 class="section">28.12 SEE ALSO</h3>
+<h3 class="section">28.14 SEE ALSO</h3>
 
 <p><a href="perlapi.html#Top">(perlapi)</a>, <a 
href="perlintern.html#Top">(perlintern)</a>, <a 
href="perlxs.html#Top">(perlxs)</a>, <a href="#perlembed-NAME">perlembed 
NAME</a>
 </p>
@@ -44555,6 +45071,13 @@
 </p>
 <pre class="verbatim">  % git clone git://perl5.git.perl.org/perl.git perl
 </pre>
+</li><li> Ensure you&rsquo;re following the latest advice
+
+<p>In case the advice in this guide has been updated recently, read the
+latest version directly from the perl source:
+</p>
+<pre class="verbatim">  % perldoc pod/perlhack.pod
+</pre>
 </li><li> Make your change
 
 <p>Hack, hack, hack.
@@ -44582,22 +45105,41 @@
 <p>The next step is to submit your patch to the Perl core ticket system
 via email.
 </p>
-<p>Assuming your patch consists of a single git commit, the following
-writes the file as a MIME attachment, and sends it with a meaningful
-subject:
+<p>If your changes are in a single git commit, run the following commands
+to generate the patch file and attach it to your bug report:
 </p>
-<pre class="verbatim">  % git format-patch -1 --attach
-  % perlbug -s &quot;[PATCH] $(git log -1 --oneline HEAD)&quot; -f 0001-*.patch
+<pre class="verbatim">  % git format-patch -1
+  % ./perl -Ilib utils/perlbug -p 0001-*.patch
 </pre>
 <p>The perlbug program will ask you a few questions about your email
 address and the patch you&rsquo;re submitting. Once you&rsquo;ve answered them 
it
 will submit your patch via email.
 </p>
+<p>If your changes are in multiple commits, generate a patch file for each
+one and provide them to perlbug&rsquo;s <code>-p</code> option separated by 
commas:
+</p>
+<pre class="verbatim">  % git format-patch -3
+  % ./perl -Ilib utils/perlbug -p 0001-fix1.patch,0002-fix2.patch,\
+  &gt; 0003-fix3.patch
+</pre>
+<p>When prompted, pick a subject that summarizes your changes.
+</p>
 </li><li> Thank you
 
 <p>The porters appreciate the time you spent helping to make Perl better.
 Thank you!
 </p>
+</li><li> Next time
+
+<p>The next time you wish to make a patch, you need to start from the
+latest perl in a pristine state.  Check you don&rsquo;t have any local changes
+or added files in your perl check-out which you wish to keep, then run
+these commands:
+</p>
+<pre class="verbatim">  % git pull
+  % git reset --hard origin/blead
+  % git clean -dxf
+</pre>
 </li></ul>
 
 <hr>
@@ -44687,8 +45229,8 @@
 <h3 class="section">29.6 GETTING THE PERL SOURCE</h3>
 
 <p>All of Perl&rsquo;s source code is kept centrally in a Git repository at
-<em>perl5.git.perl.org</em>. The repository contains many Perl revisions from
-Perl 1 onwards and all the revisions from Perforce, the previous
+<em>perl5.git.perl.org</em>.  The repository contains many Perl revisions
+from Perl 1 onwards and all the revisions from Perforce, the previous
 version control system.
 </p>
 <p>For much more detail on using git with the Perl repository, please see
@@ -44740,7 +45282,7 @@
 the tree, see recent commits, subscribe to RSS feeds for the changes,
 search for particular commits and more. You may access it at
 <a 
href="http://perl5.git.perl.org/perl.git";>http://perl5.git.perl.org/perl.git</a>.
 A mirror of the repository is
-found at <a 
href="http://github.com/mirrors/perl";>http://github.com/mirrors/perl</a>.
+found at <a 
href="https://github.com/Perl/perl5";>https://github.com/Perl/perl5</a>.
 </p>
 <hr>
 <a name="perlhack-Read-access-via-rsync"></a>
@@ -44840,9 +45382,10 @@
 volunteers, and be polite.
 </p>
 <p>Changes are always applied directly to the main development branch,
-called &quot;blead&quot;. Some patches may be backported to a maintenance 
branch.
-If you think your patch is appropriate for the maintenance branch,
-please explain why when you submit it.
+called &quot;blead&quot;.  Some patches may be backported to a maintenance
+branch.  If you think your patch is appropriate for the maintenance
+branch (see <a href="#perlpolicy-MAINTENANCE-BRANCHES">perlpolicy MAINTENANCE 
BRANCHES</a>), please explain why
+when you submit it.
 </p>
 <hr>
 <a name="perlhack-Getting-your-patch-accepted"></a>
@@ -44881,8 +45424,8 @@
 <p>If you used git to check out the Perl source, then using <code>git
 format-patch</code> will produce a patch in a style suitable for Perl. The
 <code>format-patch</code> command produces one patch file for each commit you
-made. If you prefer to send a single patch for all commits, you can use
-<code>git diff</code>.
+made.  If you prefer to send a single patch for all commits, you can
+use <code>git diff</code>.
 </p>
 <pre class="verbatim">  % git checkout blead
   % git pull
@@ -44979,12 +45522,12 @@
 <a name="Comments_002c-Comments_002c-Comments"></a>
 <h4 class="subsubsection">29.7.2.3 Comments, Comments, Comments</h4>
 
-<p>Be sure to adequately comment your code. While commenting every line is
-unnecessary, anything that takes advantage of side effects of
+<p>Be sure to adequately comment your code.  While commenting every line
+is unnecessary, anything that takes advantage of side effects of
 operators, that creates changes that will be felt outside of the
 function being patched, or that others may find confusing should be
-documented. If you are going to err, it is better to err on the side of
-adding too many comments than too few.
+documented.  If you are going to err, it is better to err on the side
+of adding too many comments than too few.
 </p>
 <p>The best comments explain <em>why</em> the code does what it does, not 
<em>what
 it does</em>.
@@ -45043,8 +45586,8 @@
 need to be able to compile without warnings with commonly used extra
 compilation flags, such as gcc&rsquo;s <code>-Wswitch-default</code> which 
warns
 whenever a switch statement does not have a &quot;default&quot; case.  The use 
of
-these extra flags is to catch potential problems in legal C code, and is
-often used by Perl aggregators, such as Linux distributors.
+these extra flags is to catch potential problems in legal C code, and
+is often used by Perl aggregators, such as Linux distributors.
 
 </li></ul>
 
@@ -45150,8 +45693,8 @@
 
 <p>For changes significant enough to warrant a <samp>pod/perldelta.pod</samp> 
entry,
 the porters will greatly appreciate it if you submit a delta entry
-along with your actual change. Significant changes include, but are not
-limited to:
+along with your actual change.  Significant changes include, but are
+not limited to:
 </p>
 <ul>
 <li> Adding, deprecating, or removing core features
@@ -45451,9 +45994,9 @@
 <p>Working code is always preferred to pie-in-the-sky ideas. A patch to
 add a feature stands a much higher chance of making it to the language
 than does a random feature request, no matter how fervently argued the
-request might be. This ties into &quot;Will it be useful?&quot;, as the fact 
that
-someone took the time to make the patch demonstrates a strong desire
-for the feature.
+request might be.  This ties into &quot;Will it be useful?&quot;, as the fact
+that someone took the time to make the patch demonstrates a strong
+desire for the feature.
 </p>
 <hr>
 <a name="perlhack-TESTING"></a>
@@ -45468,11 +46011,12 @@
 &quot;ok/not ok&quot; run through Test::Harness, but there are a few special
 considerations.
 </p>
-<p>There are three ways to write a test in the core. <a 
href="Test-More.html#Top">(Test-More)</a>,
-<samp>t/test.pl</samp> and ad hoc <code>print $test ? &quot;ok 42\n&quot; : 
&quot;not ok 42\n&quot;</code>. The
-decision of which to use depends on what part of the test suite you&rsquo;re
-working on. This is a measure to prevent a high-level failure (such as
-Config.pm breaking) from causing basic functionality tests to fail.
+<p>There are three ways to write a test in the core: <a 
href="Test-More.html#Top">(Test-More)</a>,
+<samp>t/test.pl</samp> and ad hoc <code>print $test ? &quot;ok 42\n&quot; : 
&quot;not ok 42\n&quot;</code>.
+The decision of which to use depends on what part of the test suite
+you&rsquo;re working on.  This is a measure to prevent a high-level failure
+(such as Config.pm breaking) from causing basic functionality tests to
+fail.
 </p>
 <p>The <samp>t/test.pl</samp> library provides some of the features of
 <a href="Test-More.html#Top">(Test-More)</a>, but avoids loading most modules 
and uses as few core
@@ -45486,9 +46030,9 @@
 
 <p>Since we don&rsquo;t know if require works, or even subroutines, use ad hoc
 tests for these three. Step carefully to avoid using the feature being
-tested.  Tests in <samp>t/opbasic</samp>, for instance, have been placed there 
rather
-than in <samp>t/op</samp> because they test functionality which 
<samp>t/test.pl</samp> presumes
-has already been demonstrated to work.
+tested.  Tests in <samp>t/opbasic</samp>, for instance, have been placed there
+rather than in <samp>t/op</samp> because they test functionality which
+<samp>t/test.pl</samp> presumes has already been demonstrated to work.
 </p>
 </li><li> <samp>t/cmd</samp>, <samp>t/run</samp>, <samp>t/io</samp> and 
<samp>t/op</samp>
 
@@ -45506,10 +46050,10 @@
 </li></ul>
 
 <p>When you say &quot;make test&quot;, Perl uses the <samp>t/TEST</samp> 
program to run the
-test suite (except under Win32 where it uses <samp>t/harness</samp> instead). 
All
-tests are run from the <samp>t/</samp> directory, <strong>not</strong> the 
directory which
-contains the test. This causes some problems with the tests in 
<samp>lib/</samp>,
-so here&rsquo;s some opportunity for some patching.
+test suite (except under Win32 where it uses <samp>t/harness</samp> instead).
+All tests are run from the <samp>t/</samp> directory, <strong>not</strong> the 
directory which
+contains the test.  This causes some problems with the tests in
+<samp>lib/</samp>, so here&rsquo;s some opportunity for some patching.
 </p>
 <p>You must be triply conscious of cross-platform concerns. This usually
 boils down to using <a href="File-Spec.html#Top">(File-Spec)</a> and avoiding 
things like <code>fork()</code>
@@ -45547,68 +46091,25 @@
 <p>This runs some basic sanity tests on the source tree and helps catch
 basic errors before you submit a patch.
 </p>
-</li><li> coretest
-
-<p>Run <samp>perl</samp> on all core tests (<samp>t/*</samp> and 
<samp>lib/[a-z]*</samp> pragma tests).
-</p>
-<p>(Not available on Win32)
-</p>
-</li><li> test.deparse
-
-<p>Run all the tests through <a href="B-Deparse.html#Top">(B-Deparse)</a>. Not 
all tests will succeed.
-</p>
-<p>(Not available on Win32)
-</p>
-</li><li> test.taintwarn
-
-<p>Run all tests with the <strong>-t</strong> command-line switch. Not all 
tests are
-expected to succeed (until they&rsquo;re specifically fixed, of course).
-</p>
-<p>(Not available on Win32)
-</p>
 </li><li> minitest
 
 <p>Run <samp>miniperl</samp> on <samp>t/base</samp>, <samp>t/comp</samp>, 
<samp>t/cmd</samp>, <samp>t/run</samp>, <samp>t/io</samp>,
 <samp>t/op</samp>, <samp>t/uni</samp> and <samp>t/mro</samp> tests.
 </p>
-</li><li> test.valgrind check.valgrind utest.valgrind ucheck.valgrind
+</li><li> test.valgrind check.valgrind
 
 <p>(Only in Linux) Run all the tests using the memory leak + naughty
 memory access tool &quot;valgrind&quot;. The log files will be named
 <samp>testname.valgrind</samp>.
 </p>
-</li><li> test.torture torturetest
-
-<p>Run all the usual tests and some extra tests. As of Perl 5.8.0, the
-only extra tests are Abigail&rsquo;s JAPHs, <samp>t/japh/abigail.t</samp>.
-</p>
-<p>You can also run the torture test with <samp>t/harness</samp> by giving
-<code>-torture</code> argument to <samp>t/harness</samp>.
-</p>
-</li><li> utest ucheck test.utf8 check.utf8
-
-<p>Run all the tests with -Mutf8. Not all tests will succeed.
-</p>
-<p>(Not available on Win32)
-</p>
-</li><li> minitest.utf16 test.utf16
-
-<p>Runs the tests with UTF-16 encoded scripts, encoded with different
-versions of this encoding.
-</p>
-<p><code>make utest.utf16</code> runs the test suite with a combination of 
<code>-utf8</code>
-and <code>-utf16</code> arguments to <samp>t/TEST</samp>.
-</p>
-<p>(Not available on Win32)
-</p>
 </li><li> test_harness
 
 <p>Run the test suite with the <samp>t/harness</samp> controlling program, 
instead
 of <samp>t/TEST</samp>. <samp>t/harness</samp> is more sophisticated, and uses 
the
 <a href="Test-Harness.html#Top">(Test-Harness)</a> module, thus using this 
test target supposes that perl
 mostly works. The main advantage for our purposes is that it prints a
-detailed summary of failed tests at the end. Also, unlike <samp>t/TEST</samp>, 
it
-doesn&rsquo;t redirect stderr to stdout.
+detailed summary of failed tests at the end.  Also, unlike <samp>t/TEST</samp>,
+it doesn&rsquo;t redirect stderr to stdout.
 </p>
 <p>Note that under Win32 <samp>t/harness</samp> is always used instead of 
<samp>t/TEST</samp>,
 so there is no special &quot;test_harness&quot; target.
@@ -45648,8 +46149,8 @@
 to <code>make</code> utilities to interact with their job schedulers.
 </p>
 <p>Note that currently some test scripts may fail when run in parallel
-(most notably <samp>ext/IO/t/io_dir.t</samp>). If necessary, run just the 
failing
-scripts again sequentially and see if the failures go away.
+(most notably <samp>ext/IO/t/io_dir.t</samp>).  If necessary, run just the
+failing scripts again sequentially and see if the failures go away.
 </p>
 <hr>
 <a name="perlhack-Running-tests-by-hand"></a>
@@ -45703,9 +46204,9 @@
 </p>
 </li><li> -re=PATTERN
 
-<p>Filter the file list so that all the test files run match PATTERN. Note
-that this form is distinct from the <strong>-re LIST OF PATTERNS</strong> form 
below
-in that it allows the file list to be provided as well.
+<p>Filter the file list so that all the test files run match PATTERN.
+Note that this form is distinct from the <strong>-re LIST OF PATTERNS</strong> 
form
+below in that it allows the file list to be provided as well.
 </p>
 </li><li> -re LIST OF PATTERNS
 
@@ -45742,9 +46243,9 @@
 </p>
 </li><li> PERL_SKIP_TTY_TEST
 
-<p>if set, tells to skip the tests that need a terminal. It&rsquo;s actually 
set
-automatically by the Makefile, but can also be forced artificially by
-running &rsquo;make test_notty&rsquo;.
+<p>if set, tells to skip the tests that need a terminal.  It&rsquo;s actually
+set automatically by the Makefile, but can also be forced artificially
+by running &rsquo;make test_notty&rsquo;.
 </p>
 </li></ul>
 
@@ -45780,8 +46281,8 @@
 </li><li> PERL_TEST_MEMORY
 
 <p>Setting this variable includes the tests in <samp>t/bigmem/</samp>.  This 
should
-be set to the number of gigabytes of memory available for testing,
-eg. <code>PERL_TEST_MEMORY=4</code> indicates that tests that require 4GiB of
+be set to the number of gigabytes of memory available for testing, eg.
+<code>PERL_TEST_MEMORY=4</code> indicates that tests that require 4GiB of
 available memory can be run safely.
 </p>
 </li></ul>
@@ -45908,8 +46409,8 @@
 README if you find anything missing or changed over a new OS release.
 
 </li><li> Find an area of Perl that seems interesting to you, and see if you 
can
-work out how it works. Scan through the source, and step over it in the
-debugger. Play, poke, investigate, fiddle! You&rsquo;ll probably get to
+work out how it works.  Scan through the source, and step over it in
+the debugger.  Play, poke, investigate, fiddle! You&rsquo;ll probably get to
 understand not just your chosen area but a much wider range of
 <samp>perl</samp>&rsquo;s activity as well, and probably sooner than 
you&rsquo;d think.
 
@@ -46606,7 +47107,16 @@
 <p>If you really want just plain byte strings, use my_snprintf() and
 my_vsnprintf() instead, which will try to use snprintf() and
 vsnprintf() if those safer APIs are available. If you want something
-fancier than a plain byte string, use SVs and Perl_sv_catpvf().
+fancier than a plain byte string, use
+<a href="perlapi.html#form">(perlapi)<code>Perl_form</code>()</a> or SVs and
+<a 
href="perlapi.html#sv_005fcatpvf">(perlapi)<code>Perl_sv_catpvf()</code></a>.
+</p>
+<p>Note that glibc <code>printf()</code>, <code>sprintf()</code>, etc. are 
buggy before glibc
+version 2.17.  They won&rsquo;t allow a <code>%.s</code> format with a 
precision to
+create a string that isn&rsquo;t valid UTF-8 if the current underlying locale
+of the program is UTF-8.  What happens is that the <code>%s</code> and its 
operand are
+simply skipped without any notice.
+<a 
href="https://sourceware.org/bugzilla/show_bug.cgi?id=6530";>https://sourceware.org/bugzilla/show_bug.cgi?id=6530</a>.
 </p>
 </li></ul>
 
@@ -46635,6 +47145,10 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlhacktips-Dumping-Perl-Data-Structures" accesskey="4">perlhacktips 
Dumping Perl Data Structures</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perlhacktips-Using-gdb-to-look-at-specific-parts-of-a-program" 
accesskey="5">perlhacktips Using gdb to look at specific parts of a 
program</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perlhacktips-Using-gdb-to-look-at-what-the-parser_002flexer-are-doing" 
accesskey="6">perlhacktips Using gdb to look at what the parser/lexer are 
doing</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
 </table>
 
 <hr>
@@ -46746,6 +47260,27 @@
 <p>Just pressing Enter will do the most recent operation again - it&rsquo;s a
 blessing when stepping through miles of source code.
 </p>
+</li><li> ptype
+
+<p>Prints the C definition of the argument given.
+</p>
+<pre class="verbatim">  (gdb) ptype PL_op
+  type = struct op {
+      OP *op_next;
+      OP *op_sibling;
+      OP *(*op_ppaddr)(void);
+      PADOFFSET op_targ;
+      unsigned int op_type : 9;
+      unsigned int op_opt : 1;
+      unsigned int op_slabbed : 1;
+      unsigned int op_savefree : 1;
+      unsigned int op_static : 1;
+      unsigned int op_folded : 1;
+      unsigned int op_spare : 2;
+      U8 op_flags;
+      U8 op_private;
+  } *
+</pre>
 </li><li> print
 
 <p>Execute the given C code and print its results. <strong>WARNING</strong>: 
Perl makes
@@ -46785,7 +47320,7 @@
 <a name="perlhacktips-Dumping-Perl-Data-Structures"></a>
 <div class="header">
 <p>
-Previous: <a href="#perlhacktips-gdb-macro-support" accesskey="p" 
rel="prev">perlhacktips gdb macro support</a>, Up: <a 
href="#perlhacktips-DEBUGGING" accesskey="u" rel="up">perlhacktips 
DEBUGGING</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
+Next: <a href="#perlhacktips-Using-gdb-to-look-at-specific-parts-of-a-program" 
accesskey="n" rel="next">perlhacktips Using gdb to look at specific parts of a 
program</a>, Previous: <a href="#perlhacktips-gdb-macro-support" accesskey="p" 
rel="prev">perlhacktips gdb macro support</a>, Up: <a 
href="#perlhacktips-DEBUGGING" accesskey="u" rel="up">perlhacktips 
DEBUGGING</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Dumping-Perl-Data-Structures"></a>
 <h4 class="subsection">30.4.4 Dumping Perl Data Structures</h4>
@@ -46837,13 +47372,15 @@
 <p>Since we don&rsquo;t have an NV for <code>$b</code>, we&rsquo;ll have to 
use <code>sv_2nv</code> to
 convert it. If we step again, we&rsquo;ll find ourselves there:
 </p>
-<pre class="verbatim">    Perl_sv_2nv (sv=0xa0675d0) at sv.c:1669
+<pre class="verbatim">    (gdb) step
+    Perl_sv_2nv (sv=0xa0675d0) at sv.c:1669
     1669        if (!sv)
     (gdb)
 </pre>
 <p>We can now use <code>Perl_sv_dump</code> to investigate the SV:
 </p>
-<pre class="verbatim">    SV = PV(0xa057cc0) at 0xa0675d0
+<pre class="verbatim">    (gdb) print Perl_sv_dump(sv)
+    SV = PV(0xa057cc0) at 0xa0675d0
     REFCNT = 1
     FLAGS = (POK,pPOK)
     PV = 0xa06a510 &quot;6XXXX&quot;\0
@@ -46863,7 +47400,8 @@
 <code>PL_op</code>, and we can dump it with <code>Perl_op_dump</code>. 
This&rsquo;ll give us
 similar output to <a href="B-Debug.html#Top">(B-Debug)B::Debug</a>.
 </p>
-<pre class="verbatim">    {
+<pre class="verbatim">    (gdb) print Perl_op_dump(PL_op)
+    {
     13  TYPE = add  ===&gt; 14
         TARG = 1
         FLAGS = (SCALAR,KIDS)
@@ -46881,6 +47419,61 @@
 <p># finish this later #
 </p>
 <hr>
+<a name="perlhacktips-Using-gdb-to-look-at-specific-parts-of-a-program"></a>
+<div class="header">
+<p>
+Next: <a 
href="#perlhacktips-Using-gdb-to-look-at-what-the-parser_002flexer-are-doing" 
accesskey="n" rel="next">perlhacktips Using gdb to look at what the 
parser/lexer are doing</a>, Previous: <a 
href="#perlhacktips-Dumping-Perl-Data-Structures" accesskey="p" 
rel="prev">perlhacktips Dumping Perl Data Structures</a>, Up: <a 
href="#perlhacktips-DEBUGGING" accesskey="u" rel="up">perlhacktips 
DEBUGGING</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
+</div>
+<a name="Using-gdb-to-look-at-specific-parts-of-a-program"></a>
+<h4 class="subsection">30.4.5 Using gdb to look at specific parts of a 
program</h4>
+
+<p>With the example above, you knew to look for <code>Perl_pp_add</code>, but 
what if 
+there were multiple calls to it all over the place, or you didn&rsquo;t know 
what 
+the op was you were looking for?
+</p>
+<p>One way to do this is to inject a rare call somewhere near what 
you&rsquo;re looking 
+for.  For example, you could add <code>study</code> before your method:
+</p>
+<pre class="verbatim">    study;
+</pre>
+<p>And in gdb do:
+</p>
+<pre class="verbatim">    (gdb) break Perl_pp_study
+</pre>
+<p>And then step until you hit what you&rsquo;re
+looking for.  This works well in a loop 
+if you want to only break at certain iterations:
+</p>
+<pre class="verbatim">    for my $c (1..100) {
+        study if $c == 50;
+    }
+</pre>
+<hr>
+<a 
name="perlhacktips-Using-gdb-to-look-at-what-the-parser_002flexer-are-doing"></a>
+<div class="header">
+<p>
+Previous: <a 
href="#perlhacktips-Using-gdb-to-look-at-specific-parts-of-a-program" 
accesskey="p" rel="prev">perlhacktips Using gdb to look at specific parts of a 
program</a>, Up: <a href="#perlhacktips-DEBUGGING" accesskey="u" 
rel="up">perlhacktips DEBUGGING</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+</div>
+<a name="Using-gdb-to-look-at-what-the-parser_002flexer-are-doing"></a>
+<h4 class="subsection">30.4.6 Using gdb to look at what the parser/lexer are 
doing</h4>
+
+<p>If you want to see what perl is doing when parsing/lexing your code, you 
can 
+use <code>BEGIN {}</code>:
+</p>
+<pre class="verbatim">    print &quot;Before\n&quot;;
+    BEGIN { study; }
+    print &quot;After\n&quot;;
+</pre>
+<p>And in gdb:
+</p>
+<pre class="verbatim">    (gdb) break Perl_pp_study
+</pre>
+<p>If you want to see what the parser/lexer is doing inside of <code>if</code> 
blocks and
+the like you need to be a little trickier:
+</p>
+<pre class="verbatim">    if ($a &amp;&amp; $b &amp;&amp; do { BEGIN { study } 
1 } &amp;&amp; $c) { ... } 
+</pre>
+<hr>
 <a name="perlhacktips-SOURCE-CODE-STATIC-ANALYSIS"></a>
 <div class="header">
 <p>
@@ -47070,18 +47663,7 @@
 </p>
 <p><strong>NOTE 2</strong>: To minimize the number of memory leak false alarms 
(see
 <a href="#perlhacktips-PERL_005fDESTRUCT_005fLEVEL">PERL_DESTRUCT_LEVEL</a> 
for more information), you have to set the
-environment variable PERL_DESTRUCT_LEVEL to 2.
-</p>
-<p>For csh-like shells:
-</p>
-<pre class="verbatim">    setenv PERL_DESTRUCT_LEVEL 2
-</pre>
-<p>For Bourne-type shells:
-</p>
-<pre class="verbatim">    PERL_DESTRUCT_LEVEL=2
-    export PERL_DESTRUCT_LEVEL
-</pre>
-<p>In Unixy environments you can also use the <code>env</code> command:
+environment variable PERL_DESTRUCT_LEVEL to 2.  For example, like this:
 </p>
 <pre class="verbatim">    env PERL_DESTRUCT_LEVEL=2 valgrind ./perl -Ilib ...
 </pre>
@@ -47095,181 +47677,20 @@
 <code>-Accflags=-DDL_UNLOAD_ALL_AT_EXIT</code>.
 </p>
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a 
href="#perlhacktips-Rational-Software_0027s-Purify" accesskey="1">perlhacktips 
Rational Software's Purify</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perlhacktips-valgrind" 
accesskey="2">perlhacktips valgrind</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlhacktips-AddressSanitizer" accesskey="3">perlhacktips 
AddressSanitizer</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-</table>
-
-<hr>
-<a name="perlhacktips-Rational-Software_0027s-Purify"></a>
-<div class="header">
-<p>
-Next: <a href="#perlhacktips-valgrind" accesskey="n" rel="next">perlhacktips 
valgrind</a>, Up: <a href="#perlhacktips-MEMORY-DEBUGGERS" accesskey="u" 
rel="up">perlhacktips MEMORY DEBUGGERS</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="Rational-Software_0027s-Purify"></a>
-<h4 class="subsection">30.6.1 Rational Software&rsquo;s Purify</h4>
-
-<p>Purify is a commercial tool that is helpful in identifying memory
-overruns, wild pointers, memory leaks and other such badness. Perl must
-be compiled in a specific way for optimal testing with Purify.  Purify
-is available under Windows NT, Solaris, HP-UX, SGI, and Siemens Unix.
-</p>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a 
href="#perlhacktips-Purify-on-Unix" accesskey="1">perlhacktips Purify on 
Unix</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#perlhacktips-valgrind" 
accesskey="1">perlhacktips valgrind</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perlhacktips-Purify-on-NT" 
accesskey="2">perlhacktips Purify on NT</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlhacktips-AddressSanitizer" accesskey="2">perlhacktips 
AddressSanitizer</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 </table>
 
 <hr>
-<a name="perlhacktips-Purify-on-Unix"></a>
-<div class="header">
-<p>
-Next: <a href="#perlhacktips-Purify-on-NT" accesskey="n" 
rel="next">perlhacktips Purify on NT</a>, Up: <a 
href="#perlhacktips-Rational-Software_0027s-Purify" accesskey="u" 
rel="up">perlhacktips Rational Software's Purify</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="Purify-on-Unix"></a>
-<h4 class="subsubsection">30.6.1.1 Purify on Unix</h4>
-
-<p>On Unix, Purify creates a new Perl binary. To get the most benefit out
-of Purify, you should create the perl to Purify using:
-</p>
-<pre class="verbatim">    sh Configure -Accflags=-DPURIFY -Doptimize='-g' \
-     -Uusemymalloc -Dusemultiplicity
-</pre>
-<p>where these arguments mean:
-</p>
-<ul>
-<li> -Accflags=-DPURIFY
-
-<p>Disables Perl&rsquo;s arena memory allocation functions, as well as forcing
-use of memory allocation functions derived from the system malloc.
-</p>
-</li><li> -Doptimize=&rsquo;-g&rsquo;
-
-<p>Adds debugging information so that you see the exact source statements
-where the problem occurs. Without this flag, all you will see is the
-source filename of where the error occurred.
-</p>
-</li><li> -Uusemymalloc
-
-<p>Disable Perl&rsquo;s malloc so that Purify can more closely monitor
-allocations and leaks. Using Perl&rsquo;s malloc will make Purify report most
-leaks in the &quot;potential&quot; leaks category.
-</p>
-</li><li> -Dusemultiplicity
-
-<p>Enabling the multiplicity option allows perl to clean up thoroughly
-when the interpreter shuts down, which reduces the number of bogus leak
-reports from Purify.
-</p>
-</li></ul>
-
-<p>Once you&rsquo;ve compiled a perl suitable for Purify&rsquo;ing, then you 
can just:
-</p>
-<pre class="verbatim">    make pureperl
-</pre>
-<p>which creates a binary named &rsquo;pureperl&rsquo; that has been 
Purify&rsquo;ed. This
-binary is used in place of the standard &rsquo;perl&rsquo; binary when you 
want to
-debug Perl memory problems.
-</p>
-<p>As an example, to show any memory leaks produced during the standard
-Perl testset you would create and run the Purify&rsquo;ed perl as:
-</p>
-<pre class="verbatim">    make pureperl
-    cd t
-    ../pureperl -I../lib harness
-</pre>
-<p>which would run Perl on test.pl and report any memory problems.
-</p>
-<p>Purify outputs messages in &quot;Viewer&quot; windows by default. If you 
don&rsquo;t
-have a windowing environment or if you simply want the Purify output to
-unobtrusively go to a log file instead of to the interactive window,
-use these following options to output to the log file &quot;perl.log&quot;:
-</p>
-<pre class="verbatim">    setenv PURIFYOPTIONS &quot;-chain-length=25 
-windows=no \
-     -log-file=perl.log -append-logfile=yes&quot;
-</pre>
-<p>If you plan to use the &quot;Viewer&quot; windows, then you only need this
-option:
-</p>
-<pre class="verbatim">    setenv PURIFYOPTIONS &quot;-chain-length=25&quot;
-</pre>
-<p>In Bourne-type shells:
-</p>
-<pre class="verbatim">    PURIFYOPTIONS=&quot;...&quot;
-    export PURIFYOPTIONS
-</pre>
-<p>or if you have the &quot;env&quot; utility:
-</p>
-<pre class="verbatim">    env PURIFYOPTIONS=&quot;...&quot; ../pureperl ...
-</pre>
-<hr>
-<a name="perlhacktips-Purify-on-NT"></a>
-<div class="header">
-<p>
-Previous: <a href="#perlhacktips-Purify-on-Unix" accesskey="p" 
rel="prev">perlhacktips Purify on Unix</a>, Up: <a 
href="#perlhacktips-Rational-Software_0027s-Purify" accesskey="u" 
rel="up">perlhacktips Rational Software's Purify</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="Purify-on-NT"></a>
-<h4 class="subsubsection">30.6.1.2 Purify on NT</h4>
-
-<p>Purify on Windows NT instruments the Perl binary &rsquo;perl.exe&rsquo; on 
the fly.
- There are several options in the makefile you should change to get the
-most use out of Purify:
-</p>
-<ul>
-<li> DEFINES
-
-<p>You should add -DPURIFY to the DEFINES line so the DEFINES line looks
-something like:
-</p>
-<pre class="verbatim">   DEFINES = -DWIN32 -D_CONSOLE -DNO_STRICT 
$(CRYPT_FLAG) -DPURIFY=1
-</pre>
-<p>to disable Perl&rsquo;s arena memory allocation functions, as well as to
-force use of memory allocation functions derived from the system
-malloc.
-</p>
-</li><li> USE_MULTI = define
-
-<p>Enabling the multiplicity option allows perl to clean up thoroughly
-when the interpreter shuts down, which reduces the number of bogus leak
-reports from Purify.
-</p>
-</li><li> #PERL_MALLOC = define
-
-<p>Disable Perl&rsquo;s malloc so that Purify can more closely monitor
-allocations and leaks. Using Perl&rsquo;s malloc will make Purify report most
-leaks in the &quot;potential&quot; leaks category.
-</p>
-</li><li> CFG = Debug
-
-<p>Adds debugging information so that you see the exact source statements
-where the problem occurs. Without this flag, all you will see is the
-source filename of where the error occurred.
-</p>
-</li></ul>
-
-<p>As an example, to show any memory leaks produced during the standard
-Perl testset you would create and run Purify as:
-</p>
-<pre class="verbatim">    cd win32
-    make
-    cd ../t
-    purify ../perl -I../lib harness
-</pre>
-<p>which would instrument Perl in memory, run Perl on test.pl, then
-finally report any memory problems.
-</p>
-<hr>
 <a name="perlhacktips-valgrind"></a>
 <div class="header">
 <p>
-Next: <a href="#perlhacktips-AddressSanitizer" accesskey="n" 
rel="next">perlhacktips AddressSanitizer</a>, Previous: <a 
href="#perlhacktips-Rational-Software_0027s-Purify" accesskey="p" 
rel="prev">perlhacktips Rational Software's Purify</a>, Up: <a 
href="#perlhacktips-MEMORY-DEBUGGERS" accesskey="u" rel="up">perlhacktips 
MEMORY DEBUGGERS</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
+Next: <a href="#perlhacktips-AddressSanitizer" accesskey="n" 
rel="next">perlhacktips AddressSanitizer</a>, Up: <a 
href="#perlhacktips-MEMORY-DEBUGGERS" accesskey="u" rel="up">perlhacktips 
MEMORY DEBUGGERS</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="valgrind"></a>
-<h4 class="subsection">30.6.2 valgrind</h4>
+<h4 class="subsection">30.6.1 valgrind</h4>
 
 <p>The valgrind tool can be used to find out both memory leaks and illegal
 heap memory accesses. As of version 3.3.0, Valgrind only supports Linux
@@ -47298,14 +47719,14 @@
 Previous: <a href="#perlhacktips-valgrind" accesskey="p" 
rel="prev">perlhacktips valgrind</a>, Up: <a 
href="#perlhacktips-MEMORY-DEBUGGERS" accesskey="u" rel="up">perlhacktips 
MEMORY DEBUGGERS</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="AddressSanitizer"></a>
-<h4 class="subsection">30.6.3 AddressSanitizer</h4>
+<h4 class="subsection">30.6.2 AddressSanitizer</h4>
 
-<p>AddressSanitizer is a clang extension, included in clang since v3.1. It
-checks illegal heap pointers, global pointers, stack pointers and use
-after free errors, and is fast enough that you can easily compile your
-debugging or optimized perl with it. It does not check memory leaks
-though. AddressSanitizer is available for linux, Mac OS X and soon on
-Windows.
+<p>AddressSanitizer is a clang and gcc extension, included in clang since
+v3.1 and gcc since v4.8.  It checks illegal heap pointers, global
+pointers, stack pointers and use after free errors, and is fast enough
+that you can easily compile your debugging or optimized perl with it.
+It does not check memory leaks though.  AddressSanitizer is available
+for Linux, Mac OS X and soon on Windows.
 </p>
 <p>To build perl with AddressSanitizer, your Configure invocation should
 look like:
@@ -47335,7 +47756,7 @@
 <p>Link dynamic extensions with AddressSanitizer. You must manually
 specify <code>-shared</code> because using <code>-Alddlflags=-shared</code> 
will prevent
 Configure from setting a default value for <code>lddlflags</code>, which 
usually
-contains <code>-shared</code> (at least on linux).
+contains <code>-shared</code> (at least on Linux).
 </p>
 </li></ul>
 
@@ -47395,18 +47816,27 @@
 <a name="Gprof-Profiling"></a>
 <h4 class="subsection">30.7.1 Gprof Profiling</h4>
 
-<p>gprof is a profiling tool available in many Unix platforms, it uses
-<samp>statistical time-sampling</samp>.
+<p><em>gprof</em> is a profiling tool available in many Unix platforms which
+uses <em>statistical time-sampling</em>.  You can build a profiled version of
+<samp>perl</samp> by compiling using gcc with the flag <code>-pg</code>.  
Either edit
+<samp>config.sh</samp> or re-run <samp>Configure</samp>.  Running the profiled 
version of
+Perl will create an output file called <samp>gmon.out</samp> which contains the
+profiling data collected during the execution.
+</p>
+<p>quick hint:
 </p>
-<p>You can build a profiled version of perl called &quot;perl.gprof&quot; by
-invoking the make target &quot;perl.gprof&quot;  (What is required is that Perl
-must be compiled using the <code>-pg</code> flag, you may need to 
re-Configure).
-Running the profiled version of Perl will create an output file called
-<samp>gmon.out</samp> is created which contains the profiling data collected
-during the execution.
+<pre class="verbatim">    $ sh Configure -des -Dusedevel -Accflags='-pg' \
+        -Aldflags='-pg' -Alddlflags='-pg -shared' \
+        &amp;&amp; make perl
+    $ ./perl ... # creates gmon.out in current directory
+    $ gprof ./perl &gt; out
+    $ less out
+</pre>
+<p>(you probably need to add <code>-shared</code> to the &lt;-Alddlflags&gt; 
line until RT
+#118199 is resolved)
 </p>
-<p>The gprof tool can then display the collected data in various ways.
-Usually gprof understands the following options:
+<p>The <samp>gprof</samp> tool can then display the collected data in various 
ways.
+Usually <samp>gprof</samp> understands the following options:
 </p>
 <ul>
 <li> -a
@@ -47437,15 +47867,8 @@
 </li></ul>
 
 <p>For more detailed explanation of the available commands and output
-formats, see your own local documentation of gprof.
-</p>
-<p>quick hint:
+formats, see your own local documentation of <samp>gprof</samp>.
 </p>
-<pre class="verbatim">    $ sh Configure -des -Dusedevel -Doptimize='-pg' 
&amp;&amp; make perl.gprof
-    $ ./perl.gprof someprog # creates gmon.out in current directory
-    $ gprof ./perl.gprof &gt; out
-    $ view out
-</pre>
 <hr>
 <a name="perlhacktips-GCC-gcov-Profiling"></a>
 <div class="header">
@@ -47455,19 +47878,31 @@
 <a name="GCC-gcov-Profiling"></a>
 <h4 class="subsection">30.7.2 GCC gcov Profiling</h4>
 
-<p>Starting from GCC 3.0 <em>basic block profiling</em> is officially available
-for the GNU CC.
+<p><em>basic block profiling</em> is officially available in gcc 3.0 and later.
+You can build a profiled version of <samp>perl</samp> by compiling using gcc 
with
+the flags <code>-fprofile-arcs -ftest-coverage</code>.  Either edit 
<samp>config.sh</samp>
+or re-run <samp>Configure</samp>.
+</p>
+<p>quick hint:
 </p>
-<p>You can build a profiled version of perl called <samp>perl.gcov</samp> by
-invoking the make target &quot;perl.gcov&quot; (what is required that Perl must
-be compiled using gcc with the flags <code>-fprofile-arcs 
-ftest-coverage</code>,
-you may need to re-Configure).
+<pre class="verbatim">    $ sh Configure -des -Dusedevel -Doptimize='-g' \
+        -Accflags='-fprofile-arcs -ftest-coverage' \
+        -Aldflags='-fprofile-arcs -ftest-coverage' \
+        -Alddlflags='-fprofile-arcs -ftest-coverage -shared' \
+        &amp;&amp; make perl
+    $ rm -f regexec.c.gcov regexec.gcda
+    $ ./perl ...
+    $ gcov regexec.c
+    $ less regexec.c.gcov
+</pre>
+<p>(you probably need to add <code>-shared</code> to the &lt;-Alddlflags&gt; 
line until RT
+#118199 is resolved)
 </p>
 <p>Running the profiled version of Perl will cause profile output to be
-generated. For each source file an accompanying &quot;.da&quot; file will be
+generated.  For each source file an accompanying <samp>.gcda</samp> file will 
be
 created.
 </p>
-<p>To display the results you use the &quot;gcov&quot; utility (which should be
+<p>To display the results you use the <em>gcov</em> utility (which should be
 installed if you have gcc 3.0 or newer installed). <samp>gcov</samp> is run on
 source code files, like this
 </p>
@@ -47475,30 +47910,20 @@
 </pre>
 <p>which will cause <samp>sv.c.gcov</samp> to be created. The 
<samp>.gcov</samp> files contain
 the source code annotated with relative frequencies of execution
-indicated by &quot;#&quot; markers.
+indicated by &quot;#&quot; markers.  If you want to generate 
<samp>.gcov</samp> files for
+all profiled object files, you can run something like this:
 </p>
+<pre class="verbatim">    for file in `find . -name \*.gcno`
+    do sh -c &quot;cd `dirname $file` &amp;&amp; gcov `basename $file 
.gcno`&quot;
+    done
+</pre>
 <p>Useful options of <samp>gcov</samp> include <code>-b</code> which will 
summarise the basic
 block, branch, and function call coverage, and <code>-c</code> which instead of
 relative frequencies will use the actual counts. For more information
 on the use of <samp>gcov</samp> and basic block profiling with gcc, see the
-latest GNU CC manual, as of GCC 3.0 see
-</p>
-<pre class="verbatim">    http://gcc.gnu.org/onlinedocs/gcc-3.0/gcc.html
-</pre>
-<p>and its section titled &quot;8. gcov: a Test Coverage Program&quot;
-</p>
-<pre class="verbatim">    
http://gcc.gnu.org/onlinedocs/gcc-3.0/gcc_8.html#SEC132
-</pre>
-<p>quick hint:
+latest GNU CC manual.  As of gcc 4.8, this is at
+<a 
href="http://gcc.gnu.org/onlinedocs/gcc/Gcov-Intro.html#Gcov-Intro";>http://gcc.gnu.org/onlinedocs/gcc/Gcov-Intro.html#Gcov-Intro</a>
 </p>
-<pre class="verbatim">    $ sh Configure -des -Dusedevel -Doptimize='-g' \
-        -Accflags='-fprofile-arcs -ftest-coverage' \
-        -Aldflags='-fprofile-arcs -ftest-coverage' &amp;&amp; make perl.gcov
-    $ rm -f regexec.c.gcov regexec.gcda
-    $ ./perl.gcov
-    $ gcov regexec.c
-    $ view regexec.c.gcov
-</pre>
 <hr>
 <a name="perlhacktips-MISCELLANEOUS-TRICKS"></a>
 <div class="header">
@@ -47519,7 +47944,9 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlhacktips-Read_002donly-optrees" accesskey="5">perlhacktips Read-only 
optrees</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlhacktips-The-_002ei-Targets" accesskey="6">perlhacktips The .i 
Targets</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlhacktips-When-is-a-bool-not-a-bool_003f" accesskey="6">perlhacktips 
When is a bool not a bool?</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perlhacktips-The-_002ei-Targets" accesskey="7">perlhacktips The .i 
Targets</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 </table>
 
@@ -47533,18 +47960,17 @@
 <h4 class="subsection">30.8.1 PERL_DESTRUCT_LEVEL</h4>
 
 <p>If you want to run any of the tests yourself manually using e.g.
-valgrind, or the pureperl or perl.third executables, please note that
-by default perl <strong>does not</strong> explicitly cleanup all the memory it 
has
-allocated (such as global memory arenas) but instead lets the exit() of
-the whole program &quot;take care&quot; of such allocations, also known as
-&quot;global destruction of objects&quot;.
+valgrind, please note that by default perl <strong>does not</strong> explicitly
+cleanup all the memory it has allocated (such as global memory arenas)
+but instead lets the exit() of the whole program &quot;take care&quot; of such
+allocations, also known as &quot;global destruction of objects&quot;.
 </p>
 <p>There is a way to tell perl to do complete cleanup: set the environment
 variable PERL_DESTRUCT_LEVEL to a non-zero value. The t/TEST wrapper
 does set this to 2, and this is what you need to do too, if you don&rsquo;t
-want to see the &quot;global leaks&quot;: For example, for 
&quot;third-degreed&quot; Perl:
+want to see the &quot;global leaks&quot;: For example, for running under 
valgrind
 </p>
-<pre class="verbatim">        env PERL_DESTRUCT_LEVEL=2 ./perl.third -Ilib 
t/foo/bar.t
+<pre class="verbatim">        env PERL_DESTRUCT_LEVEL=2 valgrind ./perl -Ilib 
t/foo/bar.t
 </pre>
 <p>(Note: the mod_perl apache module uses also this environment variable
 for its own purposes and extended its semantics. Refer to the mod_perl
@@ -47673,33 +48099,57 @@
 <a name="perlhacktips-Read_002donly-optrees"></a>
 <div class="header">
 <p>
-Next: <a href="#perlhacktips-The-_002ei-Targets" accesskey="n" 
rel="next">perlhacktips The .i Targets</a>, Previous: <a 
href="#perlhacktips-Poison" accesskey="p" rel="prev">perlhacktips Poison</a>, 
Up: <a href="#perlhacktips-MISCELLANEOUS-TRICKS" accesskey="u" 
rel="up">perlhacktips MISCELLANEOUS TRICKS</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+Next: <a href="#perlhacktips-When-is-a-bool-not-a-bool_003f" accesskey="n" 
rel="next">perlhacktips When is a bool not a bool?</a>, Previous: <a 
href="#perlhacktips-Poison" accesskey="p" rel="prev">perlhacktips Poison</a>, 
Up: <a href="#perlhacktips-MISCELLANEOUS-TRICKS" accesskey="u" 
rel="up">perlhacktips MISCELLANEOUS TRICKS</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Read_002donly-optrees"></a>
 <h4 class="subsection">30.8.5 Read-only optrees</h4>
 
 <p>Under ithreads the optree is read only. If you want to enforce this, to
 check for write accesses from buggy code, compile with
-<code>-DPERL_DEBUG_READONLY_OPS</code> to enable code that allocates op memory
-via <code>mmap</code>, and sets it read-only when it is attached to a 
subroutine. Any
-write access to an op results in a <code>SIGBUS</code> and abort.
+<code>-Accflags=-DPERL_DEBUG_READONLY_OPS</code>
+to enable code that allocates op memory
+via <code>mmap</code>, and sets it read-only when it is attached to a 
subroutine.
+Any write access to an op results in a <code>SIGBUS</code> and abort.
 </p>
 <p>This code is intended for development only, and may not be portable
 even to all Unix variants. Also, it is an 80% solution, in that it
-isn&rsquo;t able to make all ops read only. Specifically it does not apply to 
op
-slabs belonging to <code>BEGIN</code> blocks.
+isn&rsquo;t able to make all ops read only.  Specifically it does not apply to
+op slabs belonging to <code>BEGIN</code> blocks.
+</p>
+<p>However, as an 80% solution it is still effective, as it has caught
+bugs in the past.
+</p>
+<hr>
+<a name="perlhacktips-When-is-a-bool-not-a-bool_003f"></a>
+<div class="header">
+<p>
+Next: <a href="#perlhacktips-The-_002ei-Targets" accesskey="n" 
rel="next">perlhacktips The .i Targets</a>, Previous: <a 
href="#perlhacktips-Read_002donly-optrees" accesskey="p" 
rel="prev">perlhacktips Read-only optrees</a>, Up: <a 
href="#perlhacktips-MISCELLANEOUS-TRICKS" accesskey="u" rel="up">perlhacktips 
MISCELLANEOUS TRICKS</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
+</div>
+<a name="When-is-a-bool-not-a-bool_003f"></a>
+<h4 class="subsection">30.8.6 When is a bool not a bool?</h4>
+
+<p>On pre-C99 compilers, <code>bool</code> is defined as equivalent to 
<code>char</code>.
+Consequently assignment of any larger type to a <code>bool</code> is unsafe 
and may
+be truncated.  The <code>cBOOL</code> macro exists to cast it correctly.
+</p>
+<p>On those platforms and compilers where <code>bool</code> really is a 
boolean (C++,
+C99), it is easy to forget the cast.  You can force <code>bool</code> to be a 
<code>char</code>
+by compiling with <code>-Accflags=-DPERL_BOOL_AS_CHAR</code>.  You may also 
wish to
+run <code>Configure</code> with something like
 </p>
-<p>However, as an 80% solution it is still effective, as it has caught bugs in
-the past.
+<pre class="verbatim">    -Accflags='-Wconversion -Wno-sign-conversion 
-Wno-shorten-64-to-32'
+</pre>
+<p>or your compiler&rsquo;s equivalent to make it easier to spot any unsafe 
truncations
+that show up.
 </p>
 <hr>
 <a name="perlhacktips-The-_002ei-Targets"></a>
 <div class="header">
 <p>
-Previous: <a href="#perlhacktips-Read_002donly-optrees" accesskey="p" 
rel="prev">perlhacktips Read-only optrees</a>, Up: <a 
href="#perlhacktips-MISCELLANEOUS-TRICKS" accesskey="u" rel="up">perlhacktips 
MISCELLANEOUS TRICKS</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
+Previous: <a href="#perlhacktips-When-is-a-bool-not-a-bool_003f" accesskey="p" 
rel="prev">perlhacktips When is a bool not a bool?</a>, Up: <a 
href="#perlhacktips-MISCELLANEOUS-TRICKS" accesskey="u" rel="up">perlhacktips 
MISCELLANEOUS TRICKS</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="The-_002ei-Targets"></a>
-<h4 class="subsection">30.8.6 The .i Targets</h4>
+<h4 class="subsection">30.8.7 The .i Targets</h4>
 
 <p>You can expand the macros in a <samp>foo.c</samp> file by saying
 </p>
@@ -48074,7 +48524,7 @@
 Matt S Trout, David Golden, Florian Ragwitz, Tatsuhiko Miyagawa,
 Chris <code>BinGOs</code> Williams, Zefram, Ævar Arnfjörð Bjarmason, 
Stevan
 Little, Dave Rolsky, Max Maischein, Abigail, Jesse Luehrs, Tony Cook,
-Dominic Hargreaves, and Aaron Crane.
+Dominic Hargreaves, Aaron Crane and Aristotle Pagaltzis.
 </p>
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perlhist-PUMPKIN_003f" 
accesskey="1">perlhist PUMPKIN?</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -48561,12 +49011,34 @@
  Aaron    5.17.8        2013-Jan-20
  BinGOs   5.17.9        2013-Feb-20
  Max M    5.17.10       2013-Mar-21
+ Ricardo  5.17.11       2013-Apr-20
 
- Ricardo  5.18.0-RC1    2013-May-11
+ Ricardo  5.18.0-RC1    2013-May-11     The 5.18 maintenance track
  Ricardo  5.18.0-RC2    2013-May-12
  Ricardo  5.18.0-RC3    2013-May-13
  Ricardo  5.18.0-RC4    2013-May-15
  Ricardo  5.18.0        2013-May-18
+ Ricardo  5.18.1-RC1    2013-Aug-01
+ Ricardo  5.18.1-RC2    2013-Aug-03
+ Ricardo  5.18.1-RC3    2013-Aug-08
+ Ricardo  5.18.1        2013-Aug-12
+ Ricardo  5.18.2        2014-Jan-06
+
+ Ricardo   5.19.0       2013-May-20     The 5.19 development track
+ David G   5.19.1       2013-Jun-21
+ Aristotle 5.19.2       2013-Jul-22
+ Steve     5.19.3       2013-Aug-20
+ Steve     5.19.4       2013-Sep-20
+ Steve     5.19.5       2013-Oct-20
+ BinGOs    5.19.6       2013-Nov-20
+ Abigail   5.19.7       2013-Dec-20
+ Ricardo   5.19.8       2014-Jan-20
+ TonyC     5.19.9       2014-Feb-20
+ Aaron     5.19.10      2014-Mar-20
+ Steve     5.19.11      2014-Apr-20
+
+ Ricardo   5.20.0-RC1   2014-May-16     The 5.20 maintenance track
+ Ricardo   5.20.0       2014-May-27
 </pre>
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a 
href="#perlhist-SELECTED-RELEASE-SIZES" accesskey="1">perlhist SELECTED RELEASE 
SIZES</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
@@ -48661,6 +49133,7 @@
  5.14.0         5328 104   1100 114  17779 2479   7697 2130   5871 188
  5.16.0         5562 109   1077  80  20504 2702   8750 2375   4815 152
  5.18.0         5892 113   1088  79  20077 2760   9365 2439   4943 154
+ 5.20.0         6243 115   1187  75  19499 2701   9620 2457   5145 159
 </pre>
 <p>The &quot;core&quot;...&quot;doc&quot; mean the following files from the 
Perl source code
 distribution.  The glob notation ** means recursively, (.) means
@@ -48962,6 +49435,28 @@
  vos            16    8    16    8     17    8     9    7      8     7
  win32        1841   73  1841   73   1833   72  1655   67   1157    62
  x2p           345   19   345   19    346   19   345   19    344    20
+
+ ======================================================================
+
+                  5.20.0
+
+ Configure    552      1
+ Cross        118     15
+ NetWare      467     61
+ Porting     1204     68
+ djgpp         18      7
+ h2pl          13     15
+ hints        355     90
+ mad          174      8
+ os2          510     70
+ plan9        316     17
+ qnx            1      4
+ symbian      290     54
+ utils        241     27
+ vms          538     12
+ vos            8      7
+ win32       1183     64
+ x2p          341     19
 </pre>
 <hr>
 <a name="perlhist-SELECTED-PATCH-SIZES"></a>
@@ -50928,8 +51423,7 @@
 <h3 class="section">35.3 DESCRIPTION</h3>
 
 <p>This document describes the behavior and implementation of the PerlIO
-abstraction described in <a href="#perlapio-NAME">perlapio NAME</a> when 
<code>USE_PERLIO</code> is defined (and
-<code>USE_SFIO</code> is not).
+abstraction described in <a href="#perlapio-NAME">perlapio NAME</a> when 
<code>USE_PERLIO</code> is defined.
 </p>
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a 
href="#perliol-History-and-Background" accesskey="1">perliol History and 
Background</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
@@ -52284,11 +52778,10 @@
     $SIG{CHLD} = sub {
         # don't change $! and $? outside handler
         local ($!, $?);
-        my $pid = waitpid(-1, WNOHANG);
-        return if $pid == -1;
-        return unless defined $children{$pid};
+        while ( (my $pid = waitpid(-1, WNOHANG)) &gt; 0 ) {
         delete $children{$pid};
         cleanup_child($pid, $?);
+        }
     };
 
     while (1) {
@@ -52788,7 +53281,7 @@
 STDIN.  If you open a pipe <em>from</em> minus, you can read from the 
filehandle
 you opened whatever your kid writes to <em>his</em> STDOUT.
 </p>
-<pre class="verbatim">    use English qw[ -no_match_vars ];
+<pre class="verbatim">    use English;
     my $PRECIOUS = &quot;/path/to/some/safe/file&quot;;
     my $sleep_count;
     my $pid;
@@ -52965,9 +53458,7 @@
 pattern and indeed even the filenames themselves might hold metacharacters.
 </p>
 <p>Be aware that these operations are full Unix forks, which means they may
-not be correctly implemented on all alien systems.  Additionally, these are
-not true multithreading.  To learn more about threading, see the 
<samp>modules</samp>
-file mentioned below in the SEE ALSO section.
+not be correctly implemented on all alien systems.
 </p>
 <hr>
 <a name="perlipc-Avoiding-Pipe-Deadlocks"></a>
@@ -53280,7 +53771,7 @@
                         scalar localtime(), $EOL;
     }
 </pre>
-<p>And here&rsquo;s a multithreaded version.  It&rsquo;s multithreaded in that
+<p>And here&rsquo;s a multitasking version.  It&rsquo;s multitasked in that
 like most typical servers, it spawns (fork()s) a slave server to
 handle the client request so that the master server can quickly
 go back to service a new client.
@@ -53296,7 +53787,7 @@
     sub logmsg { print &quot;$0 $$: @_ at &quot;, scalar localtime(), 
&quot;\n&quot; }
 
     my $port  = shift || 2345;
-    die &quot;invalid port&quot; unless if $port =~ /^ \d+ $/x;
+    die &quot;invalid port&quot; unless $port =~ /^ \d+ $/x;
 
     my $proto = getprotobyname(&quot;tcp&quot;);
 
@@ -53892,7 +54383,7 @@
 </p>
 <p>This server accepts one of five different commands, sending output back to
 the client.  Unlike most network servers, this one handles only one
-incoming client at a time.  Multithreaded servers are covered in 
+incoming client at a time.  Multitasking servers are covered in
 Chapter 16 of the Camel.
 </p>
 <p>Here&rsquo;s the code.  We&rsquo;ll
@@ -54149,718 +54640,112 @@
 programs this way for optimal success, and don&rsquo;t forget to add the 
<strong>-T</strong>
 taint-checking flag to the <code>#!</code> line for servers:
 </p>
-<pre class="verbatim">    #!/usr/bin/perl -Tw
-    use strict;
-    use sigtrap;
-    use Socket;
-</pre>
-<hr>
-<a name="perlipc-BUGS"></a>
-<div class="header">
-<p>
-Next: <a href="#perlipc-AUTHOR" accesskey="n" rel="next">perlipc AUTHOR</a>, 
Previous: <a href="#perlipc-NOTES" accesskey="p" rel="prev">perlipc NOTES</a>, 
Up: <a href="#perlipc" accesskey="u" rel="up">perlipc</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="BUGS-4"></a>
-<h3 class="section">36.12 BUGS</h3>
-
-<p>These routines all create system-specific portability problems.  As noted
-elsewhere, Perl is at the mercy of your C libraries for much of its system
-behavior.  It&rsquo;s probably safest to assume broken SysV semantics for
-signals and to stick with simple TCP and UDP socket operations; e.g., 
don&rsquo;t
-try to pass open file descriptors over a local UDP datagram socket if you
-want your code to stand a chance of being portable.
-</p>
-<hr>
-<a name="perlipc-AUTHOR"></a>
-<div class="header">
-<p>
-Next: <a href="#perlipc-SEE-ALSO" accesskey="n" rel="next">perlipc SEE 
ALSO</a>, Previous: <a href="#perlipc-BUGS" accesskey="p" rel="prev">perlipc 
BUGS</a>, Up: <a href="#perlipc" accesskey="u" rel="up">perlipc</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="AUTHOR-15"></a>
-<h3 class="section">36.13 AUTHOR</h3>
-
-<p>Tom Christiansen, with occasional vestiges of Larry Wall&rsquo;s original
-version and suggestions from the Perl Porters.
-</p>
-<hr>
-<a name="perlipc-SEE-ALSO"></a>
-<div class="header">
-<p>
-Previous: <a href="#perlipc-AUTHOR" accesskey="p" rel="prev">perlipc 
AUTHOR</a>, Up: <a href="#perlipc" accesskey="u" rel="up">perlipc</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
-</div>
-<a name="SEE-ALSO-15"></a>
-<h3 class="section">36.14 SEE ALSO</h3>
-
-<p>There&rsquo;s a lot more to networking than this, but this should get you
-started.
-</p>
-<p>For intrepid programmers, the indispensable textbook is <em>Unix Network
-Programming, 2nd Edition, Volume 1</em> by W. Richard Stevens (published by
-Prentice-Hall).  Most books on networking address the subject from the
-perspective of a C programmer; translation to Perl is left as an exercise
-for the reader.
-</p>
-<p>The IO::Socket(3) manpage describes the object library, and the Socket(3)
-manpage describes the low-level interface to sockets.  Besides the obvious
-functions in <a href="#perlfunc-NAME">perlfunc NAME</a>, you should also check 
out the <samp>modules</samp> file at
-your nearest CPAN site, especially
-<a 
href="http://www.cpan.org/modules/00modlist.long.html#ID5_Networking_";>http://www.cpan.org/modules/00modlist.long.html#ID5_Networking_</a>.
  
-See <a href="perlmodlib.html#Top">(perlmodlib)</a> or best yet, the <samp>Perl 
FAQ</samp> for a description
-of what CPAN is and where to get it if the previous link doesn&rsquo;t work 
-for you.
-</p>
-<p>Section 5 of CPAN&rsquo;s <samp>modules</samp> file is devoted to 
&quot;Networking, Device
-Control (modems), and Interprocess Communication&quot;, and contains numerous
-unbundled modules numerous networking modules, Chat and Expect operations,
-CGI programming, DCE, FTP, IPC, NNTP, Proxy, Ptty, RPC, SNMP, SMTP, Telnet,
-Threads, and ToolTalk&ndash;to name just a few.
-</p>
-<hr>
-<a name="perllexwarn"></a>
-<div class="header">
-<p>
-Next: <a href="#perllocale" accesskey="n" rel="next">perllocale</a>, Previous: 
<a href="#perlipc" accesskey="p" rel="prev">perlipc</a>, Up: <a href="#Top" 
accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="perllexwarn-1"></a>
-<h2 class="chapter">37 perllexwarn</h2>
-
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#perllexwarn-NAME" 
accesskey="1">perllexwarn NAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perllexwarn-DESCRIPTION" 
accesskey="2">perllexwarn DESCRIPTION</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perllexwarn-SEE-ALSO" 
accesskey="3">perllexwarn SEE ALSO</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perllexwarn-AUTHOR" 
accesskey="4">perllexwarn AUTHOR</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
-</td></tr>
-</table>
-
-<hr>
-<a name="perllexwarn-NAME"></a>
-<div class="header">
-<p>
-Next: <a href="#perllexwarn-DESCRIPTION" accesskey="n" rel="next">perllexwarn 
DESCRIPTION</a>, Up: <a href="#perllexwarn" accesskey="u" 
rel="up">perllexwarn</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="NAME-36"></a>
-<h3 class="section">37.1 NAME</h3>
-
-<p>perllexwarn - Perl Lexical Warnings
-</p>
-<hr>
-<a name="perllexwarn-DESCRIPTION"></a>
-<div class="header">
-<p>
-Next: <a href="#perllexwarn-SEE-ALSO" accesskey="n" rel="next">perllexwarn SEE 
ALSO</a>, Previous: <a href="#perllexwarn-NAME" accesskey="p" 
rel="prev">perllexwarn NAME</a>, Up: <a href="#perllexwarn" accesskey="u" 
rel="up">perllexwarn</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="DESCRIPTION-36"></a>
-<h3 class="section">37.2 DESCRIPTION</h3>
-
-<p>The <code>use warnings</code> pragma enables to control precisely what 
warnings are
-to be enabled in which parts of a Perl program. It&rsquo;s a more flexible
-alternative for both the command line flag <strong>-w</strong> and the 
equivalent Perl
-variable, <code>$^W</code>.
-</p>
-<p>This pragma works just like the <code>strict</code> pragma.
-This means that the scope of the warning pragma is limited to the
-enclosing block. It also means that the pragma setting will not
-leak across files (via <code>use</code>, <code>require</code> or 
<code>do</code>). This allows
-authors to independently define the degree of warning checks that will
-be applied to their module.
-</p>
-<p>By default, optional warnings are disabled, so any legacy code that
-doesn&rsquo;t attempt to control the warnings will work unchanged.
-</p>
-<p>All warnings are enabled in a block by either of these:
-</p>
-<pre class="verbatim">    use warnings;
-    use warnings 'all';
-</pre>
-<p>Similarly all warnings are disabled in a block by either of these:
-</p>
-<pre class="verbatim">    no warnings;
-    no warnings 'all';
-</pre>
-<p>For example, consider the code below:
-</p>
-<pre class="verbatim">    use warnings;
-    my @a;
-    {
-        no warnings;
-        my $b = @a[0];
-    }
-    my $c = @a[0];
-</pre>
-<p>The code in the enclosing block has warnings enabled, but the inner
-block has them disabled. In this case that means the assignment to the
-scalar <code>$c</code> will trip the <code>&quot;Scalar value @a[0] better 
written as $a[0]&quot;</code>
-warning, but the assignment to the scalar <code>$b</code> will not.
-</p>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a 
href="#perllexwarn-Default-Warnings-and-Optional-Warnings" 
accesskey="1">perllexwarn Default Warnings and Optional 
Warnings</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perllexwarn-What_0027s-wrong-with-_002dw-and-_0024_005eW" 
accesskey="2">perllexwarn What's wrong with <strong>-w</strong> and 
<code>$^W</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perllexwarn-Controlling-Warnings-from-the-Command-Line" 
accesskey="3">perllexwarn Controlling Warnings from the Command 
Line</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perllexwarn-Backward-Compatibility" accesskey="4">perllexwarn Backward 
Compatibility</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perllexwarn-Category-Hierarchy" accesskey="5">perllexwarn Category 
Hierarchy</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perllexwarn-Fatal-Warnings" 
accesskey="6">perllexwarn Fatal Warnings</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perllexwarn-Reporting-Warnings-from-a-Module" accesskey="7">perllexwarn 
Reporting Warnings from a Module</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
-</td></tr>
-</table>
-
-<hr>
-<a name="perllexwarn-Default-Warnings-and-Optional-Warnings"></a>
-<div class="header">
-<p>
-Next: <a href="#perllexwarn-What_0027s-wrong-with-_002dw-and-_0024_005eW" 
accesskey="n" rel="next">perllexwarn What's wrong with <strong>-w</strong> and 
<code>$^W</code></a>, Up: <a href="#perllexwarn-DESCRIPTION" accesskey="u" 
rel="up">perllexwarn DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="Default-Warnings-and-Optional-Warnings"></a>
-<h4 class="subsection">37.2.1 Default Warnings and Optional Warnings</h4>
-
-<p>Before the introduction of lexical warnings, Perl had two classes of
-warnings: mandatory and optional. 
-</p>
-<p>As its name suggests, if your code tripped a mandatory warning, you
-would get a warning whether you wanted it or not.
-For example, the code below would always produce an <code>&quot;isn't 
numeric&quot;</code>
-warning about the &quot;2:&quot;.
-</p>
-<pre class="verbatim">    my $a = &quot;2:&quot; + 3;
-</pre>
-<p>With the introduction of lexical warnings, mandatory warnings now become
-<em>default</em> warnings. The difference is that although the previously
-mandatory warnings are still enabled by default, they can then be
-subsequently enabled or disabled with the lexical warning pragma. For
-example, in the code below, an <code>&quot;isn't numeric&quot;</code> warning 
will only
-be reported for the <code>$a</code> variable.
-</p>
-<pre class="verbatim">    my $a = &quot;2:&quot; + 3;
-    no warnings;
-    my $b = &quot;2:&quot; + 3;
-</pre>
-<p>Note that neither the <strong>-w</strong> flag or the <code>$^W</code> can 
be used to
-disable/enable default warnings. They are still mandatory in this case.
-</p>
-<hr>
-<a name="perllexwarn-What_0027s-wrong-with-_002dw-and-_0024_005eW"></a>
-<div class="header">
-<p>
-Next: <a href="#perllexwarn-Controlling-Warnings-from-the-Command-Line" 
accesskey="n" rel="next">perllexwarn Controlling Warnings from the Command 
Line</a>, Previous: <a 
href="#perllexwarn-Default-Warnings-and-Optional-Warnings" accesskey="p" 
rel="prev">perllexwarn Default Warnings and Optional Warnings</a>, Up: <a 
href="#perllexwarn-DESCRIPTION" accesskey="u" rel="up">perllexwarn 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
-</div>
-<a name="What_0027s-wrong-with-_002dw-and-_0024_005eW"></a>
-<h4 class="subsection">37.2.2 What&rsquo;s wrong with <strong>-w</strong> and 
<code>$^W</code></h4>
-
-<p>Although very useful, the big problem with using <strong>-w</strong> on the 
command
-line to enable warnings is that it is all or nothing. Take the typical
-scenario when you are writing a Perl program. Parts of the code you
-will write yourself, but it&rsquo;s very likely that you will make use of
-pre-written Perl modules. If you use the <strong>-w</strong> flag in this 
case, you
-end up enabling warnings in pieces of code that you haven&rsquo;t written.
-</p>
-<p>Similarly, using <code>$^W</code> to either disable or enable blocks of 
code is
-fundamentally flawed. For a start, say you want to disable warnings in
-a block of code. You might expect this to be enough to do the trick:
-</p>
-<pre class="verbatim">     {
-         local ($^W) = 0;
-         my $a =+ 2;
-         my $b; chop $b;
-     }
-</pre>
-<p>When this code is run with the <strong>-w</strong> flag, a warning will be 
produced
-for the <code>$a</code> line:  <code>&quot;Reversed += operator&quot;</code>.
-</p>
-<p>The problem is that Perl has both compile-time and run-time warnings. To
-disable compile-time warnings you need to rewrite the code like this:
-</p>
-<pre class="verbatim">     {
-         BEGIN { $^W = 0 }
-         my $a =+ 2;
-         my $b; chop $b;
-     }
-</pre>
-<p>The other big problem with <code>$^W</code> is the way you can inadvertently
-change the warning setting in unexpected places in your code. For example,
-when the code below is run (without the <strong>-w</strong> flag), the second 
call
-to <code>doit</code> will trip a <code>&quot;Use of uninitialized 
value&quot;</code> warning, whereas
-the first will not.
-</p>
-<pre class="verbatim">    sub doit
-    {
-        my $b; chop $b;
-    }
-
-    doit();
-
-    {
-        local ($^W) = 1;
-        doit()
-    }
-</pre>
-<p>This is a side-effect of <code>$^W</code> being dynamically scoped.
-</p>
-<p>Lexical warnings get around these limitations by allowing finer control
-over where warnings can or can&rsquo;t be tripped.
-</p>
-<hr>
-<a name="perllexwarn-Controlling-Warnings-from-the-Command-Line"></a>
-<div class="header">
-<p>
-Next: <a href="#perllexwarn-Backward-Compatibility" accesskey="n" 
rel="next">perllexwarn Backward Compatibility</a>, Previous: <a 
href="#perllexwarn-What_0027s-wrong-with-_002dw-and-_0024_005eW" accesskey="p" 
rel="prev">perllexwarn What's wrong with <strong>-w</strong> and 
<code>$^W</code></a>, Up: <a href="#perllexwarn-DESCRIPTION" accesskey="u" 
rel="up">perllexwarn DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="Controlling-Warnings-from-the-Command-Line"></a>
-<h4 class="subsection">37.2.3 Controlling Warnings from the Command Line</h4>
-
-<p>There are three Command Line flags that can be used to control when
-warnings are (or aren&rsquo;t) produced:
-</p>
-<dl compact="compact">
-<dt><strong>-w</strong></dt>
-<dd><a name="perllexwarn-_002dw"></a>
-<p>This is  the existing flag. If the lexical warnings pragma is 
<strong>not</strong>
-used in any of you code, or any of the modules that you use, this flag
-will enable warnings everywhere. See <a 
href="#perllexwarn-Backward-Compatibility">Backward Compatibility</a> for
-details of how this flag interacts with lexical warnings.
-</p>
-</dd>
-<dt><strong>-W</strong></dt>
-<dd><a name="perllexwarn-_002dW"></a>
-<p>If the <strong>-W</strong> flag is used on the command line, it will enable 
all warnings
-throughout the program regardless of whether warnings were disabled
-locally using <code>no warnings</code> or <code>$^W =0</code>. This includes 
all files that get
-included via <code>use</code>, <code>require</code> or <code>do</code>.
-Think of it as the Perl equivalent of the &quot;lint&quot; command.
-</p>
-</dd>
-<dt><strong>-X</strong></dt>
-<dd><a name="perllexwarn-_002dX"></a>
-<p>Does the exact opposite to the <strong>-W</strong> flag, i.e. it disables 
all warnings.
-</p>
-</dd>
-</dl>
-
-<hr>
-<a name="perllexwarn-Backward-Compatibility"></a>
-<div class="header">
-<p>
-Next: <a href="#perllexwarn-Category-Hierarchy" accesskey="n" 
rel="next">perllexwarn Category Hierarchy</a>, Previous: <a 
href="#perllexwarn-Controlling-Warnings-from-the-Command-Line" accesskey="p" 
rel="prev">perllexwarn Controlling Warnings from the Command Line</a>, Up: <a 
href="#perllexwarn-DESCRIPTION" accesskey="u" rel="up">perllexwarn 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
-</div>
-<a name="Backward-Compatibility"></a>
-<h4 class="subsection">37.2.4 Backward Compatibility</h4>
-
-<p>If you are used to working with a version of Perl prior to the
-introduction of lexically scoped warnings, or have code that uses both
-lexical warnings and <code>$^W</code>, this section will describe how they 
interact.
-</p>
-<p>How Lexical Warnings interact with <strong>-w</strong>/<code>$^W</code>:
-</p>
-<ol>
-<li> If none of the three command line flags (<strong>-w</strong>, 
<strong>-W</strong> or <strong>-X</strong>) that
-control warnings is used and neither <code>$^W</code> nor the 
<code>warnings</code> pragma
-are used, then default warnings will be enabled and optional warnings
-disabled.
-This means that legacy code that doesn&rsquo;t attempt to control the warnings
-will work unchanged.
-
-</li><li> The <strong>-w</strong> flag just sets the global <code>$^W</code> 
variable as in 5.005. This
-means that any legacy code that currently relies on manipulating 
<code>$^W</code>
-to control warning behavior will still work as is. 
-
-</li><li> Apart from now being a boolean, the <code>$^W</code> variable 
operates in exactly
-the same horrible uncontrolled global way, except that it cannot
-disable/enable default warnings.
-
-</li><li> If a piece of code is under the control of the <code>warnings</code> 
pragma,
-both the <code>$^W</code> variable and the <strong>-w</strong> flag will be 
ignored for the
-scope of the lexical warning.
-
-</li><li> The only way to override a lexical warnings setting is with the 
<strong>-W</strong>
-or <strong>-X</strong> command line flags.
-
-</li></ol>
-
-<p>The combined effect of 3 &amp; 4 is that it will allow code which uses
-the <code>warnings</code> pragma to control the warning behavior of $^W-type
-code (using a <code>local $^W=0</code>) if it really wants to, but not 
vice-versa.
-</p>
-<hr>
-<a name="perllexwarn-Category-Hierarchy"></a>
-<div class="header">
-<p>
-Next: <a href="#perllexwarn-Fatal-Warnings" accesskey="n" 
rel="next">perllexwarn Fatal Warnings</a>, Previous: <a 
href="#perllexwarn-Backward-Compatibility" accesskey="p" rel="prev">perllexwarn 
Backward Compatibility</a>, Up: <a href="#perllexwarn-DESCRIPTION" 
accesskey="u" rel="up">perllexwarn DESCRIPTION</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="Category-Hierarchy"></a>
-<h4 class="subsection">37.2.5 Category Hierarchy</h4>
-
-<p>A hierarchy of &quot;categories&quot; have been defined to allow groups of 
warnings
-to be enabled/disabled in isolation.
-</p>
-<p>The current hierarchy is:
-</p>
-<pre class="verbatim">    all -+
-         |
-         +- closure
-         |
-         +- deprecated
-         |
-         +- exiting
-         |
-         +- experimental --+
-         |                 |
-         |                 +- experimental::lexical_subs
-         |
-         +- glob
-         |
-         +- imprecision
-         |
-         +- io ------------+
-         |                 |
-         |                 +- closed
-         |                 |
-         |                 +- exec
-         |                 |
-         |                 +- layer
-         |                 |
-         |                 +- newline
-         |                 |
-         |                 +- pipe
-         |                 |
-         |                 +- unopened
-         |
-         +- misc
-         |
-         +- numeric
-         |
-         +- once
-         |
-         +- overflow
-         |
-         +- pack
-         |
-         +- portable
-         |
-         +- recursion
-         |
-         +- redefine
-         |
-         +- regexp
-         |
-         +- severe --------+
-         |                 |
-         |                 +- debugging
-         |                 |
-         |                 +- inplace
-         |                 |
-         |                 +- internal
-         |                 |
-         |                 +- malloc
-         |
-         +- signal
-         |
-         +- substr
-         |
-         +- syntax --------+
-         |                 |
-         |                 +- ambiguous
-         |                 |
-         |                 +- bareword
-         |                 |
-         |                 +- digit
-         |                 |
-         |                 +- illegalproto
-         |                 |
-         |                 +- parenthesis
-         |                 |
-         |                 +- precedence
-         |                 |
-         |                 +- printf
-         |                 |
-         |                 +- prototype
-         |                 |
-         |                 +- qw
-         |                 |
-         |                 +- reserved
-         |                 |
-         |                 +- semicolon
-         |
-         +- taint
-         |
-         +- threads
-         |
-         +- uninitialized
-         |
-         +- unpack
-         |
-         +- untie
-         |
-         +- utf8 ----------+
-         |                 |
-         |                 +- non_unicode
-         |                 |
-         |                 +- nonchar
-         |                 |
-         |                 +- surrogate
-         |
-         +- void
-</pre>
-<p>Just like the &quot;strict&quot; pragma any of these categories can be 
combined
-</p>
-<pre class="verbatim">    use warnings qw(void redefine);
-    no warnings qw(io syntax untie);
-</pre>
-<p>Also like the &quot;strict&quot; pragma, if there is more than one instance 
of the
-<code>warnings</code> pragma in a given scope the cumulative effect is 
additive. 
-</p>
-<pre class="verbatim">    use warnings qw(void); # only &quot;void&quot; 
warnings enabled
-    ...
-    use warnings qw(io);   # only &quot;void&quot; &amp; &quot;io&quot; 
warnings enabled
-    ...
-    no warnings qw(void);  # only &quot;io&quot; warnings enabled
-</pre>
-<p>To determine which category a specific warning has been assigned to see
-<a href="#perldiag-NAME">perldiag NAME</a>.
-</p>
-<p>Note: In Perl 5.6.1, the lexical warnings category &quot;deprecated&quot; 
was a
-sub-category of the &quot;syntax&quot; category. It is now a top-level category
-in its own right.
-</p>
-<hr>
-<a name="perllexwarn-Fatal-Warnings"></a>
-<div class="header">
-<p>
-Next: <a href="#perllexwarn-Reporting-Warnings-from-a-Module" accesskey="n" 
rel="next">perllexwarn Reporting Warnings from a Module</a>, Previous: <a 
href="#perllexwarn-Category-Hierarchy" accesskey="p" rel="prev">perllexwarn 
Category Hierarchy</a>, Up: <a href="#perllexwarn-DESCRIPTION" accesskey="u" 
rel="up">perllexwarn DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="Fatal-Warnings"></a>
-<h4 class="subsection">37.2.6 Fatal Warnings</h4>
-
-<p>The presence of the word &quot;FATAL&quot; in the category list will 
escalate any
-warnings detected from the categories specified in the lexical scope
-into fatal errors. In the code below, the use of <code>time</code>, 
<code>length</code>
-and <code>join</code> can all produce a <code>&quot;Useless use of xxx in void 
context&quot;</code>
-warning.
-</p>
-<pre class="verbatim">    use warnings;
-
-    time;
-
-    {
-        use warnings FATAL =&gt; qw(void);
-        length &quot;abc&quot;;
-    }
-
-    join &quot;&quot;, 1,2,3;
-
-    print &quot;done\n&quot;;
-</pre>
-<p>When run it produces this output
-</p>
-<pre class="verbatim">    Useless use of time in void context at fatal line 3.
-    Useless use of length in void context at fatal line 7.  
-</pre>
-<p>The scope where <code>length</code> is used has escalated the 
<code>void</code> warnings
-category into a fatal error, so the program terminates immediately it
-encounters the warning.
-</p>
-<p>To explicitly turn off a &quot;FATAL&quot; warning you just disable the 
warning
-it is associated with.  So, for example, to disable the &quot;void&quot; 
warning
-in the example above, either of these will do the trick:
-</p>
-<pre class="verbatim">    no warnings qw(void);
-    no warnings FATAL =&gt; qw(void);
-</pre>
-<p>If you want to downgrade a warning that has been escalated into a fatal
-error back to a normal warning, you can use the &quot;NONFATAL&quot; keyword. 
For
-example, the code below will promote all warnings into fatal errors,
-except for those in the &quot;syntax&quot; category.
-</p>
-<pre class="verbatim">    use warnings FATAL =&gt; 'all', NONFATAL =&gt; 
'syntax';
-</pre>
-<hr>
-<a name="perllexwarn-Reporting-Warnings-from-a-Module"></a>
-<div class="header">
-<p>
-Previous: <a href="#perllexwarn-Fatal-Warnings" accesskey="p" 
rel="prev">perllexwarn Fatal Warnings</a>, Up: <a 
href="#perllexwarn-DESCRIPTION" accesskey="u" rel="up">perllexwarn 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
-</div>
-<a name="Reporting-Warnings-from-a-Module"></a>
-<h4 class="subsection">37.2.7 Reporting Warnings from a Module</h4>
-
-<p>The <code>warnings</code> pragma provides a number of functions that are 
useful for
-module authors. These are used when you want to report a module-specific
-warning to a calling module has enabled warnings via the <code>warnings</code>
-pragma.
-</p>
-<p>Consider the module <code>MyMod::Abc</code> below.
-</p>
-<pre class="verbatim">    package MyMod::Abc;
-
-    use warnings::register;
-
-    sub open {
-        my $path = shift;
-        if ($path !~ m#^/#) {
-            warnings::warn(&quot;changing relative path to /var/abc&quot;)
-                if warnings::enabled();
-            $path = &quot;/var/abc/$path&quot;;
-        }
-    }
-
-    1;
-</pre>
-<p>The call to <code>warnings::register</code> will create a new warnings 
category
-called &quot;MyMod::Abc&quot;, i.e. the new category name matches the current
-package name. The <code>open</code> function in the module will display a 
warning
-message if it gets given a relative path as a parameter. This warnings
-will only be displayed if the code that uses <code>MyMod::Abc</code> has 
actually
-enabled them with the <code>warnings</code> pragma like below.
-</p>
-<pre class="verbatim">    use MyMod::Abc;
-    use warnings 'MyMod::Abc';
-    ...
-    abc::open(&quot;../fred.txt&quot;);
-</pre>
-<p>It is also possible to test whether the pre-defined warnings categories are
-set in the calling module with the <code>warnings::enabled</code> function. 
Consider
-this snippet of code:
-</p>
-<pre class="verbatim">    package MyMod::Abc;
-
-    sub open {
-        warnings::warnif(&quot;deprecated&quot;, 
-                         &quot;open is deprecated, use new instead&quot;);
-        new(@_);
-    }
-
-    sub new
-    ...
-    1;
-</pre>
-<p>The function <code>open</code> has been deprecated, so code has been 
included to
-display a warning message whenever the calling module has (at least) the
-&quot;deprecated&quot; warnings category enabled. Something like this, say.
-</p>
-<pre class="verbatim">    use warnings 'deprecated';
-    use MyMod::Abc;
-    ...
-    MyMod::Abc::open($filename);
-</pre>
-<p>Either the <code>warnings::warn</code> or <code>warnings::warnif</code> 
function should be
-used to actually display the warnings message. This is because they can
-make use of the feature that allows warnings to be escalated into fatal
-errors. So in this case
-</p>
-<pre class="verbatim">    use MyMod::Abc;
-    use warnings FATAL =&gt; 'MyMod::Abc';
-    ...
-    MyMod::Abc::open('../fred.txt');
-</pre>
-<p>the <code>warnings::warnif</code> function will detect this and die after
-displaying the warning message.
-</p>
-<p>The three warnings functions, <code>warnings::warn</code>, 
<code>warnings::warnif</code>
-and <code>warnings::enabled</code> can optionally take an object reference in 
place
-of a category name. In this case the functions will use the class name
-of the object as the warnings category.
-</p>
-<p>Consider this example:
-</p>
-<pre class="verbatim">    package Original;
-
-    no warnings;
-    use warnings::register;
-
-    sub new
-    {
-        my $class = shift;
-        bless [], $class;
-    }
-
-    sub check
-    {
-        my $self = shift;
-        my $value = shift;
-
-        if ($value % 2 &amp;&amp; warnings::enabled($self))
-          { warnings::warn($self, &quot;Odd numbers are unsafe&quot;) }
-    }
-
-    sub doit
-    {
-        my $self = shift;
-        my $value = shift;
-        $self-&gt;check($value);
-        # ...
-    }
-
-    1;
-
-    package Derived;
+<pre class="verbatim">    #!/usr/bin/perl -Tw
+    use strict;
+    use sigtrap;
+    use Socket;
+</pre>
+<hr>
+<a name="perlipc-BUGS"></a>
+<div class="header">
+<p>
+Next: <a href="#perlipc-AUTHOR" accesskey="n" rel="next">perlipc AUTHOR</a>, 
Previous: <a href="#perlipc-NOTES" accesskey="p" rel="prev">perlipc NOTES</a>, 
Up: <a href="#perlipc" accesskey="u" rel="up">perlipc</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
+</div>
+<a name="BUGS-4"></a>
+<h3 class="section">36.12 BUGS</h3>
 
-    use warnings::register;
-    use Original;
-    our @ISA = qw( Original );
-    sub new
-    {
-        my $class = shift;
-        bless [], $class;
-    }
+<p>These routines all create system-specific portability problems.  As noted
+elsewhere, Perl is at the mercy of your C libraries for much of its system
+behavior.  It&rsquo;s probably safest to assume broken SysV semantics for
+signals and to stick with simple TCP and UDP socket operations; e.g., 
don&rsquo;t
+try to pass open file descriptors over a local UDP datagram socket if you
+want your code to stand a chance of being portable.
+</p>
+<hr>
+<a name="perlipc-AUTHOR"></a>
+<div class="header">
+<p>
+Next: <a href="#perlipc-SEE-ALSO" accesskey="n" rel="next">perlipc SEE 
ALSO</a>, Previous: <a href="#perlipc-BUGS" accesskey="p" rel="prev">perlipc 
BUGS</a>, Up: <a href="#perlipc" accesskey="u" rel="up">perlipc</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
+</div>
+<a name="AUTHOR-15"></a>
+<h3 class="section">36.13 AUTHOR</h3>
 
+<p>Tom Christiansen, with occasional vestiges of Larry Wall&rsquo;s original
+version and suggestions from the Perl Porters.
+</p>
+<hr>
+<a name="perlipc-SEE-ALSO"></a>
+<div class="header">
+<p>
+Previous: <a href="#perlipc-AUTHOR" accesskey="p" rel="prev">perlipc 
AUTHOR</a>, Up: <a href="#perlipc" accesskey="u" rel="up">perlipc</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
+</div>
+<a name="SEE-ALSO-15"></a>
+<h3 class="section">36.14 SEE ALSO</h3>
 
-    1;
-</pre>
-<p>The code below makes use of both modules, but it only enables warnings from 
-<code>Derived</code>.
+<p>There&rsquo;s a lot more to networking than this, but this should get you
+started.
 </p>
-<pre class="verbatim">    use Original;
-    use Derived;
-    use warnings 'Derived';
-    my $a = Original-&gt;new();
-    $a-&gt;doit(1);
-    my $b = Derived-&gt;new();
-    $a-&gt;doit(1);
-</pre>
-<p>When this code is run only the <code>Derived</code> object, 
<code>$b</code>, will generate
-a warning. 
+<p>For intrepid programmers, the indispensable textbook is <em>Unix Network
+Programming, 2nd Edition, Volume 1</em> by W. Richard Stevens (published by
+Prentice-Hall).  Most books on networking address the subject from the
+perspective of a C programmer; translation to Perl is left as an exercise
+for the reader.
 </p>
-<pre class="verbatim">    Odd numbers are unsafe at main.pl line 7
-</pre>
-<p>Notice also that the warning is reported at the line where the object is 
first
-used.
+<p>The IO::Socket(3) manpage describes the object library, and the Socket(3)
+manpage describes the low-level interface to sockets.  Besides the obvious
+functions in <a href="#perlfunc-NAME">perlfunc NAME</a>, you should also check 
out the <samp>modules</samp> file at
+your nearest CPAN site, especially
+<a 
href="http://www.cpan.org/modules/00modlist.long.html#ID5_Networking_";>http://www.cpan.org/modules/00modlist.long.html#ID5_Networking_</a>.
  
+See <a href="perlmodlib.html#Top">(perlmodlib)</a> or best yet, the <samp>Perl 
FAQ</samp> for a description
+of what CPAN is and where to get it if the previous link doesn&rsquo;t work 
+for you.
 </p>
-<p>When registering new categories of warning, you can supply more names to
-warnings::register like this:
+<p>Section 5 of CPAN&rsquo;s <samp>modules</samp> file is devoted to 
&quot;Networking, Device
+Control (modems), and Interprocess Communication&quot;, and contains numerous
+unbundled modules numerous networking modules, Chat and Expect operations,
+CGI programming, DCE, FTP, IPC, NNTP, Proxy, Ptty, RPC, SNMP, SMTP, Telnet,
+Threads, and ToolTalk&ndash;to name just a few.
 </p>
-<pre class="verbatim">    package MyModule;
-    use warnings::register qw(format precision);
+<hr>
+<a name="perllexwarn"></a>
+<div class="header">
+<p>
+Next: <a href="#perllocale" accesskey="n" rel="next">perllocale</a>, Previous: 
<a href="#perlipc" accesskey="p" rel="prev">perlipc</a>, Up: <a href="#Top" 
accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
+</div>
+<a name="perllexwarn-1"></a>
+<h2 class="chapter">37 perllexwarn</h2>
 
-    ...
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="#perllexwarn-NAME" 
accesskey="1">perllexwarn NAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#perllexwarn-DESCRIPTION" 
accesskey="2">perllexwarn DESCRIPTION</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+</td></tr>
+</table>
 
-    warnings::warnif('MyModule::format', '...');
-</pre>
 <hr>
-<a name="perllexwarn-SEE-ALSO"></a>
+<a name="perllexwarn-NAME"></a>
 <div class="header">
 <p>
-Next: <a href="#perllexwarn-AUTHOR" accesskey="n" rel="next">perllexwarn 
AUTHOR</a>, Previous: <a href="#perllexwarn-DESCRIPTION" accesskey="p" 
rel="prev">perllexwarn DESCRIPTION</a>, Up: <a href="#perllexwarn" 
accesskey="u" rel="up">perllexwarn</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+Next: <a href="#perllexwarn-DESCRIPTION" accesskey="n" rel="next">perllexwarn 
DESCRIPTION</a>, Up: <a href="#perllexwarn" accesskey="u" 
rel="up">perllexwarn</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-16"></a>
-<h3 class="section">37.3 SEE ALSO</h3>
+<a name="NAME-36"></a>
+<h3 class="section">37.1 NAME</h3>
 
-<p><a href="warnings.html#Top">(warnings)</a>, <a 
href="#perldiag-NAME">perldiag NAME</a>.
+<p>perllexwarn - Perl Lexical Warnings
 </p>
 <hr>
-<a name="perllexwarn-AUTHOR"></a>
+<a name="perllexwarn-DESCRIPTION"></a>
 <div class="header">
 <p>
-Previous: <a href="#perllexwarn-SEE-ALSO" accesskey="p" rel="prev">perllexwarn 
SEE ALSO</a>, Up: <a href="#perllexwarn" accesskey="u" rel="up">perllexwarn</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
+Previous: <a href="#perllexwarn-NAME" accesskey="p" rel="prev">perllexwarn 
NAME</a>, Up: <a href="#perllexwarn" accesskey="u" rel="up">perllexwarn</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="AUTHOR-16"></a>
-<h3 class="section">37.4 AUTHOR</h3>
+<a name="DESCRIPTION-36"></a>
+<h3 class="section">37.2 DESCRIPTION</h3>
 
-<p>Paul Marquess
+<p>Perl v5.6.0 introduced lexical control over the handling of warnings by
+category.  The <code>warnings</code> pragma generally replaces the command 
line flag
+<strong>-w</strong>.  Documentation on the use of lexical warnings, once 
partly found in
+this document, is now found in the <a href="warnings.html#Top">(warnings)</a> 
documentation.
 </p>
 <hr>
 <a name="perllocale"></a>
@@ -54936,25 +54821,27 @@
 abbreviated as <strong>i18n</strong>); telling such an application about a 
particular
 set of preferences is known as <strong>localization</strong> 
(<strong>l10n</strong>).
 </p>
-<p>Perl was extended to support the locale system.  This
+<p>Perl has been extended to support the locale system.  This
 is controlled per application by using one pragma, one function call,
 and several environment variables.
 </p>
 <p>Unfortunately, there are quite a few deficiencies with the design (and
-often, the implementations) of locales, and their use for character sets
-has mostly been supplanted by Unicode (see <a 
href="#perlunitut-NAME">perlunitut NAME</a> for an
-introduction to that, and keep on reading here for how Unicode interacts
-with locales in Perl).
-</p>
-<p>Perl continues to support the old locale system, and starting in v5.16,
-provides a hybrid way to use the Unicode character set, along with the
-other portions of locales that may not be so problematic.
-(Unicode is also creating <code>CLDR</code>, the &quot;Common Locale Data 
Repository&quot;,
+often, the implementations) of locales.  Unicode was invented (see
+<a href="#perlunitut-NAME">perlunitut NAME</a> for an introduction to that) in 
part to address these
+design deficiencies, and nowadays, there is a series of &quot;UTF-8
+locales&quot;, based on Unicode.  These are locales whose character set is
+Unicode, encoded in UTF-8.  Starting in v5.20, Perl fully supports
+UTF-8 locales, except for sorting and string comparisions.  (Use
+<a href="Unicode-Collate.html#Top">(Unicode-Collate)</a> for these.)  Perl 
continues to support the old
+non UTF-8 locales as well.
+</p>
+<p>(Unicode is also creating <code>CLDR</code>, the &quot;Common Locale Data 
Repository&quot;,
 <a href="http://cldr.unicode.org/";>http://cldr.unicode.org/</a> which includes 
more types of information than
 are available in the POSIX locale system.  At the time of this writing,
 there was no CPAN module that provides access to this XML-encoded data.
 However, many of its locales have the POSIX-only data extracted, and are
-available at <a 
href="http://unicode.org/Public/cldr/latest/";>http://unicode.org/Public/cldr/latest/</a>.)
+available as UTF-8 locales at
+<a 
href="http://unicode.org/Public/cldr/latest/";>http://unicode.org/Public/cldr/latest/</a>.)
 </p>
 <hr>
 <a name="perllocale-WHAT-IS-A-LOCALE"></a>
@@ -54989,7 +54876,8 @@
 </dd>
 <dt>Category LC_MESSAGES: Error and other messages</dt>
 <dd><a 
name="perllocale-Category-LC_005fMESSAGES_003a-Error-and-other-messages"></a>
-<p>This for the most part is beyond the scope of Perl
+<p>This is used by Perl itself only for accessing operating system error
+messages via <a href="#perlvar-_0024ERRNO">$!</a> and <a 
href="#perlvar-_0024EXTENDED_005fOS_005fERROR">$^E</a>.
 </p>
 </dd>
 <dt>Category LC_COLLATE: Collation</dt>
@@ -55003,9 +54891,18 @@
 <p>This indicates, for example if a character is an uppercase letter.
 </p>
 </dd>
+<dt>Other categories</dt>
+<dd><a name="perllocale-Other-categories"></a>
+<p>Some platforms have other categories, dealing with such things as
+measurement units and paper sizes.  None of these are used directly by
+Perl, but outside operations that Perl interacts with may use
+these.  See <a 
href="#perllocale-Not-within-the-scope-of-any-_0022use-locale_0022-variant">Not 
within the scope of any &quot;use locale&quot; variant</a> below.
+</p>
+</dd>
 </dl>
 
-<p>More details on the categories are given below in <a 
href="#perllocale-LOCALE-CATEGORIES">LOCALE CATEGORIES</a>.
+<p>More details on the categories used by Perl are given below in <a 
href="#perllocale-LOCALE-CATEGORIES">LOCALE
+CATEGORIES</a>.
 </p>
 <p>Together, these categories go a long way towards being able to customize
 a single program to run in many different locations.  But there are
@@ -55020,13 +54917,14 @@
 <a name="PREPARING-TO-USE-LOCALES"></a>
 <h3 class="section">38.4 PREPARING TO USE LOCALES</h3>
 
-<p>Perl will not use locales unless specifically requested to (see <a 
href="#perllocale-NOTES">NOTES</a> below
-for the partial exception of <code>write()</code>).  But even if there is such 
a
-request, <strong>all</strong> of the following must be true for it to work 
properly:
+<p>Perl itself will not use locales unless specifically requested to (but
+again note that Perl may interact with code that does use them).  Even
+if there is such a request, <strong>all</strong> of the following must be true
+for it to work properly:
 </p>
 <ul>
 <li> <strong>Your operating system must support the locale system</strong>.  
If it does,
-you should find that the setlocale() function is a documented part of
+you should find that the <code>setlocale()</code> function is a documented 
part of
 its C library.
 
 </li><li> <strong>Definitions for locales that you use must be 
installed</strong>.  You, or
@@ -55079,15 +54977,17 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a href="#perllocale-LOCALE-PROBLEMS" 
accesskey="4">perllocale LOCALE PROBLEMS</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perllocale-Temporarily-fixing-locale-problems" accesskey="5">perllocale 
Temporarily fixing locale problems</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perllocale-Testing-for-broken-locales" accesskey="5">perllocale Testing 
for broken locales</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perllocale-Temporarily-fixing-locale-problems" accesskey="6">perllocale 
Temporarily fixing locale problems</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perllocale-Permanently-fixing-locale-problems" accesskey="6">perllocale 
Permanently fixing locale problems</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perllocale-Permanently-fixing-locale-problems" accesskey="7">perllocale 
Permanently fixing locale problems</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perllocale-Permanently-fixing-your-system_0027s-locale-configuration" 
accesskey="7">perllocale Permanently fixing your system's locale 
configuration</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perllocale-Permanently-fixing-your-system_0027s-locale-configuration" 
accesskey="8">perllocale Permanently fixing your system's locale 
configuration</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perllocale-Fixing-system-locale-configuration" accesskey="8">perllocale 
Fixing system locale configuration</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perllocale-Fixing-system-locale-configuration" accesskey="9">perllocale 
Fixing system locale configuration</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perllocale-The-localeconv-function" accesskey="9">perllocale The 
localeconv function</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perllocale-The-localeconv-function">perllocale The localeconv 
function</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perllocale-I18N_003a_003aLanginfo">perllocale 
I18N::Langinfo</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
@@ -55102,17 +55002,18 @@
 <a name="The-use-locale-pragma"></a>
 <h4 class="subsection">38.5.1 The use locale pragma</h4>
 
-<p>By default, Perl ignores the current locale.  The 
<code>use&nbsp;locale</code><!-- /@w -->
+<p>By default, Perl itself ignores the current locale.  The 
<code>use&nbsp;locale</code><!-- /@w -->
 pragma tells Perl to use the current locale for some operations.
 Starting in v5.16, there is an optional parameter to this pragma:
 </p>
 <pre class="verbatim">    use locale ':not_characters';
 </pre>
-<p>This parameter allows better mixing of locales and Unicode, and is
+<p>This parameter allows better mixing of locales and Unicode (less useful
+in v5.20 and later), and is
 described fully in <a href="#perllocale-Unicode-and-UTF_002d8">Unicode and 
UTF-8</a>, but briefly, it tells Perl to
 not use the character portions of the locale definition, that is
 the <code>LC_CTYPE</code> and <code>LC_COLLATE</code> categories.  Instead it 
will use the
-native (extended by Unicode) character set.  When using this parameter,
+native character set (extended by Unicode).  When using this parameter,
 you are responsible for getting the external character set translated
 into the native/Unicode one (which it already will be if it is one of
 the increasingly popular UTF-8 locales).  There are convenient ways of
@@ -55122,35 +55023,114 @@
 <a href="#perllocale-The-setlocale-function">setlocale()</a> described below.  
If that function
 hasn&rsquo;t yet been called in the course of the program&rsquo;s execution, 
the
 current locale is that which was determined by the <a 
href="#perllocale-ENVIRONMENT">ENVIRONMENT</a> in
-effect at the start of the program, except that
-<code><a 
href="#perllocale-Category-LC_005fNUMERIC_003a-Numeric-Formatting">LC_NUMERIC</a></code>
 is always
-initialized to the C locale (mentioned under <a 
href="#perllocale-Finding-locales">Finding locales</a>).
-If there is no valid environment, the current locale is undefined.  It
-is likely, but not necessarily, the &quot;C&quot; locale.
+effect at the start of the program.
+If there is no valid environment, the current locale is whatever the
+system default has been set to.   On POSIX systems, it is likely, but
+not necessarily, the &quot;C&quot; locale.  On Windows, the default is set via 
the
+computer&rsquo;s <code>Control&nbsp;<span 
class="nolinebreak">Panel-&gt;Regional</span>&nbsp;and&nbsp;Language&nbsp;Options</code><!--
 /@w --> (or its
+current equivalent).
 </p>
 <p>The operations that are affected by locale are:
 </p>
 <dl compact="compact">
-<dt><strong>Under <code>use locale ':not_characters';</code></strong></dt>
-<dd><a 
name="perllocale-Under-use-locale-_0027_003anot_005fcharacters_0027_003b"></a>
+<dt><strong>Not within the scope of any <code>&quot;use locale&quot;</code> 
variant</strong></dt>
+<dd><a 
name="perllocale-Not-within-the-scope-of-any-_0022use-locale_0022-variant"></a>
+<p>Only operations originating outside Perl should be affected, as follows:
+</p>
 <ul>
-<li> <strong>Format declarations</strong> (format()) use 
<code>LC_NUMERIC</code>
+<li> The variables <a href="#perlvar-_0024ERRNO">$!</a> (and its synonyms 
<code>$ERRNO</code> and
+<code>$OS_ERROR</code>) and <a 
href="#perlvar-_0024EXTENDED_005fOS_005fERROR">$^E</a> (and its synonym
+<code>$EXTENDED_OS_ERROR</code>) when used as strings always are in terms of 
the
+current locale and as if within the scope of <a 
href="bytes.html#Top">(bytes)&quot;use bytes&quot;</a>.  This is
+likely to change in Perl v5.22.
+
+</li><li> The current locale is also used when going outside of Perl with
+operations like <a href="#perlfunc-system-LIST">system()</a> or
+<a href="#perlop-qx_002fSTRING_002f">qx//</a>, if those operations are
+locale-sensitive.
+
+</li><li> Also Perl gives access to various C library functions through the
+<a href="POSIX.html#Top">(POSIX)</a> module.  Some of those functions are 
always affected by the
+current locale.  For example, <code>POSIX::strftime()</code> uses 
<code>LC_TIME</code>;
+<code>POSIX::strtod()</code> uses <code>LC_NUMERIC</code>; 
<code>POSIX::strcoll()</code> and
+<code>POSIX::strxfrm()</code> use <code>LC_COLLATE</code>; and character 
classification
+functions like <code>POSIX::isalnum()</code> use <code>LC_CTYPE</code>.  All 
such functions
+will behave according to the current underlying locale, even if that
+locale isn&rsquo;t exposed to Perl space.
+
+</li><li> XS modules for all categories but <code>LC_NUMERIC</code> get the 
underlying
+locale, and hence any C library functions they call will use that
+underlying locale.  Perl always initializes <code>LC_NUMERIC</code> to 
<code>&quot;C&quot;</code>
+because too many modules are unable to cope with the decimal point in a
+floating point number not being a dot (it&rsquo;s a comma in many locales).
+But note that these modules are vulnerable because <code>LC_NUMERIC</code>
+currently can be changed at any time by a call to the C 
<code>set_locale()</code>
+by XS code or by something XS code calls, or by 
<code>POSIX::setlocale()</code> by
+Perl code.  This is true also for the Perl-provided lite wrappers for XS
+modules to use some C library <code>printf</code> functions:
+<code>Gconvert</code>,
+<a href="perlapi.html#my_005fsprintf">(perlapi)my_sprintf</a>,
+<a href="perlapi.html#my_005fsnprintf">(perlapi)my_snprintf</a>,
+and
+<a href="perlapi.html#my_005fvsnprintf">(perlapi)my_vsnprintf</a>.
+
+</li></ul>
 
-</li><li> <strong>The POSIX date formatting function</strong> (strftime()) 
uses <code>LC_TIME</code>.
+<p> 
+</p>
+</dd>
+<dt><strong>Lingering effects of <code>use&nbsp;locale<!-- /@w 
--></code></strong></dt>
+<dd><a name="perllocale-Lingering-effects-of-use-locale"></a>
+<p>Certain Perl operations that are set-up within the scope of a
+<code>use locale</code> variant retain that effect even outside the scope.
+These include:
+</p>
+<ul>
+<li> The output format of a <a href="#perlfunc-write">write()</a> is 
determined by an
+earlier format declaration (<a href="#perlfunc-format">perlfunc format</a>), 
so whether or not the
+output is affected by locale is determined by if the <code>format()</code> is
+within the scope of a <code>use locale</code> variant, not whether the 
<code>write()</code>
+is.
+
+</li><li> Regular expression patterns can be compiled using
+<a href="#perlop-qr_002fSTRING_002fmsixpodual">qr//</a> with actual
+matching deferred to later.  Again, it is whether or not the compilation
+was done within the scope of <code>use locale</code> that determines the match
+behavior, not if the matches are done within such a scope or not.
 
 </li></ul>
 
 <p> 
 </p>
 </dd>
-<dt><strong>Under just plain <code>use locale;</code></strong></dt>
-<dd><a name="perllocale-Under-just-plain-use-locale_003b"></a>
-<p>The above operations are affected, as well as the following:
+<dt><strong>Under <code>&quot;use locale 
':not_characters';&quot;</code></strong></dt>
+<dd><a 
name="perllocale-Under-_0022use-locale-_0027_003anot_005fcharacters_0027_003b_0022"></a>
+<ul>
+<li> All the non-Perl operations.
+
+</li><li> <strong>Format declarations</strong> (<a 
href="#perlfunc-format">perlfunc format</a>) and hence any subsequent
+<code>write()</code>s use <code>LC_NUMERIC</code>.
+
+</li><li> <strong>stringification and output</strong> use 
<code>LC_NUMERIC</code>.
+These include the results of
+<code>print()</code>,
+<code>printf()</code>,
+<code>say()</code>,
+and
+<code>sprintf()</code>.
+
+</li></ul>
+
+<p> 
 </p>
+</dd>
+<dt><strong>Under just plain <code>&quot;use locale&quot;;</code></strong></dt>
+<dd><a name="perllocale-Under-just-plain-_0022use-locale_0022_003b"></a>
 <ul>
-<li> <strong>The comparison operators</strong> (<code>lt</code>, 
<code>le</code>, <code>cmp</code>, <code>ge</code>, and <code>gt</code>) and
-the POSIX string collation functions strcoll() and strxfrm() use
-<code>LC_COLLATE</code>.  sort() is also affected if used without an
+<li> All the above operations
+
+</li><li> <strong>The comparison operators</strong> (<code>lt</code>, 
<code>le</code>, <code>cmp</code>, <code>ge</code>, and <code>gt</code>) use
+<code>LC_COLLATE</code>.  <code>sort()</code> is also affected if used without 
an
 explicit comparison function, because it uses <code>cmp</code> by default.
 
 <p><strong>Note:</strong> <code>eq</code> and <code>ne</code> are unaffected 
by locale: they always
@@ -55163,8 +55143,8 @@
 as far as collation in the locale is concerned, see the discussion in
 <a href="#perllocale-Category-LC_005fCOLLATE_003a-Collation">Category 
LC_COLLATE: Collation</a>.
 </p>
-</li><li> <strong>Regular expressions and case-modification functions</strong> 
(uc(), lc(),
-ucfirst(), and lcfirst()) use <code>LC_CTYPE</code>
+</li><li> <strong>Regular expressions and case-modification functions</strong> 
(<code>uc()</code>, <code>lc()</code>,
+<code>ucfirst()</code>, and <code>lcfirst()</code>) use <code>LC_CTYPE</code>
 
 </li></ul>
 
@@ -55191,12 +55171,18 @@
 <h4 class="subsection">38.5.2 The setlocale function</h4>
 
 <p>You can switch locales as often as you wish at run time with the
-POSIX::setlocale() function:
+<code>POSIX::setlocale()</code> function:
 </p>
 <pre class="verbatim">        # Import locale-handling tool set from POSIX 
module.
         # This example uses: setlocale -- the function call
         #                    LC_CTYPE -- explained below
+        # (Showing the testing for success/failure of operations is
+        # omitted in these examples to avoid distracting from the main
+        # point)
+
         use POSIX qw(locale_h);
+        use locale;
+        my $old_locale;
 
         # query and save the old locale
         $old_locale = setlocale(LC_CTYPE);
@@ -55205,13 +55191,14 @@
         # LC_CTYPE now in locale &quot;French, Canada, codeset ISO 8859-1&quot;
 
         setlocale(LC_CTYPE, &quot;&quot;);
-        # LC_CTYPE now reset to default defined by LC_ALL/LC_CTYPE/LANG
-        # environment variables.  See below for documentation.
+        # LC_CTYPE now reset to the default defined by the
+        # LC_ALL/LC_CTYPE/LANG environment variables, or to the system
+        # default.  See below for documentation.
 
         # restore the old locale
         setlocale(LC_CTYPE, $old_locale);
 </pre>
-<p>The first argument of setlocale() gives the <strong>category</strong>, the 
second the
+<p>The first argument of <code>setlocale()</code> gives the 
<strong>category</strong>, the second the
 <strong>locale</strong>.  The category tells in what aspect of data processing 
you
 want to apply locale-specific rules.  Category names are discussed in
 <a href="#perllocale-LOCALE-CATEGORIES">LOCALE CATEGORIES</a> and <a 
href="#perllocale-ENVIRONMENT">ENVIRONMENT</a>.  The locale is the name of a
@@ -55220,21 +55207,23 @@
 hints on the naming of locales: not all systems name locales as in the
 example.
 </p>
-<p>If no second argument is provided and the category is something else
+<p>If no second argument is provided and the category is something other
 than LC_ALL, the function returns a string naming the current locale
 for the category.  You can use this value as the second argument in a
-subsequent call to setlocale().
+subsequent call to <code>setlocale()</code>, <strong>but</strong> on some 
platforms the string
+is opaque, not something that most people would be able to decipher as
+to what locale it means.
 </p>
 <p>If no second argument is provided and the category is LC_ALL, the
 result is implementation-dependent.  It may be a string of
 concatenated locale names (separator also implementation-dependent)
-or a single locale name.  Please consult your setlocale(3) man page for
+or a single locale name.  Please consult your <a 
href="http://man.he.net/man3/setlocale";>setlocale(3)</a> man page for
 details.
 </p>
 <p>If a second argument is given and it corresponds to a valid locale,
 the locale for the category is set to that value, and the function
 returns the now-current locale value.  You can then use this in yet
-another call to setlocale().  (In some implementations, the return
+another call to <code>setlocale()</code>.  (In some implementations, the return
 value may sometimes differ from the value you gave as the second
 argument&ndash;think of it as an alias for the value you gave.)
 </p>
@@ -55245,13 +55234,14 @@
 to the environment made by the application after startup may or may not
 be noticed, depending on your system&rsquo;s C library.
 </p>
-<p>If the second argument does not correspond to a valid locale, the locale
-for the category is not changed, and the function returns <em>undef</em>.
-</p>
 <p>Note that Perl ignores the current <code>LC_CTYPE</code> and 
<code>LC_COLLATE</code> locales
 within the scope of a <code>use locale ':not_characters'</code>.
 </p>
-<p>For further information about the categories, consult setlocale(3).
+<p>If <code>set_locale()</code> fails for some reason (for example, an attempt 
to set
+to a locale unknown to the system), the locale for the category is not
+changed, and the function returns <code>undef</code>.
+</p>
+<p>For further information about the categories, consult <a 
href="http://man.he.net/man3/setlocale";>setlocale(3)</a>.
 </p>
 <hr>
 <a name="perllocale-Finding-locales"></a>
@@ -55262,7 +55252,7 @@
 <a name="Finding-locales"></a>
 <h4 class="subsection">38.5.3 Finding locales</h4>
 
-<p>For locales available in your system, consult also setlocale(3) to
+<p>For locales available in your system, consult also <a 
href="http://man.he.net/man3/setlocale";>setlocale(3)</a> to
 see whether it leads to the list of available locales (search for the
 <em>SEE ALSO</em> section).  If that fails, try the following command lines:
 </p>
@@ -55288,7 +55278,7 @@
         english.iso88591    german.iso88591     russian.iso88595
         english.roman8                          russian.koi8r
 </pre>
-<p>Sadly, even though the calling interface for setlocale() has been
+<p>Sadly, even though the calling interface for <code>setlocale()</code> has 
been
 standardized, names of locales and the directories where the
 configuration resides have not been.  The basic form of the name is
 <em>language_territory</em><strong>.</strong><em>codeset</em>, but the latter 
parts after
@@ -55307,9 +55297,11 @@
 the POSIX standard.  They define the <strong>default locale</strong> in which
 every program starts in the absence of locale information in its
 environment.  (The <em>default</em> default locale, if you will.)  Its language
-is (American) English and its character codeset ASCII.
-<strong>Warning</strong>. The C locale delivered by some vendors may not
-actually exactly match what the C standard calls for.  So beware.
+is (American) English and its character codeset ASCII or, rarely, a
+superset thereof (such as the &quot;DEC Multinational Character Set
+(DEC-MCS)&quot;).  <strong>Warning</strong>. The C locale delivered by some 
vendors
+may not actually exactly match what the C standard calls for.  So
+beware.
 </p>
 <p><strong>NOTE</strong>: Not all systems have the &quot;POSIX&quot; locale 
(not all systems are
 POSIX-conformant), so use &quot;C&quot; when you need explicitly to specify 
this
@@ -55319,7 +55311,7 @@
 <a name="perllocale-LOCALE-PROBLEMS"></a>
 <div class="header">
 <p>
-Next: <a href="#perllocale-Temporarily-fixing-locale-problems" accesskey="n" 
rel="next">perllocale Temporarily fixing locale problems</a>, Previous: <a 
href="#perllocale-Finding-locales" accesskey="p" rel="prev">perllocale Finding 
locales</a>, Up: <a href="#perllocale-USING-LOCALES" accesskey="u" 
rel="up">perllocale USING LOCALES</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+Next: <a href="#perllocale-Testing-for-broken-locales" accesskey="n" 
rel="next">perllocale Testing for broken locales</a>, Previous: <a 
href="#perllocale-Finding-locales" accesskey="p" rel="prev">perllocale Finding 
locales</a>, Up: <a href="#perllocale-USING-LOCALES" accesskey="u" 
rel="up">perllocale USING LOCALES</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="LOCALE-PROBLEMS"></a>
 <h4 class="subsection">38.5.4 LOCALE PROBLEMS</h4>
@@ -55336,20 +55328,44 @@
 <p>This means that your locale settings had LC_ALL set to &quot;En_US&quot; and
 LANG exists but has no value.  Perl tried to believe you but could not.
 Instead, Perl gave up and fell back to the &quot;C&quot; locale, the default 
locale
-that is supposed to work no matter what.  This usually means your locale
-settings were wrong, they mention locales your system has never heard
-of, or the locale installation in your system has problems (for example,
-some system files are broken or missing).  There are quick and temporary
-fixes to these problems, as well as more thorough and lasting fixes.
+that is supposed to work no matter what.  (On Windows, it first tries
+falling back to the system default locale.)  This usually means your
+locale settings were wrong, they mention locales your system has never
+heard of, or the locale installation in your system has problems (for
+example, some system files are broken or missing).  There are quick and
+temporary fixes to these problems, as well as more thorough and lasting
+fixes.
+</p>
+<hr>
+<a name="perllocale-Testing-for-broken-locales"></a>
+<div class="header">
+<p>
+Next: <a href="#perllocale-Temporarily-fixing-locale-problems" accesskey="n" 
rel="next">perllocale Temporarily fixing locale problems</a>, Previous: <a 
href="#perllocale-LOCALE-PROBLEMS" accesskey="p" rel="prev">perllocale LOCALE 
PROBLEMS</a>, Up: <a href="#perllocale-USING-LOCALES" accesskey="u" 
rel="up">perllocale USING LOCALES</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+</div>
+<a name="Testing-for-broken-locales"></a>
+<h4 class="subsection">38.5.5 Testing for broken locales</h4>
+
+<p>If you are building Perl from source, the Perl test suite file
+<samp>lib/locale.t</samp> can be used to test the locales on your system.
+Setting the environment variable <code>PERL_DEBUG_FULL_TEST</code> to 1
+will cause it to output detailed results.  For example, on Linux, you
+could say
+</p>
+<pre class="verbatim"> PERL_DEBUG_FULL_TEST=1 ./perl -T -Ilib lib/locale.t 
&gt; locale.log 2&gt;&amp;1
+</pre>
+<p>Besides many other tests, it will test every locale it finds on your
+system to see if they conform to the POSIX standard.  If any have
+errors, it will include a summary near the end of the output of which
+locales passed all its tests, and which failed, and why.
 </p>
 <hr>
 <a name="perllocale-Temporarily-fixing-locale-problems"></a>
 <div class="header">
 <p>
-Next: <a href="#perllocale-Permanently-fixing-locale-problems" accesskey="n" 
rel="next">perllocale Permanently fixing locale problems</a>, Previous: <a 
href="#perllocale-LOCALE-PROBLEMS" accesskey="p" rel="prev">perllocale LOCALE 
PROBLEMS</a>, Up: <a href="#perllocale-USING-LOCALES" accesskey="u" 
rel="up">perllocale USING LOCALES</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+Next: <a href="#perllocale-Permanently-fixing-locale-problems" accesskey="n" 
rel="next">perllocale Permanently fixing locale problems</a>, Previous: <a 
href="#perllocale-Testing-for-broken-locales" accesskey="p" 
rel="prev">perllocale Testing for broken locales</a>, Up: <a 
href="#perllocale-USING-LOCALES" accesskey="u" rel="up">perllocale USING 
LOCALES</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Temporarily-fixing-locale-problems"></a>
-<h4 class="subsection">38.5.5 Temporarily fixing locale problems</h4>
+<h4 class="subsection">38.5.6 Temporarily fixing locale problems</h4>
 
 <p>The two quickest fixes are either to render Perl silent about any
 locale inconsistencies or to run Perl under the default locale &quot;C&quot;.
@@ -55401,7 +55417,7 @@
 Next: <a 
href="#perllocale-Permanently-fixing-your-system_0027s-locale-configuration" 
accesskey="n" rel="next">perllocale Permanently fixing your system's locale 
configuration</a>, Previous: <a 
href="#perllocale-Temporarily-fixing-locale-problems" accesskey="p" 
rel="prev">perllocale Temporarily fixing locale problems</a>, Up: <a 
href="#perllocale-USING-LOCALES" accesskey="u" rel="up">perllocale USING 
LOCALES</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Permanently-fixing-locale-problems"></a>
-<h4 class="subsection">38.5.6 Permanently fixing locale problems</h4>
+<h4 class="subsection">38.5.7 Permanently fixing locale problems</h4>
 
 <p>The slower but superior fixes are when you may be able to yourself
 fix the misconfiguration of your own environment variables.  The
@@ -55429,7 +55445,7 @@
 Next: <a href="#perllocale-Fixing-system-locale-configuration" accesskey="n" 
rel="next">perllocale Fixing system locale configuration</a>, Previous: <a 
href="#perllocale-Permanently-fixing-locale-problems" accesskey="p" 
rel="prev">perllocale Permanently fixing locale problems</a>, Up: <a 
href="#perllocale-USING-LOCALES" accesskey="u" rel="up">perllocale USING 
LOCALES</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Permanently-fixing-your-system_0027s-locale-configuration"></a>
-<h4 class="subsection">38.5.7 Permanently fixing your system&rsquo;s locale 
configuration</h4>
+<h4 class="subsection">38.5.8 Permanently fixing your system&rsquo;s locale 
configuration</h4>
 
 <p>This is when you see something like:
 </p>
@@ -55453,7 +55469,7 @@
 Next: <a href="#perllocale-The-localeconv-function" accesskey="n" 
rel="next">perllocale The localeconv function</a>, Previous: <a 
href="#perllocale-Permanently-fixing-your-system_0027s-locale-configuration" 
accesskey="p" rel="prev">perllocale Permanently fixing your system's locale 
configuration</a>, Up: <a href="#perllocale-USING-LOCALES" accesskey="u" 
rel="up">perllocale USING LOCALES</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Fixing-system-locale-configuration"></a>
-<h4 class="subsection">38.5.8 Fixing system locale configuration</h4>
+<h4 class="subsection">38.5.9 Fixing system locale configuration</h4>
 
 <p>Contact a system administrator (preferably your own) and report the exact
 error message you get, and ask them to read this same documentation you
@@ -55469,12 +55485,12 @@
 Next: <a href="#perllocale-I18N_003a_003aLanginfo" accesskey="n" 
rel="next">perllocale I18N::Langinfo</a>, Previous: <a 
href="#perllocale-Fixing-system-locale-configuration" accesskey="p" 
rel="prev">perllocale Fixing system locale configuration</a>, Up: <a 
href="#perllocale-USING-LOCALES" accesskey="u" rel="up">perllocale USING 
LOCALES</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="The-localeconv-function"></a>
-<h4 class="subsection">38.5.9 The localeconv function</h4>
+<h4 class="subsection">38.5.10 The localeconv function</h4>
 
-<p>The POSIX::localeconv() function allows you to get particulars of the
+<p>The <code>POSIX::localeconv()</code> function allows you to get particulars 
of the
 locale-dependent numeric formatting information specified by the current
 <code>LC_NUMERIC</code> and <code>LC_MONETARY</code> locales.  (If you just 
want the name of
-the current locale for a particular category, use POSIX::setlocale()
+the current locale for a particular category, use 
<code>POSIX::setlocale()</code>
 with a single parameter&ndash;see <a 
href="#perllocale-The-setlocale-function">The setlocale function</a>.)
 </p>
 <pre class="verbatim">        use POSIX qw(locale_h);
@@ -55487,13 +55503,13 @@
             printf &quot;%-20s = %s\n&quot;, $_, $locale_values-&gt;{$_}
         }
 </pre>
-<p>localeconv() takes no arguments, and returns <strong>a reference 
to</strong> a hash.
+<p><code>localeconv()</code> takes no arguments, and returns <strong>a 
reference to</strong> a hash.
 The keys of this hash are variable names for formatting, such as
 <code>decimal_point</code> and <code>thousands_sep</code>.  The values are the
 corresponding, er, values.  See <a 
href="POSIX.html#localeconv">(POSIX)localeconv</a> for a longer
 example listing the categories an implementation might be expected to
 provide; some provide more and others fewer.  You don&rsquo;t need an
-explicit <code>use locale</code>, because localeconv() always observes the
+explicit <code>use locale</code>, because <code>localeconv()</code> always 
observes the
 current locale.
 </p>
 <p>Here&rsquo;s a simple-minded example program that rewrites its command-line
@@ -55541,14 +55557,14 @@
 Previous: <a href="#perllocale-The-localeconv-function" accesskey="p" 
rel="prev">perllocale The localeconv function</a>, Up: <a 
href="#perllocale-USING-LOCALES" accesskey="u" rel="up">perllocale USING 
LOCALES</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="I18N_003a_003aLanginfo"></a>
-<h4 class="subsection">38.5.10 I18N::Langinfo</h4>
+<h4 class="subsection">38.5.11 I18N::Langinfo</h4>
 
 <p>Another interface for querying locale-dependent information is the
-I18N::Langinfo::langinfo() function, available at least in Unix-like
+<code>I18N::Langinfo::langinfo()</code> function, available at least in 
Unix-like
 systems and VMS.
 </p>
-<p>The following example will import the langinfo() function itself and
-three constants to be used as arguments to langinfo(): a constant for
+<p>The following example will import the <code>langinfo()</code> function 
itself and
+three constants to be used as arguments to <code>langinfo()</code>: a constant 
for
 the abbreviated first day of the week (the numbering starts from
 Sunday = 1) and two more constants for the affirmative and negative
 answers for a yes/no question in the current locale.
@@ -55591,7 +55607,7 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a href="#perllocale-LC_005fTIME" 
accesskey="5">perllocale LC_TIME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perllocale-Other-categories" accesskey="6">perllocale Other 
categories</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perllocale-Other-categories-1" accesskey="6">perllocale Other categories 
1</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 </table>
 
@@ -55638,19 +55654,24 @@
 <p>As noted in <a href="#perllocale-USING-LOCALES">USING LOCALES</a>, 
<code>cmp</code> compares according to the current
 collation locale when <code>use locale</code> is in effect, but falls back to a
 char-by-char comparison for strings that the locale says are equal. You
-can use POSIX::strcoll() if you don&rsquo;t want this fall-back:
+can use <code>POSIX::strcoll()</code> if you don&rsquo;t want this fall-back:
 </p>
 <pre class="verbatim">        use POSIX qw(strcoll);
         $equal_in_locale =
             !strcoll(&quot;space and case ignored&quot;, 
&quot;SpaceAndCaseIgnored&quot;);
 </pre>
-<p>$equal_in_locale will be true if the collation locale specifies a
+<p><code>$equal_in_locale</code> will be true if the collation locale 
specifies a
 dictionary-like ordering that ignores space characters completely and
 which folds case.
 </p>
+<p>Perl only supports single-byte locales for <code>LC_COLLATE</code>.  This 
means
+that a UTF-8 locale likely will just give you machine-native ordering.
+Use <a href="Unicode-Collate.html#Top">(Unicode-Collate)</a> for the full 
implementation of the Unicode
+Collation Algorithm.
+</p>
 <p>If you have a single string that you want to check for &quot;equality in
 locale&quot; against several others, you might think you could gain a little
-efficiency by using POSIX::strxfrm() in conjunction with <code>eq</code>:
+efficiency by using <code>POSIX::strxfrm()</code> in conjunction with 
<code>eq</code>:
 </p>
 <pre class="verbatim">        use POSIX qw(strxfrm);
         $xfrm_string = strxfrm(&quot;Mixed-case string&quot;);
@@ -55661,26 +55682,27 @@
         print &quot;locale collation ignores case\n&quot;
             if $xfrm_string eq strxfrm(&quot;mixed-case string&quot;);
 </pre>
-<p>strxfrm() takes a string and maps it into a transformed string for use
+<p><code>strxfrm()</code> takes a string and maps it into a transformed string 
for use
 in char-by-char comparisons against other transformed strings during
 collation.  &quot;Under the hood&quot;, locale-affected Perl comparison 
operators
-call strxfrm() for both operands, then do a char-by-char
-comparison of the transformed strings.  By calling strxfrm() explicitly
+call <code>strxfrm()</code> for both operands, then do a char-by-char
+comparison of the transformed strings.  By calling <code>strxfrm()</code> 
explicitly
 and using a non locale-affected comparison, the example attempts to save
 a couple of transformations.  But in fact, it doesn&rsquo;t save anything: Perl
 magic (see <a href="#perlguts-Magic-Variables">perlguts Magic Variables</a>) 
creates the transformed version of a
 string the first time it&rsquo;s needed in a comparison, then keeps this 
version around
 in case it&rsquo;s needed again.  An example rewritten the easy way with
 <code>cmp</code> runs just about as fast.  It also copes with null characters
-embedded in strings; if you call strxfrm() directly, it treats the first
+embedded in strings; if you call <code>strxfrm()</code> directly, it treats 
the first
 null it finds as a terminator.  don&rsquo;t expect the transformed strings
 it produces to be portable across systems&ndash;or even from one revision
-of your operating system to the next.  In short, don&rsquo;t call strxfrm()
+of your operating system to the next.  In short, don&rsquo;t call 
<code>strxfrm()</code>
 directly: let Perl do it for you.
 </p>
 <p>Note: <code>use locale</code> isn&rsquo;t shown in some of these examples 
because it isn&rsquo;t
-needed: strcoll() and strxfrm() exist only to generate locale-dependent
-results, and so always obey the current <code>LC_COLLATE</code> locale.
+needed: <code>strcoll()</code> and <code>strxfrm()</code> are POSIX functions
+which use the standard system-supplied <code>libc</code> functions that
+always obey the current <code>LC_COLLATE</code> locale.
 </p>
 <hr>
 <a name="perllocale-Category-LC_005fCTYPE_003a-Character-Types-1"></a>
@@ -55694,33 +55716,53 @@
 <p>In the scope of <code>use&nbsp;locale</code><!-- /@w --> (but not a
 <code>use locale ':not_characters'</code>), Perl obeys the 
<code>LC_CTYPE</code> locale
 setting.  This controls the application&rsquo;s notion of which characters are
-alphabetic.  This affects Perl&rsquo;s <code>\w</code> regular expression 
metanotation,
+alphabetic, numeric, punctuation, <em>etc</em>.  This affects Perl&rsquo;s 
<code>\w</code>
+regular expression metanotation,
 which stands for alphanumeric characters&ndash;that is, alphabetic,
-numeric, and including other special characters such as the underscore or
-hyphen.  (Consult <a href="#perlre-NAME">perlre NAME</a> for more information 
about
+numeric, and the platform&rsquo;s native underscore.
+(Consult <a href="#perlre-NAME">perlre NAME</a> for more information about
 regular expressions.)  Thanks to <code>LC_CTYPE</code>, depending on your 
locale
 setting, characters like &quot;æ&quot;, &quot;ð&quot;, &quot;ß&quot;, 
and
 &quot;ø&quot; may be understood as <code>\w</code> characters.
+It also affects things like <code>\s</code>, <code>\D</code>, and the POSIX 
character
+classes, like <code>[[:graph:]]</code>.  (See <a 
href="#perlrecharclass-NAME">perlrecharclass NAME</a> for more
+information on all these.)
 </p>
 <p>The <code>LC_CTYPE</code> locale also provides the map used in 
transliterating
 characters between lower and uppercase.  This affects the case-mapping
-functions&ndash;lc(), lcfirst, uc(), and ucfirst(); case-mapping
-interpolation with <code>\l</code>, <code>\L</code>, <code>\u</code>, or 
<code>\U</code> in double-quoted strings
-and <code>s///</code> substitutions; and case-independent regular expression
+functions&ndash;<code>fc()</code>, <code>lc()</code>, <code>lcfirst()</code>, 
<code>uc()</code>, and <code>ucfirst()</code>; case-mapping
+interpolation with <code>\F</code>, <code>\l</code>, <code>\L</code>, 
<code>\u</code>, or <code>\U</code> in double-quoted
+strings and <code>s///</code> substitutions; and case-independent regular 
expression
 pattern matching using the <code>i</code> modifier.
 </p>
-<p>Finally, <code>LC_CTYPE</code> affects the POSIX character-class test
-functions&ndash;isalpha(), islower(), and so on.  For example, if you move
-from the &quot;C&quot; locale to a 7-bit Scandinavian one, you may 
find&ndash;possibly
-to your surprise&ndash;that &quot;|&quot; moves from the ispunct() class to 
isalpha().
+<p>Finally, <code>LC_CTYPE</code> affects the (deprecated) POSIX 
character-class test
+functions&ndash;<code>POSIX::isalpha()</code>, <code>POSIX::islower()</code>, 
and so on.  For
+example, if you move from the &quot;C&quot; locale to a 7-bit Scandinavian one,
+you may find&ndash;possibly to your surprise&ndash;that &quot;|&quot; moves 
from the
+<code>POSIX::ispunct()</code> class to <code>POSIX::isalpha()</code>.
 Unfortunately, this creates big problems for regular expressions. 
&quot;|&quot; still
 means alternation even though it matches <code>\w</code>.
 </p>
+<p>Starting in v5.20, Perl supports UTF-8 locales for <code>LC_CTYPE</code>, 
but
+otherwise Perl only supports single-byte locales, such as the ISO 8859
+series.  This means that wide character locales, for example for Asian
+languages, are not supported.  The UTF-8 locale support is actually a
+superset of POSIX locales, because it is really full Unicode behavior
+as if no locale were in effect at all (except for tainting; see
+<a href="#perllocale-SECURITY">SECURITY</a>).  POSIX locales, even UTF-8 ones,
+are lacking certain concepts in Unicode, such as the idea that changing
+the case of a character could expand to be more than one character.
+Perl in a UTF-8 locale, will give you that expansion.  Prior to v5.20,
+Perl treated a UTF-8 locale on some platforms like an ISO 8859-1 one,
+with some restrictions, and on other platforms more like the &quot;C&quot; 
locale.
+For releases v5.16 and v5.18, <code>use&nbsp;locale&nbsp;<span 
class="nolinebreak">'not_characters</span><!-- /@w --></code> could be
+used as a workaround for this (see <a 
href="#perllocale-Unicode-and-UTF_002d8">Unicode and UTF-8</a>).
+</p>
 <p>Note that there are quite a few things that are unaffected by the
 current locale.  All the escape sequences for particular characters,
 <code>\n</code> for example, always mean the platform&rsquo;s native one.  
This means,
 for example, that <code>\N</code> in regular expressions (every character
-but new-line) work on the platform character set.
+but new-line) works on the platform character set.
 </p>
 <p><strong>Note:</strong> A broken or malicious <code>LC_CTYPE</code> locale 
definition may result
 in clearly ineligible characters being considered to be alphanumeric by
@@ -55737,21 +55779,17 @@
 <a name="Category-LC_005fNUMERIC_003a-Numeric-Formatting"></a>
 <h4 class="subsection">38.6.3 Category LC_NUMERIC: Numeric Formatting</h4>
 
-<p>After a proper POSIX::setlocale() call, Perl obeys the 
<code>LC_NUMERIC</code>
+<p>After a proper <code>POSIX::setlocale()</code> call, and within the scope 
of one
+of the <code>use locale</code> variants, Perl obeys the <code>LC_NUMERIC</code>
 locale information, which controls an application&rsquo;s idea of how numbers
-should be formatted for human readability by the printf(), sprintf(), and
-write() functions. String-to-numeric conversion by the POSIX::strtod()
-function is also affected.  In most implementations the only effect is to
+should be formatted for human readability.
+In most implementations the only effect is to
 change the character used for the decimal point&ndash;perhaps from 
&quot;.&quot;  to &quot;,&quot;.
-These functions aren&rsquo;t aware of such niceties as thousands separation and
+The functions aren&rsquo;t aware of such niceties as thousands separation and
 so on. (See <a href="#perllocale-The-localeconv-function">The localeconv 
function</a> if you care about these things.)
 </p>
-<p>Output produced by print() is also affected by the current locale: it
-corresponds to what you&rsquo;d get from printf() in the &quot;C&quot; locale. 
 The
-same is true for Perl&rsquo;s internal conversions between numeric and
-string formats:
-</p>
 <pre class="verbatim">        use POSIX qw(strtod setlocale LC_NUMERIC);
+ use locale;
 
         setlocale LC_NUMERIC, &quot;&quot;;
 
@@ -55780,8 +55818,8 @@
 <p>The C standard defines the <code>LC_MONETARY</code> category, but not a 
function
 that is affected by its contents.  (Those with experience of standards
 committees will recognize that the working group decided to punt on the
-issue.)  Consequently, Perl takes no notice of it.  If you really want
-to use <code>LC_MONETARY</code>, you can query its contents&ndash;see
+issue.)  Consequently, Perl essentially takes no notice of it.  If you
+really want to use <code>LC_MONETARY</code>, you can query its 
contents&ndash;see
 <a href="#perllocale-The-localeconv-function">The localeconv 
function</a>&ndash;and use the information that it returns in your
 application&rsquo;s own formatting of currency amounts.  However, you may well
 find that the information, voluminous and complex though it may be, still
@@ -55794,12 +55832,12 @@
 <a name="perllocale-LC_005fTIME"></a>
 <div class="header">
 <p>
-Next: <a href="#perllocale-Other-categories" accesskey="n" 
rel="next">perllocale Other categories</a>, Previous: <a 
href="#perllocale-Category-LC_005fMONETARY_003a-Formatting-of-monetary-amounts-1"
 accesskey="p" rel="prev">perllocale Category LC_MONETARY: Formatting of 
monetary amounts 1</a>, Up: <a href="#perllocale-LOCALE-CATEGORIES" 
accesskey="u" rel="up">perllocale LOCALE CATEGORIES</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
+Next: <a href="#perllocale-Other-categories-1" accesskey="n" 
rel="next">perllocale Other categories 1</a>, Previous: <a 
href="#perllocale-Category-LC_005fMONETARY_003a-Formatting-of-monetary-amounts-1"
 accesskey="p" rel="prev">perllocale Category LC_MONETARY: Formatting of 
monetary amounts 1</a>, Up: <a href="#perllocale-LOCALE-CATEGORIES" 
accesskey="u" rel="up">perllocale LOCALE CATEGORIES</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="LC_005fTIME"></a>
 <h4 class="subsection">38.6.5 LC_TIME</h4>
 
-<p>Output produced by POSIX::strftime(), which builds a formatted
+<p>Output produced by <code>POSIX::strftime()</code>, which builds a formatted
 human-readable date/time string, is affected by the current 
<code>LC_TIME</code>
 locale.  Thus, in a French locale, the output produced by the <code>%B</code>
 format element (full month name) for the first month of the year would
@@ -55812,15 +55850,15 @@
                 strftime(&quot;%B&quot;, 0, 0, 0, 1, $_, 96);
         }
 </pre>
-<p>Note: <code>use locale</code> isn&rsquo;t needed in this example: as a 
function that
-exists only to generate locale-dependent results, strftime() always
-obeys the current <code>LC_TIME</code> locale.
+<p>Note: <code>use locale</code> isn&rsquo;t needed in this example: 
<code>strftime()</code> is a POSIX
+function which uses the standard system-supplied <code>libc</code> function 
that
+always obeys the current <code>LC_TIME</code> locale.
 </p>
 <p>See also <a href="I18N-Langinfo.html#Top">(I18N-Langinfo)</a> and 
<code>ABDAY_1</code>..<code>ABDAY_7</code>, 
<code>DAY_1</code>..<code>DAY_7</code>,
 <code>ABMON_1</code>..<code>ABMON_12</code>, and 
<code>ABMON_1</code>..<code>ABMON_12</code>.
 </p>
 <hr>
-<a name="perllocale-Other-categories"></a>
+<a name="perllocale-Other-categories-1"></a>
 <div class="header">
 <p>
 Previous: <a href="#perllocale-LC_005fTIME" accesskey="p" 
rel="prev">perllocale LC_TIME</a>, Up: <a href="#perllocale-LOCALE-CATEGORIES" 
accesskey="u" rel="up">perllocale LOCALE CATEGORIES</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
@@ -55828,10 +55866,9 @@
 <a name="Other-categories"></a>
 <h4 class="subsection">38.6.6 Other categories</h4>
 
-<p>The remaining locale category, <code>LC_MESSAGES</code> (possibly 
supplemented
-by others in particular implementations) is not currently used by
-Perl&ndash;except possibly to affect the behavior of library functions
-called by extensions outside the standard Perl distribution and by the
+<p>The remaining locale categories are not currently used by Perl itself.
+But again note that things Perl interacts with may use these, including
+extensions outside the standard Perl distribution, and by the
 operating system and its utilities.  Note especially that the string
 value of <code>$!</code> and the error messages given by external utilities may
 be changed by <code>LC_MESSAGES</code>.  If you want to have portable error
@@ -55871,7 +55908,7 @@
 if that locale has been subverted.  Or it might make payments in US
 dollars instead of Hong Kong dollars.
 
-</li><li> The date and day names in dates formatted by strftime() could be
+</li><li> The date and day names in dates formatted by <code>strftime()</code> 
could be
 manipulated to advantage by a malicious user able to subvert the
 <code>LC_DATE</code> locale.  (&quot;Look&ndash;it says I wasn&rsquo;t in the 
building on
 Sunday.&quot;)
@@ -55897,7 +55934,7 @@
 
 <p>Scalar true/false (or less/equal/greater) result is never tainted.
 </p>
-</li><li> <strong>Case-mapping interpolation</strong> (with <code>\l</code>, 
<code>\L</code>, <code>\u</code> or <code>\U</code>)
+</li><li> <strong>Case-mapping interpolation</strong> (with <code>\l</code>, 
<code>\L</code>, <code>\u</code>, <code>\U</code>, or <code>\F</code>)
 
 <p>Result string containing interpolated material is tainted if
 <code>use locale</code> (but not <code>use&nbsp;locale&nbsp;<span 
class="nolinebreak">':not_characters'</span></code><!-- /@w -->) is in effect.
@@ -55906,15 +55943,26 @@
 
 <p>Scalar true/false result never tainted.
 </p>
-<p>Subpatterns, either delivered as a list-context result or as $1 etc.
-are tainted if <code>use locale</code> (but not 
<code>use&nbsp;locale&nbsp;<span 
class="nolinebreak">':not_characters'</span></code><!-- /@w -->)
-is in effect, and the subpattern regular
-expression contains <code>\w</code> (to match an alphanumeric character), 
<code>\W</code>
-(non-alphanumeric character), <code>\s</code> (whitespace character), or 
<code>\S</code>
-(non whitespace character).  The matched-pattern variable, $&amp;, $&lsquo;
-(pre-match), $&rsquo; (post-match), and $+ (last match) are also tainted if
-<code>use locale</code> is in effect and the regular expression contains 
<code>\w</code>,
-<code>\W</code>, <code>\s</code>, or <code>\S</code>.
+<p>All subpatterns, either delivered as a list-context result or as 
<code>$1</code>
+<em>etc</em>., are tainted if <code>use locale</code> (but not
+<code>use&nbsp;locale&nbsp;<span 
class="nolinebreak">':not_characters'</span></code><!-- /@w -->) is in effect, 
and the subpattern
+regular expression contains a locale-dependent construct.  These
+constructs include <code>\w</code> (to match an alphanumeric character), 
<code>\W</code>
+(non-alphanumeric character), <code>\b</code> and <code>\B</code> 
(word-boundary and
+non-boundardy, which depend on what <code>\w</code> and <code>\W</code> 
match), <code>\s</code>
+(whitespace character), <code>\S</code> (non whitespace character), 
<code>\d</code> and
+<code>\D</code> (digits and non-digits), and the POSIX character classes, such 
as
+<code>[:alpha:]</code> (see <a 
href="#perlrecharclass-POSIX-Character-Classes">perlrecharclass POSIX Character 
Classes</a>).
+</p>
+<p>Tainting is also likely if the pattern is to be matched
+case-insensitively (via <code>/i</code>).  The exception is if all the code 
points
+to be matched this way are above 255 and do not have folds under Unicode
+rules to below 256.  Tainting is not done for these because Perl
+only uses Unicode rules for such code points, and those rules are the
+same no matter what the current locale.
+</p>
+<p>The matched-pattern variables, <code>$&amp;</code>, <code>$`</code> 
(pre-match), <code>$'</code>
+(post-match), and <code>$+</code> (last match) also are tainted.
 </p>
 </li><li> <strong>Substitution operator</strong> (<code>s///</code>):
 
@@ -55922,28 +55970,29 @@
 operand of <code>=~</code> becomes tainted when <code>use locale</code>
 (but not <code>use&nbsp;locale&nbsp;<span 
class="nolinebreak">':not_characters'</span></code><!-- /@w -->) is in effect 
if modified as
 a result of a substitution based on a regular
-expression match involving <code>\w</code>, <code>\W</code>, <code>\s</code>, 
or <code>\S</code>; or of
-case-mapping with <code>\l</code>, <code>\L</code>,<code>\u</code> or 
<code>\U</code>.
+expression match involving any of the things mentioned in the previous
+item, or of case-mapping, such as <code>\l</code>, 
<code>\L</code>,<code>\u</code>, <code>\U</code>, or <code>\F</code>.
 </p>
-</li><li> <strong>Output formatting functions</strong> (printf() and write()):
+</li><li> <strong>Output formatting functions</strong> (<code>printf()</code> 
and <code>write()</code>):
 
 <p>Results are never tainted because otherwise even output from print,
 for example <code>print(1/7)</code>, should be tainted if <code>use 
locale</code> is in
 effect.
 </p>
-</li><li> <strong>Case-mapping functions</strong> (lc(), lcfirst(), uc(), 
ucfirst()):
+</li><li> <strong>Case-mapping functions</strong> (<code>lc()</code>, 
<code>lcfirst()</code>, <code>uc()</code>, <code>ucfirst()</code>):
 
 <p>Results are tainted if <code>use locale</code> (but not
 <code>use&nbsp;locale&nbsp;<span 
class="nolinebreak">':not_characters'</span></code><!-- /@w -->) is in effect.
 </p>
-</li><li> <strong>POSIX locale-dependent functions</strong> (localeconv(), 
strcoll(),
-strftime(), strxfrm()):
+</li><li> <strong>POSIX locale-dependent functions</strong> 
(<code>localeconv()</code>, <code>strcoll()</code>,
+<code>strftime()</code>, <code>strxfrm()</code>):
 
 <p>Results are never tainted.
 </p>
-</li><li> <strong>POSIX character class tests</strong> (isalnum(), isalpha(), 
isdigit(),
-isgraph(), islower(), isprint(), ispunct(), isspace(), isupper(),
-isxdigit()):
+</li><li> <strong>POSIX character class tests</strong> 
(<code>POSIX::isalnum()</code>,
+<code>POSIX::isalpha()</code>, <code>POSIX::isdigit()</code>, 
<code>POSIX::isgraph()</code>,
+<code>POSIX::islower()</code>, <code>POSIX::isprint()</code>, 
<code>POSIX::ispunct()</code>,
+<code>POSIX::isspace()</code>, <code>POSIX::isupper()</code>, 
<code>POSIX::isxdigit()</code>):
 
 <p>True/false results are never tainted.
 </p>
@@ -55989,7 +56038,7 @@
         open(F, &quot;&gt;$localized_output_file&quot;)
             or warn &quot;Open of $localized_output_file failed: $!\n&quot;;
 </pre>
-<p>This third program fails to run because $&amp; is tainted: it is the result
+<p>This third program fails to run because <code>$&amp;</code> is tainted: it 
is the result
 of a match involving <code>\w</code> while <code>use locale</code> is in 
effect.
 </p>
 <hr>
@@ -56002,6 +56051,16 @@
 <h3 class="section">38.8 ENVIRONMENT</h3>
 
 <dl compact="compact">
+<dt>PERL_SKIP_LOCALE_INIT</dt>
+<dd><a name="perllocale-PERL_005fSKIP_005fLOCALE_005fINIT"></a>
+<p>This environment variable, available starting in Perl v5.20, and if it
+evaluates to a TRUE value, tells Perl to not use the rest of the
+environment variables to initialize with.  Instead, Perl uses whatever
+the current locale settings are.  This is particularly useful in
+embedded environments, see
+<a href="#perlembed-Using-embedded-Perl-with-POSIX-locales">perlembed Using 
embedded Perl with POSIX locales</a>.
+</p>
+</dd>
 <dt>PERL_BADLANG</dt>
 <dd><a name="perllocale-PERL_005fBADLANG"></a>
 <p>A string that can suppress Perl&rsquo;s warning about failed locale settings
@@ -56020,8 +56079,15 @@
 </dl>
 
 <p>The following environment variables are not specific to Perl: They are
-part of the standardized (ISO C, XPG4, POSIX 1.c) setlocale() method
-for controlling an application&rsquo;s opinion on data.
+part of the standardized (ISO C, XPG4, POSIX 1.c) <code>setlocale()</code> 
method
+for controlling an application&rsquo;s opinion on data.  Windows is non-POSIX,
+but Perl arranges for the following to work as described anyway.
+If the locale given by an environment variable is not valid, Perl tries
+the next lower one in priority.  If none are valid, on Windows, the
+system default locale is then tried.  If all else fails, the 
<code>&quot;C&quot;</code>
+locale is used.  If even that doesn&rsquo;t work, something is badly broken,
+but Perl tries to forge ahead with whatever the locale settinga might
+be.
 </p>
 <dl compact="compact">
 <dt>LC_ALL</dt>
@@ -56110,7 +56176,7 @@
    setlocale(LC_NUMERIC, &quot;fr_FR&quot;) or die &quot;Pardon&quot;;
    printf &quot;%g\n&quot;, 1.23; # If the &quot;fr_FR&quot; succeeded, 
probably shows 1,23.
 </pre>
-<p>and also how strings are parsed by POSIX::strtod() as numbers:
+<p>and also how strings are parsed by <code>POSIX::strtod()</code> as numbers:
 </p>
 <pre class="verbatim">   use locale;
    use POSIX qw(locale_h strtod);
@@ -56128,13 +56194,13 @@
 <h3 class="section">38.9 NOTES</h3>
 
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a 
href="#perllocale-Backward-compatibility" accesskey="1">perllocale Backward 
compatibility</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perllocale-String-eval-and-LC_005fNUMERIC" accesskey="1">perllocale 
String <code>eval</code> and 
<code>LC_NUMERIC</code></a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perllocale-I18N_003aCollate-obsolete" accesskey="2">perllocale 
I18N:Collate obsolete</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perllocale-Backward-compatibility" accesskey="2">perllocale Backward 
compatibility</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perllocale-Sort-speed-and-memory-use-impacts" accesskey="3">perllocale 
Sort speed and memory use impacts</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perllocale-I18N_003aCollate-obsolete" accesskey="3">perllocale 
I18N:Collate obsolete</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perllocale-write_0028_0029-and-LC_005fNUMERIC" accesskey="4">perllocale 
write() and LC_NUMERIC</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perllocale-Sort-speed-and-memory-use-impacts" accesskey="4">perllocale 
Sort speed and memory use impacts</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perllocale-Freely-available-locale-definitions" accesskey="5">perllocale 
Freely available locale definitions</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
@@ -56145,13 +56211,48 @@
 </table>
 
 <hr>
+<a name="perllocale-String-eval-and-LC_005fNUMERIC"></a>
+<div class="header">
+<p>
+Next: <a href="#perllocale-Backward-compatibility" accesskey="n" 
rel="next">perllocale Backward compatibility</a>, Up: <a 
href="#perllocale-NOTES" accesskey="u" rel="up">perllocale NOTES</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
+</div>
+<a name="String-eval-and-LC_005fNUMERIC"></a>
+<h4 class="subsection">38.9.1 String <code>eval</code> and 
<code>LC_NUMERIC</code></h4>
+
+<p>A string <a href="#perlfunc-eval-EXPR">eval</a> parses its expression as 
standard
+Perl.  It is therefore expecting the decimal point to be a dot.  If
+<code>LC_NUMERIC</code> is set to have this be a comma instead, the parsing 
will
+be confused, perhaps silently.
+</p>
+<pre class="verbatim"> use locale;
+ use POSIX qw(locale_h);
+ setlocale(LC_NUMERIC, &quot;fr_FR&quot;) or die &quot;Pardon&quot;;
+ my $a = 1.2;
+ print eval &quot;$a + 1.5&quot;;
+ print &quot;\n&quot;;
+</pre>
+<p>prints <code>13,5</code>.  This is because in that locale, the comma is the
+decimal point character.  The <code>eval</code> thus expands to:
+</p>
+<pre class="verbatim"> eval &quot;1,2 + 1.5&quot;
+</pre>
+<p>and the result is not what you likely expected.  No warnings are
+generated.  If you do string <code>eval</code>&rsquo;s within the scope of
+<code>use&nbsp;locale</code><!-- /@w -->, you should instead change the 
<code>eval</code> line to do
+something like:
+</p>
+<pre class="verbatim"> print eval &quot;no locale; $a + 1.5&quot;;
+</pre>
+<p>This prints <code>2.7</code>.
+</p>
+<hr>
 <a name="perllocale-Backward-compatibility"></a>
 <div class="header">
 <p>
-Next: <a href="#perllocale-I18N_003aCollate-obsolete" accesskey="n" 
rel="next">perllocale I18N:Collate obsolete</a>, Up: <a 
href="#perllocale-NOTES" accesskey="u" rel="up">perllocale NOTES</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
+Next: <a href="#perllocale-I18N_003aCollate-obsolete" accesskey="n" 
rel="next">perllocale I18N:Collate obsolete</a>, Previous: <a 
href="#perllocale-String-eval-and-LC_005fNUMERIC" accesskey="p" 
rel="prev">perllocale String <code>eval</code> and <code>LC_NUMERIC</code></a>, 
Up: <a href="#perllocale-NOTES" accesskey="u" rel="up">perllocale NOTES</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Backward-compatibility"></a>
-<h4 class="subsection">38.9.1 Backward compatibility</h4>
+<h4 class="subsection">38.9.2 Backward compatibility</h4>
 
 <p>Versions of Perl prior to 5.004 <strong>mostly</strong> ignored locale 
information,
 generally behaving as if something similar to the <code>&quot;C&quot;</code> 
locale were
@@ -56176,7 +56277,7 @@
 Next: <a href="#perllocale-Sort-speed-and-memory-use-impacts" accesskey="n" 
rel="next">perllocale Sort speed and memory use impacts</a>, Previous: <a 
href="#perllocale-Backward-compatibility" accesskey="p" rel="prev">perllocale 
Backward compatibility</a>, Up: <a href="#perllocale-NOTES" accesskey="u" 
rel="up">perllocale NOTES</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="I18N_003aCollate-obsolete"></a>
-<h4 class="subsection">38.9.2 I18N:Collate obsolete</h4>
+<h4 class="subsection">38.9.3 I18N:Collate obsolete</h4>
 
 <p>In versions of Perl prior to 5.004, per-locale collation was possible
 using the <code>I18N::Collate</code> library module.  This module is now mildly
@@ -56190,10 +56291,10 @@
 <a name="perllocale-Sort-speed-and-memory-use-impacts"></a>
 <div class="header">
 <p>
-Next: <a href="#perllocale-write_0028_0029-and-LC_005fNUMERIC" accesskey="n" 
rel="next">perllocale write() and LC_NUMERIC</a>, Previous: <a 
href="#perllocale-I18N_003aCollate-obsolete" accesskey="p" 
rel="prev">perllocale I18N:Collate obsolete</a>, Up: <a 
href="#perllocale-NOTES" accesskey="u" rel="up">perllocale NOTES</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
+Next: <a href="#perllocale-Freely-available-locale-definitions" accesskey="n" 
rel="next">perllocale Freely available locale definitions</a>, Previous: <a 
href="#perllocale-I18N_003aCollate-obsolete" accesskey="p" 
rel="prev">perllocale I18N:Collate obsolete</a>, Up: <a 
href="#perllocale-NOTES" accesskey="u" rel="up">perllocale NOTES</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Sort-speed-and-memory-use-impacts"></a>
-<h4 class="subsection">38.9.3 Sort speed and memory use impacts</h4>
+<h4 class="subsection">38.9.4 Sort speed and memory use impacts</h4>
 
 <p>Comparing and sorting by locale is usually slower than the default
 sorting; slow-downs of two to four times have been observed.  It will
@@ -56205,25 +56306,10 @@
 system&rsquo;s implementation of the locale system than by Perl.
 </p>
 <hr>
-<a name="perllocale-write_0028_0029-and-LC_005fNUMERIC"></a>
-<div class="header">
-<p>
-Next: <a href="#perllocale-Freely-available-locale-definitions" accesskey="n" 
rel="next">perllocale Freely available locale definitions</a>, Previous: <a 
href="#perllocale-Sort-speed-and-memory-use-impacts" accesskey="p" 
rel="prev">perllocale Sort speed and memory use impacts</a>, Up: <a 
href="#perllocale-NOTES" accesskey="u" rel="up">perllocale NOTES</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="write_0028_0029-and-LC_005fNUMERIC"></a>
-<h4 class="subsection">38.9.4 write() and LC_NUMERIC</h4>
-
-<p>If a program&rsquo;s environment specifies an LC_NUMERIC locale and 
<code>use
-locale</code> is in effect when the format is declared, the locale is used
-to specify the decimal point character in formatted output.  Formatted
-output cannot be controlled by <code>use locale</code> at the time when write()
-is called.
-</p>
-<hr>
 <a name="perllocale-Freely-available-locale-definitions"></a>
 <div class="header">
 <p>
-Next: <a href="#perllocale-I18n-and-l10n" accesskey="n" rel="next">perllocale 
I18n and l10n</a>, Previous: <a 
href="#perllocale-write_0028_0029-and-LC_005fNUMERIC" accesskey="p" 
rel="prev">perllocale write() and LC_NUMERIC</a>, Up: <a 
href="#perllocale-NOTES" accesskey="u" rel="up">perllocale NOTES</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
+Next: <a href="#perllocale-I18n-and-l10n" accesskey="n" rel="next">perllocale 
I18n and l10n</a>, Previous: <a 
href="#perllocale-Sort-speed-and-memory-use-impacts" accesskey="p" 
rel="prev">perllocale Sort speed and memory use impacts</a>, Up: <a 
href="#perllocale-NOTES" accesskey="u" rel="up">perllocale NOTES</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Freely-available-locale-definitions"></a>
 <h4 class="subsection">38.9.5 Freely available locale definitions</h4>
@@ -56284,9 +56370,11 @@
 <h3 class="section">38.10 Unicode and UTF-8</h3>
 
 <p>The support of Unicode is new starting from Perl version v5.6, and more 
fully
-implemented in version v5.8 and later.  See <a 
href="#perluniintro-NAME">perluniintro NAME</a>.  It is
-strongly recommended that when combining Unicode and locale (starting in
-v5.16), you use
+implemented in versions v5.8 and later.  See <a 
href="#perluniintro-NAME">perluniintro NAME</a>.
+</p>
+<p>Starting in Perl v5.20, UTF-8 locales are supported in Perl, except for
+<code>LC_COLLATE</code> (use <a 
href="Unicode-Collate.html#Top">(Unicode-Collate)</a> instead).  If you have 
Perl v5.16
+or v5.18 and can&rsquo;t upgrade, you can use
 </p>
 <pre class="verbatim">    use locale ':not_characters';
 </pre>
@@ -56306,26 +56394,38 @@
 instead use the <a href="PerlIO-locale.html#Top">(PerlIO-locale)</a> module, 
or the <a href="Encode-Locale.html#Top">(Encode-Locale)</a>
 module, both available from CPAN.  The latter module also has methods to
 ease the handling of <code>ARGV</code> and environment variables, and can be 
used
-on individual strings.  Also, if you know that all your locales will be
+on individual strings.  If you know that all your locales will be
 UTF-8, as many are these days, you can use the 
&lsquo;<strong>-C</strong>&rsquo;
 command line switch.
 </p>
 <p>This form of the pragma allows essentially seamless handling of locales
-with Unicode.  The collation order will be Unicode&rsquo;s.  It is strongly
+with Unicode.  The collation order will be by Unicode code point order.
+It is strongly
 recommended that when you need to order and sort strings that you use
 the standard module <a href="Unicode-Collate.html#Top">(Unicode-Collate)</a> 
which gives much better results
 in many instances than you can get with the old-style locale handling.
 </p>
-<p>For pre-v5.16 Perls, or if you use the locale pragma without the
-<code>:not_characters</code> parameter, Perl tries to work with both Unicode 
and
-locales&ndash;but there are problems.
-</p>
-<p>Perl does not handle multi-byte locales in this case, such as have been
-used for various
-Asian languages, such as Big5 or Shift JIS.  However, the increasingly
-common multi-byte UTF-8 locales, if properly implemented, may work
-reasonably well (depending on your C library implementation) in this
-form of the locale pragma, simply because both
+<p>All the modules and switches just described can be used in v5.20 with
+just plain <code>use locale</code>, and, should the input locales not be UTF-8,
+you&rsquo;ll get the less than ideal behavior, described below, that you get
+with pre-v5.16 Perls, or when you use the locale pragma without the
+<code>:not_characters</code> parameter in v5.16 and v5.18.  If you are using
+exclusively UTF-8 locales in v5.20 and higher, the rest of this section
+does not apply to you.
+</p>
+<p>There are two cases, multi-byte and single-byte locales.  First
+multi-byte:
+</p>
+<p>The only multi-byte (or wide character) locale that Perl is ever likely
+to support is UTF-8.  This is due to the difficulty of implementation,
+the fact that high quality UTF-8 locales are now published for every
+area of the world (<a 
href="http://unicode.org/Public/cldr/latest/";>http://unicode.org/Public/cldr/latest/</a>),
 and that
+failing all that you can use the <a href="Encode.html#Top">(Encode)</a> module 
to translate to/from
+your locale.  So, you&rsquo;ll have to do one of those things if you&rsquo;re 
using
+one of these locales, such as Big5 or Shift JIS.  For UTF-8 locales, in
+Perls (pre v5.20) that don&rsquo;t have full UTF-8 locale support, they may
+work reasonably well (depending on your C library implementation)
+simply because both
 they and Perl store characters that take up multiple bytes the same way.
 However, some, if not most, C library implementations may not process
 the characters in the upper half of the Latin-1 range (128 - 255)
@@ -56333,8 +56433,11 @@
 under a locale, Perl uses the functions like <code>isalnum()</code>.  Your C
 library may not work for UTF-8 locales with those functions, instead
 only working under the newer wide library functions like 
<code>iswalnum()</code>.
+However, they are treated like single-byte locales, and will have the
+restrictions described below.
 </p>
-<p>Perl generally takes the tack to use locale rules on code points that can 
fit
+<p>For single-byte locales,
+Perl generally takes the tack to use locale rules on code points that can fit
 in a single byte, and Unicode rules for those that can&rsquo;t (though this
 isn&rsquo;t uniformly applied, see the note at the end of this section).  This
 prevents many problems in locales that aren&rsquo;t UTF-8.  Suppose the locale
@@ -56343,18 +56446,19 @@
 regular expression character class <code>[[:alpha:]]</code> will magically 
match
 0xD7 in the Greek locale but not in the Latin one.
 </p>
-<p>However, there are places where this breaks down.  Certain constructs are
+<p>However, there are places where this breaks down.  Certain Perl constructs 
are
 for Unicode only, such as <code>\p{Alpha}</code>.  They assume that 0xD7 
always has its
 Unicode meaning (or the equivalent on EBCDIC platforms).  Since Latin1 is a
 subset of Unicode and 0xD7 is the multiplication sign in both Latin1 and
 Unicode, <code>\p{Alpha}</code> will never match it, regardless of locale.  A 
similar
-issue occurs with <code>\N{...}</code>.  It is therefore a bad idea to use 
<code>\p{}</code> or
+issue occurs with <code>\N{...}</code>.  Prior to v5.20, It is therefore a bad
+idea to use <code>\p{}</code> or
 <code>\N{}</code> under plain <code>use locale</code>&ndash;<em>unless</em> 
you can guarantee that the
 locale will be a ISO8859-1.  Use POSIX character classes instead.
 </p>
 <p>Another problem with this approach is that operations that cross the
 single byte/multiple byte boundary are not well-defined, and so are
-disallowed.  (This boundary is between the codepoints at 255/256.).
+disallowed.  (This boundary is between the codepoints at 255/256.)
 For example, lower casing LATIN CAPITAL LETTER Y WITH DIAERESIS (U+0178)
 should return LATIN SMALL LETTER Y WITH DIAERESIS (U+00FF).  But in the
 Greek locale, for example, there is no character at 0xFF, and Perl
@@ -56374,6 +56478,10 @@
 <em>provided</em> you make certain that all locales will always and only be 
either
 an ISO8859-1, or, if you don&rsquo;t have a deficient C library, a UTF-8 
locale.
 </p>
+<p>Still another problem is that this approach can lead to two code
+points meaning the same character.  Thus in a Greek locale, both U+03A7
+and U+00D7 are GREEK CAPITAL LETTER CHI.
+</p>
 <p>Vendor locales are notoriously buggy, and it is difficult for Perl to test
 its locale-handling code because this interacts with code that Perl has no
 control over; therefore the locale-handling code in Perl may be buggy as
@@ -56432,7 +56540,9 @@
 please report in excruciating detail to &lt;<samp>address@hidden</samp>&gt;, 
and
 also contact your vendor: bug fixes may exist for these problems
 in your operating system.  Sometimes such bug fixes are called an
-operating system upgrade.
+operating system upgrade.  If you have the source for Perl, include in
+the perlbug email the output of the test described above in <a 
href="#perllocale-Testing-for-broken-locales">Testing
+for broken locales</a>.
 </p>
 <hr>
 <a name="perllocale-SEE-ALSO"></a>
@@ -56440,7 +56550,7 @@
 <p>
 Next: <a href="#perllocale-HISTORY" accesskey="n" rel="next">perllocale 
HISTORY</a>, Previous: <a href="#perllocale-BUGS" accesskey="p" 
rel="prev">perllocale BUGS</a>, Up: <a href="#perllocale" accesskey="u" 
rel="up">perllocale</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-17"></a>
+<a name="SEE-ALSO-16"></a>
 <h3 class="section">38.12 SEE ALSO</h3>
 
 <p><a href="I18N-Langinfo.html#Top">(I18N-Langinfo)</a>, <a 
href="#perluniintro-NAME">perluniintro NAME</a>, <a 
href="#perlunicode-NAME">perlunicode NAME</a>, <a 
href="open.html#Top">(open)</a>,
@@ -56451,6 +56561,9 @@
 <a href="POSIX.html#setlocale">(POSIX)setlocale</a>, <a 
href="POSIX.html#strcoll">(POSIX)strcoll</a>, <a 
href="POSIX.html#strftime">(POSIX)strftime</a>,
 <a href="POSIX.html#strtod">(POSIX)strtod</a>, <a 
href="POSIX.html#strxfrm">(POSIX)strxfrm</a>.
 </p>
+<p>For special considerations when Perl is embedded in a C program,
+see <a href="#perlembed-Using-embedded-Perl-with-POSIX-locales">perlembed 
Using embedded Perl with POSIX locales</a>.
+</p>
 <hr>
 <a name="perllocale-HISTORY"></a>
 <div class="header">
@@ -56921,7 +57034,7 @@
 <p>
 Next: <a href="#perllol-AUTHOR" accesskey="n" rel="next">perllol AUTHOR</a>, 
Previous: <a href="#perllol-DESCRIPTION" accesskey="p" rel="prev">perllol 
DESCRIPTION</a>, Up: <a href="#perllol" accesskey="u" rel="up">perllol</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-18"></a>
+<a name="SEE-ALSO-17"></a>
 <h3 class="section">39.3 SEE ALSO</h3>
 
 <p><a href="#perldata-NAME">perldata NAME</a>, <a href="#perlref-NAME">perlref 
NAME</a>, <a href="#perldsc-NAME">perldsc NAME</a>
@@ -56932,7 +57045,7 @@
 <p>
 Previous: <a href="#perllol-SEE-ALSO" accesskey="p" rel="prev">perllol SEE 
ALSO</a>, Up: <a href="#perllol" accesskey="u" rel="up">perllol</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="AUTHOR-17"></a>
+<a name="AUTHOR-16"></a>
 <h3 class="section">39.4 AUTHOR</h3>
 
 <p>Tom Christiansen &lt;<samp>address@hidden</samp>&gt;
@@ -57192,7 +57305,8 @@
 </p>
 <pre class="verbatim">    sub identify_typeglob {
         my $glob = shift;
-        print 'You gave me ', *{$glob}{PACKAGE}, '::', *{$glob}{NAME}, 
&quot;\n&quot;;
+        print 'You gave me ', *{$glob}{PACKAGE},
+            '::', *{$glob}{NAME}, &quot;\n&quot;;
     }
     identify_typeglob *foo;
     identify_typeglob *bar::baz;
@@ -57370,7 +57484,7 @@
   }
   INIT { print  &quot; 9.   You'll see the difference right away.\n&quot; }
 
-  print         &quot;13.   It merely _looks_ like it should be 
confusing.\n&quot;;
+  print         &quot;13.   It only _looks_ like it should be 
confusing.\n&quot;;
 
   __END__
 </pre>
@@ -57609,7 +57723,7 @@
 <p>
 Previous: <a href="#perlmod-DESCRIPTION" accesskey="p" rel="prev">perlmod 
DESCRIPTION</a>, Up: <a href="#perlmod" accesskey="u" rel="up">perlmod</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-19"></a>
+<a name="SEE-ALSO-18"></a>
 <h3 class="section">40.3 SEE ALSO</h3>
 
 <p>See <a href="perlmodlib.html#Top">(perlmodlib)</a> for general style issues 
related to building Perl
@@ -58088,7 +58202,7 @@
 <p>
 Next: <a href="#perlmodinstall-COPYRIGHT" accesskey="n" 
rel="next">perlmodinstall COPYRIGHT</a>, Previous: <a 
href="#perlmodinstall-HEY" accesskey="p" rel="prev">perlmodinstall HEY</a>, Up: 
<a href="#perlmodinstall" accesskey="u" rel="up">perlmodinstall</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="AUTHOR-18"></a>
+<a name="AUTHOR-17"></a>
 <h3 class="section">41.5 AUTHOR</h3>
 
 <p>Jon Orwant
@@ -58600,7 +58714,7 @@
 unintuitive.  Also, if many elements may be undefined you may see the
 following unattractive method calls:
 </p>
-<pre class="verbatim">    $obj-&gt;do_something(undef, undef, undef, undef, 
undef, undef, 1024);
+<pre class="verbatim">    $obj-&gt;do_something(undef, undef, undef, undef, 
undef, 1024);
 </pre>
 <p>Provide sensible defaults for parameters which have them.  Don&rsquo;t make
 your users specify parameters which will almost always be the same.
@@ -58823,6 +58937,11 @@
 software describing user-visible changes to your module, in terms
 relevant to the user.
 </p>
+<p>Unless you have good reasons for using some other format
+(for example, a format used within your company),
+the convention is to name your changelog file <code>Changes</code>,
+and to follow the simple format described in <a 
href="CPAN-Changes-Spec.html#Top">(CPAN-Changes-Spec)</a>.
+</p>
 <hr>
 <a name="perlmodstyle-RELEASE-CONSIDERATIONS"></a>
 <div class="header">
@@ -59054,7 +59173,7 @@
 <p>
 Next: <a href="#perlmodstyle-AUTHOR" accesskey="n" rel="next">perlmodstyle 
AUTHOR</a>, Previous: <a href="#perlmodstyle-COMMON-PITFALLS" accesskey="p" 
rel="prev">perlmodstyle COMMON PITFALLS</a>, Up: <a href="#perlmodstyle" 
accesskey="u" rel="up">perlmodstyle</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-20"></a>
+<a name="SEE-ALSO-19"></a>
 <h3 class="section">42.9 SEE ALSO</h3>
 
 <dl compact="compact">
@@ -59105,7 +59224,7 @@
 <p>
 Previous: <a href="#perlmodstyle-SEE-ALSO" accesskey="p" 
rel="prev">perlmodstyle SEE ALSO</a>, Up: <a href="#perlmodstyle" accesskey="u" 
rel="up">perlmodstyle</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="AUTHOR-19"></a>
+<a name="AUTHOR-18"></a>
 <h3 class="section">42.10 AUTHOR</h3>
 
 <p>Kirrily &quot;Skud&quot; Robert &lt;address@hidden&gt;
@@ -59651,7 +59770,7 @@
 <p>
 Next: <a href="#perlnewmod-SEE-ALSO" accesskey="n" rel="next">perlnewmod SEE 
ALSO</a>, Previous: <a href="#perlnewmod-DESCRIPTION" accesskey="p" 
rel="prev">perlnewmod DESCRIPTION</a>, Up: <a href="#perlnewmod" accesskey="u" 
rel="up">perlnewmod</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="AUTHOR-20"></a>
+<a name="AUTHOR-19"></a>
 <h3 class="section">44.3 AUTHOR</h3>
 
 <p>Simon Cozens, <code>address@hidden</code>
@@ -59664,7 +59783,7 @@
 <p>
 Previous: <a href="#perlnewmod-AUTHOR" accesskey="p" rel="prev">perlnewmod 
AUTHOR</a>, Up: <a href="#perlnewmod" accesskey="u" rel="up">perlnewmod</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-21"></a>
+<a name="SEE-ALSO-20"></a>
 <h3 class="section">44.4 SEE ALSO</h3>
 
 <p><a href="#perlmod-NAME">perlmod NAME</a>, <a 
href="perlmodlib.html#Top">(perlmodlib)</a>, <a 
href="#perlmodinstall-NAME">perlmodinstall NAME</a>, <a 
href="h2xs.html#Top">(h2xs)</a>, <a href="strict.html#Top">(strict)</a>,
@@ -59943,7 +60062,7 @@
 <p>
 Next: <a href="#perlnumber-SEE-ALSO" accesskey="n" rel="next">perlnumber SEE 
ALSO</a>, Previous: <a href="#perlnumber-Flavors-of-Perl-numeric-operations" 
accesskey="p" rel="prev">perlnumber Flavors of Perl numeric operations</a>, Up: 
<a href="#perlnumber" accesskey="u" rel="up">perlnumber</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="AUTHOR-21"></a>
+<a name="AUTHOR-20"></a>
 <h3 class="section">45.7 AUTHOR</h3>
 
 <p>Ilya Zakharevich <code>address@hidden</code>
@@ -59958,7 +60077,7 @@
 <p>
 Previous: <a href="#perlnumber-AUTHOR" accesskey="p" rel="prev">perlnumber 
AUTHOR</a>, Up: <a href="#perlnumber" accesskey="u" rel="up">perlnumber</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-22"></a>
+<a name="SEE-ALSO-21"></a>
 <h3 class="section">45.8 SEE ALSO</h3>
 
 <p><a href="overload.html#Top">(overload)</a>, <a href="#perlop-NAME">perlop 
NAME</a>
@@ -60157,7 +60276,7 @@
 <p>Note, however, that (unlike most other OO languages) Perl does not
 ensure or enforce encapsulation in any way. If you want objects to
 actually <em>be</em> opaque you need to arrange for that yourself. This can
-be done in a varierty of ways, including using <a 
href="#perlobj-Inside_002dOut-objects">Inside-Out objects</a>
+be done in a variety of ways, including using <a 
href="#perlobj-Inside_002dOut-objects">Inside-Out objects</a>
 or modules from CPAN.
 </p>
 <table class="menu" border="0" cellspacing="0">
@@ -60883,7 +61002,7 @@
 <p><strong>Outside of the file handle case, use of this syntax is discouraged 
as
 it can confuse the Perl interpreter. See below for more details.</strong>
 </p>
-<p>Perl suports another method invocation syntax called &quot;indirect 
object&quot;
+<p>Perl supports another method invocation syntax called &quot;indirect 
object&quot;
 notation. This syntax is called &quot;indirect&quot; because the method comes
 before the object it is being invoked on.
 </p>
@@ -61296,7 +61415,7 @@
 <p>
 Previous: <a href="#perlobj-DESCRIPTION" accesskey="p" rel="prev">perlobj 
DESCRIPTION</a>, Up: <a href="#perlobj" accesskey="u" rel="up">perlobj</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-23"></a>
+<a name="SEE-ALSO-22"></a>
 <h3 class="section">46.3 SEE ALSO</h3>
 
 <p>A kinder, gentler tutorial on object-oriented programming in Perl can
@@ -61924,7 +62043,7 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlootut-Class_003a_003aAccessor" accesskey="2">perlootut 
Class::Accessor</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlootut-Object_003a_003aTiny" accesskey="3">perlootut 
Object::Tiny</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlootut-Class_003a_003aTiny" accesskey="3">perlootut 
Class::Tiny</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlootut-Role_003a_003aTiny" accesskey="4">perlootut 
Role::Tiny</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
@@ -62108,7 +62227,7 @@
 <a name="perlootut-Class_003a_003aAccessor"></a>
 <div class="header">
 <p>
-Next: <a href="#perlootut-Object_003a_003aTiny" accesskey="n" 
rel="next">perlootut Object::Tiny</a>, Previous: <a href="#perlootut-Moose" 
accesskey="p" rel="prev">perlootut Moose</a>, Up: <a 
href="#perlootut-PERL-OO-SYSTEMS" accesskey="u" rel="up">perlootut PERL OO 
SYSTEMS</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
+Next: <a href="#perlootut-Class_003a_003aTiny" accesskey="n" 
rel="next">perlootut Class::Tiny</a>, Previous: <a href="#perlootut-Moose" 
accesskey="p" rel="prev">perlootut Moose</a>, Up: <a 
href="#perlootut-PERL-OO-SYSTEMS" accesskey="u" rel="up">perlootut PERL OO 
SYSTEMS</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Class_003a_003aAccessor"></a>
 <h4 class="subsection">47.5.2 Class::Accessor</h4>
@@ -62149,23 +62268,23 @@
 constructor for your class.
 </p>
 <hr>
-<a name="perlootut-Object_003a_003aTiny"></a>
+<a name="perlootut-Class_003a_003aTiny"></a>
 <div class="header">
 <p>
 Next: <a href="#perlootut-Role_003a_003aTiny" accesskey="n" 
rel="next">perlootut Role::Tiny</a>, Previous: <a 
href="#perlootut-Class_003a_003aAccessor" accesskey="p" rel="prev">perlootut 
Class::Accessor</a>, Up: <a href="#perlootut-PERL-OO-SYSTEMS" accesskey="u" 
rel="up">perlootut PERL OO SYSTEMS</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="Object_003a_003aTiny"></a>
-<h4 class="subsection">47.5.3 Object::Tiny</h4>
+<a name="Class_003a_003aTiny"></a>
+<h4 class="subsection">47.5.3 Class::Tiny</h4>
 
-<p>Finally, we have <a href="Object-Tiny.html#Top">(Object-Tiny)</a>. This 
module truly lives up to its
+<p>Finally, we have <a href="Class-Tiny.html#Top">(Class-Tiny)</a>. This 
module truly lives up to its
 name. It has an incredibly minimal API and absolutely no dependencies
-(core or not). Still, we think it&rsquo;s a lot easier to use than writing
+on any recent Perl. Still, we think it&rsquo;s a lot easier to use than writing
 your own OO code from scratch.
 </p>
 <p>Here&rsquo;s our <code>File</code> class once more:
 </p>
 <pre class="verbatim">  package File;
-  use Object::Tiny qw( path content last_mod_time );
+  use Class::Tiny qw( path content last_mod_time );
 
   sub print_info {
       my $self = shift;
@@ -62175,14 +62294,16 @@
 </pre>
 <p>That&rsquo;s it!
 </p>
-<p>With <code>Object::Tiny</code>, all accessors are read-only. It generates a
+<p>With <code>Class::Tiny</code>, all accessors are read-write. It generates a
 constructor for you, as well as the accessors you define.
 </p>
+<p>You can also use <a 
href="Class-Tiny-Antlers.html#Top">(Class-Tiny-Antlers)</a> for 
<code>Moose</code>-like syntax.
+</p>
 <hr>
 <a name="perlootut-Role_003a_003aTiny"></a>
 <div class="header">
 <p>
-Next: <a href="#perlootut-OO-System-Summary" accesskey="n" 
rel="next">perlootut OO System Summary</a>, Previous: <a 
href="#perlootut-Object_003a_003aTiny" accesskey="p" rel="prev">perlootut 
Object::Tiny</a>, Up: <a href="#perlootut-PERL-OO-SYSTEMS" accesskey="u" 
rel="up">perlootut PERL OO SYSTEMS</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+Next: <a href="#perlootut-OO-System-Summary" accesskey="n" 
rel="next">perlootut OO System Summary</a>, Previous: <a 
href="#perlootut-Class_003a_003aTiny" accesskey="p" rel="prev">perlootut 
Class::Tiny</a>, Up: <a href="#perlootut-PERL-OO-SYSTEMS" accesskey="u" 
rel="up">perlootut PERL OO SYSTEMS</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Role_003a_003aTiny"></a>
 <h4 class="subsection">47.5.4 Role::Tiny</h4>
@@ -62197,7 +62318,7 @@
 system, but in a much smaller package. Most notably, it doesn&rsquo;t support
 any sort of attribute declaration, so you have to do that by hand.
 Still, it&rsquo;s useful, and works well with <code>Class::Accessor</code> and
-<code>Object::Tiny</code>
+<code>Class::Tiny</code>
 </p>
 <hr>
 <a name="perlootut-OO-System-Summary"></a>
@@ -62226,16 +62347,16 @@
 compatibility mode which makes moving from <code>Class::Accessor</code> to
 <code>Moose</code> easy.
 </p>
-</li><li> <a href="Object-Tiny.html#Top">(Object-Tiny)</a>
+</li><li> <a href="Class-Tiny.html#Top">(Class-Tiny)</a>
 
-<p><code>Object::Tiny</code> is the absolute minimal option. It has no 
dependencies,
+<p><code>Class::Tiny</code> is the absolute minimal option. It has no 
dependencies,
 and almost no syntax to learn. It&rsquo;s a good option for a super minimal
 environment and for throwing something together quickly without having
 to worry about details.
 </p>
 </li><li> <a href="Role-Tiny.html#Top">(Role-Tiny)</a>
 
-<p>Use <code>Role::Tiny</code> with <code>Class::Accessor</code> or 
<code>Object::Tiny</code> if you
+<p>Use <code>Role::Tiny</code> with <code>Class::Accessor</code> or 
<code>Class::Tiny</code> if you
 find yourself considering multiple inheritance. If you go with
 <code>Moose</code>, it comes with its own role implementation.
 </p>
@@ -62273,14 +62394,14 @@
 write your classes by hand, there&rsquo;s really no reason to do that with
 modern Perl.
 </p>
-<p>For small systems, <a href="Object-Tiny.html#Top">(Object-Tiny)</a> and <a 
href="Class-Accessor.html#Top">(Class-Accessor)</a> both provide
+<p>For small systems, <a href="Class-Tiny.html#Top">(Class-Tiny)</a> and <a 
href="Class-Accessor.html#Top">(Class-Accessor)</a> both provide
 minimal object systems that take care of basic boilerplate for you.
 </p>
 <p>For bigger projects, <a href="Moose.html#Top">(Moose)</a> provides a rich 
set of features that will
 let you focus on implementing your business logic.
 </p>
 <p>We encourage you to play with and evaluate <a 
href="Moose.html#Top">(Moose)</a>,
-<a href="Class-Accessor.html#Top">(Class-Accessor)</a>, and <a 
href="Object-Tiny.html#Top">(Object-Tiny)</a> to see which OO system is right
+<a href="Class-Accessor.html#Top">(Class-Accessor)</a>, and <a 
href="Class-Tiny.html#Top">(Class-Tiny)</a> to see which OO system is right
 for you.
 </p>
 <hr>
@@ -62319,6 +62440,22 @@
 <a name="DESCRIPTION-46"></a>
 <h3 class="section">48.2 DESCRIPTION</h3>
 
+<p>In Perl, the operator determines what operation is performed,
+independent of the type of the operands. For example <code>$a + $b</code>
+is always a numeric addition, and if <code>$a</code> or <code>$b</code> do not 
contain
+numbers, an attempt is made to convert them to numbers first.
+</p>
+<p>This is in contrast to many other dynamic languages, where the
+operation is determined by the type of the first argument. It also
+means that Perl has two versions of some operators, one for numeric
+and one for string comparison. For example <code>$a == $b</code> compares
+two numbers for equality, and <code>$a eq $b</code> compares two strings.
+</p>
+<p>There are a few exceptions though: <code>x</code> can be either string
+repetition or list repetition, depending on the type of the left
+operand, and <code>&amp;</code>, <code>|</code> and <code>^</code> can be 
either string or numeric bit
+operations.
+</p>
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a 
href="#perlop-Operator-Precedence-and-Associativity" accesskey="1">perlop 
Operator Precedence and Associativity</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
@@ -62338,7 +62475,7 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a href="#perlop-Additive-Operators" 
accesskey="9">perlop Additive Operators</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlop-Shift-Operators-_003e_003e-_003e-_003e_003e_003e">perlop Shift 
Operators   &gt;&gt; &gt; &gt;&gt;&gt;</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlop-Shift-Operators-_003e-_003e_003e_003e">perlop Shift Operators   
&gt;  &gt;&gt;&gt;</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlop-Named-Unary-Operators">perlop Named Unary 
Operators</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
@@ -62550,6 +62687,10 @@
 and the left side must be either an object (a blessed reference)
 or a class name (that is, a package name).  See <a 
href="#perlobj-NAME">perlobj NAME</a>.
 </p>
+<p>The dereferencing cases (as opposed to method-calling cases) are
+somewhat extended by the experimental <code>postderef</code> feature.  For the
+details of that feature, consult <a 
href="#perlref-Postfix-Dereference-Syntax">perlref Postfix Dereference 
Syntax</a>.
+</p>
 <hr>
 <a name="perlop-Auto_002dincrement-and-Auto_002ddecrement"></a>
 <div class="header">
@@ -62751,7 +62892,7 @@
 <a name="perlop-Additive-Operators"></a>
 <div class="header">
 <p>
-Next: <a href="#perlop-Shift-Operators-_003e_003e-_003e-_003e_003e_003e" 
accesskey="n" rel="next">perlop Shift Operators   &gt;&gt; &gt; 
&gt;&gt;&gt;</a>, Previous: <a href="#perlop-Multiplicative-Operators" 
accesskey="p" rel="prev">perlop Multiplicative Operators</a>, Up: <a 
href="#perlop-DESCRIPTION" accesskey="u" rel="up">perlop DESCRIPTION</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
+Next: <a href="#perlop-Shift-Operators-_003e-_003e_003e_003e" accesskey="n" 
rel="next">perlop Shift Operators   &gt;  &gt;&gt;&gt;</a>, Previous: <a 
href="#perlop-Multiplicative-Operators" accesskey="p" rel="prev">perlop 
Multiplicative Operators</a>, Up: <a href="#perlop-DESCRIPTION" accesskey="u" 
rel="up">perlop DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Additive-Operators"></a>
 <h4 class="subsection">48.2.9 Additive Operators</h4>
@@ -62763,13 +62904,13 @@
 <p>Binary <code>.</code> concatenates two strings.
 </p>
 <hr>
-<a name="perlop-Shift-Operators-_003e_003e-_003e-_003e_003e_003e"></a>
+<a name="perlop-Shift-Operators-_003e-_003e_003e_003e"></a>
 <div class="header">
 <p>
 Next: <a href="#perlop-Named-Unary-Operators" accesskey="n" rel="next">perlop 
Named Unary Operators</a>, Previous: <a href="#perlop-Additive-Operators" 
accesskey="p" rel="prev">perlop Additive Operators</a>, Up: <a 
href="#perlop-DESCRIPTION" accesskey="u" rel="up">perlop DESCRIPTION</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="Shift-Operators-_003e_003e-_003e-_003e_003e_003e"></a>
-<h4 class="subsection">48.2.10 Shift Operators   &gt;&gt; &gt; 
&gt;&gt;&gt;</h4>
+<a name="Shift-Operators-_003e-_003e_003e_003e"></a>
+<h4 class="subsection">48.2.10 Shift Operators   &gt;  &gt;&gt;&gt;</h4>
 
 <p>Binary <code>&lt;&lt;</code> returns the value of its left argument shifted 
left by the
 number of bits specified by the right argument.  Arguments should be
@@ -62804,7 +62945,7 @@
 <a name="perlop-Named-Unary-Operators"></a>
 <div class="header">
 <p>
-Next: <a href="#perlop-Relational-Operators" accesskey="n" rel="next">perlop 
Relational Operators</a>, Previous: <a 
href="#perlop-Shift-Operators-_003e_003e-_003e-_003e_003e_003e" accesskey="p" 
rel="prev">perlop Shift Operators   &gt;&gt; &gt; &gt;&gt;&gt;</a>, Up: <a 
href="#perlop-DESCRIPTION" accesskey="u" rel="up">perlop DESCRIPTION</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
+Next: <a href="#perlop-Relational-Operators" accesskey="n" rel="next">perlop 
Relational Operators</a>, Previous: <a 
href="#perlop-Shift-Operators-_003e-_003e_003e_003e" accesskey="p" 
rel="prev">perlop Shift Operators   &gt;  &gt;&gt;&gt;</a>, Up: <a 
href="#perlop-DESCRIPTION" accesskey="u" rel="up">perlop DESCRIPTION</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Named-Unary-Operators"></a>
 <h4 class="subsection">48.2.11 Named Unary Operators</h4>
@@ -62860,7 +63001,6 @@
 </p>
 <p>Binary &quot;&lt;&quot; returns true if the left argument is numerically 
less than
 the right argument.
-&gt;
 </p>
 <p>Binary &quot;&gt;&quot; returns true if the left argument is numerically 
greater
 than the right argument.
@@ -62868,7 +63008,6 @@
 </p>
 <p>Binary &quot;&lt;=&quot; returns true if the left argument is numerically 
less than
 or equal to the right argument.
-&gt;
 </p>
 <p>Binary &quot;&gt;=&quot; returns true if the left argument is numerically 
greater
 than or equal to the right argument.
@@ -62876,19 +63015,15 @@
 </p>
 <p>Binary &quot;lt&quot; returns true if the left argument is stringwise less 
than
 the right argument.
-&gt;
 </p>
 <p>Binary &quot;gt&quot; returns true if the left argument is stringwise 
greater
 than the right argument.
-&gt;
 </p>
 <p>Binary &quot;le&quot; returns true if the left argument is stringwise less 
than
 or equal to the right argument.
-&gt;
 </p>
 <p>Binary &quot;ge&quot; returns true if the left argument is stringwise 
greater
 than or equal to the right argument.
-&gt;
 </p>
 <hr>
 <a name="perlop-Equality-Operators"></a>
@@ -62954,7 +63089,9 @@
 binary <code>~~</code> does a &quot;smartmatch&quot; between its arguments.  
This is mostly
 used implicitly in the <code>when</code> construct described in <a 
href="#perlsyn-NAME">perlsyn NAME</a>, although
 not all <code>when</code> clauses call the smartmatch operator.  Unique among 
all of
-Perl&rsquo;s operators, the smartmatch operator can recurse.
+Perl&rsquo;s operators, the smartmatch operator can recurse.  The smartmatch
+operator is <a href="#perlpolicy-experimental">experimental</a> and its 
behavior is
+subject to change.
 </p>
 <p>It is also unique in that all other Perl operators impose a context
 (usually string or numeric context) on their operands, autoconverting
@@ -63256,8 +63393,10 @@
 <a name="Bitwise-And"></a>
 <h4 class="subsection">48.2.15 Bitwise And</h4>
 
-<p>Binary &quot;&amp;&quot; returns its operands ANDed together bit by bit.
-(See also <a href="#perlop-Integer-Arithmetic">Integer Arithmetic</a> and <a 
href="#perlop-Bitwise-String-Operators">Bitwise String Operators</a>.)
+<p>Binary &quot;&amp;&quot; returns its operands ANDed together bit by bit.  
Although no
+warning is currently raised, the result is not well defined when this operation
+is performed on operands that aren&rsquo;t either numbers (see
+<a href="#perlop-Integer-Arithmetic">Integer Arithmetic</a>) or bitstrings 
(see <a href="#perlop-Bitwise-String-Operators">Bitwise String Operators</a>).
 </p>
 <p>Note that &quot;&amp;&quot; has lower priority than relational operators, 
so for example
 the parentheses are essential in a test like
@@ -63274,10 +63413,13 @@
 <h4 class="subsection">48.2.16 Bitwise Or and Exclusive Or</h4>
 
 <p>Binary &quot;|&quot; returns its operands ORed together bit by bit.
-(See also <a href="#perlop-Integer-Arithmetic">Integer Arithmetic</a> and <a 
href="#perlop-Bitwise-String-Operators">Bitwise String Operators</a>.)
 </p>
 <p>Binary &quot;^&quot; returns its operands XORed together bit by bit.
-(See also <a href="#perlop-Integer-Arithmetic">Integer Arithmetic</a> and <a 
href="#perlop-Bitwise-String-Operators">Bitwise String Operators</a>.)
+</p>
+<p>Although no warning is currently raised, the results are not well
+defined when these operations are performed on operands that aren&rsquo;t 
either
+numbers (see <a href="#perlop-Integer-Arithmetic">Integer Arithmetic</a>) or 
bitstrings (see <a href="#perlop-Bitwise-String-Operators">Bitwise String
+Operators</a>).
 </p>
 <p>Note that &quot;|&quot; and &quot;^&quot; have lower priority than 
relational operators, so
 for example the brackets are essential in a test like
@@ -63527,7 +63669,8 @@
 </pre>
 <p>However, because there are <em>many</em> other lowercase Greek characters 
than
 just those, to match lowercase Greek characters in a regular expression,
-you would use the pattern <code>/(?:(?=\p{Greek})\p{Lower})+/</code>.
+you could use the pattern <code>/(?:(?=\p{Greek})\p{Lower})+/</code> (or the
+<a href="#perlrecharclass-Extended-Bracketed-Character-Classes">experimental 
feature</a> <code>/(?[&nbsp;\p{Greek}&nbsp;&amp;&nbsp;\p{Lower}&nbsp;])+/<!-- 
/@w --></code>).
 </p>
 <p>Because each operand is evaluated in integer form, <code>2.18 .. 
3.14</code> will
 return two elements in list context.
@@ -63589,7 +63732,7 @@
 <a name="Assignment-Operators"></a>
 <h4 class="subsection">48.2.22 Assignment Operators</h4>
 
-<p>&gt;&gt;     &gt;= &gt;&gt;&gt;   
+<p>&gt;     = &gt;&gt;&gt;   
 </p>
 <p>&quot;=&quot; is the ordinary assignment operator.
 </p>
@@ -63826,7 +63969,7 @@
 <a name="Quote-and-Quote_002dlike-Operators"></a>
 <h4 class="subsection">48.2.29 Quote and Quote-like Operators</h4>
 
-<pre class="verbatim">          &gt;&gt;
+<pre class="verbatim">          &gt;
  
 </pre>
 <p>While we usually think of quotes as literal values, in Perl they
@@ -64083,7 +64226,9 @@
 beyond) is being used, the case map used by <code>\l</code>, <code>\L</code>, 
<code>\u</code>, and
 <code>\U</code> is as defined by Unicode.  That means that case-mapping
 a single character can sometimes produce several characters.
-Under <code>use locale</code>, <code>\F</code> produces the same results as 
<code>\L</code>.
+Under <code>use locale</code>, <code>\F</code> produces the same results as 
<code>\L</code>
+for all locales but a UTF-8 one, where it instead uses the Unicode
+definition.
 </p>
 <p>All systems use the virtual <code>&quot;\n&quot;</code> to represent a line 
terminator,
 called a &quot;newline&quot;.  There is no such thing as an unvarying, physical
@@ -64230,7 +64375,7 @@
 explicitly using it.
 </p>
 <p>The last four modifiers listed above, added in Perl 5.14,
-control the character set semantics, but <code>/a</code> is the only one you 
are likely
+control the character set rules, but <code>/a</code> is the only one you are 
likely
 to want to specify explicitly; the other three are selected
 automatically by various pragmas.
 </p>
@@ -64264,8 +64409,8 @@
 as delimiters.  This is particularly useful for matching path names
 that contain &quot;/&quot;, to avoid LTS (leaning toothpick syndrome).  If 
&quot;?&quot; is
 the delimiter, then a match-only-once rule applies,
-described in <code>m?PATTERN?</code> below.
-If &quot;&rsquo;&quot; is the delimiter, no interpolation is performed on the 
PATTERN.
+described in <code>m?PATTERN?</code> below. If &quot;&rsquo;&quot; (single 
quote) is the delimiter,
+no interpolation is performed on the PATTERN.
 When using a character valid in an identifier, whitespace is required
 after the <code>m</code>.
 </p>
@@ -64928,8 +65073,8 @@
     eval &quot;tr/$oldlist/$newlist/, 1&quot; or die $@;
 </pre>
 </dd>
-<dt>&lt;&lt;EOF    &gt;&gt;</dt>
-<dd><a name="perlop-_003c_003cEOF-_003e_003e"></a>
+<dt>&lt;&lt;EOF    &gt;</dt>
+<dd><a name="perlop-_003c_003cEOF-_003e"></a>
 <p>A line-oriented form of quoting is based on the shell 
&quot;here-document&quot;
 syntax.  Following a <code>&lt;&lt;</code> you specify a string to terminate
 the quoted material, and all lines following the current line down to
@@ -65754,1375 +65899,498 @@
 and &quot;&gt;&gt;&quot;) always produce integral results.  (But see also
 <a href="#perlop-Bitwise-String-Operators">Bitwise String Operators</a>.)  
However, <code>use integer</code> still has meaning for
 them.  By default, their results are interpreted as unsigned integers, but
-if <code>use integer</code> is in effect, their results are interpreted
-as signed integers.  For example, <code>~0</code> usually evaluates to a large
-integral value.  However, <code>use integer; ~0</code> is <code>-1</code> on 
two&rsquo;s-complement
-machines.
-</p>
-<hr>
-<a name="perlop-Floating_002dpoint-Arithmetic"></a>
-<div class="header">
-<p>
-Next: <a href="#perlop-Bigger-Numbers" accesskey="n" rel="next">perlop Bigger 
Numbers</a>, Previous: <a href="#perlop-Integer-Arithmetic" accesskey="p" 
rel="prev">perlop Integer Arithmetic</a>, Up: <a href="#perlop-DESCRIPTION" 
accesskey="u" rel="up">perlop DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="Floating_002dpoint-Arithmetic"></a>
-<h4 class="subsection">48.2.38 Floating-point Arithmetic</h4>
-
-<p>While <code>use integer</code> provides integer-only arithmetic, there is no
-analogous mechanism to provide automatic rounding or truncation to a
-certain number of decimal places.  For rounding to a certain number
-of digits, sprintf() or printf() is usually the easiest route.
-See <a href="perlfaq4.html#Top">(perlfaq4)</a>.
-</p>
-<p>Floating-point numbers are only approximations to what a mathematician
-would call real numbers.  There are infinitely more reals than floats,
-so some corners must be cut.  For example:
-</p>
-<pre class="verbatim">    printf &quot;%.20g\n&quot;, 123456789123456789;
-    #        produces 123456789123456784
-</pre>
-<p>Testing for exact floating-point equality or inequality is not a
-good idea.  Here&rsquo;s a (relatively expensive) work-around to compare
-whether two floating-point numbers are equal to a particular number of
-decimal places.  See Knuth, volume II, for a more robust treatment of
-this topic.
-</p>
-<pre class="verbatim">    sub fp_equal {
-        my ($X, $Y, $POINTS) = @_;
-        my ($tX, $tY);
-        $tX = sprintf(&quot;%.${POINTS}g&quot;, $X);
-        $tY = sprintf(&quot;%.${POINTS}g&quot;, $Y);
-        return $tX eq $tY;
-    }
-</pre>
-<p>The POSIX module (part of the standard perl distribution) implements
-ceil(), floor(), and other mathematical and trigonometric functions.
-The Math::Complex module (part of the standard perl distribution)
-defines mathematical functions that work on both the reals and the
-imaginary numbers.  Math::Complex not as efficient as POSIX, but
-POSIX can&rsquo;t work with complex numbers.
-</p>
-<p>Rounding in financial applications can have serious implications, and
-the rounding method used should be specified precisely.  In these
-cases, it probably pays not to trust whichever system rounding is
-being used by Perl, but to instead implement the rounding function you
-need yourself.
-</p>
-<hr>
-<a name="perlop-Bigger-Numbers"></a>
-<div class="header">
-<p>
-Previous: <a href="#perlop-Floating_002dpoint-Arithmetic" accesskey="p" 
rel="prev">perlop Floating-point Arithmetic</a>, Up: <a 
href="#perlop-DESCRIPTION" accesskey="u" rel="up">perlop DESCRIPTION</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
-</div>
-<a name="Bigger-Numbers"></a>
-<h4 class="subsection">48.2.39 Bigger Numbers</h4>
-
-<p>The standard <code>Math::BigInt</code>, <code>Math::BigRat</code>, and 
<code>Math::BigFloat</code> modules,
-along with the <code>bignum</code>, <code>bigint</code>, and 
<code>bigrat</code> pragmas, provide
-variable-precision arithmetic and overloaded operators, although
-they&rsquo;re currently pretty slow. At the cost of some space and
-considerable speed, they avoid the normal pitfalls associated with
-limited-precision representations.
-</p>
-<pre class="verbatim">        use 5.010;
-        use bigint;  # easy interface to Math::BigInt
-        $x = 123456789123456789;
-        say $x * $x;
-    +15241578780673678515622620750190521
-</pre>
-<p>Or with rationals:
-</p>
-<pre class="verbatim">        use 5.010;
-        use bigrat;
-        $a = 3/22;
-        $b = 4/6;
-        say &quot;a/b is &quot;, $a/$b;
-        say &quot;a*b is &quot;, $a*$b;
-    a/b is 9/44
-    a*b is 1/11
-</pre>
-<p>Several modules let you calculate with (bound only by memory and CPU time)
-unlimited or fixed precision. There are also some non-standard modules that
-provide faster implementations via external C libraries.
-</p>
-<p>Here is a short, but incomplete summary:
-</p>
-<pre class="verbatim">  Math::String           treat string sequences like 
numbers
-  Math::FixedPrecision   calculate with a fixed precision
-  Math::Currency         for currency calculations
-  Bit::Vector            manipulate bit vectors fast (uses C)
-  Math::BigIntFast       Bit::Vector wrapper for big numbers
-  Math::Pari             provides access to the Pari C library
-  Math::Cephes           uses the external Cephes C library (no
-                         big numbers)
-  Math::Cephes::Fraction fractions via the Cephes library
-  Math::GMP              another one using an external C library
-  Math::GMPz             an alternative interface to libgmp's big ints
-  Math::GMPq             an interface to libgmp's fraction numbers
-  Math::GMPf             an interface to libgmp's floating point numbers
-</pre>
-<p>Choose wisely.
-</p>
-<hr>
-<a name="perlopentut"></a>
-<div class="header">
-<p>
-Next: <a href="#perlpacktut" accesskey="n" rel="next">perlpacktut</a>, 
Previous: <a href="#perlop" accesskey="p" rel="prev">perlop</a>, Up: <a 
href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="perlopentut-1"></a>
-<h2 class="chapter">49 perlopentut</h2>
-
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#perlopentut-NAME" 
accesskey="1">perlopentut NAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perlopentut-DESCRIPTION" 
accesskey="2">perlopentut DESCRIPTION</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Open-_00c3_00a0-la-shell" accesskey="3">perlopentut Open à
 la shell</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Open-_00c3_00a0-la-C" accesskey="4">perlopentut Open à la 
C</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Obscure-Open-Tricks" accesskey="5">perlopentut Obscure Open 
Tricks</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Other-I_002fO-Issues" accesskey="6">perlopentut Other I/O 
Issues</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perlopentut-SEE-ALSO" 
accesskey="7">perlopentut SEE ALSO</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-AUTHOR-and-COPYRIGHT" accesskey="8">perlopentut AUTHOR and 
COPYRIGHT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perlopentut-HISTORY" 
accesskey="9">perlopentut HISTORY</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
-</td></tr>
-</table>
-
-<hr>
-<a name="perlopentut-NAME"></a>
-<div class="header">
-<p>
-Next: <a href="#perlopentut-DESCRIPTION" accesskey="n" rel="next">perlopentut 
DESCRIPTION</a>, Up: <a href="#perlopentut" accesskey="u" 
rel="up">perlopentut</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="NAME-48"></a>
-<h3 class="section">49.1 NAME</h3>
-
-<p>perlopentut - tutorial on opening things in Perl
-</p>
-<hr>
-<a name="perlopentut-DESCRIPTION"></a>
-<div class="header">
-<p>
-Next: <a href="#perlopentut-Open-_00c3_00a0-la-shell" accesskey="n" 
rel="next">perlopentut Open à la shell</a>, Previous: <a 
href="#perlopentut-NAME" accesskey="p" rel="prev">perlopentut NAME</a>, Up: <a 
href="#perlopentut" accesskey="u" rel="up">perlopentut</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="DESCRIPTION-47"></a>
-<h3 class="section">49.2 DESCRIPTION</h3>
-
-<p>Perl has two simple, built-in ways to open files: the shell way for
-convenience, and the C way for precision.  The shell way also has 2- and
-3-argument forms, which have different semantics for handling the filename.
-The choice is yours.
-</p>
-<hr>
-<a name="perlopentut-Open-_00c3_00a0-la-shell"></a>
-<div class="header">
-<p>
-Next: <a href="#perlopentut-Open-_00c3_00a0-la-C" accesskey="n" 
rel="next">perlopentut Open à la C</a>, Previous: <a 
href="#perlopentut-DESCRIPTION" accesskey="p" rel="prev">perlopentut 
DESCRIPTION</a>, Up: <a href="#perlopentut" accesskey="u" 
rel="up">perlopentut</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="Open-A--la-shell"></a>
-<h3 class="section">49.3 Open à la shell</h3>
-
-<p>Perl&rsquo;s <code>open</code> function was designed to mimic the way 
command-line
-redirection in the shell works.  Here are some basic examples
-from the shell:
-</p>
-<pre class="verbatim">    $ myprogram file1 file2 file3
-    $ myprogram    &lt;  inputfile
-    $ myprogram    &gt;  outputfile
-    $ myprogram    &gt;&gt; outputfile
-    $ myprogram    |  otherprogram 
-    $ otherprogram |  myprogram
-</pre>
-<p>And here are some more advanced examples:
-</p>
-<pre class="verbatim">    $ otherprogram      | myprogram f1 - f2
-    $ otherprogram 2&gt;&amp;1 | myprogram -
-    $ myprogram     &lt;&amp;3
-    $ myprogram     &gt;&amp;4
-</pre>
-<p>Programmers accustomed to constructs like those above can take comfort
-in learning that Perl directly supports these familiar constructs using
-virtually the same syntax as the shell.
-</p>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#perlopentut-Simple-Opens" 
accesskey="1">perlopentut Simple Opens</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Indirect-Filehandles" accesskey="2">perlopentut Indirect 
Filehandles</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perlopentut-Pipe-Opens" 
accesskey="3">perlopentut Pipe Opens</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perlopentut-The-Minus-File" 
accesskey="4">perlopentut The Minus File</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Mixing-Reads-and-Writes" accesskey="5">perlopentut Mixing 
Reads and Writes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perlopentut-Filters" 
accesskey="6">perlopentut Filters</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
-</td></tr>
-</table>
-
-<hr>
-<a name="perlopentut-Simple-Opens"></a>
-<div class="header">
-<p>
-Next: <a href="#perlopentut-Indirect-Filehandles" accesskey="n" 
rel="next">perlopentut Indirect Filehandles</a>, Up: <a 
href="#perlopentut-Open-_00c3_00a0-la-shell" accesskey="u" rel="up">perlopentut 
Open à la shell</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="Simple-Opens"></a>
-<h4 class="subsection">49.3.1 Simple Opens</h4>
-
-<p>The <code>open</code> function takes two arguments: the first is a 
filehandle,
-and the second is a single string comprising both what to open and how
-to open it.  <code>open</code> returns true when it works, and when it fails,
-returns a false value and sets the special variable <code>$!</code> to reflect
-the system error.  If the filehandle was previously opened, it will
-be implicitly closed first.
-</p>
-<p>For example:
-</p>
-<pre class="verbatim">    open(INFO,      &quot;datafile&quot;) || 
die(&quot;can't open datafile: $!&quot;);
-    open(INFO,   &quot;&lt;  datafile&quot;) || die(&quot;can't open datafile: 
$!&quot;);
-    open(RESULTS,&quot;&gt;  runstats&quot;) || die(&quot;can't open runstats: 
$!&quot;);
-    open(LOG,    &quot;&gt;&gt; logfile &quot;) || die(&quot;can't open 
logfile:  $!&quot;);
-</pre>
-<p>If you prefer the low-punctuation version, you could write that this way:
-</p>
-<pre class="verbatim">    open INFO,   &quot;&lt;  datafile&quot;  or die 
&quot;can't open datafile: $!&quot;;
-    open RESULTS,&quot;&gt;  runstats&quot;  or die &quot;can't open runstats: 
$!&quot;;
-    open LOG,    &quot;&gt;&gt; logfile &quot;  or die &quot;can't open 
logfile:  $!&quot;;
-</pre>
-<p>A few things to notice.  First, the leading <code>&lt;</code> is optional.
-If omitted, Perl assumes that you want to open the file for reading.
-</p>
-<p>Note also that the first example uses the <code>||</code> logical operator, 
and the
-second uses <code>or</code>, which has lower precedence.  Using 
<code>||</code> in the latter
-examples would effectively mean
-</p>
-<pre class="verbatim">    open INFO, ( &quot;&lt;  datafile&quot;  || die 
&quot;can't open datafile: $!&quot; );
-</pre>
-<p>which is definitely not what you want.
-</p>
-<p>The other important thing to notice is that, just as in the shell,
-any whitespace before or after the filename is ignored.  This is good,
-because you wouldn&rsquo;t want these to do different things:
-</p>
-<pre class="verbatim">    open INFO,   &quot;&lt;datafile&quot;   
-    open INFO,   &quot;&lt; datafile&quot; 
-    open INFO,   &quot;&lt;  datafile&quot;
-</pre>
-<p>Ignoring surrounding whitespace also helps for when you read a filename
-in from a different file, and forget to trim it before opening:
-</p>
-<pre class="verbatim">    $filename = &lt;INFO&gt;;         # oops, \n still 
there
-    open(EXTRA, &quot;&lt; $filename&quot;) || die &quot;can't open $filename: 
$!&quot;;
-</pre>
-<p>This is not a bug, but a feature.  Because <code>open</code> mimics the 
shell in
-its style of using redirection arrows to specify how to open the file, it
-also does so with respect to extra whitespace around the filename itself
-as well.  For accessing files with naughty names, see 
-<a href="#perlopentut-Dispelling-the-Dweomer">Dispelling the Dweomer</a>.
-</p>
-<p>There is also a 3-argument version of <code>open</code>, which lets you put 
the
-special redirection characters into their own argument:
-</p>
-<pre class="verbatim">    open( INFO, &quot;&gt;&quot;, $datafile ) || die 
&quot;Can't create $datafile: $!&quot;;
-</pre>
-<p>In this case, the filename to open is the actual string in 
<code>$datafile</code>,
-so you don&rsquo;t have to worry about <code>$datafile</code> containing 
characters
-that might influence the open mode, or whitespace at the beginning of
-the filename that would be absorbed in the 2-argument version.  Also,
-any reduction of unnecessary string interpolation is a good thing.
-</p>
-<hr>
-<a name="perlopentut-Indirect-Filehandles"></a>
-<div class="header">
-<p>
-Next: <a href="#perlopentut-Pipe-Opens" accesskey="n" rel="next">perlopentut 
Pipe Opens</a>, Previous: <a href="#perlopentut-Simple-Opens" accesskey="p" 
rel="prev">perlopentut Simple Opens</a>, Up: <a 
href="#perlopentut-Open-_00c3_00a0-la-shell" accesskey="u" rel="up">perlopentut 
Open à la shell</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="Indirect-Filehandles"></a>
-<h4 class="subsection">49.3.2 Indirect Filehandles</h4>
-
-<p><code>open</code>&rsquo;s first argument can be a reference to a 
filehandle.  As of
-perl 5.6.0, if the argument is uninitialized, Perl will automatically
-create a filehandle and put a reference to it in the first argument,
-like so:
-</p>
-<pre class="verbatim">    open( my $in, $infile )   or die &quot;Couldn't read 
$infile: $!&quot;;
-    while ( &lt;$in&gt; ) {
-        # do something with $_
-    }
-    close $in;
-</pre>
-<p>Indirect filehandles make namespace management easier.  Since filehandles
-are global to the current package, two subroutines trying to open
-<code>INFILE</code> will clash.  With two functions opening indirect 
filehandles
-like <code>my $infile</code>, there&rsquo;s no clash and no need to worry 
about future
-conflicts.
-</p>
-<p>Another convenient behavior is that an indirect filehandle automatically
-closes when there are no more references to it:
-</p>
-<pre class="verbatim">    sub firstline {
-        open( my $in, shift ) &amp;&amp; return scalar &lt;$in&gt;;
-        # no close() required
-    }
-</pre>
-<p>Indirect filehandles also make it easy to pass filehandles to and return
-filehandles from subroutines:
-</p>
-<pre class="verbatim">    for my $file ( qw(this.conf that.conf) ) {
-        my $fin = open_or_throw('&lt;', $file);
-        process_conf( $fin );
-        # no close() needed
-    }
-
-    use Carp;
-    sub open_or_throw {
-        my ($mode, $filename) = @_;
-        open my $h, $mode, $filename
-            or croak &quot;Could not open '$filename': $!&quot;;
-        return $h;
-    }
-</pre>
-<hr>
-<a name="perlopentut-Pipe-Opens"></a>
-<div class="header">
-<p>
-Next: <a href="#perlopentut-The-Minus-File" accesskey="n" 
rel="next">perlopentut The Minus File</a>, Previous: <a 
href="#perlopentut-Indirect-Filehandles" accesskey="p" rel="prev">perlopentut 
Indirect Filehandles</a>, Up: <a href="#perlopentut-Open-_00c3_00a0-la-shell" 
accesskey="u" rel="up">perlopentut Open à la shell</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="Pipe-Opens"></a>
-<h4 class="subsection">49.3.3 Pipe Opens</h4>
-
-<p>In C, when you want to open a file using the standard I/O library,
-you use the <code>fopen</code> function, but when opening a pipe, you use the
-<code>popen</code> function.  But in the shell, you just use a different 
redirection
-character.  That&rsquo;s also the case for Perl.  The <code>open</code> call 
-remains the same&ndash;just its argument differs.  
-</p>
-<p>If the leading character is a pipe symbol, <code>open</code> starts up a new
-command and opens a write-only filehandle leading into that command.
-This lets you write into that handle and have what you write show up on
-that command&rsquo;s standard input.  For example:
-</p>
-<pre class="verbatim">    open(PRINTER, &quot;| lpr -Plp1&quot;)    || die 
&quot;can't run lpr: $!&quot;;
-    print PRINTER &quot;stuff\n&quot;;
-    close(PRINTER)                  || die &quot;can't close lpr: $!&quot;;
-</pre>
-<p>If the trailing character is a pipe, you start up a new command and open a
-read-only filehandle leading out of that command.  This lets whatever that
-command writes to its standard output show up on your handle for reading.
-For example:
-</p>
-<pre class="verbatim">    open(NET, &quot;netstat -i -n |&quot;)    || die 
&quot;can't fork netstat: $!&quot;;
-    while (&lt;NET&gt;) { }               # do something with input
-    close(NET)                      || die &quot;can't close netstat: $!&quot;;
-</pre>
-<p>What happens if you try to open a pipe to or from a non-existent
-command?  If possible, Perl will detect the failure and set <code>$!</code> as
-usual.  But if the command contains special shell characters, such as
-<code>&gt;</code> or <code>*</code>, called &rsquo;metacharacters&rsquo;, Perl 
does not execute the
-command directly.  Instead, Perl runs the shell, which then tries to
-run the command.  This means that it&rsquo;s the shell that gets the error
-indication.  In such a case, the <code>open</code> call will only indicate
-failure if Perl can&rsquo;t even run the shell.  See <a 
href="perlfaq8.html#How-can-I-capture-STDERR-from-an-external-command_003f">(perlfaq8)How
 can I
-capture STDERR from an external command?</a> to see how to cope with
-this.  There&rsquo;s also an explanation in <a href="#perlipc-NAME">perlipc 
NAME</a>.
-</p>
-<p>If you would like to open a bidirectional pipe, the IPC::Open2
-library will handle this for you.  Check out 
-<a href="#perlipc-Bidirectional-Communication-with-Another-Process">perlipc 
Bidirectional Communication with Another Process</a>
-</p>
-<p>perl-5.6.x introduced a version of piped open that executes a process
-based on its command line arguments without relying on the shell. (Similar
-to the <code>system(@LIST)</code> notation.) This is safer and faster than 
executing
-a single argument pipe-command, but does not allow special shell
-constructs. (It is also not supported on Microsoft Windows, Mac OS Classic
-or RISC OS.)
-</p>
-<p>Here&rsquo;s an example of <code>open '-|'</code>, which prints a random 
Unix
-fortune cookie as uppercase:
-</p>
-<pre class="verbatim">    my $collection = shift(@ARGV);
-    open my $fortune, '-|', 'fortune', $collection
-        or die &quot;Could not find fortune - $!&quot;;
-    while (&lt;$fortune&gt;)
-    {
-        print uc($_);
-    }
-    close($fortune);
-</pre>
-<p>And this <code>open '|-'</code> pipes into lpr:
-</p>
-<pre class="verbatim">    open my $printer, '|-', 'lpr', '-Plp1'
-        or die &quot;can't run lpr: $!&quot;;
-    print {$printer} &quot;stuff\n&quot;;
-    close($printer)
-        or die &quot;can't close lpr: $!&quot;;
-</pre>
-<hr>
-<a name="perlopentut-The-Minus-File"></a>
-<div class="header">
-<p>
-Next: <a href="#perlopentut-Mixing-Reads-and-Writes" accesskey="n" 
rel="next">perlopentut Mixing Reads and Writes</a>, Previous: <a 
href="#perlopentut-Pipe-Opens" accesskey="p" rel="prev">perlopentut Pipe 
Opens</a>, Up: <a href="#perlopentut-Open-_00c3_00a0-la-shell" accesskey="u" 
rel="up">perlopentut Open à la shell</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="The-Minus-File"></a>
-<h4 class="subsection">49.3.4 The Minus File</h4>
-
-<p>Again following the lead of the standard shell utilities, Perl&rsquo;s
-<code>open</code> function treats a file whose name is a single minus, 
&quot;-&quot;, in a
-special way.  If you open minus for reading, it really means to access
-the standard input.  If you open minus for writing, it really means to
-access the standard output.
-</p>
-<p>If minus can be used as the default input or default output, what happens
-if you open a pipe into or out of minus?  What&rsquo;s the default command it
-would run?  The same script as you&rsquo;re currently running!  This is 
actually
-a stealth <code>fork</code> hidden inside an <code>open</code> call.  See 
-<a href="#perlipc-Safe-Pipe-Opens">perlipc Safe Pipe Opens</a> for details.
-</p>
-<hr>
-<a name="perlopentut-Mixing-Reads-and-Writes"></a>
-<div class="header">
-<p>
-Next: <a href="#perlopentut-Filters" accesskey="n" rel="next">perlopentut 
Filters</a>, Previous: <a href="#perlopentut-The-Minus-File" accesskey="p" 
rel="prev">perlopentut The Minus File</a>, Up: <a 
href="#perlopentut-Open-_00c3_00a0-la-shell" accesskey="u" rel="up">perlopentut 
Open à la shell</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="Mixing-Reads-and-Writes"></a>
-<h4 class="subsection">49.3.5 Mixing Reads and Writes</h4>
-
-<p>It is possible to specify both read and write access.  All you do is
-add a &quot;+&quot; symbol in front of the redirection.  But as in the shell,
-using a less-than on a file never creates a new file; it only opens an
-existing one.  On the other hand, using a greater-than always clobbers
-(truncates to zero length) an existing file, or creates a brand-new one
-if there isn&rsquo;t an old one.  Adding a &quot;+&quot; for read-write 
doesn&rsquo;t affect
-whether it only works on existing files or always clobbers existing ones.
-</p>
-<pre class="verbatim">    open(WTMP, &quot;+&lt; /usr/adm/wtmp&quot;) 
-        || die &quot;can't open /usr/adm/wtmp: $!&quot;;
-
-    open(SCREEN, &quot;+&gt; lkscreen&quot;)
-        || die &quot;can't open lkscreen: $!&quot;;
-
-    open(LOGFILE, &quot;+&gt;&gt; /var/log/applog&quot;)
-        || die &quot;can't open /var/log/applog: $!&quot;;
-</pre>
-<p>The first one won&rsquo;t create a new file, and the second one will always
-clobber an old one.  The third one will create a new file if necessary
-and not clobber an old one, and it will allow you to read at any point
-in the file, but all writes will always go to the end.  In short,
-the first case is substantially more common than the second and third
-cases, which are almost always wrong.  (If you know C, the plus in
-Perl&rsquo;s <code>open</code> is historically derived from the one in 
C&rsquo;s fopen(3S),
-which it ultimately calls.)
-</p>
-<p>In fact, when it comes to updating a file, unless you&rsquo;re working on
-a binary file as in the WTMP case above, you probably don&rsquo;t want to
-use this approach for updating.  Instead, Perl&rsquo;s <strong>-i</strong> 
flag comes to
-the rescue.  The following command takes all the C, C++, or yacc source
-or header files and changes all their foo&rsquo;s to bar&rsquo;s, leaving
-the old version in the original filename with a &quot;.orig&quot; tacked
-on the end:
-</p>
-<pre class="verbatim">    $ perl -i.orig -pe 's/\bfoo\b/bar/g' *.[Cchy]
-</pre>
-<p>This is a short cut for some renaming games that are really
-the best way to update textfiles.  See the second question in 
-<a href="perlfaq5.html#Top">(perlfaq5)</a> for more details.
-</p>
-<hr>
-<a name="perlopentut-Filters"></a>
-<div class="header">
-<p>
-Previous: <a href="#perlopentut-Mixing-Reads-and-Writes" accesskey="p" 
rel="prev">perlopentut Mixing Reads and Writes</a>, Up: <a 
href="#perlopentut-Open-_00c3_00a0-la-shell" accesskey="u" rel="up">perlopentut 
Open à la shell</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="Filters"></a>
-<h4 class="subsection">49.3.6 Filters</h4>
-
-<p>One of the most common uses for <code>open</code> is one you never
-even notice.  When you process the ARGV filehandle using
-<code>&lt;ARGV&gt;</code>, Perl actually does an implicit open 
-on each file in @ARGV.  Thus a program called like this:
-</p>
-<pre class="verbatim">    $ myprogram file1 file2 file3
-</pre>
-<p>can have all its files opened and processed one at a time
-using a construct no more complex than:
-</p>
-<pre class="verbatim">    while (&lt;&gt;) {
-        # do something with $_
-    } 
-</pre>
-<p>If @ARGV is empty when the loop first begins, Perl pretends you&rsquo;ve 
opened
-up minus, that is, the standard input.  In fact, $ARGV, the currently
-open file during <code>&lt;ARGV&gt;</code> processing, is even set to 
&quot;-&quot;
-in these circumstances.
-</p>
-<p>You are welcome to pre-process your @ARGV before starting the loop to
-make sure it&rsquo;s to your liking.  One reason to do this might be to remove
-command options beginning with a minus.  While you can always roll the
-simple ones by hand, the Getopts modules are good for this:
-</p>
-<pre class="verbatim">    use Getopt::Std;
-
-    # -v, -D, -o ARG, sets $opt_v, $opt_D, $opt_o
-    getopts(&quot;vDo:&quot;);            
-
-    # -v, -D, -o ARG, sets $args{v}, $args{D}, $args{o}
-    getopts(&quot;vDo:&quot;, \%args);    
-</pre>
-<p>Or the standard Getopt::Long module to permit named arguments:
-</p>
-<pre class="verbatim">    use Getopt::Long;
-    GetOptions( &quot;verbose&quot;  =&gt; \$verbose,        # --verbose
-                &quot;Debug&quot;    =&gt; \$debug,          # --Debug
-                &quot;output=s&quot; =&gt; \$output );       
-            # --output=somestring or --output somestring
-</pre>
-<p>Another reason for preprocessing arguments is to make an empty
-argument list default to all files:
-</p>
-<pre class="verbatim">    @ARGV = glob(&quot;*&quot;) unless @ARGV;
-</pre>
-<p>You could even filter out all but plain, text files.  This is a bit
-silent, of course, and you might prefer to mention them on the way.
-</p>
-<pre class="verbatim">    @ARGV = grep { -f &amp;&amp; -T } @ARGV;
-</pre>
-<p>If you&rsquo;re using the <strong>-n</strong> or <strong>-p</strong> 
command-line options, you
-should put changes to @ARGV in a <code>BEGIN{}</code> block.
-</p>
-<p>Remember that a normal <code>open</code> has special properties, in that it 
might
-call fopen(3S) or it might called popen(3S), depending on what its
-argument looks like; that&rsquo;s why it&rsquo;s sometimes called &quot;magic 
open&quot;.
-Here&rsquo;s an example:
-</p>
-<pre class="verbatim">    $pwdinfo = `domainname` =~ /^(\(none\))?$/
-                    ? '&lt; /etc/passwd'
-                    : 'ypcat passwd |';
-
-    open(PWD, $pwdinfo)                 
-                or die &quot;can't open $pwdinfo: $!&quot;;
-</pre>
-<p>This sort of thing also comes into play in filter processing.  Because
-<code>&lt;ARGV&gt;</code> processing employs the normal, shell-style Perl 
<code>open</code>,
-it respects all the special things we&rsquo;ve already seen:
-</p>
-<pre class="verbatim">    $ myprogram f1 &quot;cmd1|&quot; - f2 
&quot;cmd2|&quot; f3 &lt; tmpfile
-</pre>
-<p>That program will read from the file <samp>f1</samp>, the process 
<samp>cmd1</samp>, standard
-input (<samp>tmpfile</samp> in this case), the <samp>f2</samp> file, the 
<samp>cmd2</samp> command,
-and finally the <samp>f3</samp> file.
-</p>
-<p>Yes, this also means that if you have files named &quot;-&quot; (and so on) 
in
-your directory, they won&rsquo;t be processed as literal files by 
<code>open</code>.
-You&rsquo;ll need to pass them as &quot;./-&quot;, much as you would for the 
<em>rm</em> program,
-or you could use <code>sysopen</code> as described below.
-</p>
-<p>One of the more interesting applications is to change files of a certain
-name into pipes.  For example, to autoprocess gzipped or compressed
-files by decompressing them with <em>gzip</em>:
-</p>
-<pre class="verbatim">    @ARGV = map { /\.(gz|Z)$/ ? &quot;gzip -dc $_ 
|&quot; : $_  } @ARGV;
-</pre>
-<p>Or, if you have the <em>GET</em> program installed from LWP,
-you can fetch URLs before processing them:
-</p>
-<pre class="verbatim">    @ARGV = map { m#^\w+://# ? &quot;GET $_ |&quot; : $_ 
} @ARGV;
-</pre>
-<p>It&rsquo;s not for nothing that this is called magic 
<code>&lt;ARGV&gt;</code>.
-Pretty nifty, eh?
-</p>
-<hr>
-<a name="perlopentut-Open-_00c3_00a0-la-C"></a>
-<div class="header">
-<p>
-Next: <a href="#perlopentut-Obscure-Open-Tricks" accesskey="n" 
rel="next">perlopentut Obscure Open Tricks</a>, Previous: <a 
href="#perlopentut-Open-_00c3_00a0-la-shell" accesskey="p" 
rel="prev">perlopentut Open à la shell</a>, Up: <a href="#perlopentut" 
accesskey="u" rel="up">perlopentut</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="Open-A--la-C"></a>
-<h3 class="section">49.4 Open à la C</h3>
-
-<p>If you want the convenience of the shell, then Perl&rsquo;s 
<code>open</code> is
-definitely the way to go.  On the other hand, if you want finer precision
-than C&rsquo;s simplistic fopen(3S) provides you should look to Perl&rsquo;s
-<code>sysopen</code>, which is a direct hook into the open(2) system call.
-That does mean it&rsquo;s a bit more involved, but that&rsquo;s the price of 
-precision.
-</p>
-<p><code>sysopen</code> takes 3 (or 4) arguments.
-</p>
-<pre class="verbatim">    sysopen HANDLE, PATH, FLAGS, [MASK]
-</pre>
-<p>The HANDLE argument is a filehandle just as with <code>open</code>.  The 
PATH is
-a literal path, one that doesn&rsquo;t pay attention to any greater-thans or
-less-thans or pipes or minuses, nor ignore whitespace.  If it&rsquo;s there,
-it&rsquo;s part of the path.  The FLAGS argument contains one or more values
-derived from the Fcntl module that have been or&rsquo;d together using the
-bitwise &quot;|&quot; operator.  The final argument, the MASK, is optional; if
-present, it is combined with the user&rsquo;s current umask for the creation
-mode of the file.  You should usually omit this.
-</p>
-<p>Although the traditional values of read-only, write-only, and read-write
-are 0, 1, and 2 respectively, this is known not to hold true on some
-systems.  Instead, it&rsquo;s best to load in the appropriate constants first
-from the Fcntl module, which supplies the following standard flags:
-</p>
-<pre class="verbatim">    O_RDONLY            Read only
-    O_WRONLY            Write only
-    O_RDWR              Read and write
-    O_CREAT             Create the file if it doesn't exist
-    O_EXCL              Fail if the file already exists
-    O_APPEND            Append to the file
-    O_TRUNC             Truncate the file
-    O_NONBLOCK          Non-blocking access
-</pre>
-<p>Less common flags that are sometimes available on some operating
-systems include <code>O_BINARY</code>, <code>O_TEXT</code>, 
<code>O_SHLOCK</code>, <code>O_EXLOCK</code>,
-<code>O_DEFER</code>, <code>O_SYNC</code>, <code>O_ASYNC</code>, 
<code>O_DSYNC</code>, <code>O_RSYNC</code>,
-<code>O_NOCTTY</code>, <code>O_NDELAY</code> and <code>O_LARGEFILE</code>.  
Consult your open(2)
-manpage or its local equivalent for details.  (Note: starting from
-Perl release 5.6 the <code>O_LARGEFILE</code> flag, if available, is 
automatically
-added to the sysopen() flags because large files are the default.)
-</p>
-<p>Here&rsquo;s how to use <code>sysopen</code> to emulate the simple 
<code>open</code> calls we had
-before.  We&rsquo;ll omit the <code>|| die $!</code> checks for clarity, but 
make sure
-you always check the return values in real code.  These aren&rsquo;t quite
-the same, since <code>open</code> will trim leading and trailing whitespace,
-but you&rsquo;ll get the idea.
-</p>
-<p>To open a file for reading:
-</p>
-<pre class="verbatim">    open(FH, &quot;&lt; $path&quot;);
-    sysopen(FH, $path, O_RDONLY);
-</pre>
-<p>To open a file for writing, creating a new file if needed or else truncating
-an old file:
-</p>
-<pre class="verbatim">    open(FH, &quot;&gt; $path&quot;);
-    sysopen(FH, $path, O_WRONLY | O_TRUNC | O_CREAT);
-</pre>
-<p>To open a file for appending, creating one if necessary:
-</p>
-<pre class="verbatim">    open(FH, &quot;&gt;&gt; $path&quot;);
-    sysopen(FH, $path, O_WRONLY | O_APPEND | O_CREAT);
-</pre>
-<p>To open a file for update, where the file must already exist:
-</p>
-<pre class="verbatim">    open(FH, &quot;+&lt; $path&quot;);
-    sysopen(FH, $path, O_RDWR);
-</pre>
-<p>And here are things you can do with <code>sysopen</code> that you cannot do 
with
-a regular <code>open</code>.  As you&rsquo;ll see, it&rsquo;s just a matter of 
controlling the
-flags in the third argument.
+if <code>use integer</code> is in effect, their results are interpreted
+as signed integers.  For example, <code>~0</code> usually evaluates to a large
+integral value.  However, <code>use integer; ~0</code> is <code>-1</code> on 
two&rsquo;s-complement
+machines.
 </p>
-<p>To open a file for writing, creating a new file which must not previously
-exist:
+<hr>
+<a name="perlop-Floating_002dpoint-Arithmetic"></a>
+<div class="header">
+<p>
+Next: <a href="#perlop-Bigger-Numbers" accesskey="n" rel="next">perlop Bigger 
Numbers</a>, Previous: <a href="#perlop-Integer-Arithmetic" accesskey="p" 
rel="prev">perlop Integer Arithmetic</a>, Up: <a href="#perlop-DESCRIPTION" 
accesskey="u" rel="up">perlop DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+</div>
+<a name="Floating_002dpoint-Arithmetic"></a>
+<h4 class="subsection">48.2.38 Floating-point Arithmetic</h4>
+
+<p>While <code>use integer</code> provides integer-only arithmetic, there is no
+analogous mechanism to provide automatic rounding or truncation to a
+certain number of decimal places.  For rounding to a certain number
+of digits, sprintf() or printf() is usually the easiest route.
+See <a href="perlfaq4.html#Top">(perlfaq4)</a>.
 </p>
-<pre class="verbatim">    sysopen(FH, $path, O_WRONLY | O_EXCL | O_CREAT);
-</pre>
-<p>To open a file for appending, where that file must already exist:
+<p>Floating-point numbers are only approximations to what a mathematician
+would call real numbers.  There are infinitely more reals than floats,
+so some corners must be cut.  For example:
 </p>
-<pre class="verbatim">    sysopen(FH, $path, O_WRONLY | O_APPEND);
+<pre class="verbatim">    printf &quot;%.20g\n&quot;, 123456789123456789;
+    #        produces 123456789123456784
 </pre>
-<p>To open a file for update, creating a new file if necessary:
+<p>Testing for exact floating-point equality or inequality is not a
+good idea.  Here&rsquo;s a (relatively expensive) work-around to compare
+whether two floating-point numbers are equal to a particular number of
+decimal places.  See Knuth, volume II, for a more robust treatment of
+this topic.
 </p>
-<pre class="verbatim">    sysopen(FH, $path, O_RDWR | O_CREAT);
+<pre class="verbatim">    sub fp_equal {
+        my ($X, $Y, $POINTS) = @_;
+        my ($tX, $tY);
+        $tX = sprintf(&quot;%.${POINTS}g&quot;, $X);
+        $tY = sprintf(&quot;%.${POINTS}g&quot;, $Y);
+        return $tX eq $tY;
+    }
 </pre>
-<p>To open a file for update, where that file must not already exist:
+<p>The POSIX module (part of the standard perl distribution) implements
+ceil(), floor(), and other mathematical and trigonometric functions.
+The Math::Complex module (part of the standard perl distribution)
+defines mathematical functions that work on both the reals and the
+imaginary numbers.  Math::Complex not as efficient as POSIX, but
+POSIX can&rsquo;t work with complex numbers.
 </p>
-<pre class="verbatim">    sysopen(FH, $path, O_RDWR | O_EXCL | O_CREAT);
-</pre>
-<p>To open a file without blocking, creating one if necessary:
+<p>Rounding in financial applications can have serious implications, and
+the rounding method used should be specified precisely.  In these
+cases, it probably pays not to trust whichever system rounding is
+being used by Perl, but to instead implement the rounding function you
+need yourself.
 </p>
-<pre class="verbatim">    sysopen(FH, $path, O_WRONLY | O_NONBLOCK | O_CREAT);
-</pre>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Permissions-_00c3_00a0-la-mode" accesskey="1">perlopentut 
Permissions à la mode</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
-</td></tr>
-</table>
-
 <hr>
-<a name="perlopentut-Permissions-_00c3_00a0-la-mode"></a>
+<a name="perlop-Bigger-Numbers"></a>
 <div class="header">
 <p>
-Up: <a href="#perlopentut-Open-_00c3_00a0-la-C" accesskey="u" 
rel="up">perlopentut Open à la C</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+Previous: <a href="#perlop-Floating_002dpoint-Arithmetic" accesskey="p" 
rel="prev">perlop Floating-point Arithmetic</a>, Up: <a 
href="#perlop-DESCRIPTION" accesskey="u" rel="up">perlop DESCRIPTION</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="Permissions-A--la-mode"></a>
-<h4 class="subsection">49.4.1 Permissions à la mode</h4>
+<a name="Bigger-Numbers"></a>
+<h4 class="subsection">48.2.39 Bigger Numbers</h4>
 
-<p>If you omit the MASK argument to <code>sysopen</code>, Perl uses the octal 
value
-0666.  The normal MASK to use for executables and directories should
-be 0777, and for anything else, 0666.
+<p>The standard <code>Math::BigInt</code>, <code>Math::BigRat</code>, and 
<code>Math::BigFloat</code> modules,
+along with the <code>bignum</code>, <code>bigint</code>, and 
<code>bigrat</code> pragmas, provide
+variable-precision arithmetic and overloaded operators, although
+they&rsquo;re currently pretty slow. At the cost of some space and
+considerable speed, they avoid the normal pitfalls associated with
+limited-precision representations.
+</p>
+<pre class="verbatim">        use 5.010;
+        use bigint;  # easy interface to Math::BigInt
+        $x = 123456789123456789;
+        say $x * $x;
+    +15241578780673678515622620750190521
+</pre>
+<p>Or with rationals:
 </p>
-<p>Why so permissive?  Well, it isn&rsquo;t really.  The MASK will be modified
-by your process&rsquo;s current <code>umask</code>.  A umask is a number 
representing
-<em>disabled</em> permissions bits; that is, bits that will not be turned on
-in the created file&rsquo;s permissions field.
+<pre class="verbatim">        use 5.010;
+        use bigrat;
+        $a = 3/22;
+        $b = 4/6;
+        say &quot;a/b is &quot;, $a/$b;
+        say &quot;a*b is &quot;, $a*$b;
+    a/b is 9/44
+    a*b is 1/11
+</pre>
+<p>Several modules let you calculate with (bound only by memory and CPU time)
+unlimited or fixed precision. There are also some non-standard modules that
+provide faster implementations via external C libraries.
 </p>
-<p>For example, if your <code>umask</code> were 027, then the 020 part would
-disable the group from writing, and the 007 part would disable others
-from reading, writing, or executing.  Under these conditions, passing
-<code>sysopen</code> 0666 would create a file with mode 0640, since <code>0666 
&amp; ~027</code>
-is 0640.
+<p>Here is a short, but incomplete summary:
 </p>
-<p>You should seldom use the MASK argument to <code>sysopen()</code>.  That 
takes
-away the user&rsquo;s freedom to choose what permission new files will have.
-Denying choice is almost always a bad thing.  One exception would be for
-cases where sensitive or private data is being stored, such as with mail
-folders, cookie files, and internal temporary files.
+<pre class="verbatim">  Math::String           treat string sequences like 
numbers
+  Math::FixedPrecision   calculate with a fixed precision
+  Math::Currency         for currency calculations
+  Bit::Vector            manipulate bit vectors fast (uses C)
+  Math::BigIntFast       Bit::Vector wrapper for big numbers
+  Math::Pari             provides access to the Pari C library
+  Math::Cephes           uses the external Cephes C library (no
+                         big numbers)
+  Math::Cephes::Fraction fractions via the Cephes library
+  Math::GMP              another one using an external C library
+  Math::GMPz             an alternative interface to libgmp's big ints
+  Math::GMPq             an interface to libgmp's fraction numbers
+  Math::GMPf             an interface to libgmp's floating point numbers
+</pre>
+<p>Choose wisely.
 </p>
 <hr>
-<a name="perlopentut-Obscure-Open-Tricks"></a>
+<a name="perlopentut"></a>
 <div class="header">
 <p>
-Next: <a href="#perlopentut-Other-I_002fO-Issues" accesskey="n" 
rel="next">perlopentut Other I/O Issues</a>, Previous: <a 
href="#perlopentut-Open-_00c3_00a0-la-C" accesskey="p" rel="prev">perlopentut 
Open à la C</a>, Up: <a href="#perlopentut" accesskey="u" 
rel="up">perlopentut</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
+Next: <a href="#perlpacktut" accesskey="n" rel="next">perlpacktut</a>, 
Previous: <a href="#perlop" accesskey="p" rel="prev">perlop</a>, Up: <a 
href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="Obscure-Open-Tricks"></a>
-<h3 class="section">49.5 Obscure Open Tricks</h3>
+<a name="perlopentut-1"></a>
+<h2 class="chapter">49 perlopentut</h2>
 
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Re_002dOpening-Files-_0028dups_0029" 
accesskey="1">perlopentut Re-Opening Files 
(dups)</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#perlopentut-NAME" 
accesskey="1">perlopentut NAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Dispelling-the-Dweomer" accesskey="2">perlopentut Dispelling 
the Dweomer</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#perlopentut-DESCRIPTION" 
accesskey="2">perlopentut DESCRIPTION</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Opening-Text-Files" accesskey="3">perlopentut Opening Text 
Files</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Opening-Binary-Files" accesskey="4">perlopentut Opening 
Binary Files</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#perlopentut-Opening-Pipes" 
accesskey="5">perlopentut Opening Pipes</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perlopentut-Paths-as-Opens" 
accesskey="3">perlopentut Paths as Opens</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Low_002dlevel-File-Opens-via-sysopen" 
accesskey="6">perlopentut Low-level File Opens via 
sysopen</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Single-Argument-Open" accesskey="4">perlopentut Single 
Argument Open</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#perlopentut-SEE-ALSO" 
accesskey="7">perlopentut SEE ALSO</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Playing-with-STDIN-and-STDOUT" accesskey="5">perlopentut 
Playing with STDIN and STDOUT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-AUTHOR-and-COPYRIGHT" accesskey="8">perlopentut AUTHOR and 
COPYRIGHT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 </table>
 
 <hr>
-<a name="perlopentut-Re_002dOpening-Files-_0028dups_0029"></a>
+<a name="perlopentut-NAME"></a>
 <div class="header">
 <p>
-Next: <a href="#perlopentut-Dispelling-the-Dweomer" accesskey="n" 
rel="next">perlopentut Dispelling the Dweomer</a>, Up: <a 
href="#perlopentut-Obscure-Open-Tricks" accesskey="u" rel="up">perlopentut 
Obscure Open Tricks</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
+Next: <a href="#perlopentut-DESCRIPTION" accesskey="n" rel="next">perlopentut 
DESCRIPTION</a>, Up: <a href="#perlopentut" accesskey="u" 
rel="up">perlopentut</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="Re_002dOpening-Files-_0028dups_0029"></a>
-<h4 class="subsection">49.5.1 Re-Opening Files (dups)</h4>
+<a name="NAME-48"></a>
+<h3 class="section">49.1 NAME</h3>
 
-<p>Sometimes you already have a filehandle open, and want to make another
-handle that&rsquo;s a duplicate of the first one.  In the shell, we place an
-ampersand in front of a file descriptor number when doing redirections.
-For example, <code>2&gt;&amp;1</code> makes descriptor 2 (that&rsquo;s STDERR 
in Perl)
-be redirected into descriptor 1 (which is usually Perl&rsquo;s STDOUT).
-The same is essentially true in Perl: a filename that begins with an
-ampersand is treated instead as a file descriptor if a number, or as a
-filehandle if a string.
-</p>
-<pre class="verbatim">    open(SAVEOUT, &quot;&gt;&amp;SAVEERR&quot;) || die 
&quot;couldn't dup SAVEERR: $!&quot;;
-    open(MHCONTEXT, &quot;&lt;&amp;4&quot;)     || die &quot;couldn't dup fd4: 
$!&quot;;
-</pre>
-<p>That means that if a function is expecting a filename, but you don&rsquo;t
-want to give it a filename because you already have the file open, you
-can just pass the filehandle with a leading ampersand.  It&rsquo;s best to
-use a fully qualified handle though, just in case the function happens
-to be in a different package:
-</p>
-<pre class="verbatim">    somefunction(&quot;&amp;main::LOGFILE&quot;);
-</pre>
-<p>This way if somefunction() is planning on opening its argument, it can
-just use the already opened handle.  This differs from passing a handle,
-because with a handle, you don&rsquo;t open the file.  Here you have something
-you can pass to open.
-</p>
-<p>If you have one of those tricky, newfangled I/O objects that the C++
-folks are raving about, then this doesn&rsquo;t work because those 
aren&rsquo;t a
-proper filehandle in the native Perl sense.  You&rsquo;ll have to use fileno()
-to pull out the proper descriptor number, assuming you can:
-</p>
-<pre class="verbatim">    use IO::Socket;
-    $handle = IO::Socket::INET-&gt;new(&quot;www.perl.com:80&quot;);
-    $fd = $handle-&gt;fileno;
-    somefunction(&quot;&amp;$fd&quot;);  # not an indirect function call
-</pre>
-<p>It can be easier (and certainly will be faster) just to use real
-filehandles though:
-</p>
-<pre class="verbatim">    use IO::Socket;
-    local *REMOTE = IO::Socket::INET-&gt;new(&quot;www.perl.com:80&quot;);
-    die &quot;can't connect&quot; unless defined(fileno(REMOTE));
-    somefunction(&quot;&amp;main::REMOTE&quot;);
-</pre>
-<p>If the filehandle or descriptor number is preceded not just with a simple
-&quot;&amp;&quot; but rather with a &quot;&amp;=&quot; combination, then Perl 
will not create a
-completely new descriptor opened to the same place using the dup(2)
-system call.  Instead, it will just make something of an alias to the
-existing one using the fdopen(3S) library call.  This is slightly more
-parsimonious of systems resources, although this is less a concern
-these days.  Here&rsquo;s an example of that:
-</p>
-<pre class="verbatim">    $fd = $ENV{&quot;MHCONTEXTFD&quot;};
-    open(MHCONTEXT, &quot;&lt;&amp;=$fd&quot;)   or die &quot;couldn't fdopen 
$fd: $!&quot;;
-</pre>
-<p>If you&rsquo;re using magic <code>&lt;ARGV&gt;</code>, you could even pass 
in as a
-command line argument in @ARGV something like 
<code>&quot;&lt;&amp;=$MHCONTEXTFD&quot;</code>,
-but we&rsquo;ve never seen anyone actually do this.
+<p>perlopentut - simple recipes for opening files and pipes in Perl
 </p>
 <hr>
-<a name="perlopentut-Dispelling-the-Dweomer"></a>
+<a name="perlopentut-DESCRIPTION"></a>
 <div class="header">
 <p>
-Next: <a href="#perlopentut-Paths-as-Opens" accesskey="n" 
rel="next">perlopentut Paths as Opens</a>, Previous: <a 
href="#perlopentut-Re_002dOpening-Files-_0028dups_0029" accesskey="p" 
rel="prev">perlopentut Re-Opening Files (dups)</a>, Up: <a 
href="#perlopentut-Obscure-Open-Tricks" accesskey="u" rel="up">perlopentut 
Obscure Open Tricks</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
+Next: <a href="#perlopentut-Opening-Text-Files" accesskey="n" 
rel="next">perlopentut Opening Text Files</a>, Previous: <a 
href="#perlopentut-NAME" accesskey="p" rel="prev">perlopentut NAME</a>, Up: <a 
href="#perlopentut" accesskey="u" rel="up">perlopentut</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="Dispelling-the-Dweomer"></a>
-<h4 class="subsection">49.5.2 Dispelling the Dweomer</h4>
+<a name="DESCRIPTION-47"></a>
+<h3 class="section">49.2 DESCRIPTION</h3>
 
-<p>Perl is more of a DWIMmer language than something like Java&ndash;where DWIM
-is an acronym for &quot;do what I mean&quot;.  But this principle sometimes 
leads
-to more hidden magic than one knows what to do with.  In this way, Perl
-is also filled with <em>dweomer</em>, an obscure word meaning an enchantment.
-Sometimes, Perl&rsquo;s DWIMmer is just too much like dweomer for comfort.
+<p>Whenever you do I/O on a file in Perl, you do so through what in Perl is
+called a <strong>filehandle</strong>.  A filehandle is an internal name for an 
external
+file.  It is the job of the <code>open</code> function to make the association
+between the internal name and the external name, and it is the job
+of the <code>close</code> function to break that association.
 </p>
-<p>If magic <code>open</code> is a bit too magical for you, you don&rsquo;t 
have to turn
-to <code>sysopen</code>.  To open a file with arbitrary weird characters in
-it, it&rsquo;s necessary to protect any leading and trailing whitespace.
-Leading whitespace is protected by inserting a <code>&quot;./&quot;</code> in 
front of a
-filename that starts with whitespace.  Trailing whitespace is protected
-by appending an ASCII NUL byte (<code>&quot;\0&quot;</code>) at the end of the 
string.
+<p>For your convenience, Perl sets up a few special filehandles that are
+already open when you run.  These include <code>STDIN</code>, 
<code>STDOUT</code>, <code>STDERR</code>,
+and <code>ARGV</code>.  Since those are pre-opened, you can use them right away
+without having to go to the trouble of opening them yourself:
 </p>
-<pre class="verbatim">    $file =~ s#^(\s)#./$1#;
-    open(FH, &quot;&lt; $file\0&quot;)   || die &quot;can't open $file: 
$!&quot;;
-</pre>
-<p>This assumes, of course, that your system considers dot the current
-working directory, slash the directory separator, and disallows ASCII
-NULs within a valid filename.  Most systems follow these conventions,
-including all POSIX systems as well as proprietary Microsoft systems.
-The only vaguely popular system that doesn&rsquo;t work this way is the
-&quot;Classic&quot; Macintosh system, which uses a colon where the rest of us
-use a slash.  Maybe <code>sysopen</code> isn&rsquo;t such a bad idea after all.
-</p>
-<p>If you want to use <code>&lt;ARGV&gt;</code> processing in a totally boring
-and non-magical way, you could do this first:
-</p>
-<pre class="verbatim">    #   &quot;Sam sat on the ground and put his head in 
his hands.  
-    #   'I wish I had never come here, and I don't want to see 
-    #   no more magic,' he said, and fell silent.&quot;
-    for (@ARGV) { 
-        s#^([^./])#./$1#;
-        $_ .= &quot;\0&quot;;
-    } 
-    while (&lt;&gt;) {  
-        # now process $_
-    } 
-</pre>
-<p>But be warned that users will not appreciate being unable to use 
&quot;-&quot;
-to mean standard input, per the standard convention.
-</p>
-<hr>
-<a name="perlopentut-Paths-as-Opens"></a>
-<div class="header">
-<p>
-Next: <a href="#perlopentut-Single-Argument-Open" accesskey="n" 
rel="next">perlopentut Single Argument Open</a>, Previous: <a 
href="#perlopentut-Dispelling-the-Dweomer" accesskey="p" rel="prev">perlopentut 
Dispelling the Dweomer</a>, Up: <a href="#perlopentut-Obscure-Open-Tricks" 
accesskey="u" rel="up">perlopentut Obscure Open Tricks</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="Paths-as-Opens"></a>
-<h4 class="subsection">49.5.3 Paths as Opens</h4>
+<pre class="verbatim">    print STDERR &quot;This is a debugging 
message.\n&quot;;
 
-<p>You&rsquo;ve probably noticed how Perl&rsquo;s <code>warn</code> and 
<code>die</code> functions can
-produce messages like:
-</p>
-<pre class="verbatim">    Some warning at scriptname line 29, &lt;FH&gt; line 
7.
+    print STDOUT &quot;Please enter something: &quot;;
+    $response = &lt;STDIN&gt; // die &quot;how come no input?&quot;;
+    print STDOUT &quot;Thank you!\n&quot;;
+
+    while (&lt;ARGV&gt;) { ... }
 </pre>
-<p>That&rsquo;s because you opened a filehandle FH, and had read in seven 
records
-from it.  But what was the name of the file, rather than the handle?
+<p>As you see from those examples, <code>STDOUT</code> and <code>STDERR</code> 
are output
+handles, and <code>STDIN</code> and <code>ARGV</code> are input handles.  They 
are
+in all capital letters because they are reserved to Perl, much
+like the <code>@ARGV</code> array and the <code>%ENV</code> hash are.  Their 
external
+associations were set up by your shell.
 </p>
-<p>If you aren&rsquo;t running with <code>strict refs</code>, or if 
you&rsquo;ve turned them off
-temporarily, then all you have to do is this:
+<p>You will need to open every other filehandle on your own. Although there
+are many variants, the most common way to call Perl&rsquo;s open() function
+is with three arguments and one return value:
 </p>
-<pre class="verbatim">    open($path, &quot;&lt; $path&quot;) || die 
&quot;can't open $path: $!&quot;;
-    while (&lt;$path&gt;) {
-        # whatever
-    } 
-</pre>
-<p>Since you&rsquo;re using the pathname of the file as its handle,
-you&rsquo;ll get warnings more like
+<p><code>    <em>OK</em> = open(<em>HANDLE</em>, <em>MODE</em>, 
<em>PATHNAME</em>)</code>
 </p>
-<pre class="verbatim">    Some warning at scriptname line 29, 
&lt;/etc/motd&gt; line 7.
-</pre>
-<hr>
-<a name="perlopentut-Single-Argument-Open"></a>
-<div class="header">
-<p>
-Next: <a href="#perlopentut-Playing-with-STDIN-and-STDOUT" accesskey="n" 
rel="next">perlopentut Playing with STDIN and STDOUT</a>, Previous: <a 
href="#perlopentut-Paths-as-Opens" accesskey="p" rel="prev">perlopentut Paths 
as Opens</a>, Up: <a href="#perlopentut-Obscure-Open-Tricks" accesskey="u" 
rel="up">perlopentut Obscure Open Tricks</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="Single-Argument-Open"></a>
-<h4 class="subsection">49.5.4 Single Argument Open</h4>
-
-<p>Remember how we said that Perl&rsquo;s open took two arguments?  That was a
-passive prevarication.  You see, it can also take just one argument.
-If and only if the variable is a global variable, not a lexical, you
-can pass <code>open</code> just one argument, the filehandle, and it will 
-get the path from the global scalar variable of the same name.
+<p>Where:
 </p>
-<pre class="verbatim">    $FILE = &quot;/etc/motd&quot;;
-    open FILE or die &quot;can't open $FILE: $!&quot;;
-    while (&lt;FILE&gt;) {
-        # whatever
-    } 
-</pre>
-<p>Why is this here?  Someone has to cater to the hysterical porpoises.
-It&rsquo;s something that&rsquo;s been in Perl since the very beginning, if not
-before.
+<dl compact="compact">
+<dt><em>OK</em></dt>
+<dd><a name="perlopentut-OK"></a>
+<p>will be some defined value if the open succeeds, but
+<code>undef</code> if it fails;
 </p>
-<hr>
-<a name="perlopentut-Playing-with-STDIN-and-STDOUT"></a>
-<div class="header">
-<p>
-Previous: <a href="#perlopentut-Single-Argument-Open" accesskey="p" 
rel="prev">perlopentut Single Argument Open</a>, Up: <a 
href="#perlopentut-Obscure-Open-Tricks" accesskey="u" rel="up">perlopentut 
Obscure Open Tricks</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="Playing-with-STDIN-and-STDOUT"></a>
-<h4 class="subsection">49.5.5 Playing with STDIN and STDOUT</h4>
-
-<p>One clever move with STDOUT is to explicitly close it when you&rsquo;re done
-with the program.
+</dd>
+<dt><em>HANDLE</em></dt>
+<dd><a name="perlopentut-HANDLE"></a>
+<p>should be an undefined scalar variable to be filled in by the
+<code>open</code> function if it succeeds;
 </p>
-<pre class="verbatim">    END { close(STDOUT) || die &quot;can't close stdout: 
$!&quot; }
-</pre>
-<p>If you don&rsquo;t do this, and your program fills up the disk partition due
-to a command line redirection, it won&rsquo;t report the error exit with a
-failure status.
+</dd>
+<dt><em>MODE</em></dt>
+<dd><a name="perlopentut-MODE"></a>
+<p>is the access mode and the encoding format to open the file with;
 </p>
-<p>You don&rsquo;t have to accept the STDIN and STDOUT you were given.  You are
-welcome to reopen them if you&rsquo;d like.
+</dd>
+<dt><em>PATHNAME</em></dt>
+<dd><a name="perlopentut-PATHNAME"></a>
+<p>is the external name of the file you want opened.
 </p>
-<pre class="verbatim">    open(STDIN, &quot;&lt; datafile&quot;)
-        || die &quot;can't open datafile: $!&quot;;
+</dd>
+</dl>
 
-    open(STDOUT, &quot;&gt; output&quot;)
-        || die &quot;can't open output: $!&quot;;
-</pre>
-<p>And then these can be accessed directly or passed on to subprocesses.
-This makes it look as though the program were initially invoked
-with those redirections from the command line.
-</p>
-<p>It&rsquo;s probably more interesting to connect these to pipes.  For 
example:
-</p>
-<pre class="verbatim">    $pager = $ENV{PAGER} || &quot;(less || more)&quot;;
-    open(STDOUT, &quot;| $pager&quot;)
-        || die &quot;can't fork a pager: $!&quot;;
-</pre>
-<p>This makes it appear as though your program were called with its stdout
-already piped into your pager.  You can also use this kind of thing
-in conjunction with an implicit fork to yourself.  You might do this
-if you would rather handle the post processing in your own program,
-just in a different process:
+<p>Most of the complexity of the <code>open</code> function lies in the many
+possible values that the <em>MODE</em> parameter can take on.
 </p>
-<pre class="verbatim">    head(100);
-    while (&lt;&gt;) {
-        print;
-    } 
-
-    sub head {
-        my $lines = shift || 20;
-        return if $pid = open(STDOUT, &quot;|-&quot;);       # return if parent
-        die &quot;cannot fork: $!&quot; unless defined $pid;
-        while (&lt;STDIN&gt;) {
-            last if --$lines &lt; 0;
-            print;
-        } 
-        exit;
-    } 
-</pre>
-<p>This technique can be applied to repeatedly push as many filters on your
-output stream as you wish.
+<p>One last thing before we show you how to open files: opening
+files does not (usually) automatically lock them in Perl.  See
+<a href="perlfaq5.html#Top">(perlfaq5)</a> for how to lock.
 </p>
 <hr>
-<a name="perlopentut-Other-I_002fO-Issues"></a>
+<a name="perlopentut-Opening-Text-Files"></a>
 <div class="header">
 <p>
-Next: <a href="#perlopentut-SEE-ALSO" accesskey="n" rel="next">perlopentut SEE 
ALSO</a>, Previous: <a href="#perlopentut-Obscure-Open-Tricks" accesskey="p" 
rel="prev">perlopentut Obscure Open Tricks</a>, Up: <a href="#perlopentut" 
accesskey="u" rel="up">perlopentut</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+Next: <a href="#perlopentut-Opening-Binary-Files" accesskey="n" 
rel="next">perlopentut Opening Binary Files</a>, Previous: <a 
href="#perlopentut-DESCRIPTION" accesskey="p" rel="prev">perlopentut 
DESCRIPTION</a>, Up: <a href="#perlopentut" accesskey="u" 
rel="up">perlopentut</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="Other-I_002fO-Issues"></a>
-<h3 class="section">49.6 Other I/O Issues</h3>
+<a name="Opening-Text-Files"></a>
+<h3 class="section">49.3 Opening Text Files</h3>
 
-<p>These topics aren&rsquo;t really arguments related to <code>open</code> or 
<code>sysopen</code>,
-but they do affect what you do with your open files.
-</p>
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Opening-Non_002dFile-Files" accesskey="1">perlopentut 
Opening Non-File Files</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Opening-Named-Pipes" accesskey="2">perlopentut Opening Named 
Pipes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Opening-Sockets" accesskey="3">perlopentut Opening 
Sockets</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perlopentut-Binary-Files" 
accesskey="4">perlopentut Binary Files</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Opening-Text-Files-for-Reading" accesskey="1">perlopentut 
Opening Text Files for Reading</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perlopentut-File-Locking" 
accesskey="5">perlopentut File Locking</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
-</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perlopentut-IO-Layers" 
accesskey="6">perlopentut IO Layers</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlopentut-Opening-Text-Files-for-Writing" accesskey="2">perlopentut 
Opening Text Files for Writing</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
 </table>
 
 <hr>
-<a name="perlopentut-Opening-Non_002dFile-Files"></a>
+<a name="perlopentut-Opening-Text-Files-for-Reading"></a>
 <div class="header">
 <p>
-Next: <a href="#perlopentut-Opening-Named-Pipes" accesskey="n" 
rel="next">perlopentut Opening Named Pipes</a>, Up: <a 
href="#perlopentut-Other-I_002fO-Issues" accesskey="u" rel="up">perlopentut 
Other I/O Issues</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
+Next: <a href="#perlopentut-Opening-Text-Files-for-Writing" accesskey="n" 
rel="next">perlopentut Opening Text Files for Writing</a>, Up: <a 
href="#perlopentut-Opening-Text-Files" accesskey="u" rel="up">perlopentut 
Opening Text Files</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="Opening-Non_002dFile-Files"></a>
-<h4 class="subsection">49.6.1 Opening Non-File Files</h4>
+<a name="Opening-Text-Files-for-Reading"></a>
+<h4 class="subsection">49.3.1 Opening Text Files for Reading</h4>
 
-<p>When is a file not a file?  Well, you could say when it exists but
-isn&rsquo;t a plain file.   We&rsquo;ll check whether it&rsquo;s a symbolic 
link first,
-just in case.
+<p>If you want to read from a text file, first open it in
+read-only mode like this:
 </p>
-<pre class="verbatim">    if (-l $file || ! -f _) {
-        print &quot;$file is not a plain file\n&quot;;
-    } 
+<pre class="verbatim">    my $filename = 
&quot;/some/path/to/a/textfile/goes/here&quot;;
+    my $encoding = &quot;:encoding(UTF-8)&quot;;
+    my $handle   = undef;     # this will be filled in on success
+
+    open($handle, &quot;&lt; $encoding&quot;, $filename)
+        || die &quot;$0: can't open $filename for reading: $!&quot;;
 </pre>
-<p>What other kinds of files are there than, well, files?  Directories,
-symbolic links, named pipes, Unix-domain sockets, and block and character
-devices.  Those are all files, too&ndash;just not <em>plain</em> files.  This 
isn&rsquo;t
-the same issue as being a text file. Not all text files are plain files.
-Not all plain files are text files.  That&rsquo;s why there are separate 
<code>-f</code>
-and <code>-T</code> file tests.
+<p>As with the shell, in Perl the <code>&quot;&lt;&quot;</code> is used to 
open the file in
+read-only mode.  If it succeeds, Perl allocates a brand new filehandle for
+you and fills in your previously undefined <code>$handle</code> argument with a
+reference to that handle.
 </p>
-<p>To open a directory, you should use the <code>opendir</code> function, then
-process it with <code>readdir</code>, carefully restoring the directory 
-name if necessary:
+<p>Now you may use functions like <code>readline</code>, <code>read</code>, 
<code>getc</code>, and
+<code>sysread</code> on that handle.  Probably the most common input function
+is the one that looks like an operator:
 </p>
-<pre class="verbatim">    opendir(DIR, $dirname) or die &quot;can't opendir 
$dirname: $!&quot;;
-    while (defined($file = readdir(DIR))) {
-        # do something with &quot;$dirname/$file&quot;
-    }
-    closedir(DIR);
+<pre class="verbatim">    $line = readline($handle);
+    $line = &lt;$handle&gt;;          # same thing
 </pre>
-<p>If you want to process directories recursively, it&rsquo;s better to use the
-File::Find module.  For example, this prints out all files recursively
-and adds a slash to their names if the file is a directory.
+<p>Because the <code>readline</code> function returns <code>undef</code> at 
end of file or
+upon error, you will sometimes see it used this way:
 </p>
-<pre class="verbatim">    @ARGV = qw(.) unless @ARGV;
-    use File::Find;
-    find sub { print $File::Find::name, -d &amp;&amp; '/', &quot;\n&quot; }, 
@ARGV;
+<pre class="verbatim">    $line = &lt;$handle&gt;;
+    if (defined $line) {
+        # do something with $line
+    }
+    else {
+        # $line is not valid, so skip it
+    }
 </pre>
-<p>This finds all bogus symbolic links beneath a particular directory:
+<p>You can also just quickly <code>die</code> on an undefined value this way:
 </p>
-<pre class="verbatim">    find sub { print &quot;$File::Find::name\n&quot; if 
-l &amp;&amp; !-e }, $dir;
+<pre class="verbatim">    $line = &lt;$handle&gt; // die &quot;no input 
found&quot;;
 </pre>
-<p>As you see, with symbolic links, you can just pretend that it is
-what it points to.  Or, if you want to know <em>what</em> it points to, then
-<code>readlink</code> is called for:
+<p>However, if hitting EOF is an expected and normal event, you do not want to
+exit simply because you have run out of input.  Instead, you probably just want
+to exit an input loop.  You can then test to see if an actual error has caused
+the loop to terminate, and act accordingly:
 </p>
-<pre class="verbatim">    if (-l $file) {
-        if (defined($whither = readlink($file))) {
-            print &quot;$file points to $whither\n&quot;;
-        } else {
-            print &quot;$file points nowhere: $!\n&quot;;
+<pre class="verbatim">    while (&lt;$handle&gt;) {
+        # do something with data in $_
         } 
+    if ($!) {
+        die &quot;unexpected error while reading from $filename: $!&quot;;
     } 
 </pre>
-<hr>
-<a name="perlopentut-Opening-Named-Pipes"></a>
-<div class="header">
-<p>
-Next: <a href="#perlopentut-Opening-Sockets" accesskey="n" 
rel="next">perlopentut Opening Sockets</a>, Previous: <a 
href="#perlopentut-Opening-Non_002dFile-Files" accesskey="p" 
rel="prev">perlopentut Opening Non-File Files</a>, Up: <a 
href="#perlopentut-Other-I_002fO-Issues" accesskey="u" rel="up">perlopentut 
Other I/O Issues</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
-</div>
-<a name="Opening-Named-Pipes"></a>
-<h4 class="subsection">49.6.2 Opening Named Pipes</h4>
-
-<p>Named pipes are a different matter.  You pretend they&rsquo;re regular 
files,
-but their opens will normally block until there is both a reader and
-a writer.  You can read more about them in <a 
href="#perlipc-Named-Pipes">perlipc Named Pipes</a>.
-Unix-domain sockets are rather different beasts as well; they&rsquo;re
-described in <a 
href="#perlipc-Unix_002dDomain-TCP-Clients-and-Servers">perlipc Unix-Domain TCP 
Clients and Servers</a>.
+<p><strong>A Note on Encodings</strong>: Having to specify the text encoding 
every time
+might seem a bit of a bother.  To set up a default encoding for 
<code>open</code> so
+that you don&rsquo;t have to supply it each time, you can use the 
<code>open</code> pragma:
 </p>
-<p>When it comes to opening devices, it can be easy and it can be tricky.
-We&rsquo;ll assume that if you&rsquo;re opening up a block device, you know 
what
-you&rsquo;re doing.  The character devices are more interesting.  These are
-typically used for modems, mice, and some kinds of printers.  This is
-described in <a 
href="perlfaq8.html#How-do-I-read-and-write-the-serial-port_003f">(perlfaq8)How 
do I read and write the serial port?</a>
-It&rsquo;s often enough to open them carefully:
-</p>
-<pre class="verbatim">    sysopen(TTYIN, &quot;/dev/ttyS1&quot;, O_RDWR | 
O_NDELAY | O_NOCTTY)
-                # (O_NOCTTY no longer needed on POSIX systems)
-        or die &quot;can't open /dev/ttyS1: $!&quot;;
-    open(TTYOUT, &quot;+&gt;&amp;TTYIN&quot;)
-        or die &quot;can't dup TTYIN: $!&quot;;
-
-    $ofh = select(TTYOUT); $| = 1; select($ofh);
-
-    print TTYOUT &quot;+++at\015&quot;;
-    $answer = &lt;TTYIN&gt;;
+<pre class="verbatim">    use open qw&lt; :encoding(UTF-8) &gt;;
 </pre>
-<p>With descriptors that you haven&rsquo;t opened using <code>sysopen</code>, 
such as
-sockets, you can set them to be non-blocking using <code>fcntl</code>:
+<p>Once you&rsquo;ve done that, you can safely omit the encoding part of the
+open mode:
 </p>
-<pre class="verbatim">    use Fcntl;
-    my $old_flags = fcntl($handle, F_GETFL, 0) 
-        or die &quot;can't get flags: $!&quot;;
-    fcntl($handle, F_SETFL, $old_flags | O_NONBLOCK) 
-        or die &quot;can't set non blocking: $!&quot;;
+<pre class="verbatim">    open($handle, &quot;&lt;&quot;, $filename)
+        || die &quot;$0: can't open $filename for reading: $!&quot;;
 </pre>
-<p>Rather than losing yourself in a morass of twisting, turning 
<code>ioctl</code>s,
-all dissimilar, if you&rsquo;re going to manipulate ttys, it&rsquo;s best to
-make calls out to the stty(1) program if you have it, or else use the
-portable POSIX interface.  To figure this all out, you&rsquo;ll need to read 
the
-termios(3) manpage, which describes the POSIX interface to tty devices,
-and then <a href="POSIX.html#Top">(POSIX)</a>, which describes Perl&rsquo;s 
interface to POSIX.  There are
-also some high-level modules on CPAN that can help you with these games.
-Check out Term::ReadKey and Term::ReadLine.
+<p>But never use the bare <code>&quot;&lt;&quot;</code> without having set up 
a default encoding
+first.  Otherwise, Perl cannot know which of the many, many, many possible
+flavors of text file you have, and Perl will have no idea how to correctly
+map the data in your file into actual characters it can work with.  Other
+common encoding formats including <code>&quot;ASCII&quot;</code>, 
<code>&quot;ISO-8859-1&quot;</code>,
+<code>&quot;ISO-8859-15&quot;</code>, <code>&quot;Windows-1252&quot;</code>, 
<code>&quot;MacRoman&quot;</code>, and even <code>&quot;UTF-16LE&quot;</code>.
+See <a href="#perlunitut-NAME">perlunitut NAME</a> for more about encodings.
 </p>
 <hr>
-<a name="perlopentut-Opening-Sockets"></a>
+<a name="perlopentut-Opening-Text-Files-for-Writing"></a>
 <div class="header">
 <p>
-Next: <a href="#perlopentut-Binary-Files" accesskey="n" rel="next">perlopentut 
Binary Files</a>, Previous: <a href="#perlopentut-Opening-Named-Pipes" 
accesskey="p" rel="prev">perlopentut Opening Named Pipes</a>, Up: <a 
href="#perlopentut-Other-I_002fO-Issues" accesskey="u" rel="up">perlopentut 
Other I/O Issues</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
+Previous: <a href="#perlopentut-Opening-Text-Files-for-Reading" accesskey="p" 
rel="prev">perlopentut Opening Text Files for Reading</a>, Up: <a 
href="#perlopentut-Opening-Text-Files" accesskey="u" rel="up">perlopentut 
Opening Text Files</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="Opening-Sockets"></a>
-<h4 class="subsection">49.6.3 Opening Sockets</h4>
+<a name="Opening-Text-Files-for-Writing"></a>
+<h4 class="subsection">49.3.2 Opening Text Files for Writing</h4>
 
-<p>What else can you open?  To open a connection using sockets, you 
won&rsquo;t use
-one of Perl&rsquo;s two open functions.  See 
-<a href="#perlipc-Sockets_003a-Client_002fServer-Communication">perlipc 
Sockets: Client/Server Communication</a> for that.  Here&rsquo;s an 
-example.  Once you have it, you can use FH as a bidirectional filehandle.
+<p>When you want to write to a file, you first have to decide what to do about
+any existing contents of that file.  You have two basic choices here: to
+preserve or to clobber.
 </p>
-<pre class="verbatim">    use IO::Socket;
-    local *FH = IO::Socket::INET-&gt;new(&quot;www.perl.com:80&quot;);
-</pre>
-<p>For opening up a URL, the LWP modules from CPAN are just what
-the doctor ordered.  There&rsquo;s no filehandle interface, but
-it&rsquo;s still easy to get the contents of a document:
+<p>If you want to preserve any existing contents, then you want to open the 
file
+in append mode.  As in the shell, in Perl you use 
<code>&quot;&gt;&gt;&quot;</code> to open an
+existing file in append mode.  <code>&quot;&gt;&gt;&quot;</code> creates the 
file if it does not
+already exist.
 </p>
-<pre class="verbatim">    use LWP::Simple;
-    $doc = get('http://www.cpan.org/');
-</pre>
-<hr>
-<a name="perlopentut-Binary-Files"></a>
-<div class="header">
-<p>
-Next: <a href="#perlopentut-File-Locking" accesskey="n" rel="next">perlopentut 
File Locking</a>, Previous: <a href="#perlopentut-Opening-Sockets" 
accesskey="p" rel="prev">perlopentut Opening Sockets</a>, Up: <a 
href="#perlopentut-Other-I_002fO-Issues" accesskey="u" rel="up">perlopentut 
Other I/O Issues</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
-</div>
-<a name="Binary-Files"></a>
-<h4 class="subsection">49.6.4 Binary Files</h4>
+<pre class="verbatim">    my $handle   = undef;
+    my $filename = &quot;/some/path/to/a/textfile/goes/here&quot;;
+    my $encoding = &quot;:encoding(UTF-8)&quot;;
 
-<p>On certain legacy systems with what could charitably be called terminally
-convoluted (some would say broken) I/O models, a file isn&rsquo;t a 
file&ndash;at
-least, not with respect to the C standard I/O library.  On these old
-systems whose libraries (but not kernels) distinguish between text and
-binary streams, to get files to behave properly you&rsquo;ll have to bend over
-backwards to avoid nasty problems.  On such infelicitous systems, sockets
-and pipes are already opened in binary mode, and there is currently no
-way to turn that off.  With files, you have more options.
+    open($handle, &quot;&gt;&gt; $encoding&quot;, $filename)
+        || die &quot;$0: can't open $filename for appending: $!&quot;;
+</pre>
+<p>Now you can write to that filehandle using any of <code>print</code>, 
<code>printf</code>,
+<code>say</code>, <code>write</code>, or <code>syswrite</code>.
 </p>
-<p>Another option is to use the <code>binmode</code> function on the 
appropriate
-handles before doing regular I/O on them:
+<p>As noted above, if the file does not already exist, then the append-mode 
open
+will create it for you.  But if the file does already exist, its contents are
+safe from harm because you will be adding your new text past the end of the
+old text.
 </p>
-<pre class="verbatim">    binmode(STDIN);
-    binmode(STDOUT);
-    while (&lt;STDIN&gt;) { print } 
-</pre>
-<p>Passing <code>sysopen</code> a non-standard flag option will also open the 
file in
-binary mode on those systems that support it.  This is the equivalent of
-opening the file normally, then calling <code>binmode</code> on the handle.
+<p>On the other hand, sometimes you want to clobber whatever might already be
+there.  To empty out a file before you start writing to it, you can open it
+in write-only mode:
 </p>
-<pre class="verbatim">    sysopen(BINDAT, &quot;records.data&quot;, O_RDWR | 
O_BINARY)
-        || die &quot;can't open records.data: $!&quot;;
+<pre class="verbatim">    my $handle   = undef;
+    my $filename = &quot;/some/path/to/a/textfile/goes/here&quot;;
+    my $encoding = &quot;:encoding(UTF-8)&quot;;
+
+    open($handle, &quot;&gt; $encoding&quot;, $filename)
+        || die &quot;$0: can't open $filename in write-open mode: $!&quot;;
 </pre>
-<p>Now you can use <code>read</code> and <code>print</code> on that handle 
without worrying
-about the non-standard system I/O library breaking your data.  It&rsquo;s not
-a pretty picture, but then, legacy systems seldom are.  CP/M will be
-with us until the end of days, and after.
+<p>Here again Perl works just like the shell in that the 
<code>&quot;&gt;&quot;</code> clobbers
+an existing file.
 </p>
-<p>On systems with exotic I/O systems, it turns out that, astonishingly
-enough, even unbuffered I/O using <code>sysread</code> and 
<code>syswrite</code> might do
-sneaky data mutilation behind your back.
+<p>As with the append mode, when you open a file in write-only mode,
+you can now write to that filehandle using any of <code>print</code>, 
<code>printf</code>,
+<code>say</code>, <code>write</code>, or <code>syswrite</code>.
 </p>
-<pre class="verbatim">    while (sysread(WHENCE, $buf, 1024)) {
-        syswrite(WHITHER, $buf, length($buf));
-    } 
-</pre>
-<p>Depending on the vicissitudes of your runtime system, even these calls
-may need <code>binmode</code> or <code>O_BINARY</code> first.  Systems known 
to be free of
-such difficulties include Unix, the Mac OS, Plan 9, and Inferno.
+<p>What about read-write mode?  You should probably pretend it doesn&rsquo;t 
exist,
+because opening text files in read-write mode is unlikely to do what you
+would like.  See <a href="perlfaq5.html#Top">(perlfaq5)</a> for details.
 </p>
 <hr>
-<a name="perlopentut-File-Locking"></a>
+<a name="perlopentut-Opening-Binary-Files"></a>
 <div class="header">
 <p>
-Next: <a href="#perlopentut-IO-Layers" accesskey="n" rel="next">perlopentut IO 
Layers</a>, Previous: <a href="#perlopentut-Binary-Files" accesskey="p" 
rel="prev">perlopentut Binary Files</a>, Up: <a 
href="#perlopentut-Other-I_002fO-Issues" accesskey="u" rel="up">perlopentut 
Other I/O Issues</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
+Next: <a href="#perlopentut-Opening-Pipes" accesskey="n" 
rel="next">perlopentut Opening Pipes</a>, Previous: <a 
href="#perlopentut-Opening-Text-Files" accesskey="p" rel="prev">perlopentut 
Opening Text Files</a>, Up: <a href="#perlopentut" accesskey="u" 
rel="up">perlopentut</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="File-Locking"></a>
-<h4 class="subsection">49.6.5 File Locking</h4>
+<a name="Opening-Binary-Files"></a>
+<h3 class="section">49.4 Opening Binary Files</h3>
 
-<p>In a multitasking environment, you may need to be careful not to collide
-with other processes who want to do I/O on the same files as you
-are working on.  You&rsquo;ll often need shared or exclusive locks
-on files for reading and writing respectively.  You might just
-pretend that only exclusive locks exist.
-</p>
-<p>Never use the existence of a file <code>-e $file</code> as a locking 
indication,
-because there is a race condition between the test for the existence of
-the file and its creation.  It&rsquo;s possible for another process to create
-a file in the slice of time between your existence check and your attempt
-to create the file.  Atomicity is critical.
-</p>
-<p>Perl&rsquo;s most portable locking interface is via the <code>flock</code> 
function,
-whose simplicity is emulated on systems that don&rsquo;t directly support it
-such as SysV or Windows.  The underlying semantics may affect how
-it all works, so you should learn how <code>flock</code> is implemented on your
-system&rsquo;s port of Perl.
-</p>
-<p>File locking <em>does not</em> lock out another process that would like to
-do I/O.  A file lock only locks out others trying to get a lock, not
-processes trying to do I/O.  Because locks are advisory, if one process
-uses locking and another doesn&rsquo;t, all bets are off.
+<p>If the file to be opened contains binary data instead of text characters,
+then the <code>MODE</code> argument to <code>open</code> is a little 
different.  Instead of
+specifying the encoding, you tell Perl that your data are in raw bytes.
 </p>
-<p>By default, the <code>flock</code> call will block until a lock is granted.
-A request for a shared lock will be granted as soon as there is no
-exclusive locker.  A request for an exclusive lock will be granted as
-soon as there is no locker of any kind.  Locks are on file descriptors,
-not file names.  You can&rsquo;t lock a file until you open it, and you 
can&rsquo;t
-hold on to a lock once the file has been closed.
+<pre class="verbatim">    my $filename = 
&quot;/some/path/to/a/binary/file/goes/here&quot;;
+    my $encoding = &quot;:raw :bytes&quot;
+    my $handle   = undef;     # this will be filled in on success
+</pre>
+<p>And then open as before, choosing <code>&quot;&lt;&quot;</code>, 
<code>&quot;&gt;&gt;&quot;</code>, or
+<code>&quot;&gt;&quot;</code> as needed:
 </p>
-<p>Here&rsquo;s how to get a blocking shared lock on a file, typically used
-for reading:
+<pre class="verbatim">    open($handle, &quot;&lt; $encoding&quot;, $filename)
+        || die &quot;$0: can't open $filename for reading: $!&quot;;
+
+    open($handle, &quot;&gt;&gt; $encoding&quot;, $filename)
+        || die &quot;$0: can't open $filename for appending: $!&quot;;
+
+    open($handle, &quot;&gt; $encoding&quot;, $filename)
+        || die &quot;$0: can't open $filename in write-open mode: $!&quot;;
+</pre>
+<p>Alternately, you can change to binary mode on an existing handle this way:
 </p>
-<pre class="verbatim">    use 5.004;
-    use Fcntl qw(:DEFAULT :flock);
-    open(FH, &quot;&lt; filename&quot;)  or die &quot;can't open filename: 
$!&quot;;
-    flock(FH, LOCK_SH)      or die &quot;can't lock filename: $!&quot;;
-    # now read from FH
+<pre class="verbatim">    binmode($handle)    || die &quot;cannot binmode 
handle&quot;;
 </pre>
-<p>You can get a non-blocking lock by using <code>LOCK_NB</code>.
+<p>This is especially handy for the handles that Perl has already opened for 
you.
 </p>
-<pre class="verbatim">    flock(FH, LOCK_SH | LOCK_NB)
-        or die &quot;can't lock filename: $!&quot;;
+<pre class="verbatim">    binmode(STDIN)      || die &quot;cannot binmode 
STDIN&quot;;
+    binmode(STDOUT)     || die &quot;cannot binmode STDOUT&quot;;
 </pre>
-<p>This can be useful for producing more user-friendly behaviour by warning
-if you&rsquo;re going to be blocking:
+<p>You can also pass <code>binmode</code> an explicit encoding to change it on 
the fly.
+This isn&rsquo;t exactly &quot;binary&quot; mode, but we still use 
<code>binmode</code> to do it:
 </p>
-<pre class="verbatim">    use 5.004;
-    use Fcntl qw(:DEFAULT :flock);
-    open(FH, &quot;&lt; filename&quot;)  or die &quot;can't open filename: 
$!&quot;;
-    unless (flock(FH, LOCK_SH | LOCK_NB)) {
-        $| = 1;
-        print &quot;Waiting for lock...&quot;;
-        flock(FH, LOCK_SH)  or die &quot;can't lock filename: $!&quot;;
-        print &quot;got it.\n&quot;
-    } 
-    # now read from FH
-</pre>
-<p>To get an exclusive lock, typically used for writing, you have to be
-careful.  We <code>sysopen</code> the file so it can be locked before it gets
-emptied.  You can get a nonblocking version using <code>LOCK_EX | 
LOCK_NB</code>.
-</p>
-<pre class="verbatim">    use 5.004;
-    use Fcntl qw(:DEFAULT :flock);
-    sysopen(FH, &quot;filename&quot;, O_WRONLY | O_CREAT)
-        or die &quot;can't open filename: $!&quot;;
-    flock(FH, LOCK_EX)
-        or die &quot;can't lock filename: $!&quot;;
-    truncate(FH, 0)
-        or die &quot;can't truncate filename: $!&quot;;
-    # now write to FH
-</pre>
-<p>Finally, due to the uncounted millions who cannot be dissuaded from
-wasting cycles on useless vanity devices called hit counters, here&rsquo;s
-how to increment a number in a file safely:
-</p>
-<pre class="verbatim">    use Fcntl qw(:DEFAULT :flock);
-
-    sysopen(FH, &quot;numfile&quot;, O_RDWR | O_CREAT)
-        or die &quot;can't open numfile: $!&quot;;
-    # autoflush FH
-    $ofh = select(FH); $| = 1; select ($ofh);
-    flock(FH, LOCK_EX)
-        or die &quot;can't write-lock numfile: $!&quot;;
-
-    $num = &lt;FH&gt; || 0;
-    seek(FH, 0, 0)
-        or die &quot;can't rewind numfile : $!&quot;;
-    print FH $num+1, &quot;\n&quot;
-        or die &quot;can't write numfile: $!&quot;;
-
-    truncate(FH, tell(FH))
-        or die &quot;can't truncate numfile: $!&quot;;
-    close(FH)
-        or die &quot;can't close numfile: $!&quot;;
-</pre>
-<hr>
-<a name="perlopentut-IO-Layers"></a>
-<div class="header">
-<p>
-Previous: <a href="#perlopentut-File-Locking" accesskey="p" 
rel="prev">perlopentut File Locking</a>, Up: <a 
href="#perlopentut-Other-I_002fO-Issues" accesskey="u" rel="up">perlopentut 
Other I/O Issues</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
-</div>
-<a name="IO-Layers"></a>
-<h4 class="subsection">49.6.6 IO Layers</h4>
-
-<p>In Perl 5.8.0 a new I/O framework called &quot;PerlIO&quot; was introduced.
-This is a new &quot;plumbing&quot; for all the I/O happening in Perl; for the
-most part everything will work just as it did, but PerlIO also brought
-in some new features such as the ability to think of I/O as &quot;layers&quot;.
-One I/O layer may in addition to just moving the data also do
-transformations on the data.  Such transformations may include
-compression and decompression, encryption and decryption, and transforming
-between various character encodings.
+<pre class="verbatim">  binmode(STDIN,  &quot;:encoding(MacRoman)&quot;) || 
die &quot;cannot binmode STDIN&quot;;
+  binmode(STDOUT, &quot;:encoding(UTF-8)&quot;)    || die &quot;cannot binmode 
STDOUT&quot;;
+</pre>
+<p>Once you have your binary file properly opened in the right mode, you can
+use all the same Perl I/O functions as you used on text files.  However,
+you may wish to use the fixed-size <code>read</code> instead of the 
variable-sized
+<code>readline</code> for your input.
 </p>
-<p>Full discussion about the features of PerlIO is out of scope for this
-tutorial, but here is how to recognize the layers being used:
+<p>Here&rsquo;s an example of how to copy a binary file:
 </p>
-<ul>
-<li> The three-(or more)-argument form of <code>open</code> is being used and 
the
-second argument contains something else in addition to the usual
-<code>'&lt;'</code>, <code>'&gt;'</code>, <code>'&gt;&gt;'</code>, 
<code>'|'</code> and their variants,
-for example:
+<pre class="verbatim">    my $BUFSIZ   = 64 * (2 ** 10);
+    my $name_in  = &quot;/some/input/file&quot;;
+    my $name_out = &quot;/some/output/flie&quot;;
 
-<pre class="verbatim">    open(my $fh, &quot;&lt;:crlf&quot;, $fn);
-</pre>
-</li><li> The two-argument form of <code>binmode</code> is being used, for 
example
+    my($in_fh, $out_fh, $buffer);
 
-<pre class="verbatim">    binmode($fh, &quot;:encoding(utf16)&quot;);
+    open($in_fh,  &quot;&lt;&quot;, $name_in)
+        || die &quot;$0: cannot open $name_in for reading: $!&quot;;
+    open($out_fh, &quot;&gt;&quot;, $name_out)
+        || die &quot;$0: cannot open $name_out for writing: $!&quot;;
+
+    for my $fh ($in_fh, $out_fh)  {
+        binmode($fh)               || die &quot;binmode failed&quot;;
+    }
+
+    while (read($in_fh, $buffer, $BUFSIZ)) {
+        unless (print $out_fh $buffer) {
+            die &quot;couldn't write to $name_out: $!&quot;;
+        }
+    }
+
+    close($in_fh)       || die &quot;couldn't close $name_in: $!&quot;;
+    close($out_fh)      || die &quot;couldn't close $name_out: $!&quot;;
 </pre>
-</li></ul>
+<hr>
+<a name="perlopentut-Opening-Pipes"></a>
+<div class="header">
+<p>
+Next: <a href="#perlopentut-Low_002dlevel-File-Opens-via-sysopen" 
accesskey="n" rel="next">perlopentut Low-level File Opens via sysopen</a>, 
Previous: <a href="#perlopentut-Opening-Binary-Files" accesskey="p" 
rel="prev">perlopentut Opening Binary Files</a>, Up: <a href="#perlopentut" 
accesskey="u" rel="up">perlopentut</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+</div>
+<a name="Opening-Pipes"></a>
+<h3 class="section">49.5 Opening Pipes</h3>
 
-<p>For more detailed discussion about PerlIO see <a 
href="PerlIO.html#Top">(PerlIO)</a>;
-for more detailed discussion about Unicode and I/O see <a 
href="#perluniintro-NAME">perluniintro NAME</a>.
+<p>To be announced.
 </p>
 <hr>
-<a name="perlopentut-SEE-ALSO"></a>
+<a name="perlopentut-Low_002dlevel-File-Opens-via-sysopen"></a>
 <div class="header">
 <p>
-Next: <a href="#perlopentut-AUTHOR-and-COPYRIGHT" accesskey="n" 
rel="next">perlopentut AUTHOR and COPYRIGHT</a>, Previous: <a 
href="#perlopentut-Other-I_002fO-Issues" accesskey="p" rel="prev">perlopentut 
Other I/O Issues</a>, Up: <a href="#perlopentut" accesskey="u" 
rel="up">perlopentut</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
+Next: <a href="#perlopentut-SEE-ALSO" accesskey="n" rel="next">perlopentut SEE 
ALSO</a>, Previous: <a href="#perlopentut-Opening-Pipes" accesskey="p" 
rel="prev">perlopentut Opening Pipes</a>, Up: <a href="#perlopentut" 
accesskey="u" rel="up">perlopentut</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-24"></a>
-<h3 class="section">49.7 SEE ALSO</h3>
+<a name="Low_002dlevel-File-Opens-via-sysopen"></a>
+<h3 class="section">49.6 Low-level File Opens via sysopen</h3>
 
-<p>The <code>open</code> and <code>sysopen</code> functions in perlfunc(1);
-the system open(2), dup(2), fopen(3), and fdopen(3) manpages;
-the POSIX documentation.
+<p>To be announced.  Or deleted.
 </p>
 <hr>
-<a name="perlopentut-AUTHOR-and-COPYRIGHT"></a>
+<a name="perlopentut-SEE-ALSO"></a>
 <div class="header">
 <p>
-Next: <a href="#perlopentut-HISTORY" accesskey="n" rel="next">perlopentut 
HISTORY</a>, Previous: <a href="#perlopentut-SEE-ALSO" accesskey="p" 
rel="prev">perlopentut SEE ALSO</a>, Up: <a href="#perlopentut" accesskey="u" 
rel="up">perlopentut</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
+Next: <a href="#perlopentut-AUTHOR-and-COPYRIGHT" accesskey="n" 
rel="next">perlopentut AUTHOR and COPYRIGHT</a>, Previous: <a 
href="#perlopentut-Low_002dlevel-File-Opens-via-sysopen" accesskey="p" 
rel="prev">perlopentut Low-level File Opens via sysopen</a>, Up: <a 
href="#perlopentut" accesskey="u" rel="up">perlopentut</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="AUTHOR-and-COPYRIGHT"></a>
-<h3 class="section">49.8 AUTHOR and COPYRIGHT</h3>
+<a name="SEE-ALSO-23"></a>
+<h3 class="section">49.7 SEE ALSO</h3>
 
-<p>Copyright 1998 Tom Christiansen.  
-</p>
-<p>This documentation is free; you can redistribute it and/or modify it
-under the same terms as Perl itself.
-</p>
-<p>Irrespective of its distribution, all code examples in these files are
-hereby placed into the public domain.  You are permitted and
-encouraged to use this code in your own programs for fun or for profit
-as you see fit.  A simple comment in the code giving credit would be
-courteous but is not required.
+<p>To be announced.
 </p>
 <hr>
-<a name="perlopentut-HISTORY"></a>
+<a name="perlopentut-AUTHOR-and-COPYRIGHT"></a>
 <div class="header">
 <p>
-Previous: <a href="#perlopentut-AUTHOR-and-COPYRIGHT" accesskey="p" 
rel="prev">perlopentut AUTHOR and COPYRIGHT</a>, Up: <a href="#perlopentut" 
accesskey="u" rel="up">perlopentut</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+Previous: <a href="#perlopentut-SEE-ALSO" accesskey="p" rel="prev">perlopentut 
SEE ALSO</a>, Up: <a href="#perlopentut" accesskey="u" rel="up">perlopentut</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="HISTORY-3"></a>
-<h3 class="section">49.9 HISTORY</h3>
+<a name="AUTHOR-and-COPYRIGHT"></a>
+<h3 class="section">49.8 AUTHOR and COPYRIGHT</h3>
 
-<p>First release: Sat Jan  9 08:09:11 MST 1999
+<p>Copyright 2013 Tom Christiansen.
+</p>
+<p>This documentation is free; you can redistribute it and/or modify it under
+the same terms as Perl itself.
 </p>
 <hr>
 <a name="perlpacktut"></a>
@@ -67361,7 +66629,8 @@
 
 <p>Hence, putting it all together:
 </p>
-<pre class="verbatim">    my($date,$description,$income,$expend) = 
unpack(&quot;A10xA27xA7xA*&quot;, $_);
+<pre class="verbatim">    my ($date, $description, $income, $expend) =
+        unpack(&quot;A10xA27xA7xA*&quot;, $_);
 </pre>
 <p>Now, that&rsquo;s our data parsed. I suppose what we might want to do now is
 total up our income and expenditure, and add another line to the end of
@@ -67369,7 +66638,8 @@
 how much we&rsquo;ve spent:
 </p>
 <pre class="verbatim">    while (&lt;&gt;) {
-        my($date, $desc, $income, $expend) = unpack(&quot;A10xA27xA7xA*&quot;, 
$_);
+        my ($date, $desc, $income, $expend) =
+            unpack(&quot;A10xA27xA7xA*&quot;, $_);
         $tot_income += $income;
         $tot_expend += $expend;
     }
@@ -67381,7 +66651,8 @@
 
     # OK, let's go:
 
-    print pack(&quot;A10xA27xA7xA*&quot;, $date, &quot;Totals&quot;, 
$tot_income, $tot_expend);
+    print pack(&quot;A10xA27xA7xA*&quot;, $date, &quot;Totals&quot;,
+        $tot_income, $tot_expend);
 </pre>
 <p>Oh, hmm. That didn&rsquo;t quite work. Let&rsquo;s see what happened:
 </p>
@@ -67404,7 +66675,8 @@
 format pads any non-existent characters with spaces, so we can use the
 additional spaces to line up our fields, like this:
 </p>
-<pre class="verbatim">    print pack(&quot;A11 A28 A8 A*&quot;, $date, 
&quot;Totals&quot;, $tot_income, $tot_expend);
+<pre class="verbatim">    print pack(&quot;A11 A28 A8 A*&quot;, $date, 
&quot;Totals&quot;,
+        $tot_income, $tot_expend);
 </pre>
 <p>(Note that you can put spaces in the template to make it more readable,
 but they don&rsquo;t translate to spaces in the output.) Here&rsquo;s what we 
got
@@ -67423,7 +66695,8 @@
 <pre class="verbatim">    $tot_income = sprintf(&quot;%.2f&quot;, 
$tot_income); 
     $tot_expend = sprintf(&quot;%12.2f&quot;, $tot_expend);
     $date = POSIX::strftime(&quot;%m/%d/%Y&quot;, localtime); 
-    print pack(&quot;A11 A28 A8 A*&quot;, $date, &quot;Totals&quot;, 
$tot_income, $tot_expend);
+    print pack(&quot;A11 A28 A8 A*&quot;, $date, &quot;Totals&quot;,
+        $tot_income, $tot_expend);
 </pre>
 <p>This time we get the right answer:
 </p>
@@ -67807,7 +67080,7 @@
 <a name="Uuencoding"></a>
 <h4 class="subsection">50.6.2 Uuencoding</h4>
 
-<p>Another odd-man-out in the template alphabet is <code>u</code>, which packs 
an
+<p>Another odd-man-out in the template alphabet is <code>u</code>, which packs 
a
 &quot;uuencoded string&quot;. (&quot;uu&quot; is short for Unix-to-Unix.) 
Chances are that
 you won&rsquo;t ever need this encoding technique which was invented to 
overcome
 the shortcomings of old-fashioned transmission mediums that do not support
@@ -68085,7 +67358,8 @@
 work on older Perls you&rsquo;ll need to <code>unpack( 'Z* Z* C')</code> to 
get the length,
 then use it to make a new unpack string. For example
 </p>
-<pre class="verbatim">   # pack a message: ASCIIZ, ASCIIZ, length, string, 
byte (5.005 compatible)
+<pre class="verbatim">   # pack a message: ASCIIZ, ASCIIZ, length, string, byte
+   # (5.005 compatible)
    my $msg = pack( 'Z* Z* C A* C', $src, $dst, length $sm, $sm, $prio );
 
    # unpack
@@ -68500,7 +67774,7 @@
 <p>After reading <a href="#perlfunc-NAME">perlfunc NAME</a> explaining how to 
use <code>syscall</code> we can write
 this Perl function copying a file to standard output:
 </p>
-<pre class="verbatim">    require 'syscall.ph';
+<pre class="verbatim">    require 'syscall.ph'; # run h2ph to generate this 
file
     sub cat($){
         my $path = shift();
         my $size = -s $path;
@@ -69960,7 +69234,7 @@
 <p>
 Next: <a href="#perlperf-AUTHOR" accesskey="n" rel="next">perlperf AUTHOR</a>, 
Previous: <a href="#perlperf-POSTSCRIPT" accesskey="p" rel="prev">perlperf 
POSTSCRIPT</a>, Up: <a href="#perlperf" accesskey="u" rel="up">perlperf</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-25"></a>
+<a name="SEE-ALSO-24"></a>
 <h3 class="section">51.10 SEE ALSO</h3>
 
 <p>Further reading can be found using the modules and links below.
@@ -70068,7 +69342,7 @@
 <p>
 Previous: <a href="#perlperf-SEE-ALSO" accesskey="p" rel="prev">perlperf SEE 
ALSO</a>, Up: <a href="#perlperf" accesskey="u" rel="up">perlperf</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="AUTHOR-22"></a>
+<a name="AUTHOR-21"></a>
 <h3 class="section">51.11 AUTHOR</h3>
 
 <p>Richard Foley &lt;address@hidden&gt; Copyright (c) 2008
@@ -70426,15 +69700,17 @@
 
   =encoding big5
 </pre>
+<p><code>=encoding</code> affects the whole document, and must occur only once.
+</p>
 </dd>
 </dl>
 
-<p><code>=encoding</code> affects the whole document, and must occur only once.
-</p>
-<p>And don&rsquo;t forget, when using any other command, that the command 
lasts up
+<p>And don&rsquo;t forget, all commands but <code>=encoding</code> last up
 until the end of its <em>paragraph</em>, not its line.  So in the
 examples below, you can see that every command needs the blank
-line after it, to end its paragraph.
+line after it, to end its paragraph.  (And some older
+Pod translators may require the <code>=encoding</code> line to be similarly
+separated.)
 </p>
 <p>Some examples of lists include:
 </p>
@@ -70730,13 +70006,17 @@
 <a name="Embedding-Pods-in-Perl-Modules"></a>
 <h4 class="subsection">52.2.6 Embedding Pods in Perl Modules</h4>
 
-<p>You can embed Pod documentation in your Perl modules and scripts.
-Start your documentation with an empty line, a &quot;=head1&quot; command at 
the
-beginning, and end it with a &quot;=cut&quot; command and an empty line.  Perl
-will ignore the Pod text.  See any of the supplied library modules for
-examples.  If you&rsquo;re going to put your Pod at the end of the file, and
-you&rsquo;re using an __END__ or __DATA__ cut mark, make sure to put an
-empty line there before the first Pod command.
+<p>You can embed Pod documentation in your Perl modules and scripts.  Start
+your documentation with an empty line, a &quot;=head1&quot; command at the
+beginning, and end it with a &quot;=cut&quot; command and an empty line.  The
+<strong>perl</strong> executable will ignore the Pod text.  You can place a Pod
+statement where <strong>perl</strong> expects the beginning of a new 
statement, but
+not within a statement, as that would result in an error.  See any of
+the supplied library modules for examples.
+</p>
+<p>If you&rsquo;re going to put your Pod at the end of the file, and 
you&rsquo;re using
+an <code>__END__</code> or <code>__DATA__</code> cut mark, make sure to put an 
empty line there
+before the first Pod command.
 </p>
 <pre class="verbatim">  __END__
 
@@ -70824,7 +70104,7 @@
 <p>
 Next: <a href="#perlpod-AUTHOR" accesskey="n" rel="next">perlpod AUTHOR</a>, 
Previous: <a href="#perlpod-DESCRIPTION" accesskey="p" rel="prev">perlpod 
DESCRIPTION</a>, Up: <a href="#perlpod" accesskey="u" rel="up">perlpod</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-26"></a>
+<a name="SEE-ALSO-25"></a>
 <h3 class="section">52.3 SEE ALSO</h3>
 
 <p><a href="#perlpodspec-NAME">perlpodspec NAME</a>, <a 
href="#perlsyn-PODs_003a-Embedded-Documentation">perlsyn PODs: Embedded 
Documentation</a>,
@@ -70836,7 +70116,7 @@
 <p>
 Previous: <a href="#perlpod-SEE-ALSO" accesskey="p" rel="prev">perlpod SEE 
ALSO</a>, Up: <a href="#perlpod" accesskey="u" rel="up">perlpod</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="AUTHOR-23"></a>
+<a name="AUTHOR-22"></a>
 <h3 class="section">52.4 AUTHOR</h3>
 
 <p>Larry Wall, Sean M. Burke
@@ -71992,7 +71272,8 @@
         &quot;perlport&quot;,                     # name
         &quot;Newlines&quot;,                     # section
         'pod',                          # what sort of link
-        &quot;Perlport's section on NL's|perlport/Newlines&quot; # orig. 
content
+        &quot;Perlport's section on NL's|perlport/Newlines&quot;
+                                       # original content
 
   L&lt;perlport/Newlines&gt;
     =&gt;  undef,                          # link text
@@ -72679,7 +71960,7 @@
 <p>
 Next: <a href="#perlpodspec-AUTHOR" accesskey="n" rel="next">perlpodspec 
AUTHOR</a>, Previous: <a 
href="#perlpodspec-About-Data-Paragraphs-and-_0022_003dbegin_002f_003dend_0022-Regions"
 accesskey="p" rel="prev">perlpodspec About Data Paragraphs and 
&quot;=begin/=end&quot; Regions</a>, Up: <a href="#perlpodspec" accesskey="u" 
rel="up">perlpodspec</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-27"></a>
+<a name="SEE-ALSO-26"></a>
 <h3 class="section">53.10 SEE ALSO</h3>
 
 <p><a href="#perlpod-NAME">perlpod NAME</a>, <a 
href="#perlsyn-PODs_003a-Embedded-Documentation">perlsyn PODs: Embedded 
Documentation</a>,
@@ -72691,7 +71972,7 @@
 <p>
 Previous: <a href="#perlpodspec-SEE-ALSO" accesskey="p" rel="prev">perlpodspec 
SEE ALSO</a>, Up: <a href="#perlpodspec" accesskey="u" rel="up">perlpodspec</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="AUTHOR-24"></a>
+<a name="AUTHOR-23"></a>
 <h3 class="section">53.11 AUTHOR</h3>
 
 <p>Sean M. Burke
@@ -72967,8 +72248,8 @@
 </p>
 <p>For licensing the easiest way is to use the same licensing as Perl itself:
 </p>
-<pre class="verbatim">    This library is free software; you may redistribute 
it and/or modify
-    it under the same terms as Perl itself.
+<pre class="verbatim">    This library is free software; you may redistribute 
it and/or
+    modify it under the same terms as Perl itself.
 </pre>
 <p>This makes it easy for people to use your module with Perl.  Note that
 this licensing example is neither an endorsement or a requirement, you are
@@ -73025,7 +72306,7 @@
 <p>
 Next: <a href="#perlpodstyle-AUTHOR-1" accesskey="n" rel="next">perlpodstyle 
AUTHOR 1</a>, Previous: <a href="#perlpodstyle-DESCRIPTION" accesskey="p" 
rel="prev">perlpodstyle DESCRIPTION</a>, Up: <a href="#perlpodstyle" 
accesskey="u" rel="up">perlpodstyle</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-28"></a>
+<a name="SEE-ALSO-27"></a>
 <h3 class="section">54.3 SEE ALSO</h3>
 
 <p>For additional information that may be more accurate for your specific
@@ -73042,7 +72323,7 @@
 <p>
 Next: <a href="#perlpodstyle-COPYRIGHT-AND-LICENSE-1" accesskey="n" 
rel="next">perlpodstyle COPYRIGHT AND LICENSE 1</a>, Previous: <a 
href="#perlpodstyle-SEE-ALSO-1" accesskey="p" rel="prev">perlpodstyle SEE ALSO 
1</a>, Up: <a href="#perlpodstyle" accesskey="u" rel="up">perlpodstyle</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="AUTHOR-25"></a>
+<a name="AUTHOR-24"></a>
 <h3 class="section">54.4 AUTHOR</h3>
 
 <p>Russ Allbery &lt;address@hidden&gt;, with large portions of this 
documentation
@@ -73342,7 +72623,12 @@
 <dt>deprecated</dt>
 <dd><a name="perlpolicy-deprecated"></a>
 <p>If something in the Perl core is marked as <strong>deprecated</strong>, we 
may remove it
-from the core in the next stable release series, though we may not. As of
+from the core in the future, though we might not.  Generally, backward
+incompatible changes will have deprecation warnings for two release
+cycles before being removed, but may be removed after just one cycle if
+the risk seems quite low or the benefits quite high.
+</p>
+<p>As of
 Perl 5.12, deprecated features and modules warn the user as they&rsquo;re used.
 When a module is deprecated, it will also be made available on CPAN.
 Installing it from CPAN will silence deprecation warnings for that module.
@@ -73359,15 +72645,15 @@
 <dd><a name="perlpolicy-discouraged"></a>
 <p>From time to time, we may mark language constructs and features which we
 consider to have been mistakes as <strong>discouraged</strong>.  Discouraged 
features
-aren&rsquo;t candidates for removal in the next major release series, but
+aren&rsquo;t currently candidates for removal, but
 we may later deprecate them if they&rsquo;re found to stand in the way of a
 significant improvement to the Perl core.
 </p>
 </dd>
 <dt>removed</dt>
 <dd><a name="perlpolicy-removed"></a>
-<p>Once a feature, construct or module has been marked as deprecated for a
-stable release cycle, we may remove it from the Perl core.  Unsurprisingly,
+<p>Once a feature, construct or module has been marked as deprecated, we
+may remove it from the Perl core.  Unsurprisingly,
 we say we&rsquo;ve <strong>removed</strong> these things.  When a module is 
removed, it will
 no longer ship with Perl, but will continue to be available on CPAN.
 </p>
@@ -73661,7 +72947,7 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlport-Supported-Platforms" accesskey="7">perlport Supported 
Platforms</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlport-EOL-Platforms-_0028Perl-5_002e14_0029" accesskey="8">perlport 
EOL Platforms (Perl 5.14)</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#perlport-EOL-Platforms" 
accesskey="8">perlport EOL Platforms</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlport-Supported-Platforms-_0028Perl-5_002e8_0029" 
accesskey="9">perlport Supported Platforms (Perl 
5.8)</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
@@ -74670,11 +73956,11 @@
     AIX           aix        aix
     BSD/OS        bsdos      i386-bsdos
     Darwin        darwin     darwin
-    dgux          dgux       AViiON-dgux
     DYNIX/ptx     dynixptx   i386-dynixptx
     FreeBSD       freebsd    freebsd-i386    
     Haiku         haiku      BePC-haiku
     Linux         linux      arm-linux
+    Linux         linux      armv5tel-linux
     Linux         linux      i386-linux
     Linux         linux      i586-linux
     Linux         linux      ppc-linux
@@ -75448,6 +74734,9 @@
 <p>The actual permissions set depend on the value of the <code>CYGWIN</code>
 in the SYSTEM environment settings.  (Cygwin)
 </p>
+<p>Setting the exec bit on some locations (generally /sdcard) will return true
+but not actually set the bit. (Android)
+</p>
 </dd>
 <dt>chown</dt>
 <dd><a name="perlport-chown"></a>
@@ -75468,6 +74757,8 @@
 <p>May not be available if library or source was not provided when building
 perl. (Win32)
 </p>
+<p>Not implemented. (Android)
+</p>
 </dd>
 <dt>dbmclose</dt>
 <dd><a name="perlport-dbmclose"></a>
@@ -75574,7 +74865,7 @@
 </dd>
 <dt>getnetbyname</dt>
 <dd><a name="perlport-getnetbyname"></a>
-<p>Not implemented. (Win32, Plan&nbsp;9<!-- /@w -->)
+<p>Not implemented. (Android, Win32, Plan&nbsp;9<!-- /@w -->)
 </p>
 </dd>
 <dt>getpwuid</dt>
@@ -75591,23 +74882,25 @@
 </dd>
 <dt>getnetbyaddr</dt>
 <dd><a name="perlport-getnetbyaddr"></a>
-<p>Not implemented. (Win32, Plan&nbsp;9<!-- /@w -->)
+<p>Not implemented. (Android, Win32, Plan&nbsp;9<!-- /@w -->)
 </p>
 </dd>
 <dt>getprotobynumber</dt>
 <dd><a name="perlport-getprotobynumber"></a>
+<p>Not implemented. (Android)
+</p>
 </dd>
 <dt>getservbyport</dt>
 <dd><a name="perlport-getservbyport"></a>
 </dd>
 <dt>getpwent</dt>
 <dd><a name="perlport-getpwent"></a>
-<p>Not implemented. (Win32)
+<p>Not implemented. (Android, Win32)
 </p>
 </dd>
 <dt>getgrent</dt>
 <dd><a name="perlport-getgrent"></a>
-<p>Not implemented. (Win32, VMS)
+<p>Not implemented. (Android, Win32, VMS)
 </p>
 </dd>
 <dt>gethostbyname</dt>
@@ -75623,12 +74916,12 @@
 </dd>
 <dt>getnetent</dt>
 <dd><a name="perlport-getnetent"></a>
-<p>Not implemented. (Win32, Plan&nbsp;9<!-- /@w -->)
+<p>Not implemented. (Android, Win32, Plan&nbsp;9<!-- /@w -->)
 </p>
 </dd>
 <dt>getprotoent</dt>
 <dd><a name="perlport-getprotoent"></a>
-<p>Not implemented. (Win32, Plan&nbsp;9<!-- /@w -->)
+<p>Not implemented. (Android, Win32, Plan&nbsp;9<!-- /@w -->)
 </p>
 </dd>
 <dt>getservent</dt>
@@ -75636,9 +74929,14 @@
 <p>Not implemented. (Win32, Plan&nbsp;9<!-- /@w -->)
 </p>
 </dd>
+<dt>seekdir</dt>
+<dd><a name="perlport-seekdir"></a>
+<p>Not implemented. (Android)
+</p>
+</dd>
 <dt>sethostent</dt>
 <dd><a name="perlport-sethostent"></a>
-<p>Not implemented. (Win32, Plan&nbsp;9<!-- /@w -->, RISC&nbsp;OS<!-- /@w -->)
+<p>Not implemented. (Android, Win32, Plan&nbsp;9<!-- /@w -->, RISC&nbsp;OS<!-- 
/@w -->)
 </p>
 </dd>
 <dt>setnetent</dt>
@@ -75648,7 +74946,7 @@
 </dd>
 <dt>setprotoent</dt>
 <dd><a name="perlport-setprotoent"></a>
-<p>Not implemented. (Win32, Plan&nbsp;9<!-- /@w -->, RISC&nbsp;OS<!-- /@w -->)
+<p>Not implemented. (Android, Win32, Plan&nbsp;9<!-- /@w -->, RISC&nbsp;OS<!-- 
/@w -->)
 </p>
 </dd>
 <dt>setservent</dt>
@@ -75660,25 +74958,27 @@
 <dd><a name="perlport-endpwent"></a>
 <p>Not implemented. (Win32)
 </p>
+<p>Either not implemented or a no-op. (Android)
+</p>
 </dd>
 <dt>endgrent</dt>
 <dd><a name="perlport-endgrent"></a>
-<p>Not implemented. (RISC&nbsp;OS<!-- /@w -->, VMS, Win32)
+<p>Not implemented. (Android, RISC&nbsp;OS<!-- /@w -->, VMS, Win32)
 </p>
 </dd>
 <dt>endhostent</dt>
 <dd><a name="perlport-endhostent"></a>
-<p>Not implemented. (Win32)
+<p>Not implemented. (Android, Win32)
 </p>
 </dd>
 <dt>endnetent</dt>
 <dd><a name="perlport-endnetent"></a>
-<p>Not implemented. (Win32, Plan&nbsp;9<!-- /@w -->)
+<p>Not implemented. (Android, Win32, Plan&nbsp;9<!-- /@w -->)
 </p>
 </dd>
 <dt>endprotoent</dt>
 <dd><a name="perlport-endprotoent"></a>
-<p>Not implemented. (Win32, Plan&nbsp;9<!-- /@w -->)
+<p>Not implemented. (Android, Win32, Plan&nbsp;9<!-- /@w -->)
 </p>
 </dd>
 <dt>endservent</dt>
@@ -75779,7 +75079,7 @@
 </dd>
 <dt>msgrcv</dt>
 <dd><a name="perlport-msgrcv"></a>
-<p>Not implemented. (Win32, VMS, Plan&nbsp;9<!-- /@w -->, RISC&nbsp;OS<!-- /@w 
-->, VOS)
+<p>Not implemented. (Android, Win32, VMS, Plan&nbsp;9<!-- /@w -->, 
RISC&nbsp;OS<!-- /@w -->, VOS)
 </p>
 </dd>
 <dt>open</dt>
@@ -75824,12 +75124,12 @@
 </dd>
 <dt>semop</dt>
 <dd><a name="perlport-semop"></a>
-<p>Not implemented. (Win32, VMS, RISC&nbsp;OS<!-- /@w -->)
+<p>Not implemented. (Android, Win32, VMS, RISC&nbsp;OS<!-- /@w -->)
 </p>
 </dd>
 <dt>setgrent</dt>
 <dd><a name="perlport-setgrent"></a>
-<p>Not implemented. (VMS, Win32, RISC&nbsp;OS<!-- /@w -->)
+<p>Not implemented. (Android, VMS, Win32, RISC&nbsp;OS<!-- /@w -->)
 </p>
 </dd>
 <dt>setpgrp</dt>
@@ -75844,7 +75144,7 @@
 </dd>
 <dt>setpwent</dt>
 <dd><a name="perlport-setpwent"></a>
-<p>Not implemented. (Win32, RISC&nbsp;OS<!-- /@w -->)
+<p>Not implemented. (Android, Win32, RISC&nbsp;OS<!-- /@w -->)
 </p>
 </dd>
 <dt>setsockopt</dt>
@@ -75863,7 +75163,7 @@
 </dd>
 <dt>shmwrite</dt>
 <dd><a name="perlport-shmwrite"></a>
-<p>Not implemented. (Win32, VMS, RISC&nbsp;OS<!-- /@w -->)
+<p>Not implemented. (Android, Win32, VMS, RISC&nbsp;OS<!-- /@w -->)
 </p>
 </dd>
 <dt>sleep</dt>
@@ -75967,6 +75267,11 @@
 For more details see <a href="#perlvms-_0024_003f">perlvms $?</a>. (VMS)
 </p>
 </dd>
+<dt>telldir</dt>
+<dd><a name="perlport-telldir"></a>
+<p>Not implemented. (Android)
+</p>
+</dd>
 <dt>times</dt>
 <dd><a name="perlport-times"></a>
 <p>&quot;cumulative&quot; times will be bogus.  On anything other than Windows 
NT
@@ -76025,7 +75330,7 @@
 <a name="perlport-Supported-Platforms"></a>
 <div class="header">
 <p>
-Next: <a href="#perlport-EOL-Platforms-_0028Perl-5_002e14_0029" accesskey="n" 
rel="next">perlport EOL Platforms (Perl 5.14)</a>, Previous: <a 
href="#perlport-FUNCTION-IMPLEMENTATIONS" accesskey="p" rel="prev">perlport 
FUNCTION IMPLEMENTATIONS</a>, Up: <a href="#perlport" accesskey="u" 
rel="up">perlport</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
+Next: <a href="#perlport-EOL-Platforms" accesskey="n" rel="next">perlport EOL 
Platforms</a>, Previous: <a href="#perlport-FUNCTION-IMPLEMENTATIONS" 
accesskey="p" rel="prev">perlport FUNCTION IMPLEMENTATIONS</a>, Up: <a 
href="#perlport" accesskey="u" rel="up">perlport</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Supported-Platforms"></a>
 <h3 class="section">56.7 Supported Platforms</h3>
@@ -76070,6 +75375,18 @@
 </dd>
 <dt>Cygwin</dt>
 <dd><a name="perlport-Cygwin"></a>
+<p>Some tests are known to fail:
+</p>
+<ul>
+<li> <samp>ext/XS-APItes/t/call_checker.t</samp> - see
+<a 
href="https://rt.perl.org/Ticket/Display.html?id=78502";>https://rt.perl.org/Ticket/Display.html?id=78502</a>
+
+</li><li> <samp>dist/I18N-Collate/t/I18N-Collate.t</samp>
+
+</li><li> <samp>ext/Win32CORE/t/win32core.t</samp> - may fail on recent cygwin 
installs.
+
+</li></ul>
+
 </dd>
 <dt>Solaris (x86, SPARC)</dt>
 <dd><a name="perlport-Solaris-_0028x86_002c-SPARC_0029"></a>
@@ -76139,36 +75456,66 @@
 <dt>AIX</dt>
 <dd><a name="perlport-AIX-1"></a>
 </dd>
+<dt>Android</dt>
+<dd><a name="perlport-Android"></a>
+</dd>
+<dt>FreeMINT</dt>
+<dd><a name="perlport-FreeMINT"></a>
+<p>Perl now builds with FreeMiNT/Atari. It fails a few tests, that needs
+some investigation.
+</p>
+<p>The FreeMiNT port uses GNU dld for loadable module capabilities. So
+ensure you have that library installed when building perl.
+</p>
+</dd>
 </dl>
 
 <hr>
-<a name="perlport-EOL-Platforms-_0028Perl-5_002e14_0029"></a>
+<a name="perlport-EOL-Platforms"></a>
 <div class="header">
 <p>
 Next: <a href="#perlport-Supported-Platforms-_0028Perl-5_002e8_0029" 
accesskey="n" rel="next">perlport Supported Platforms (Perl 5.8)</a>, Previous: 
<a href="#perlport-Supported-Platforms" accesskey="p" rel="prev">perlport 
Supported Platforms</a>, Up: <a href="#perlport" accesskey="u" 
rel="up">perlport</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="EOL-Platforms-_0028Perl-5_002e14_0029"></a>
-<h3 class="section">56.8 EOL Platforms (Perl 5.14)</h3>
+<a name="EOL-Platforms"></a>
+<h3 class="section">56.8 EOL Platforms</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlport-_0028Perl-5_002e20_0029" accesskey="1">perlport (Perl 
5.20)</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perlport-_0028Perl-5_002e14_0029" accesskey="2">perlport (Perl 
5.14)</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perlport-_0028Perl-5_002e12_0029" accesskey="3">perlport (Perl 
5.12)</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="perlport-_0028Perl-5_002e20_0029"></a>
+<div class="header">
+<p>
+Next: <a href="#perlport-_0028Perl-5_002e14_0029" accesskey="n" 
rel="next">perlport (Perl 5.14)</a>, Up: <a href="#perlport-EOL-Platforms" 
accesskey="u" rel="up">perlport EOL Platforms</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
+</div>
+<a name="g_t_0028Perl-5_002e20_0029"></a>
+<h4 class="subsection">56.8.1 (Perl 5.20)</h4>
 
 <p>The following platforms were supported by a previous version of
 Perl but have been officially removed from Perl&rsquo;s source code
-as of 5.12:
+as of 5.20:
 </p>
 <dl compact="compact">
-<dt>Atari MiNT</dt>
-<dd><a name="perlport-Atari-MiNT"></a>
-</dd>
-<dt>Apollo Domain/OS</dt>
-<dd><a name="perlport-Apollo-Domain_002fOS"></a>
-</dd>
-<dt>Apple Mac OS 8/9</dt>
-<dd><a name="perlport-Apple-Mac-OS-8_002f9"></a>
-</dd>
-<dt>Tenon Machten</dt>
-<dd><a name="perlport-Tenon-Machten"></a>
+<dt>AT&amp;T 3b1</dt>
+<dd><a name="perlport-AT_0026T-3b1"></a>
 </dd>
 </dl>
 
+<hr>
+<a name="perlport-_0028Perl-5_002e14_0029"></a>
+<div class="header">
+<p>
+Next: <a href="#perlport-_0028Perl-5_002e12_0029" accesskey="n" 
rel="next">perlport (Perl 5.12)</a>, Previous: <a 
href="#perlport-_0028Perl-5_002e20_0029" accesskey="p" rel="prev">perlport 
(Perl 5.20)</a>, Up: <a href="#perlport-EOL-Platforms" accesskey="u" 
rel="up">perlport EOL Platforms</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+</div>
+<a name="g_t_0028Perl-5_002e14_0029"></a>
+<h4 class="subsection">56.8.2 (Perl 5.14)</h4>
+
 <p>The following platforms were supported up to 5.10.  They may still
 have worked in 5.12, but supporting code has been removed for 5.14:
 </p>
@@ -76188,10 +75535,38 @@
 </dl>
 
 <hr>
+<a name="perlport-_0028Perl-5_002e12_0029"></a>
+<div class="header">
+<p>
+Previous: <a href="#perlport-_0028Perl-5_002e14_0029" accesskey="p" 
rel="prev">perlport (Perl 5.14)</a>, Up: <a href="#perlport-EOL-Platforms" 
accesskey="u" rel="up">perlport EOL Platforms</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
+</div>
+<a name="g_t_0028Perl-5_002e12_0029"></a>
+<h4 class="subsection">56.8.3 (Perl 5.12)</h4>
+
+<p>The following platforms were supported by a previous version of
+Perl but have been officially removed from Perl&rsquo;s source code
+as of 5.12:
+</p>
+<dl compact="compact">
+<dt>Atari MiNT</dt>
+<dd><a name="perlport-Atari-MiNT"></a>
+</dd>
+<dt>Apollo Domain/OS</dt>
+<dd><a name="perlport-Apollo-Domain_002fOS"></a>
+</dd>
+<dt>Apple Mac OS 8/9</dt>
+<dd><a name="perlport-Apple-Mac-OS-8_002f9"></a>
+</dd>
+<dt>Tenon Machten</dt>
+<dd><a name="perlport-Tenon-Machten"></a>
+</dd>
+</dl>
+
+<hr>
 <a name="perlport-Supported-Platforms-_0028Perl-5_002e8_0029"></a>
 <div class="header">
 <p>
-Next: <a href="#perlport-SEE-ALSO" accesskey="n" rel="next">perlport SEE 
ALSO</a>, Previous: <a href="#perlport-EOL-Platforms-_0028Perl-5_002e14_0029" 
accesskey="p" rel="prev">perlport EOL Platforms (Perl 5.14)</a>, Up: <a 
href="#perlport" accesskey="u" rel="up">perlport</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
+Next: <a href="#perlport-SEE-ALSO" accesskey="n" rel="next">perlport SEE 
ALSO</a>, Previous: <a href="#perlport-EOL-Platforms" accesskey="p" 
rel="prev">perlport EOL Platforms</a>, Up: <a href="#perlport" accesskey="u" 
rel="up">perlport</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Supported-Platforms-_0028Perl-5_002e8_0029"></a>
 <h3 class="section">56.9 Supported Platforms (Perl 5.8)</h3>
@@ -76330,11 +75705,11 @@
 <p>
 Next: <a href="#perlport-AUTHORS-_002f-CONTRIBUTORS" accesskey="n" 
rel="next">perlport AUTHORS / CONTRIBUTORS</a>, Previous: <a 
href="#perlport-Supported-Platforms-_0028Perl-5_002e8_0029" accesskey="p" 
rel="prev">perlport Supported Platforms (Perl 5.8)</a>, Up: <a href="#perlport" 
accesskey="u" rel="up">perlport</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-29"></a>
+<a name="SEE-ALSO-28"></a>
 <h3 class="section">56.10 SEE ALSO</h3>
 
 <p><a href="perlaix.html#Top">(perlaix)</a>, <a 
href="perlamiga.html#Top">(perlamiga)</a>, <a 
href="perlbs2000.html#Top">(perlbs2000)</a>,
-<a href="perlce.html#Top">(perlce)</a>, <a 
href="perlcygwin.html#Top">(perlcygwin)</a>, <a 
href="perldgux.html#Top">(perldgux)</a>, <a 
href="perldos.html#Top">(perldos)</a>,
+<a href="perlce.html#Top">(perlce)</a>, <a 
href="perlcygwin.html#Top">(perlcygwin)</a>, <a 
href="perldos.html#Top">(perldos)</a>,
 <a href="#perlebcdic-NAME">perlebcdic NAME</a>, <a 
href="perlfreebsd.html#Top">(perlfreebsd)</a>, <a 
href="perlhurd.html#Top">(perlhurd)</a>, <a 
href="perlhpux.html#Top">(perlhpux)</a>, <a 
href="perlirix.html#Top">(perlirix)</a>,
 <a href="perlmacos.html#Top">(perlmacos)</a>, <a 
href="perlmacosx.html#Top">(perlmacosx)</a>,
 <a href="perlnetware.html#Top">(perlnetware)</a>, <a 
href="perlos2.html#Top">(perlos2)</a>, <a 
href="perlos390.html#Top">(perlos390)</a>, <a 
href="perlos400.html#Top">(perlos400)</a>,
@@ -76679,6 +76054,8 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlre-Creating-Custom-RE-Engines">perlre Creating Custom RE 
Engines</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perlre-Embedded-Code-Execution-Frequency">perlre Embedded Code Execution 
Frequency</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlre-PCRE_002fPython-Support">perlre PCRE/Python 
Support</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 </table>
@@ -76702,8 +76079,8 @@
 <dt>m</dt>
 <dd><a name="perlre-m"></a>
 <p>Treat string as multiple lines.  That is, change &quot;^&quot; and 
&quot;$&quot; from matching
-the start or end of line only at the left and right ends of the string to
-matching them anywhere within the string.
+the start of the string&rsquo;s first line and the end of its last line to
+matching the start and end of each line within the string.
 </p>
 </dd>
 <dt>s</dt>
@@ -76760,23 +76137,41 @@
 <p>Preserve the string matched such that ${^PREMATCH}, ${^MATCH}, and
 ${^POSTMATCH} are available for use after matching.
 </p>
-</dd>
-<dt>g and c</dt>
-<dd><a name="perlre-g-and-c"></a>
-<p>Global matching, and keep the Current position after failed matching.
-Unlike i, m, s and x, these two flags affect the way the regex is used
-rather than the regex itself. See
-<a href="#perlretut-Using-regular-expressions-in-Perl">perlretut Using regular 
expressions in Perl</a> for further explanation
-of the g and c modifiers.
+<p>In Perl 5.20 and higher this is ignored. Due to a new copy-on-write
+mechanism, ${^PREMATCH}, ${^MATCH}, and ${^POSTMATCH} will be available
+after the match regardless of the modifier.
 </p>
 </dd>
 <dt>a, d, l and u</dt>
 <dd><a name="perlre-a_002c-d_002c-l-and-u"></a>
-<p>These modifiers, all new in 5.14, affect which character-set semantics
+<p>These modifiers, all new in 5.14, affect which character-set rules
 (Unicode, etc.) are used, as described below in
 <a href="#perlre-Character-set-modifiers">Character set modifiers</a>.
 </p>
 </dd>
+<dt>Other Modifiers</dt>
+<dd><a name="perlre-Other-Modifiers"></a>
+<p>There are a number of flags that can be found at the end of regular
+expression constructs that are <em>not</em> generic regular expression flags, 
but
+apply to the operation being performed, like matching or substitution 
(<code>m//</code>
+or <code>s///</code> respectively).
+</p>
+<p>Flags described further in
+<a href="#perlretut-Using-regular-expressions-in-Perl">perlretut Using regular 
expressions in Perl</a> are:
+</p>
+<pre class="verbatim">  c  - keep the current position during repeated matching
+  g  - globally match the pattern repeatedly in the string
+</pre>
+<p>Substitution-specific modifiers described in
+</p>
+<p><a href="#perlop-s_002fPATTERN_002fREPLACEMENT_002fmsixpodualgcer">perlop 
s/PATTERN/REPLACEMENT/msixpodualgcer</a> are:
+</p>
+<pre class="verbatim">  e  - evaluate the right-hand side as an expression
+  ee - evaluate the right side as a string then eval the result
+  o  - pretend to optimize your code, but actually introduce bugs
+  r  - perform non-destructive substitution and return the new value
+</pre>
+</dd>
 </dl>
 
 <p>Regular expression modifiers are usually written in documentation
@@ -76815,18 +76210,36 @@
 
 <p><code>/x</code> tells
 the regular expression parser to ignore most whitespace that is neither
-backslashed nor within a character class.  You can use this to break up
-your regular expression into (slightly) more readable parts.  The 
<code>#</code>
-character is also treated as a metacharacter introducing a comment,
-just as in ordinary Perl code.  This also means that if you want real
-whitespace or <code>#</code> characters in the pattern (outside a character
-class, where they are unaffected by <code>/x</code>), then you&rsquo;ll either 
have to
+backslashed nor within a bracketed character class.  You can use this to
+break up your regular expression into (slightly) more readable parts.
+Also, the <code>#</code> character is treated as a metacharacter introducing a
+comment that runs up to the pattern&rsquo;s closing delimiter, or to the end
+of the current line if the pattern extends onto the next line.  Hence,
+this is very much like an ordinary Perl code comment.  (You can include
+the closing delimiter within the comment only if you precede it with a
+backslash, so be careful!)
+</p>
+<p>Use of <code>/x</code> means that if you want real
+whitespace or <code>#</code> characters in the pattern (outside a bracketed 
character
+class, which is unaffected by <code>/x</code>), then you&rsquo;ll either have 
to
 escape them (using backslashes or <code>\Q...\E</code>) or encode them using 
octal,
-hex, or <code>\N{}</code> escapes.  Taken together, these features go a long 
way towards
-making Perl&rsquo;s regular expressions more readable.  Note that you have to
-be careful not to include the pattern delimiter in the comment&ndash;perl has
-no way of knowing you did not intend to close the pattern early.  See
-the C-comment deletion code in <a href="#perlop-NAME">perlop NAME</a>.  Also 
note that anything inside
+hex, or <code>\N{}</code> escapes.
+</p>
+<p>You can use <a href="#perlre-_0028_003f_0023text_0029">(?#text)</a> to 
create a comment that ends earlier than the
+end of the current line, but <code>text</code> also can&rsquo;t contain the 
closing
+delimiter unless escaped with a backslash.
+</p>
+<p>Taken together, these features go a long way towards
+making Perl&rsquo;s regular expressions more readable.  Here&rsquo;s an 
example:
+</p>
+<pre class="verbatim">    # Delete (most) C comments.
+    $program =~ s {
+        /\*     # Match the opening delimiter.
+        .*?     # Match a minimal number of characters.
+        \*/     # Match the closing delimiter.
+    } []gsx;
+</pre>
+<p>Note that anything inside
 a <code>\Q...\E</code> stays unaffected by <code>/x</code>.  And note that 
<code>/x</code> doesn&rsquo;t affect
 space interpretation within a single multi-character construct.  For
 example in <code>\x{...}</code>, regardless of the <code>/x</code> modifier, 
there can be no
@@ -76849,7 +76262,7 @@
 <h4 class="subsubsection">58.2.1.2 Character set modifiers</h4>
 
 <p><code>/d</code>, <code>/u</code>, <code>/a</code>, and <code>/l</code>, 
available starting in 5.14, are called
-the character set modifiers; they affect the character set semantics
+the character set modifiers; they affect the character set rules
 used for the regular expression.
 </p>
 <p>The <code>/d</code>, <code>/u</code>, and <code>/l</code> modifiers are not 
likely to be of much use
@@ -76928,15 +76341,22 @@
 to another if there is an intervening call of the
 <a href="#perllocale-The-setlocale-function">setlocale() function</a>.
 </p>
-<p>Perl only supports single-byte locales.  This means that code points
-above 255 are treated as Unicode no matter what locale is in effect.
-Under Unicode rules, there are a few case-insensitive matches that cross
-the 255/256 boundary.  These are disallowed under <code>/l</code>.  For 
example,
-0xFF (on ASCII platforms) does not caselessly match the character at
-0x178, <code>LATIN CAPITAL LETTER Y WITH DIAERESIS</code>, because 0xFF may 
not be
-<code>LATIN SMALL LETTER Y WITH DIAERESIS</code> in the current locale, and 
Perl
-has no way of knowing if that character even exists in the locale, much
-less what code point it is.
+<p>The only non-single-byte locale Perl supports is (starting in v5.20)
+UTF-8.  This means that code points above 255 are treated as Unicode no
+matter what locale is in effect (since UTF-8 implies Unicode).
+</p>
+<p>Under Unicode rules, there are a few case-insensitive matches that cross
+the 255/256 boundary.  Except for UTF-8 locales in Perls v5.20 and
+later, these are disallowed under <code>/l</code>.  For example, 0xFF (on ASCII
+platforms) does not caselessly match the character at 0x178, <code>LATIN
+CAPITAL LETTER Y WITH DIAERESIS</code>, because 0xFF may not be <code>LATIN 
SMALL
+LETTER Y WITH DIAERESIS</code> in the current locale, and Perl has no way of
+knowing if that character even exists in the locale, much less what code
+point it is.
+</p>
+<p>In a UTF-8 locale in v5.20 and later, the only visible difference
+between locale and non-locale in regular expressions should be tainting
+(see <a href="#perlsec-NAME">perlsec NAME</a>).
 </p>
 <p>This modifier may be specified to be the default by <code>use 
locale</code>, but
 see <a href="#perlre-Which-character-set-modifier-is-in-effect_003f">Which 
character set modifier is in effect?</a>.
@@ -77083,7 +76503,7 @@
 for <code>\B</code>).
 </p>
 <p>Otherwise, <code>/a</code> behaves like the <code>/u</code> modifier, in 
that
-case-insensitive matching uses Unicode semantics; for example, &quot;k&quot; 
will
+case-insensitive matching uses Unicode rules; for example, &quot;k&quot; will
 match the Unicode <code>\N{KELVIN SIGN}</code> under <code>/i</code> matching, 
and code
 points in the Latin1 range, above ASCII will have Unicode rules when it
 comes to case-insensitive matching.
@@ -77102,7 +76522,7 @@
 </p>
 <p>This modifier may be specified to be the default by <code>use re '/a'</code>
 or <code>use re '/aa'</code>.  If you do so, you may actually have occasion to 
use
-the <code>/u</code> modifier explictly if there are a few regular expressions
+the <code>/u</code> modifier explicitly if there are a few regular expressions
 where you do want full Unicode rules (but even here, it&rsquo;s best if
 everything were under feature <code>&quot;unicode_strings&quot;</code>, along 
with the
 <code>use re '/aa'</code>).  Also see <a 
href="#perlre-Which-character-set-modifier-is-in-effect_003f">Which character 
set modifier is in
@@ -77212,7 +76632,8 @@
 <pre class="verbatim">    \        Quote the next metacharacter
     ^        Match the beginning of the line
     .        Match any character (except newline)
-    $        Match the end of the line (or before newline at the end)
+    $        Match the end of the string (or before newline at the end
+             of the string)
     |        Alternation
     ()       Grouping
     []       Bracketed Character class
@@ -77257,11 +76678,10 @@
 and a typo in a quantifier silently causes it to be treated as the
 literal characters.  For example,
 </p>
-<pre class="verbatim">    /o{4,3}/
+<pre class="verbatim">    /o{4,a}/
 </pre>
-<p>looks like a quantifier that matches 0 times, since 4 is greater than 3,
-but it really means to match the sequence of six characters
-<code>&quot;o&nbsp;{&nbsp;4&nbsp;,&nbsp;3&nbsp;}&quot;</code><!-- /@w -->.  It 
is planned to eventually require literal uses
+<p>compiles to match the sequence of six characters
+<code>&quot;o&nbsp;{&nbsp;4&nbsp;,&nbsp;a&nbsp;}&quot;</code><!-- /@w -->.  It 
is planned to eventually require literal uses
 of curly brackets to be escaped, say by preceding them with a backslash
 or enclosing them within square brackets, (<code>&quot;\{&quot;</code> or 
<code>&quot;[{]&quot;</code>).  This
 change will allow for future syntax extensions (like making the lower
@@ -77290,7 +76710,7 @@
     {n,}?     Match at least n times, not greedily
     {n,m}?    Match at least n but not more than m times, not greedily
 </pre>
-<p>By default, when a quantified subpattern does not allow the rest of the
+<p>Normally when a quantified subpattern does not allow the rest of the
 overall pattern to match, Perl will backtrack. However, this behaviour is
 sometimes undesirable. Thus Perl provides the &quot;possessive&quot; 
quantifier form
 as well.
@@ -77322,6 +76742,16 @@
 </p>
 <pre class="verbatim">   /&quot;(?&gt;(?:(?&gt;[^&quot;\\]+)|\\.)*)&quot;/
 </pre>
+<p>Note that the possessive quantifier modifier can not be be combined
+with the non-greedy modifier. This is because it would make no sense.
+Consider the follow equivalency table:
+</p>
+<pre class="verbatim">    Illegal         Legal
+    ------------    ------
+    X??+            X{0}
+    X+?+            X{1}
+    X{min,max}?+    X{min}
+</pre>
 <hr>
 <a name="perlre-Escape-sequences"></a>
 <div class="header">
@@ -77389,7 +76819,7 @@
                    part of a larger UTF-8 character.  Thus it breaks up
                    characters into their UTF-8 bytes, so you may end up
                    with malformed pieces of UTF-8.  Unsupported in
-                   lookbehind.
+                   lookbehind. (Deprecated.)
   \1        [5]  Backreference to a specific capture group or buffer.
                    '1' may actually be any positive integer.
   \g1       [5]  Backreference to a specific or previous group,
@@ -77508,6 +76938,16 @@
 <p>It is worth noting that <code>\G</code> improperly used can result in an 
infinite
 loop. Take care when using patterns that include <code>\G</code> in an 
alternation.
 </p>
+<p>Note also that <code>s///</code> will refuse to overwrite part of a 
substitution
+that has already been replaced; so for example this will stop after the
+first iteration, rather than iterating its way backwards through the
+string:
+</p>
+<pre class="verbatim">    $_ = &quot;123456789&quot;;
+    pos = 6;
+    s/.(?=.\G)/X/g;
+    print;      # prints 1234X6789, not XXXXX6789
+</pre>
 <hr>
 <a name="perlre-Capture-groups"></a>
 <div class="header">
@@ -77646,29 +77086,34 @@
 which makes it easier to write code that tests for a series of more
 specific cases and remembers the best match.
 </p>
-<p><strong>WARNING</strong>: Once Perl sees that you need one of 
<code>$&amp;</code>, <code>$`</code>, or
+<p><strong>WARNING</strong>: If your code is to run on Perl 5.16 or earlier,
+beware that once Perl sees that you need one of <code>$&amp;</code>, 
<code>$`</code>, or
 <code>$'</code> anywhere in the program, it has to provide them for every
-pattern match.  This may substantially slow your program.  Perl
-uses the same mechanism to produce <code>$1</code>, <code>$2</code>, etc, so 
you also pay a
-price for each pattern that contains capturing parentheses.  (To
-avoid this cost while retaining the grouping behaviour, use the
+pattern match.  This may substantially slow your program.
+</p>
+<p>Perl uses the same mechanism to produce <code>$1</code>, <code>$2</code>, 
etc, so you also
+pay a price for each pattern that contains capturing parentheses.
+(To avoid this cost while retaining the grouping behaviour, use the
 extended regular expression <code>(?: ... )</code> instead.)  But if you never
 use <code>$&amp;</code>, <code>$`</code> or <code>$'</code>, then patterns 
<em>without</em> capturing
 parentheses will not be penalized.  So avoid <code>$&amp;</code>, 
<code>$'</code>, and <code>$`</code>
 if you can, but if you can&rsquo;t (and some algorithms really appreciate
 them), once you&rsquo;ve used them once, use them at will, because you&rsquo;ve
-already paid the price.  As of 5.17.4, the presence of each of the three
-variables in a program is recorded separately, and depending on
-circumstances, perl may be able be more efficient knowing that only 
<code>$&amp;</code>
-rather than all three have been seen, for example.
+already paid the price.
+</p>
+<p>Perl 5.16 introduced a slightly more efficient mechanism that notes
+separately whether each of <code>$`</code>, <code>$&amp;</code>, and 
<code>$'</code> have been seen, and
+thus may only need to copy part of the string.  Perl 5.20 introduced a
+much more efficient copy-on-write mechanism which eliminates any slowdown.
 </p>
-<p>As a workaround for this problem, Perl 5.10.0 introduces 
<code>${^PREMATCH}</code>,
+<p>As another workaround for this problem, Perl 5.10.0 introduced 
<code>${^PREMATCH}</code>,
 <code>${^MATCH}</code> and <code>${^POSTMATCH}</code>, which are equivalent to 
<code>$`</code>, <code>$&amp;</code>
 and <code>$'</code>, <strong>except</strong> that they are only guaranteed to 
be defined after a
 successful match that was executed with the <code>/p</code> (preserve) 
modifier.
 The use of these variables incurs no global performance penalty, unlike
 their punctuation char equivalents, however at the trade-off that you
-have to tell perl when you want to use them.
+have to tell perl when you want to use them.  As of Perl 5.20, these three
+variables are equivalent to <code>$`</code>, <code>$&amp;</code> and 
<code>$'</code>, and <code>/p</code> is ignored.
 </p>
 <hr>
 <a name="perlre-Quoting-metacharacters"></a>
@@ -77735,10 +77180,13 @@
 <dl compact="compact">
 <dt><code>(?#text)</code></dt>
 <dd><a name="perlre-_0028_003f_0023text_0029"></a>
-<p>A comment.  The text is ignored.  If the <code>/x</code> modifier enables
-whitespace formatting, a simple <code>#</code> will suffice.  Note that Perl 
closes
+<p>A comment.  The text is ignored.
+Note that Perl closes
 the comment as soon as it sees a <code>)</code>, so there is no way to put a 
literal
-<code>)</code> in the comment.
+<code>)</code> in the comment.  The pattern&rsquo;s closing delimiter must be 
escaped by
+a backslash if it appears in the comment.
+</p>
+<p>See <a href="#perlre-_002fx">/x</a> for another way to have comments in 
patterns.
 </p>
 </dd>
 <dt><code>(?adlupimsx-imsx)</code></dt>
@@ -78024,14 +77472,11 @@
 </dd>
 <dt><code>(?{ code })</code></dt>
 <dd><a name="perlre-_0028_003f_007b-code-_007d_0029"></a>
-<p><strong>WARNING</strong>: This extended regular expression feature is 
considered
-experimental, and may be changed without notice. Code executed that
-has side effects may not perform identically from version to version
-due to the effect of future optimisations in the regex engine. The
-implementation of this feature was radically overhauled for the 5.18.0
-release, and its behaviour in earlier versions of perl was much buggier,
-especially in relation to parsing, lexical vars, scoping, recursion and
-reentrancy.
+<p><strong>WARNING</strong>: Using this feature safely requires that you 
understand its
+limitations.  Code executed that has side effects may not perform identically
+from version to version due to the effect of future optimisations in the regex
+engine.  For more information on this, see <a 
href="#perlre-Embedded-Code-Execution-Frequency">Embedded Code Execution
+Frequency</a>.
 </p>
 <p>This zero-width assertion executes any embedded Perl code.  It always
 succeeds, and its return value is set as <code>$^R</code>.
@@ -78148,10 +77593,11 @@
 </dd>
 <dt><code>(??{ code })</code></dt>
 <dd><a name="perlre-_0028_003f_003f_007b-code-_007d_0029"></a>
-<p><strong>WARNING</strong>: This extended regular expression feature is 
considered
-experimental, and may be changed without notice. Code executed that
-has side effects may not perform identically from version to version
-due to the effect of future optimisations in the regex engine.
+<p><strong>WARNING</strong>: Using this feature safely requires that you 
understand its
+limitations.  Code executed that has side effects may not perform
+identically from version to version due to the effect of future
+optimisations in the regex engine.  For more information on this, see
+<a href="#perlre-Embedded-Code-Execution-Frequency">Embedded Code Execution 
Frequency</a>.
 </p>
 <p>This is a &quot;postponed&quot; regular subexpression.  It behaves in 
<em>exactly</em> the
 same way as a <code>(?{ code })</code> code block as described above, except 
that
@@ -78201,12 +77647,19 @@
 </dd>
 <dt><code>(?<em>PARNO</em>)</code> <code>(?-<em>PARNO</em>)</code> 
<code>(?+<em>PARNO</em>)</code> <code>(?R)</code> <code>(?0)</code></dt>
 <dd><a 
name="perlre-_0028_003fPARNO_0029-_0028_003f_002dPARNO_0029-_0028_003f_002bPARNO_0029-_0028_003fR_0029-_0028_003f0_0029"></a>
+<p>Recursive subpattern. Treat the contents of a given capture buffer in the
+current pattern as an independent subpattern and attempt to match it at
+the current position in the string. Information about capture state from
+the caller for things like backreferences is available to the subpattern,
+but capture buffers set by the subpattern are not visible to the caller.
+</p>
 <p>Similar to <code>(??{ code })</code> except that it does not involve 
executing any
 code or potentially compiling a returned pattern string; instead it treats
 the part of the current pattern contained within a specified capture group
-as an independent pattern that must match at the current position.
-Capture groups contained by the pattern will have the value as determined
-by the outermost recursion.
+as an independent pattern that must match at the current position. Also
+different is the treatment of capture buffers, unlike <code>(??{ code })</code>
+recursive patterns have access to their callers match state, so one can
+use backreferences safely.
 </p>
 <p><em>PARNO</em> is a sequence of digits (not starting with 0) whose value 
reflects
 the paren-number of the capture group to recurse to. <code>(?R)</code> 
recurses to
@@ -78382,7 +77835,7 @@
 end of the pattern, and that you name any subpatterns defined within it.
 </p>
 <p>Also, it&rsquo;s worth noting that patterns defined this way probably will
-not be as efficient, as the optimiser is not very clever about
+not be as efficient, as the optimizer is not very clever about
 handling them.
 </p>
 <p>An example of how this might be used is as follows:
@@ -78537,10 +77990,6 @@
 <a name="Special-Backtracking-Control-Verbs"></a>
 <h4 class="subsection">58.2.5 Special Backtracking Control Verbs</h4>
 
-<p><strong>WARNING:</strong> These patterns are experimental and subject to 
change or
-removal in a future version of Perl. Their usage in production code should
-be noted to avoid problems during upgrades.
-</p>
 <p>These special patterns are generally of the form <code>(*VERB:ARG)</code>. 
Unless
 otherwise stated the ARG argument is optional; in some cases, it is
 forbidden.
@@ -78764,9 +78213,6 @@
 </dd>
 <dt><code>(*ACCEPT)</code></dt>
 <dd><a name="perlre-_0028_002aACCEPT_0029"></a>
-<p><strong>WARNING:</strong> This feature is highly experimental. It is not 
recommended
-for production code.
-</p>
 <p>This pattern matches nothing and causes the end of successful matching at
 the point at which the <code>(*ACCEPT)</code> pattern was encountered, 
regardless of
 whether there is actually more to match in the string. When inside of a
@@ -79350,7 +78796,7 @@
 <a name="perlre-Creating-Custom-RE-Engines"></a>
 <div class="header">
 <p>
-Next: <a href="#perlre-PCRE_002fPython-Support" accesskey="n" 
rel="next">perlre PCRE/Python Support</a>, Previous: <a 
href="#perlre-Combining-RE-Pieces" accesskey="p" rel="prev">perlre Combining RE 
Pieces</a>, Up: <a href="#perlre-DESCRIPTION" accesskey="u" rel="up">perlre 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
+Next: <a href="#perlre-Embedded-Code-Execution-Frequency" accesskey="n" 
rel="next">perlre Embedded Code Execution Frequency</a>, Previous: <a 
href="#perlre-Combining-RE-Pieces" accesskey="p" rel="prev">perlre Combining RE 
Pieces</a>, Up: <a href="#perlre-DESCRIPTION" accesskey="u" rel="up">perlre 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Creating-Custom-RE-Engines"></a>
 <h4 class="subsection">58.2.11 Creating Custom RE Engines</h4>
@@ -79408,13 +78854,55 @@
     /\Y|$re\Y|/;
 </pre>
 <hr>
+<a name="perlre-Embedded-Code-Execution-Frequency"></a>
+<div class="header">
+<p>
+Next: <a href="#perlre-PCRE_002fPython-Support" accesskey="n" 
rel="next">perlre PCRE/Python Support</a>, Previous: <a 
href="#perlre-Creating-Custom-RE-Engines" accesskey="p" rel="prev">perlre 
Creating Custom RE Engines</a>, Up: <a href="#perlre-DESCRIPTION" accesskey="u" 
rel="up">perlre DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
+</div>
+<a name="Embedded-Code-Execution-Frequency"></a>
+<h4 class="subsection">58.2.12 Embedded Code Execution Frequency</h4>
+
+<p>The exact rules for how often (??{}) and (?{}) are executed in a pattern
+are unspecified.  In the case of a successful match you can assume that
+they DWIM and will be executed in left to right order the appropriate
+number of times in the accepting path of the pattern as would any other
+meta-pattern.  How non-accepting pathways and match failures affect the
+number of times a pattern is executed is specifically unspecified and
+may vary depending on what optimizations can be applied to the pattern
+and is likely to change from version to version.
+</p>
+<p>For instance in
+</p>
+<pre class="verbatim">  &quot;aaabcdeeeee&quot;=~/a(?{print 
&quot;a&quot;})b(?{print &quot;b&quot;})cde/;
+</pre>
+<p>the exact number of times &quot;a&quot; or &quot;b&quot; are printed out is 
unspecified for
+failure, but you may assume they will be printed at least once during
+a successful match, additionally you may assume that if &quot;b&quot; is 
printed,
+it will be preceded by at least one &quot;a&quot;.
+</p>
+<p>In the case of branching constructs like the following:
+</p>
+<pre class="verbatim">  /a(b|(?{ print &quot;a&quot; }))c(?{ print 
&quot;c&quot; })/;
+</pre>
+<p>you can assume that the input &quot;ac&quot; will output &quot;ac&quot;, 
and that &quot;abc&quot;
+will output only &quot;c&quot;.
+</p>
+<p>When embedded code is quantified, successful matches will call the
+code once for each matched iteration of the quantifier.  For
+example:
+</p>
+<pre class="verbatim">  &quot;good&quot; =~ /g(?:o(?{print &quot;o&quot;}))*d/;
+</pre>
+<p>will output &quot;o&quot; twice.
+</p>
+<hr>
 <a name="perlre-PCRE_002fPython-Support"></a>
 <div class="header">
 <p>
-Previous: <a href="#perlre-Creating-Custom-RE-Engines" accesskey="p" 
rel="prev">perlre Creating Custom RE Engines</a>, Up: <a 
href="#perlre-DESCRIPTION" accesskey="u" rel="up">perlre DESCRIPTION</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
+Previous: <a href="#perlre-Embedded-Code-Execution-Frequency" accesskey="p" 
rel="prev">perlre Embedded Code Execution Frequency</a>, Up: <a 
href="#perlre-DESCRIPTION" accesskey="u" rel="up">perlre DESCRIPTION</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="PCRE_002fPython-Support"></a>
-<h4 class="subsection">58.2.12 PCRE/Python Support</h4>
+<h4 class="subsection">58.2.13 PCRE/Python Support</h4>
 
 <p>As of Perl 5.10.0, Perl supports several Python/PCRE-specific extensions
 to the regex syntax. While Perl programmers are encouraged to use the
@@ -79465,7 +78953,7 @@
 <p>
 Previous: <a href="#perlre-BUGS" accesskey="p" rel="prev">perlre BUGS</a>, Up: 
<a href="#perlre" accesskey="u" rel="up">perlre</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-30"></a>
+<a name="SEE-ALSO-29"></a>
 <h3 class="section">58.4 SEE ALSO</h3>
 
 <p><a href="#perlrequick-NAME">perlrequick NAME</a>.
@@ -79546,10 +79034,11 @@
                          REGEXP * const rx,
                          char* stringarg,
                          char* strend, char* strbeg,
-                         I32 minend, SV* screamer,
+                         SSize_t minend, SV* sv,
                          void* data, U32 flags);
         char*   (*intuit) (pTHX_
                            REGEXP * const rx, SV *sv,
+                           const char * const strbeg,
                            char *strpos, char *strend, U32 flags,
                            struct re_scream_pos_data_s *data);
         SV*     (*checkstr) (pTHX_ REGEXP * const rx);
@@ -79711,7 +79200,7 @@
 </dd>
 <dt>Character set</dt>
 <dd><a name="perlreapi-Character-set"></a>
-<p>The character set semantics are determined by an enum that is contained
+<p>The character set rules are determined by an enum that is contained
 in this field.  This is still experimental and subject to change, but
 the current interface returns the rules by use of the in-line function
 <code>get_regex_charset(const U32 flags)</code>.  The only currently documented
@@ -79799,7 +79288,7 @@
 <dt>RXf_NO_INPLACE_SUBST</dt>
 <dd><a name="perlreapi-RXf_005fNO_005fINPLACE_005fSUBST"></a>
 <p>Added in perl 5.18.0, this flag indicates that a regular expression might
-perform an operation that would interfere with inplace substituion. For
+perform an operation that would interfere with inplace substitution. For
 instance it might contain lookbehind, or assign to non-magical variables
 (such as $REGMARK and $REGERROR) during matching.  <code>s///</code> will skip
 certain optimisations when this is set.
@@ -79818,7 +79307,7 @@
 
 <pre class="verbatim">    I32 exec(pTHX_ REGEXP * const rx,
              char *stringarg, char* strend, char* strbeg,
-             I32 minend, SV* screamer,
+             SSize_t minend, SV* sv,
              void* data, U32 flags);
 </pre>
 <p>Execute a regexp. The arguments are
@@ -79829,9 +79318,9 @@
 <p>The regular expression to execute.
 </p>
 </dd>
-<dt>screamer</dt>
-<dd><a name="perlreapi-screamer"></a>
-<p>This strangely-named arg is the SV to be matched against.  Note that the
+<dt>sv</dt>
+<dd><a name="perlreapi-sv"></a>
+<p>This is the SV to be matched against.  Note that the
 actual char array to be matched against is supplied by the arguments
 described below; the SV is just used to determine UTF8ness, <code>pos()</code> 
etc.
 </p>
@@ -79844,7 +79333,7 @@
 <dt>strend</dt>
 <dd><a name="perlreapi-strend"></a>
 <p>Pointer to the character following the physical end of the string (i.e.
-the <code>\0</code>).
+the <code>\0</code>, if any).
 </p>
 </dd>
 <dt>stringarg</dt>
@@ -79881,9 +79370,14 @@
 <a name="intuit"></a>
 <h4 class="subsection">59.3.3 intuit</h4>
 
-<pre class="verbatim">    char* intuit(pTHX_ REGEXP * const rx,
-                  SV *sv, char *strpos, char *strend,
-                  const U32 flags, struct re_scream_pos_data_s *data);
+<pre class="verbatim">    char* intuit(pTHX_
+                REGEXP * const rx,
+                SV *sv,
+                const char * const strbeg,
+                char *strpos,
+                char *strend,
+                const U32 flags,
+                struct re_scream_pos_data_s *data);
 </pre>
 <p>Find the start position where a regex match should be attempted,
 or possibly if the regex engine should not be run because the
@@ -79891,6 +79385,20 @@
 depending on the values of the <code>extflags</code> member of the 
<code>regexp</code>
 structure.
 </p>
+<p>Arguments:
+</p>
+<pre class="verbatim">    rx:     the regex to match against
+    sv:     the SV being matched: only used for utf8 flag; the string
+            itself is accessed via the pointers below. Note that on
+            something like an overloaded SV, SvPOK(sv) may be false
+            and the string pointers may point to something unrelated to
+            the SV itself.
+    strbeg: real beginning of string
+    strpos: the point in the string at which to begin matching
+    strend: pointer to the byte following the last char of the string
+    flags   currently unused; set to 0
+    data:   currently unused; set to NULL
+</pre>
 <hr>
 <a name="perlreapi-checkstr"></a>
 <div class="header">
@@ -79931,7 +79439,7 @@
 <h4 class="subsection">59.3.6 Numbered capture callbacks</h4>
 
 <p>Called to get/set the value of <code>$`</code>, <code>$'</code>, 
<code>$&amp;</code> and their named
-equivalents, ${^PREMATCH}, ${^POSTMATCH} and $^{MATCH}, as well as the
+equivalents, ${^PREMATCH}, ${^POSTMATCH} and ${^MATCH}, as well as the
 numbered capture groups (<code>$1</code>, <code>$2</code>, ...).
 </p>
 <p>The <code>paren</code> parameter will be <code>1</code> for 
<code>$1</code>, <code>2</code> for <code>$2</code> and so
@@ -80035,7 +79543,7 @@
 behave in the same situation:
 </p>
 <pre class="verbatim">    package CaptureVar;
-    use base 'Tie::Scalar';
+    use parent 'Tie::Scalar';
 
     sub TIESCALAR { bless [] }
     sub FETCH { undef }
@@ -80678,7 +80186,7 @@
 <p>
 Next: <a href="#perlreapi-AUTHORS" accesskey="n" rel="next">perlreapi 
AUTHORS</a>, Previous: <a href="#perlreapi-The-REGEXP-structure" accesskey="p" 
rel="prev">perlreapi The REGEXP structure</a>, Up: <a href="#perlreapi" 
accesskey="u" rel="up">perlreapi</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="HISTORY-4"></a>
+<a name="HISTORY-3"></a>
 <h3 class="section">59.5 HISTORY</h3>
 
 <p>Originally part of <a href="#perlreguts-NAME">perlreguts NAME</a>.
@@ -80842,6 +80350,7 @@
  \B                Not a word/non-word boundary.  Not in [].
  \cX               Control-X.
  \C                Single octet, even under UTF-8.  Not in [].
+                   (Deprecated)
  \d                Character class for digits.
  \D                Character class for non-digits.
  \e                Escape character.
@@ -81575,11 +81084,14 @@
 <dl compact="compact">
 <dt>\C</dt>
 <dd><a name="perlrebackslash-_005cC"></a>
-<p><code>\C</code> always matches a single octet, even if the source string is 
encoded
+<p>(Deprecated.) <code>\C</code> always matches a single octet, even if the 
source
+string is encoded
 in UTF-8 format, and the character to be matched is a multi-octet character.
 This is very dangerous, because it violates
 the logical character abstraction and can cause UTF-8 sequences to become 
malformed.
 </p>
+<p>Use <code>utf8::encode()</code> instead.
+</p>
 <p>Mnemonic: o<em>C</em>tet.
 </p>
 </dd>
@@ -81644,6 +81156,9 @@
 UPWARDS ARROW BELOW&quot;, and would be displayed by Unicode-aware software as 
if it
 were a single character.
 </p>
+<p>The match is greedy and non-backtracking, so that the cluster is never
+broken up into smaller components.
+</p>
 <p>Mnemonic: e<em>X</em>tended Unicode character.
 </p>
 </dd>
@@ -81663,10 +81178,7 @@
 <a name="Examples-7"></a>
 <h4 class="subsubsection">60.2.8.1 Examples</h4>
 
-<pre class="verbatim"> &quot;\x{256}&quot; =~ /^\C\C$/;    # Match as chr 
(0x256) takes 
-                           # 2 octets in UTF-8.
-
- $str =~ s/foo\Kbar/baz/g; # Change any 'bar' following a 'foo' to 'baz'
+<pre class="verbatim"> $str =~ s/foo\Kbar/baz/g; # Change any 'bar' following 
a 'foo' to 'baz'
  $str =~ s/(.)\K\g1//g;    # Delete duplicated characters.
 
  &quot;\n&quot;   =~ /^\R$/;         # Match, \n   is a generic newline.
@@ -81751,7 +81263,7 @@
 character, except for the newline. That default can be changed to
 add matching the newline by using the <em>single line</em> modifier: either
 for the entire regular expression with the <code>/s</code> modifier, or
-locally with <code>(?s)</code>.  (The <code>\N</code> backslash sequence, 
described
+locally with <code>(?s)</code>.  (The <code><a 
href="#perlrecharclass-_005cN">\N</a></code> backslash sequence, described
 below, matches any character except newline without regard to the
 <em>single line</em> modifier.)
 </p>
@@ -81848,10 +81360,12 @@
 Otherwise, it
 matches anything that is matched by <code>\p{Digit}</code>, which includes 
[0-9].
 (An unlikely possible exception is that under locale matching rules, the
-current locale might not have [0-9] matched by <code>\d</code>, and/or might 
match
-other characters whose code point is less than 256.  Such a locale
-definition would be in violation of the C language standard, but Perl
-doesn&rsquo;t currently assume anything in regard to this.)
+current locale might not have <code>[0-9]</code> matched by <code>\d</code>, 
and/or might match
+other characters whose code point is less than 256.  The only such locale
+definitions that are legal would be to match <code>[0-9]</code> plus another 
set of
+10 consecutive digit characters;  anything else would be in violation of
+the C language standard, but Perl doesn&rsquo;t currently assume anything in
+regard to this.)
 </p>
 <p>What this means is that unless the <code>/a</code> modifier is in effect 
<code>\d</code> not
 only matches the digits &rsquo;0&rsquo; - &rsquo;9&rsquo;, but also Arabic, 
Devanagari, and
@@ -82013,7 +81527,7 @@
 </dd>
 <dt>otherwise ...</dt>
 <dd><a name="perlrecharclass-otherwise-_002e_002e_002e-3"></a>
-<p><code>\s</code> matches [\t\n\f\r\cK ] and, starting, experimentally in Perl
+<p><code>\s</code> matches [\t\n\f\r ] and, starting, experimentally in Perl
 v5.18, the vertical tab, <code>\cK</code>.
 (See note <code>[1]</code> below for a discussion of this.)
 Note that this list doesn&rsquo;t include the non-breaking space.
@@ -82062,7 +81576,7 @@
 vertical tab (<code>&quot;\cK&quot;</code>) was not matched by <code>\s</code>.
 </p>
 <p>The following table is a complete listing of characters matched by
-<code>\s</code>, <code>\h</code> and <code>\v</code> as of Unicode 6.0.
+<code>\s</code>, <code>\h</code> and <code>\v</code> as of Unicode 6.3.
 </p>
 <p>The first column gives the Unicode code point of the character (in hex 
format),
 the second column gives the (Unicode) name. The third column indicates
@@ -82078,7 +81592,6 @@
  0x0085             NEXT LINE (NEL)    vs  [2]
  0x00a0              NO-BREAK SPACE   h s  [2]
  0x1680            OGHAM SPACE MARK   h s
- 0x180e   MONGOLIAN VOWEL SEPARATOR   h s
  0x2000                     EN QUAD   h s
  0x2001                     EM QUAD   h s
  0x2002                    EN SPACE   h s
@@ -82101,7 +81614,7 @@
 <dd><a name="perlrecharclass-_005b1_005d"></a>
 <p>Prior to Perl v5.18, <code>\s</code> did not match the vertical tab.  The 
change
 in v5.18 is considered an experiment, which means it could be backed out
-in v5.20 or v5.22 if experience indicates that it breaks too much
+in v5.22 if experience indicates that it breaks too much
 existing code.  If this change adversely affects you, send email to
 <code>address@hidden</code>; if it affects you positively, email
 <code>address@hidden</code>.  In the meantime, <code>[^\S\cK]</code> 
(obscurely)
@@ -82174,15 +81687,19 @@
 <a href="#perlunicode-User_002dDefined-Character-Properties">perlunicode 
User-Defined Character Properties</a>.
 </p>
 <p>Unicode properties are defined (surprise!) only on Unicode code points.
-A warning is raised and all matches fail on non-Unicode code points
-(those above the legal Unicode maximum of 0x10FFFF).  This can be
-somewhat surprising,
-</p>
-<pre class="verbatim"> chr(0x110000) =~ \p{ASCII_Hex_Digit=True}      # Fails.
- chr(0x110000) =~ \p{ASCII_Hex_Digit=False}     # Also fails!
+Starting in v5.20, when matching against <code>\p</code> and <code>\P</code>, 
Perl treats
+non-Unicode code points (those above the legal Unicode maximum of
+0x10FFFF) as if they were typical unassigned Unicode code points.
+</p>
+<p>Prior to v5.20, Perl raised a warning and made all matches fail on
+non-Unicode code points.  This could be somewhat surprising:
+</p>
+<pre class="verbatim"> chr(0x110000) =~ \p{ASCII_Hex_Digit=True}     # Fails 
on Perls &lt; v5.20.
+ chr(0x110000) =~ \p{ASCII_Hex_Digit=False}    # Also fails on Perls
+                                               # &lt; v5.20
 </pre>
-<p>Even though these two matches might be thought of as complements, they
-are so only on Unicode code points.
+<p>Even though these two matches might be thought of as complements, until
+v5.20 they were so only on Unicode code points.
 </p>
 <hr>
 <a name="perlrecharclass-Examples"></a>
@@ -82493,7 +82010,7 @@
 <a name="POSIX-Character-Classes"></a>
 <h4 class="subsubsection">61.2.3.5 POSIX Character Classes</h4>
 
-<p>POSIX character classes have the form <code>[:class:]</code>, where 
<em>class</em> is
+<p>POSIX character classes have the form <code>[:class:]</code>, where 
<em>class</em> is the
 name, and the <code>[:</code> and <code>:]</code> delimiters. POSIX character 
classes only appear
 <em>inside</em> bracketed character classes, and are a convenient and 
descriptive
 way of listing a group of characters.
@@ -82508,7 +82025,8 @@
 </pre>
 <p>The latter pattern would be a character class consisting of a colon,
 and the letters <code>a</code>, <code>l</code>, <code>p</code> and 
<code>h</code>.
-POSIX character classes can be part of a larger bracketed character class.
+</p>
+<p>POSIX character classes can be part of a larger bracketed character class.
 For example,
 </p>
 <pre class="verbatim"> [01[:alpha:]%]
@@ -82630,8 +82148,7 @@
 <p>There are various other synonyms that can be used besides the names
 listed in the table.  For example, <code>\p{PosixAlpha}</code> can be written 
as
 <code>\p{Alpha}</code>.  All are listed in
-<a 
href="perluniprops.html#Properties-accessible-through-_005cp_007b_007d-and-_005cP_007b_007d">(perluniprops)Properties
 accessible through \p{} and \P{}</a>,
-plus all characters matched by each ASCII-range property.
+<a 
href="perluniprops.html#Properties-accessible-through-_005cp_007b_007d-and-_005cP_007b_007d">(perluniprops)Properties
 accessible through \p{} and \P{}</a>.
 </p>
 <p>Both the <code>\p</code> counterparts always assume Unicode rules are in 
effect.
 On ASCII platforms, this means they assume that the code points from 128
@@ -82660,11 +82177,30 @@
 <dl compact="compact">
 <dt>if locale rules are in effect ...</dt>
 <dd><a 
name="perlrecharclass-if-locale-rules-are-in-effect-_002e_002e_002e-2"></a>
-<p>The POSIX class matches according to the locale, except that
-<code>word</code> uses the platform&rsquo;s native underscore character, no 
matter what
+<p>The POSIX class matches according to the locale, except:
+</p>
+<dl compact="compact">
+<dt><code>word</code></dt>
+<dd><a name="perlrecharclass-word"></a>
+<p>also includes the platform&rsquo;s native underscore character, no matter 
what
 the locale is.
 </p>
 </dd>
+<dt><code>ascii</code></dt>
+<dd><a name="perlrecharclass-ascii"></a>
+<p>on platforms that don&rsquo;t have the POSIX <code>ascii</code> extension, 
this matches
+just the platform&rsquo;s native ASCII-range characters.
+</p>
+</dd>
+<dt><code>blank</code></dt>
+<dd><a name="perlrecharclass-blank"></a>
+<p>on platforms that don&rsquo;t have the POSIX <code>blank</code> extension, 
this matches
+just the platform&rsquo;s native tab and space characters.
+</p>
+</dd>
+</dl>
+
+</dd>
 <dt>if Unicode rules are in effect ...</dt>
 <dd><a 
name="perlrecharclass-if-Unicode-rules-are-in-effect-_002e_002e_002e-2"></a>
 <p>The POSIX class matches the same as the Full-range counterpart.
@@ -82784,7 +82320,7 @@
 <p>This matches digits that are in either the Thai or Laotian scripts.
 </p>
 <p>Notice the white space in these examples.  This construct always has
-the <code>/x</code> modifier turned on.
+the <code>/x</code> modifier turned on within it.
 </p>
 <p>The available binary operators are:
 </p>
@@ -82827,8 +82363,8 @@
 </p>
 <pre class="verbatim"> /(?[[ a b ]])/
 </pre>
-<p>(You can, of course, specify single characters by using, <code>\x{ }</code>,
-<code>\N{ }</code>, etc.)
+<p>(You can, of course, specify single characters by using, 
<code>\x{...}</code>,
+<code>\N{...}</code>, etc.)
 </p>
 <p>This last example shows the use of this construct to specify an ordinary
 bracketed character class without additional set operations.  Note the
@@ -82856,6 +82392,11 @@
 zero to make two).  These restrictions are to lower the incidence of
 typos causing the class to not match what you thought it would.
 </p>
+<p>If a regular bracketed character class contains a <code>\p{}</code> or 
<code>\P{}</code> and
+is matched against a non-Unicode code point, a warning may be
+raised, as the result is not Unicode-defined.  No such warning will come
+when using this extended form.
+</p>
 <p>The final difference between regular bracketed character classes and
 these, is that it is not possible to get these to match a
 multi-character fold.  Thus,
@@ -82876,7 +82417,7 @@
 <p><code>(?[ ])</code> is a regex-compile-time construct.  Any attempt to use
 something which isn&rsquo;t knowable at the time the containing regular
 expression is compiled is a fatal error.  In practice, this means
-just three limitiations:
+just three limitations:
 </p>
 <ol>
 <li> This construct cannot be used within the scope of
@@ -82910,7 +82451,7 @@
 that form the initial <code>(?[</code>.  Nor may there be space between the
 closing <code>])</code> characters.
 </p>
-<p>Just as in all regular expressions, the pattern can can be built up by
+<p>Just as in all regular expressions, the pattern can be built up by
 including variables that are interpolated at regex compilation time.
 Care must be taken to ensure that you are getting what you expect.  For
 example:
@@ -82974,7 +82515,9 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a href="#perlref-WARNING" 
accesskey="4">perlref WARNING</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perlref-SEE-ALSO" 
accesskey="5">perlref SEE ALSO</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlref-Postfix-Dereference-Syntax" accesskey="5">perlref Postfix 
Dereference Syntax</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#perlref-SEE-ALSO" 
accesskey="6">perlref SEE ALSO</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
 </table>
 
@@ -83157,7 +82700,8 @@
 </pre>
 <p>On the other hand, if you want the other meaning, you can do this:
 </p>
-<pre class="verbatim">    sub showem {        { @_ } }   # ambiguous 
(currently ok, but may change)
+<pre class="verbatim">    sub showem {        { @_ } }   # ambiguous 
(currently ok,
+                                   # but may change)
     sub showem {       {; @_ } }   # ok
     sub showem { { return @_ } }   # ok
 </pre>
@@ -83746,7 +83290,7 @@
 <a name="perlref-WARNING"></a>
 <div class="header">
 <p>
-Next: <a href="#perlref-SEE-ALSO" accesskey="n" rel="next">perlref SEE 
ALSO</a>, Previous: <a href="#perlref-DESCRIPTION" accesskey="p" 
rel="prev">perlref DESCRIPTION</a>, Up: <a href="#perlref" accesskey="u" 
rel="up">perlref</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
+Next: <a href="#perlref-Postfix-Dereference-Syntax" accesskey="n" 
rel="next">perlref Postfix Dereference Syntax</a>, Previous: <a 
href="#perlref-DESCRIPTION" accesskey="p" rel="prev">perlref DESCRIPTION</a>, 
Up: <a href="#perlref" accesskey="u" rel="up">perlref</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="WARNING"></a>
 <h3 class="section">62.4 WARNING</h3>
@@ -83769,13 +83313,90 @@
 <p>The standard Tie::RefHash module provides a convenient workaround to this.
 </p>
 <hr>
+<a name="perlref-Postfix-Dereference-Syntax"></a>
+<div class="header">
+<p>
+Next: <a href="#perlref-SEE-ALSO" accesskey="n" rel="next">perlref SEE 
ALSO</a>, Previous: <a href="#perlref-WARNING" accesskey="p" rel="prev">perlref 
WARNING</a>, Up: <a href="#perlref" accesskey="u" rel="up">perlref</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
+</div>
+<a name="Postfix-Dereference-Syntax"></a>
+<h3 class="section">62.5 Postfix Dereference Syntax</h3>
+
+<p>Beginning in v5.20.0, a postfix syntax for using references is
+available.  It behaves as described in <a 
href="#perlref-Using-References">Using References</a>, but instead
+of a prefixed sigil, a postfixed sigil-and-star is used.
+</p>
+<p>For example:
+</p>
+<pre class="verbatim">    $r = address@hidden;
+    @b = $r-&gt;@*; # equivalent to @$r or @{ $r }
+
+    $r = [ 1, [ 2, 3 ], 4 ];
+    $r-&gt;[1]-&gt;@*;  # equivalent to @{ $r-&gt;[1] }
+</pre>
+<p>This syntax must be enabled with <code>use feature 'postderef'</code>.  It 
is
+experimental, and will warn by default unless <code>no warnings
+'experimental::postderef'</code> is in effect.
+</p>
+<p>Postfix dereference should work in all circumstances where block
+(circumfix) dereference worked, and should be entirely equivalent.  This
+syntax allows dereferencing to be written and read entirely
+left-to-right.  The following equivalencies are defined:
+</p>
+<pre class="verbatim">  $sref-&gt;$*;  # same as  ${ $sref }
+  $aref-&gt;@*;  # same as  @{ $aref }
+  $aref-&gt;$#*; # same as $#{ $aref }
+  $href-&gt;%*;  # same as  %{ $href }
+  $cref-&gt;&amp;*;  # same as  &amp;{ $cref }
+  $gref-&gt;**;  # same as  *{ $gref }
+</pre>
+<p>Note especially that <code>$cref-&gt;&amp;*</code> is <em>not</em> 
equivalent to <code>$cref-&gt;()</code>, and can serve different purposes.
+</p>
+<p>Glob elements can be extracted through the postfix dereferencing feature:
+</p>
+<pre class="verbatim">  $gref-&gt;*{SCALAR}; # same as *{ $gref }{SCALAR}
+</pre>
+<p>Postfix array and scalar dereferencing <em>can</em> be used in interpolating
+strings (double quotes or the <code>qq</code> operator), but only if the
+additional <code>postderef_qq</code> feature is enabled.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlref-Postfix-Reference-Slicing" accesskey="1">perlref Postfix 
Reference Slicing</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="perlref-Postfix-Reference-Slicing"></a>
+<div class="header">
+<p>
+Up: <a href="#perlref-Postfix-Dereference-Syntax" accesskey="u" 
rel="up">perlref Postfix Dereference Syntax</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+</div>
+<a name="Postfix-Reference-Slicing"></a>
+<h4 class="subsection">62.5.1 Postfix Reference Slicing</h4>
+
+<p>Value slices of arrays and hashes may also be taken with postfix
+dereferencing notation, with the following equivalencies:
+</p>
+<pre class="verbatim">  $aref-&gt;@[ ... ];  # same as @$aref[ ... ]
+  $href-&gt;@{ ... };  # same as @$href{ ... }
+</pre>
+<p>Postfix key/value pair slicing, added in 5.20.0 and documented in
+<a href="#perldata-Key_002fValue-Hash-Slices">the Key/Value Hash Slices 
section of perldata</a>, also behaves as expected:
+</p>
+<pre class="verbatim">  $aref-&gt;%[ ... ];  # same as %$aref[ ... ]
+  $href-&gt;%{ ... };  # same as %$href{ ... }
+</pre>
+<p>As with postfix array, postfix value slice dereferencing <em>can</em> be 
used
+in interpolating strings (double quotes or the <code>qq</code> operator), but 
only
+if the additional <code>postderef_qq</code> <a 
href="feature.html#Top">(feature)</a> is enabled.
+</p>
+<hr>
 <a name="perlref-SEE-ALSO"></a>
 <div class="header">
 <p>
-Previous: <a href="#perlref-WARNING" accesskey="p" rel="prev">perlref 
WARNING</a>, Up: <a href="#perlref" accesskey="u" rel="up">perlref</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
+Previous: <a href="#perlref-Postfix-Dereference-Syntax" accesskey="p" 
rel="prev">perlref Postfix Dereference Syntax</a>, Up: <a href="#perlref" 
accesskey="u" rel="up">perlref</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-31"></a>
-<h3 class="section">62.5 SEE ALSO</h3>
+<a name="SEE-ALSO-30"></a>
+<h3 class="section">62.6 SEE ALSO</h3>
 
 <p>Besides the obvious documents, source code can be instructive.
 Some pathological examples of the use of references can be found
@@ -84465,7 +84086,7 @@
 <a name="perlreguts"></a>
 <div class="header">
 <p>
-Next: <a href="#perlrequick" accesskey="n" rel="next">perlrequick</a>, 
Previous: <a href="#perlreftut" accesskey="p" rel="prev">perlreftut</a>, Up: <a 
href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+Next: <a href="#perlrepository" accesskey="n" rel="next">perlrepository</a>, 
Previous: <a href="#perlreftut" accesskey="p" rel="prev">perlreftut</a>, Up: <a 
href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="perlreguts-1"></a>
 <h2 class="chapter">64 perlreguts</h2>
@@ -84737,24 +84358,30 @@
 </dd>
 <dt><code>regnode_charclass</code></dt>
 <dd><a name="perlreguts-regnode_005fcharclass"></a>
-<p>Character classes are represented by <code>regnode_charclass</code> 
structures,
-which have a four-byte argument and then a 32-byte (256-bit) bitmap
-indicating which characters are included in the class.
+<p>Bracketed character classes are represented by 
<code>regnode_charclass</code>
+structures, which have a four-byte argument and then a 32-byte (256-bit)
+bitmap indicating which characters in the Latin1 range are included in
+the class.
 </p>
 <pre class="verbatim">    regnode_charclass        U32 arg1;
                              char bitmap[ANYOF_BITMAP_SIZE];
 </pre>
+<p>Various flags whose names begin with <code>ANYOF_</code> are used for 
special
+situations.  Above Latin1 matches and things not known until run-time
+are stored in <a href="#perlreguts-Perl_0027s-pprivate-structure">Perl&rsquo;s 
pprivate structure</a>.
+</p>
 </dd>
-<dt><code>regnode_charclass_class</code></dt>
-<dd><a name="perlreguts-regnode_005fcharclass_005fclass"></a>
+<dt><code>regnode_charclass_posixl</code></dt>
+<dd><a name="perlreguts-regnode_005fcharclass_005fposixl"></a>
 <p>There is also a larger form of a char class structure used to represent
-POSIX char classes called <code>regnode_charclass_class</code> which has an
-additional 4-byte (32-bit) bitmap indicating which POSIX char classes
+POSIX char classes under <code>/l</code> matching,
+called <code>regnode_charclass_posixl</code> which has an
+additional 32-bit bitmap indicating which POSIX char classes
 have been included.
 </p>
-<pre class="verbatim">   regnode_charclass_class  U32 arg1;
+<pre class="verbatim">   regnode_charclass_posixl U32 arg1;
                             char bitmap[ANYOF_BITMAP_SIZE];
-                            char classflags[ANYOF_CLASSBITMAP_SIZE];
+                            U32 classflags;
 </pre>
 </dd>
 </dl>
@@ -85034,7 +84661,7 @@
 added to the program. However, one complication is that reg() returns NULL
 for parsing <code>(?:)</code> syntax for embedded modifiers, setting the flag
 <code>TRYAGAIN</code>. The <code>TRYAGAIN</code> propagates upwards until it 
is captured, in
-some cases by by <code>regatom()</code>, but otherwise unconditionally by
+some cases by <code>regatom()</code>, but otherwise unconditionally by
 <code>regbranch()</code>. Hence it will never be returned by 
<code>regbranch()</code> to
 <code>reg()</code>. This flag permits patterns such as <code>(?i)+</code> to 
be detected as
 errors (<em>Quantifier follows nothing in regex; marked by &lt;&ndash; HERE in 
m/(?i)+
@@ -85324,7 +84951,7 @@
 and the second being running the regop interpreter.
 </p>
 <p>If we can tell that there is no valid start point then we don&rsquo;t 
bother running
-interpreter at all. Likewise, if we know from the analysis phase that we
+the interpreter at all. Likewise, if we know from the analysis phase that we
 cannot detect a short-cut to the start position, we go straight to the
 interpreter.
 </p>
@@ -85461,35 +85088,6 @@
 UTF-8 properly, both at compile time and at execution time, including
 when the string and pattern are mismatched.
 </p>
-<p>The following comment in <samp>regcomp.h</samp> gives an example of exactly 
how
-tricky this can be:
-</p>
-<pre class="verbatim">    Two problematic code points in Unicode casefolding 
of EXACT nodes:
-
-    U+0390 - GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-    U+03B0 - GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-
-    which casefold to
-
-    Unicode                      UTF-8
-
-    U+03B9 U+0308 U+0301         0xCE 0xB9 0xCC 0x88 0xCC 0x81
-    U+03C5 U+0308 U+0301         0xCF 0x85 0xCC 0x88 0xCC 0x81
-
-    This means that in case-insensitive matching (or &quot;loose 
matching&quot;,
-    as Unicode calls it), an EXACTF of length six (the UTF-8 encoded
-    byte length of the above casefolded versions) can match a target
-    string of length two (the byte length of UTF-8 encoded U+0390 or
-    U+03B0). This would rather mess up the minimum length computation.
-
-    What we'll do is to look for the tail four bytes, and then peek
-    at the preceding two bytes to see whether we need to decrease
-    the minimum length by four (six minus two).
-
-    Thanks to the design of UTF-8, there cannot be false matches:
-    A sequence of valid UTF-8 bytes cannot be a subsequence of
-    another valid sequence of UTF-8 bytes.
-</pre>
 <hr>
 <a name="perlreguts-Base-Structures"></a>
 <div class="header">
@@ -85500,7 +85098,7 @@
 <h4 class="subsection">64.5.2 Base Structures</h4>
 
 <p>The <code>regexp</code> structure described in <a 
href="#perlreapi-NAME">perlreapi NAME</a> is common to all
-regex engines. Two of its fields that are intended for the private use
+regex engines. Two of its fields are intended for the private use
 of the regex engine that compiled the pattern. These are the
 <code>intflags</code> and pprivate members. The <code>pprivate</code> is a 
void pointer to
 an arbitrary structure whose use and management is the responsibility
@@ -85516,7 +85114,7 @@
 the engine currently being. used and some of its fields read by perl to
 implement things such as the stringification of <code>qr//</code>.
 </p>
-<p>The other structure is pointed to be the <code>regexp</code> struct&rsquo;s
+<p>The other structure is pointed to by the <code>regexp</code> struct&rsquo;s
 <code>pprivate</code> and is in addition to <code>intflags</code> in the same 
struct
 considered to be the property of the regex engine which compiled the
 regular expression;
@@ -85595,7 +85193,7 @@
 </dd>
 <dt><code>data</code></dt>
 <dd><a name="perlreguts-data"></a>
-<p>This field points at a reg_data structure, which is defined as follows
+<p>This field points at a <code>reg_data</code> structure, which is defined as 
follows
 </p>
 <pre class="verbatim">    struct reg_data {
         U32 count;
@@ -85625,7 +85223,7 @@
 <p>
 Next: <a href="#perlreguts-AUTHOR" accesskey="n" rel="next">perlreguts 
AUTHOR</a>, Previous: <a href="#perlreguts-MISCELLANEOUS" accesskey="p" 
rel="prev">perlreguts MISCELLANEOUS</a>, Up: <a href="#perlreguts" 
accesskey="u" rel="up">perlreguts</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-32"></a>
+<a name="SEE-ALSO-31"></a>
 <h3 class="section">64.6 SEE ALSO</h3>
 
 <p><a href="#perlreapi-NAME">perlreapi NAME</a>
@@ -85640,7 +85238,7 @@
 <p>
 Next: <a href="#perlreguts-LICENCE" accesskey="n" rel="next">perlreguts 
LICENCE</a>, Previous: <a href="#perlreguts-SEE-ALSO" accesskey="p" 
rel="prev">perlreguts SEE ALSO</a>, Up: <a href="#perlreguts" accesskey="u" 
rel="up">perlreguts</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="AUTHOR-26"></a>
+<a name="AUTHOR-25"></a>
 <h3 class="section">64.7 AUTHOR</h3>
 
 <p>by Yves Orton, 2006.
@@ -85674,13 +85272,60 @@
 <p>[2] <a href="http://www.unicode.org";>http://www.unicode.org</a>
 </p>
 <hr>
+<a name="perlrepository"></a>
+<div class="header">
+<p>
+Next: <a href="#perlrequick" accesskey="n" rel="next">perlrequick</a>, 
Previous: <a href="#perlreguts" accesskey="p" rel="prev">perlreguts</a>, Up: <a 
href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+</div>
+<a name="perlrepository-1"></a>
+<h2 class="chapter">65 perlrepository</h2>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="#perlrepository-NAME" 
accesskey="1">perlrepository NAME</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#perlrepository-DESCRIPTION" 
accesskey="2">perlrepository DESCRIPTION</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="perlrepository-NAME"></a>
+<div class="header">
+<p>
+Next: <a href="#perlrepository-DESCRIPTION" accesskey="n" 
rel="next">perlrepository DESCRIPTION</a>, Up: <a href="#perlrepository" 
accesskey="u" rel="up">perlrepository</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+</div>
+<a name="NAME-64"></a>
+<h3 class="section">65.1 NAME</h3>
+
+<p>perlrepository - Links to current information on the Perl source repository
+</p>
+<hr>
+<a name="perlrepository-DESCRIPTION"></a>
+<div class="header">
+<p>
+Previous: <a href="#perlrepository-NAME" accesskey="p" 
rel="prev">perlrepository NAME</a>, Up: <a href="#perlrepository" accesskey="u" 
rel="up">perlrepository</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
+</div>
+<a name="DESCRIPTION-63"></a>
+<h3 class="section">65.2 DESCRIPTION</h3>
+
+<p>Perl&rsquo;s source code is stored in a Git repository.
+</p>
+<p>See <a href="#perlhack-NAME">perlhack NAME</a> for an explanation of Perl 
development, including the
+<a href="#perlhack-SUPER-QUICK-PATCH-GUIDE">Super Quick Patch Guide</a> for 
making and
+submitting a small patch.
+</p>
+<p>See <a href="#perlgit-NAME">perlgit NAME</a> for detailed information about 
Perl&rsquo;s Git repository.
+</p>
+<p>(The above documents supersede the information that was formerly here in
+perlrepository.)
+</p>
+<hr>
 <a name="perlrequick"></a>
 <div class="header">
 <p>
-Next: <a href="#perlreref" accesskey="n" rel="next">perlreref</a>, Previous: 
<a href="#perlreguts" accesskey="p" rel="prev">perlreguts</a>, Up: <a 
href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+Next: <a href="#perlreref" accesskey="n" rel="next">perlreref</a>, Previous: 
<a href="#perlrepository" accesskey="p" rel="prev">perlrepository</a>, Up: <a 
href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="perlrequick-1"></a>
-<h2 class="chapter">65 perlrequick</h2>
+<h2 class="chapter">66 perlrequick</h2>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perlrequick-NAME" 
accesskey="1">perlrequick NAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -85703,8 +85348,8 @@
 <p>
 Next: <a href="#perlrequick-DESCRIPTION" accesskey="n" rel="next">perlrequick 
DESCRIPTION</a>, Up: <a href="#perlrequick" accesskey="u" 
rel="up">perlrequick</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="NAME-64"></a>
-<h3 class="section">65.1 NAME</h3>
+<a name="NAME-65"></a>
+<h3 class="section">66.1 NAME</h3>
 
 <p>perlrequick - Perl regular expressions quick start
 </p>
@@ -85714,8 +85359,8 @@
 <p>
 Next: <a href="#perlrequick-The-Guide" accesskey="n" rel="next">perlrequick 
The Guide</a>, Previous: <a href="#perlrequick-NAME" accesskey="p" 
rel="prev">perlrequick NAME</a>, Up: <a href="#perlrequick" accesskey="u" 
rel="up">perlrequick</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="DESCRIPTION-63"></a>
-<h3 class="section">65.2 DESCRIPTION</h3>
+<a name="DESCRIPTION-64"></a>
+<h3 class="section">66.2 DESCRIPTION</h3>
 
 <p>This page covers the very basics of understanding, creating and
 using regular expressions (&rsquo;regexes&rsquo;) in Perl.
@@ -85727,7 +85372,7 @@
 Next: <a href="#perlrequick-BUGS" accesskey="n" rel="next">perlrequick 
BUGS</a>, Previous: <a href="#perlrequick-DESCRIPTION" accesskey="p" 
rel="prev">perlrequick DESCRIPTION</a>, Up: <a href="#perlrequick" 
accesskey="u" rel="up">perlrequick</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="The-Guide"></a>
-<h3 class="section">65.3 The Guide</h3>
+<h3 class="section">66.3 The Guide</h3>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a 
href="#perlrequick-Simple-word-matching" accesskey="1">perlrequick Simple word 
matching</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
@@ -85757,7 +85402,7 @@
 Next: <a href="#perlrequick-Using-character-classes" accesskey="n" 
rel="next">perlrequick Using character classes</a>, Up: <a 
href="#perlrequick-The-Guide" accesskey="u" rel="up">perlrequick The Guide</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Simple-word-matching"></a>
-<h4 class="subsection">65.3.1 Simple word matching</h4>
+<h4 class="subsection">66.3.1 Simple word matching</h4>
 
 <p>The simplest regex is simply a word, or more generally, a string of
 characters.  A regex consisting of a word matches any string that
@@ -85833,7 +85478,8 @@
 e.g., <code>\x1B</code>:
 </p>
 <pre class="verbatim">    &quot;1000\t2000&quot; =~ m(0\t2)      # matches
-    &quot;cat&quot;      =~ /\143\x61\x74/ # matches in ASCII, but a weird way 
to spell cat
+    &quot;cat&quot; =~ /\143\x61\x74/  # matches in ASCII, but 
+                             # a weird way to spell cat
 </pre>
 <p>Regexes are treated mostly as double-quoted strings, so variable
 substitution works:
@@ -85862,7 +85508,7 @@
 Next: <a href="#perlrequick-Matching-this-or-that" accesskey="n" 
rel="next">perlrequick Matching this or that</a>, Previous: <a 
href="#perlrequick-Simple-word-matching" accesskey="p" rel="prev">perlrequick 
Simple word matching</a>, Up: <a href="#perlrequick-The-Guide" accesskey="u" 
rel="up">perlrequick The Guide</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Using-character-classes"></a>
-<h4 class="subsection">65.3.2 Using character classes</h4>
+<h4 class="subsection">66.3.2 Using character classes</h4>
 
 <p>A <strong>character class</strong> allows a set of possible characters, 
rather than
 just a single character, to match at a particular point in a regex.
@@ -85978,7 +85624,7 @@
 Next: <a href="#perlrequick-Grouping-things-and-hierarchical-matching" 
accesskey="n" rel="next">perlrequick Grouping things and hierarchical 
matching</a>, Previous: <a href="#perlrequick-Using-character-classes" 
accesskey="p" rel="prev">perlrequick Using character classes</a>, Up: <a 
href="#perlrequick-The-Guide" accesskey="u" rel="up">perlrequick The Guide</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Matching-this-or-that"></a>
-<h4 class="subsection">65.3.3 Matching this or that</h4>
+<h4 class="subsection">66.3.3 Matching this or that</h4>
 
 <p>We can match different character strings with the 
<strong>alternation</strong>
 metacharacter <code>'|'</code>.  To match <code>dog</code> or 
<code>cat</code>, we form the regex
@@ -86009,7 +85655,7 @@
 Next: <a href="#perlrequick-Extracting-matches" accesskey="n" 
rel="next">perlrequick Extracting matches</a>, Previous: <a 
href="#perlrequick-Matching-this-or-that" accesskey="p" rel="prev">perlrequick 
Matching this or that</a>, Up: <a href="#perlrequick-The-Guide" accesskey="u" 
rel="up">perlrequick The Guide</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Grouping-things-and-hierarchical-matching"></a>
-<h4 class="subsection">65.3.4 Grouping things and hierarchical matching</h4>
+<h4 class="subsection">66.3.4 Grouping things and hierarchical matching</h4>
 
 <p>The <strong>grouping</strong> metacharacters <code>()</code> allow a part 
of a regex to be
 treated as a single unit.  Parts of a regex are grouped by enclosing
@@ -86034,7 +85680,7 @@
 Next: <a href="#perlrequick-Matching-repetitions" accesskey="n" 
rel="next">perlrequick Matching repetitions</a>, Previous: <a 
href="#perlrequick-Grouping-things-and-hierarchical-matching" accesskey="p" 
rel="prev">perlrequick Grouping things and hierarchical matching</a>, Up: <a 
href="#perlrequick-The-Guide" accesskey="u" rel="up">perlrequick The Guide</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Extracting-matches"></a>
-<h4 class="subsection">65.3.5 Extracting matches</h4>
+<h4 class="subsection">66.3.5 Extracting matches</h4>
 
 <p>The grouping metacharacters <code>()</code> also allow the extraction of the
 parts of a string that matched.  For each grouping, the part that
@@ -86076,7 +85722,7 @@
 Next: <a href="#perlrequick-More-matching" accesskey="n" 
rel="next">perlrequick More matching</a>, Previous: <a 
href="#perlrequick-Extracting-matches" accesskey="p" rel="prev">perlrequick 
Extracting matches</a>, Up: <a href="#perlrequick-The-Guide" accesskey="u" 
rel="up">perlrequick The Guide</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Matching-repetitions"></a>
-<h4 class="subsection">65.3.6 Matching repetitions</h4>
+<h4 class="subsection">66.3.6 Matching repetitions</h4>
 
 <p>The <strong>quantifier</strong> metacharacters <code>?</code>, 
<code>*</code>, <code>+</code>, and <code>{}</code> allow us
 to determine the number of repeats of a portion of a regex we
@@ -86129,7 +85775,7 @@
 Next: <a href="#perlrequick-Search-and-replace" accesskey="n" 
rel="next">perlrequick Search and replace</a>, Previous: <a 
href="#perlrequick-Matching-repetitions" accesskey="p" rel="prev">perlrequick 
Matching repetitions</a>, Up: <a href="#perlrequick-The-Guide" accesskey="u" 
rel="up">perlrequick The Guide</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="More-matching"></a>
-<h4 class="subsection">65.3.7 More matching</h4>
+<h4 class="subsection">66.3.7 More matching</h4>
 
 <p>There are a few more things you might want to know about matching
 operators.
@@ -86170,7 +85816,7 @@
 Next: <a href="#perlrequick-The-split-operator" accesskey="n" 
rel="next">perlrequick The split operator</a>, Previous: <a 
href="#perlrequick-More-matching" accesskey="p" rel="prev">perlrequick More 
matching</a>, Up: <a href="#perlrequick-The-Guide" accesskey="u" 
rel="up">perlrequick The Guide</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Search-and-replace"></a>
-<h4 class="subsection">65.3.8 Search and replace</h4>
+<h4 class="subsection">66.3.8 Search and replace</h4>
 
 <p>Search and replace is performed using 
<code>s/regex/replacement/modifiers</code>.
 The <code>replacement</code> is a Perl double-quoted string that replaces in 
the
@@ -86205,7 +85851,8 @@
     print &quot;$x $y\n&quot;; # prints &quot;I like dogs. I like cats.&quot;
 
     $x = &quot;Cats are great.&quot;;
-    print $x =~ s/Cats/Dogs/r =~ s/Dogs/Frogs/r =~ s/Frogs/Hedgehogs/r, 
&quot;\n&quot;;
+    print $x =~ s/Cats/Dogs/r =~ s/Dogs/Frogs/r =~
+        s/Frogs/Hedgehogs/r, &quot;\n&quot;;
     # prints &quot;Hedgehogs are great.&quot;
 
     @foo = map { s/[a-z]/X/r } qw(a b c 1 2 3);
@@ -86235,7 +85882,7 @@
 Previous: <a href="#perlrequick-Search-and-replace" accesskey="p" 
rel="prev">perlrequick Search and replace</a>, Up: <a 
href="#perlrequick-The-Guide" accesskey="u" rel="up">perlrequick The Guide</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="The-split-operator"></a>
-<h4 class="subsection">65.3.9 The split operator</h4>
+<h4 class="subsection">66.3.9 The split operator</h4>
 
 <p><code>split /regex/, string</code> splits <code>string</code> into a list 
of substrings
 and returns that list.  The regex determines the character sequence
@@ -86275,7 +85922,7 @@
 Next: <a href="#perlrequick-SEE-ALSO" accesskey="n" rel="next">perlrequick SEE 
ALSO</a>, Previous: <a href="#perlrequick-The-Guide" accesskey="p" 
rel="prev">perlrequick The Guide</a>, Up: <a href="#perlrequick" accesskey="u" 
rel="up">perlrequick</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="BUGS-7"></a>
-<h3 class="section">65.4 BUGS</h3>
+<h3 class="section">66.4 BUGS</h3>
 
 <p>None.
 </p>
@@ -86285,8 +85932,8 @@
 <p>
 Next: <a href="#perlrequick-AUTHOR-AND-COPYRIGHT" accesskey="n" 
rel="next">perlrequick AUTHOR AND COPYRIGHT</a>, Previous: <a 
href="#perlrequick-BUGS" accesskey="p" rel="prev">perlrequick BUGS</a>, Up: <a 
href="#perlrequick" accesskey="u" rel="up">perlrequick</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-33"></a>
-<h3 class="section">65.5 SEE ALSO</h3>
+<a name="SEE-ALSO-32"></a>
+<h3 class="section">66.5 SEE ALSO</h3>
 
 <p>This is just a quick start guide.  For a more in-depth tutorial on
 regexes, see <a href="#perlretut-NAME">perlretut NAME</a> and for the 
reference page, see <a href="#perlre-NAME">perlre NAME</a>.
@@ -86298,7 +85945,7 @@
 Previous: <a href="#perlrequick-SEE-ALSO" accesskey="p" rel="prev">perlrequick 
SEE ALSO</a>, Up: <a href="#perlrequick" accesskey="u" rel="up">perlrequick</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="AUTHOR-AND-COPYRIGHT"></a>
-<h3 class="section">65.6 AUTHOR AND COPYRIGHT</h3>
+<h3 class="section">66.6 AUTHOR AND COPYRIGHT</h3>
 
 <p>Copyright (c) 2000 Mark Kvale
 All rights reserved.
@@ -86317,7 +85964,7 @@
 Up: <a href="#perlrequick-AUTHOR-AND-COPYRIGHT" accesskey="u" 
rel="up">perlrequick AUTHOR AND COPYRIGHT</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Acknowledgments"></a>
-<h4 class="subsection">65.6.1 Acknowledgments</h4>
+<h4 class="subsection">66.6.1 Acknowledgments</h4>
 
 <p>The author would like to thank Mark-Jason Dominus, Tom Christiansen,
 Ilya Zakharevich, Brad Hughes, and Mike Giroux for all their helpful
@@ -86330,7 +85977,7 @@
 Next: <a href="#perlretut" accesskey="n" rel="next">perlretut</a>, Previous: 
<a href="#perlrequick" accesskey="p" rel="prev">perlrequick</a>, Up: <a 
href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="perlreref-1"></a>
-<h2 class="chapter">66 perlreref</h2>
+<h2 class="chapter">67 perlreref</h2>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perlreref-NAME" 
accesskey="1">perlreref NAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -86351,8 +85998,8 @@
 <p>
 Next: <a href="#perlreref-DESCRIPTION" accesskey="n" rel="next">perlreref 
DESCRIPTION</a>, Up: <a href="#perlreref" accesskey="u" rel="up">perlreref</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="NAME-65"></a>
-<h3 class="section">66.1 NAME</h3>
+<a name="NAME-66"></a>
+<h3 class="section">67.1 NAME</h3>
 
 <p>perlreref - Perl Regular Expressions Reference
 </p>
@@ -86362,8 +86009,8 @@
 <p>
 Next: <a href="#perlreref-AUTHOR" accesskey="n" rel="next">perlreref 
AUTHOR</a>, Previous: <a href="#perlreref-NAME" accesskey="p" 
rel="prev">perlreref NAME</a>, Up: <a href="#perlreref" accesskey="u" 
rel="up">perlreref</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="DESCRIPTION-64"></a>
-<h3 class="section">66.2 DESCRIPTION</h3>
+<a name="DESCRIPTION-65"></a>
+<h3 class="section">67.2 DESCRIPTION</h3>
 
 <p>This is a quick reference to Perl&rsquo;s regular expressions.
 For full information see <a href="#perlre-NAME">perlre NAME</a> and <a 
href="#perlop-NAME">perlop NAME</a>, as well
@@ -86399,7 +86046,7 @@
 Next: <a href="#perlreref-SYNTAX" accesskey="n" rel="next">perlreref 
SYNTAX</a>, Up: <a href="#perlreref-DESCRIPTION" accesskey="u" 
rel="up">perlreref DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="OPERATORS"></a>
-<h4 class="subsection">66.2.1 OPERATORS</h4>
+<h4 class="subsection">67.2.1 OPERATORS</h4>
 
 <p><code>=~</code> determines to which variable the regex is applied.
 In its absence, $_ is used.
@@ -86460,7 +86107,7 @@
 Next: <a href="#perlreref-ESCAPE-SEQUENCES" accesskey="n" rel="next">perlreref 
ESCAPE SEQUENCES</a>, Previous: <a href="#perlreref-OPERATORS" accesskey="p" 
rel="prev">perlreref OPERATORS</a>, Up: <a href="#perlreref-DESCRIPTION" 
accesskey="u" rel="up">perlreref DESCRIPTION</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="SYNTAX"></a>
-<h4 class="subsection">66.2.2 SYNTAX</h4>
+<h4 class="subsection">67.2.2 SYNTAX</h4>
 
 <pre class="verbatim"> \       Escapes the character immediately following it
  .       Matches any single character except a newline (unless /s is
@@ -86490,7 +86137,7 @@
 Next: <a href="#perlreref-CHARACTER-CLASSES" accesskey="n" 
rel="next">perlreref CHARACTER CLASSES</a>, Previous: <a 
href="#perlreref-SYNTAX" accesskey="p" rel="prev">perlreref SYNTAX</a>, Up: <a 
href="#perlreref-DESCRIPTION" accesskey="u" rel="up">perlreref DESCRIPTION</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="ESCAPE-SEQUENCES"></a>
-<h4 class="subsection">66.2.3 ESCAPE SEQUENCES</h4>
+<h4 class="subsection">67.2.3 ESCAPE SEQUENCES</h4>
 
 <p>These work as in normal strings.
 </p>
@@ -86529,7 +86176,7 @@
 Next: <a href="#perlreref-ANCHORS" accesskey="n" rel="next">perlreref 
ANCHORS</a>, Previous: <a href="#perlreref-ESCAPE-SEQUENCES" accesskey="p" 
rel="prev">perlreref ESCAPE SEQUENCES</a>, Up: <a href="#perlreref-DESCRIPTION" 
accesskey="u" rel="up">perlreref DESCRIPTION</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="CHARACTER-CLASSES"></a>
-<h4 class="subsection">66.2.4 CHARACTER CLASSES</h4>
+<h4 class="subsection">67.2.4 CHARACTER CLASSES</h4>
 
 <pre class="verbatim">   [amy]    Match 'a', 'm' or 'y'
    [f-j]    Dash specifies &quot;range&quot;
@@ -86556,6 +86203,7 @@
    \R      A generic newline           (?&gt;\v|\x0D\x0A)
 
    \C      Match a byte (with Unicode, '.' matches a character)
+           (Deprecated.)
    \pP     Match P-named (Unicode) property
    \p{...} Match Unicode property with name longer than 1 character
    \PP     Match non-P
@@ -86612,7 +86260,7 @@
 Next: <a href="#perlreref-QUANTIFIERS" accesskey="n" rel="next">perlreref 
QUANTIFIERS</a>, Previous: <a href="#perlreref-CHARACTER-CLASSES" accesskey="p" 
rel="prev">perlreref CHARACTER CLASSES</a>, Up: <a 
href="#perlreref-DESCRIPTION" accesskey="u" rel="up">perlreref DESCRIPTION</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="ANCHORS"></a>
-<h4 class="subsection">66.2.5 ANCHORS</h4>
+<h4 class="subsection">67.2.5 ANCHORS</h4>
 
 <p>All are zero-width assertions.
 </p>
@@ -86633,7 +86281,7 @@
 Next: <a href="#perlreref-EXTENDED-CONSTRUCTS" accesskey="n" 
rel="next">perlreref EXTENDED CONSTRUCTS</a>, Previous: <a 
href="#perlreref-ANCHORS" accesskey="p" rel="prev">perlreref ANCHORS</a>, Up: 
<a href="#perlreref-DESCRIPTION" accesskey="u" rel="up">perlreref 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="QUANTIFIERS"></a>
-<h4 class="subsection">66.2.6 QUANTIFIERS</h4>
+<h4 class="subsection">67.2.6 QUANTIFIERS</h4>
 
 <p>Quantifiers are greedy by default and match the <strong>longest</strong> 
leftmost.
 </p>
@@ -86660,7 +86308,7 @@
 Next: <a href="#perlreref-VARIABLES" accesskey="n" rel="next">perlreref 
VARIABLES</a>, Previous: <a href="#perlreref-QUANTIFIERS" accesskey="p" 
rel="prev">perlreref QUANTIFIERS</a>, Up: <a href="#perlreref-DESCRIPTION" 
accesskey="u" rel="up">perlreref DESCRIPTION</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="EXTENDED-CONSTRUCTS"></a>
-<h4 class="subsection">66.2.7 EXTENDED CONSTRUCTS</h4>
+<h4 class="subsection">67.2.7 EXTENDED CONSTRUCTS</h4>
 
 <pre class="verbatim">   (?#text)          A comment
    (?:...)           Groups subexpressions without capturing (cluster)
@@ -86703,7 +86351,7 @@
 Next: <a href="#perlreref-FUNCTIONS" accesskey="n" rel="next">perlreref 
FUNCTIONS</a>, Previous: <a href="#perlreref-EXTENDED-CONSTRUCTS" accesskey="p" 
rel="prev">perlreref EXTENDED CONSTRUCTS</a>, Up: <a 
href="#perlreref-DESCRIPTION" accesskey="u" rel="up">perlreref DESCRIPTION</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="VARIABLES"></a>
-<h4 class="subsection">66.2.8 VARIABLES</h4>
+<h4 class="subsection">67.2.8 VARIABLES</h4>
 
 <pre class="verbatim">   $_    Default variable for operators to use
 
@@ -86715,13 +86363,15 @@
    ${^MATCH}      Entire matched string
    ${^POSTMATCH}  Everything after to matched string
 </pre>
-<p>The use of <code>$`</code>, <code>$&amp;</code> or <code>$'</code> will 
slow down <strong>all</strong> regex use
+<p>Note to those still using Perl 5.18 or earlier:
+The use of <code>$`</code>, <code>$&amp;</code> or <code>$'</code> will slow 
down <strong>all</strong> regex use
 within your program. Consult <a href="#perlvar-NAME">perlvar NAME</a> for 
<code>@-</code>
 to see equivalent expressions that won&rsquo;t cause slow down.
 See also <a href="Devel-SawAmpersand.html#Top">(Devel-SawAmpersand)</a>. 
Starting with Perl 5.10, you
 can also use the equivalent variables <code>${^PREMATCH}</code>, 
<code>${^MATCH}</code>
 and <code>${^POSTMATCH}</code>, but for them to be defined, you have to
 specify the <code>/p</code> (preserve) modifier on your regular expression.
+In Perl 5.20, the use of <code>$`</code>, <code>$&amp;</code> and 
<code>$'</code> makes no speed difference.
 </p>
 <pre class="verbatim">   $1, $2 ...  hold the Xth captured expr
    $+    Last parenthesized pattern match
@@ -86741,7 +86391,7 @@
 Next: <a href="#perlreref-TERMINOLOGY" accesskey="n" rel="next">perlreref 
TERMINOLOGY</a>, Previous: <a href="#perlreref-VARIABLES" accesskey="p" 
rel="prev">perlreref VARIABLES</a>, Up: <a href="#perlreref-DESCRIPTION" 
accesskey="u" rel="up">perlreref DESCRIPTION</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="FUNCTIONS"></a>
-<h4 class="subsection">66.2.9 FUNCTIONS</h4>
+<h4 class="subsection">67.2.9 FUNCTIONS</h4>
 
 <pre class="verbatim">   lc          Lowercase a string
    lcfirst     Lowercase first char of a string
@@ -86767,7 +86417,7 @@
 Previous: <a href="#perlreref-FUNCTIONS" accesskey="p" rel="prev">perlreref 
FUNCTIONS</a>, Up: <a href="#perlreref-DESCRIPTION" accesskey="u" 
rel="up">perlreref DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="TERMINOLOGY"></a>
-<h4 class="subsection">66.2.10 TERMINOLOGY</h4>
+<h4 class="subsection">67.2.10 TERMINOLOGY</h4>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perlreref-Titlecase" 
accesskey="1">perlreref Titlecase</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
@@ -86783,7 +86433,7 @@
 Next: <a href="#perlreref-Foldcase" accesskey="n" rel="next">perlreref 
Foldcase</a>, Up: <a href="#perlreref-TERMINOLOGY" accesskey="u" 
rel="up">perlreref TERMINOLOGY</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Titlecase"></a>
-<h4 class="subsubsection">66.2.10.1 Titlecase</h4>
+<h4 class="subsubsection">67.2.10.1 Titlecase</h4>
 
 <p>Unicode concept which most often is equal to uppercase, but for
 certain characters like the German &quot;sharp s&quot; there is a difference.
@@ -86795,10 +86445,10 @@
 Previous: <a href="#perlreref-Titlecase" accesskey="p" rel="prev">perlreref 
Titlecase</a>, Up: <a href="#perlreref-TERMINOLOGY" accesskey="u" 
rel="up">perlreref TERMINOLOGY</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Foldcase"></a>
-<h4 class="subsubsection">66.2.10.2 Foldcase</h4>
+<h4 class="subsubsection">67.2.10.2 Foldcase</h4>
 
 <p>Unicode form that is useful when comparing strings regardless of case,
-as certain characters have compex one-to-many case mappings. Primarily a
+as certain characters have complex one-to-many case mappings. Primarily a
 variant of lowercase.
 </p>
 <hr>
@@ -86807,8 +86457,8 @@
 <p>
 Next: <a href="#perlreref-SEE-ALSO" accesskey="n" rel="next">perlreref SEE 
ALSO</a>, Previous: <a href="#perlreref-DESCRIPTION" accesskey="p" 
rel="prev">perlreref DESCRIPTION</a>, Up: <a href="#perlreref" accesskey="u" 
rel="up">perlreref</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="AUTHOR-27"></a>
-<h3 class="section">66.3 AUTHOR</h3>
+<a name="AUTHOR-26"></a>
+<h3 class="section">67.3 AUTHOR</h3>
 
 <p>Iain Truskett. Updated by the Perl 5 Porters.
 </p>
@@ -86820,8 +86470,8 @@
 <p>
 Next: <a href="#perlreref-THANKS" accesskey="n" rel="next">perlreref 
THANKS</a>, Previous: <a href="#perlreref-AUTHOR" accesskey="p" 
rel="prev">perlreref AUTHOR</a>, Up: <a href="#perlreref" accesskey="u" 
rel="up">perlreref</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-34"></a>
-<h3 class="section">66.4 SEE ALSO</h3>
+<a name="SEE-ALSO-33"></a>
+<h3 class="section">67.4 SEE ALSO</h3>
 
 <ul>
 <li> <a href="#perlretut-NAME">perlretut NAME</a> for a tutorial on regular 
expressions.
@@ -86863,7 +86513,7 @@
 Previous: <a href="#perlreref-SEE-ALSO" accesskey="p" rel="prev">perlreref SEE 
ALSO</a>, Up: <a href="#perlreref" accesskey="u" rel="up">perlreref</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="THANKS"></a>
-<h3 class="section">66.5 THANKS</h3>
+<h3 class="section">67.5 THANKS</h3>
 
 <p>David P.C. Wollmann,
 Richard Soderberg,
@@ -86881,7 +86531,7 @@
 Next: <a href="#perlrun" accesskey="n" rel="next">perlrun</a>, Previous: <a 
href="#perlreref" accesskey="p" rel="prev">perlreref</a>, Up: <a href="#Top" 
accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="perlretut-10"></a>
-<h2 class="chapter">67 perlretut</h2>
+<h2 class="chapter">68 perlretut</h2>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perlretut-NAME" 
accesskey="1">perlretut NAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -86898,8 +86548,6 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlretut-AUTHOR-AND-COPYRIGHT" accesskey="7">perlretut AUTHOR AND 
COPYRIGHT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perlretut-POD-ERRORS" 
accesskey="8">perlretut POD ERRORS</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
-</td></tr>
 </table>
 
 <hr>
@@ -86908,8 +86556,8 @@
 <p>
 Next: <a href="#perlretut-DESCRIPTION" accesskey="n" rel="next">perlretut 
DESCRIPTION</a>, Up: <a href="#perlretut" accesskey="u" rel="up">perlretut</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="NAME-66"></a>
-<h3 class="section">67.1 NAME</h3>
+<a name="NAME-67"></a>
+<h3 class="section">68.1 NAME</h3>
 
 <p>perlretut - Perl regular expressions tutorial
 </p>
@@ -86919,8 +86567,8 @@
 <p>
 Next: <a href="#perlretut-Part-1_003a-The-basics" accesskey="n" 
rel="next">perlretut Part 1: The basics</a>, Previous: <a 
href="#perlretut-NAME" accesskey="p" rel="prev">perlretut NAME</a>, Up: <a 
href="#perlretut" accesskey="u" rel="up">perlretut</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="DESCRIPTION-65"></a>
-<h3 class="section">67.2 DESCRIPTION</h3>
+<a name="DESCRIPTION-66"></a>
+<h3 class="section">68.2 DESCRIPTION</h3>
 
 <p>This page provides a basic tutorial on understanding, creating and
 using regular expressions in Perl.  It serves as a complement to the
@@ -86974,7 +86622,7 @@
 Next: <a href="#perlretut-Part-2_003a-Power-tools" accesskey="n" 
rel="next">perlretut Part 2: Power tools</a>, Previous: <a 
href="#perlretut-DESCRIPTION" accesskey="p" rel="prev">perlretut 
DESCRIPTION</a>, Up: <a href="#perlretut" accesskey="u" rel="up">perlretut</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Part-1_003a-The-basics"></a>
-<h3 class="section">67.3 Part 1: The basics</h3>
+<h3 class="section">68.3 Part 1: The basics</h3>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a 
href="#perlretut-Simple-word-matching" accesskey="1">perlretut Simple word 
matching</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
@@ -87016,7 +86664,7 @@
 Next: <a href="#perlretut-Using-character-classes" accesskey="n" 
rel="next">perlretut Using character classes</a>, Up: <a 
href="#perlretut-Part-1_003a-The-basics" accesskey="u" rel="up">perlretut Part 
1: The basics</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Simple-word-matching-1"></a>
-<h4 class="subsection">67.3.1 Simple word matching</h4>
+<h4 class="subsection">68.3.1 Simple word matching</h4>
 
 <p>The simplest regexp is simply a word, or more generally, a string of
 characters.  A regexp consisting of a word matches any string that
@@ -87253,7 +86901,7 @@
 Next: <a href="#perlretut-Matching-this-or-that" accesskey="n" 
rel="next">perlretut Matching this or that</a>, Previous: <a 
href="#perlretut-Simple-word-matching" accesskey="p" rel="prev">perlretut 
Simple word matching</a>, Up: <a href="#perlretut-Part-1_003a-The-basics" 
accesskey="u" rel="up">perlretut Part 1: The basics</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Using-character-classes-1"></a>
-<h4 class="subsection">67.3.2 Using character classes</h4>
+<h4 class="subsection">68.3.2 Using character classes</h4>
 
 <p>Although one can already do quite a lot with the literal string
 regexps above, we&rsquo;ve only scratched the surface of regular expression
@@ -87264,8 +86912,9 @@
 </p>
 <p>One such concept is that of a <em>character class</em>.  A character class
 allows a set of possible characters, rather than just a single
-character, to match at a particular point in a regexp.  Character
-classes are denoted by brackets <code>[...]</code>, with the set of characters
+character, to match at a particular point in a regexp.  You can define
+your own custom character classes.  These
+are denoted by brackets <code>[...]</code>, with the set of characters
 to be possibly matched inside.  Here are some examples:
 </p>
 <pre class="verbatim">    /cat/;       # matches 'cat'
@@ -87375,7 +87024,7 @@
 would caselessly match a &quot;k&quot; or &quot;K&quot;.)
 </p>
 <p>The <code>\d\s\w\D\S\W</code> abbreviations can be used both inside and 
outside
-of character classes.  Here are some in use:
+of bracketed character classes.  Here are some in use:
 </p>
 <pre class="verbatim">    /\d\d:\d\d:\d\d/; # matches a hh:mm:ss time format
     /[\d\s]/;         # matches any digit or whitespace character
@@ -87391,6 +87040,11 @@
 fact <code>[^\d\w]</code> is the same as <code>[^\w]</code>, which is the same 
as
 <code>[\W]</code>. Think DeMorgan&rsquo;s laws.
 </p>
+<p>In actuality, the period and <code>\d\s\w\D\S\W</code> abbreviations are
+themselves types of character classes, so the ones surrounded by
+brackets are just one type of character class.  When we need to make a
+distinction, we refer to them as &quot;bracketed character classes.&quot;
+</p>
 <p>An anchor useful in basic regexps is the <em>word anchor</em>
 <code>\b</code>.  This matches a boundary between a word character and a 
non-word
 character <code>\w\W</code> or <code>\W\w</code>:
@@ -87493,7 +87147,7 @@
 Next: <a href="#perlretut-Grouping-things-and-hierarchical-matching" 
accesskey="n" rel="next">perlretut Grouping things and hierarchical 
matching</a>, Previous: <a href="#perlretut-Using-character-classes" 
accesskey="p" rel="prev">perlretut Using character classes</a>, Up: <a 
href="#perlretut-Part-1_003a-The-basics" accesskey="u" rel="up">perlretut Part 
1: The basics</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Matching-this-or-that-1"></a>
-<h4 class="subsection">67.3.3 Matching this or that</h4>
+<h4 class="subsection">68.3.3 Matching this or that</h4>
 
 <p>Sometimes we would like our regexp to be able to match different
 possible words or character strings.  This is accomplished by using
@@ -87535,7 +87189,7 @@
 Next: <a href="#perlretut-Extracting-matches" accesskey="n" 
rel="next">perlretut Extracting matches</a>, Previous: <a 
href="#perlretut-Matching-this-or-that" accesskey="p" rel="prev">perlretut 
Matching this or that</a>, Up: <a href="#perlretut-Part-1_003a-The-basics" 
accesskey="u" rel="up">perlretut Part 1: The basics</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Grouping-things-and-hierarchical-matching-1"></a>
-<h4 class="subsection">67.3.4 Grouping things and hierarchical matching</h4>
+<h4 class="subsection">68.3.4 Grouping things and hierarchical matching</h4>
 
 <p>Alternation allows a regexp to choose among alternatives, but by
 itself it is unsatisfying.  The reason is that each alternative is a whole
@@ -87678,7 +87332,7 @@
 Next: <a href="#perlretut-Backreferences" accesskey="n" rel="next">perlretut 
Backreferences</a>, Previous: <a 
href="#perlretut-Grouping-things-and-hierarchical-matching" accesskey="p" 
rel="prev">perlretut Grouping things and hierarchical matching</a>, Up: <a 
href="#perlretut-Part-1_003a-The-basics" accesskey="u" rel="up">perlretut Part 
1: The basics</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Extracting-matches-1"></a>
-<h4 class="subsection">67.3.5 Extracting matches</h4>
+<h4 class="subsection">68.3.5 Extracting matches</h4>
 
 <p>The grouping metacharacters <code>()</code> also serve another completely
 different function: they allow the extraction of the parts of a string
@@ -87727,7 +87381,7 @@
 Next: <a href="#perlretut-Relative-backreferences" accesskey="n" 
rel="next">perlretut Relative backreferences</a>, Previous: <a 
href="#perlretut-Extracting-matches" accesskey="p" rel="prev">perlretut 
Extracting matches</a>, Up: <a href="#perlretut-Part-1_003a-The-basics" 
accesskey="u" rel="up">perlretut Part 1: The basics</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Backreferences"></a>
-<h4 class="subsection">67.3.6 Backreferences</h4>
+<h4 class="subsection">68.3.6 Backreferences</h4>
 
 <p>Closely associated with the matching variables <code>$1</code>, 
<code>$2</code>, ... are
 the <em>backreferences</em> <code>\g1</code>, <code>\g2</code>,...  
Backreferences are simply
@@ -87766,7 +87420,7 @@
 Next: <a href="#perlretut-Named-backreferences" accesskey="n" 
rel="next">perlretut Named backreferences</a>, Previous: <a 
href="#perlretut-Backreferences" accesskey="p" rel="prev">perlretut 
Backreferences</a>, Up: <a href="#perlretut-Part-1_003a-The-basics" 
accesskey="u" rel="up">perlretut Part 1: The basics</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Relative-backreferences"></a>
-<h4 class="subsection">67.3.7 Relative backreferences</h4>
+<h4 class="subsection">68.3.7 Relative backreferences</h4>
 
 <p>Counting the opening parentheses to get the correct number for a
 backreference is error-prone as soon as there is more than one
@@ -87807,7 +87461,7 @@
 Next: <a href="#perlretut-Alternative-capture-group-numbering" accesskey="n" 
rel="next">perlretut Alternative capture group numbering</a>, Previous: <a 
href="#perlretut-Relative-backreferences" accesskey="p" rel="prev">perlretut 
Relative backreferences</a>, Up: <a href="#perlretut-Part-1_003a-The-basics" 
accesskey="u" rel="up">perlretut Part 1: The basics</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Named-backreferences"></a>
-<h4 class="subsection">67.3.8 Named backreferences</h4>
+<h4 class="subsection">68.3.8 Named backreferences</h4>
 
 <p>Perl 5.10 also introduced named capture groups and named backreferences.
 To attach a name to a capturing group, you write either
@@ -87842,7 +87496,7 @@
 Next: <a href="#perlretut-Position-information" accesskey="n" 
rel="next">perlretut Position information</a>, Previous: <a 
href="#perlretut-Named-backreferences" accesskey="p" rel="prev">perlretut Named 
backreferences</a>, Up: <a href="#perlretut-Part-1_003a-The-basics" 
accesskey="u" rel="up">perlretut Part 1: The basics</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Alternative-capture-group-numbering"></a>
-<h4 class="subsection">67.3.9 Alternative capture group numbering</h4>
+<h4 class="subsection">68.3.9 Alternative capture group numbering</h4>
 
 <p>Yet another capturing group numbering technique (also as from Perl 5.10)
 deals with the problem of referring to groups within a set of alternatives.
@@ -87859,7 +87513,7 @@
 set around an alternative achieves. Here is an extended version of the
 previous pattern:
 </p>
-<pre class="verbatim">    if ( $time =~ 
/(?|(\d\d|\d):(\d\d)|(\d\d)(\d\d))\s+([A-Z][A-Z][A-Z])/ ){
+<pre class="verbatim">  if($time =~ 
/(?|(\d\d|\d):(\d\d)|(\d\d)(\d\d))\s+([A-Z][A-Z][A-Z])/){
         print &quot;hour=$1 minute=$2 zone=$3\n&quot;;
     }
 </pre>
@@ -87874,7 +87528,7 @@
 Next: <a href="#perlretut-Non_002dcapturing-groupings" accesskey="n" 
rel="next">perlretut Non-capturing groupings</a>, Previous: <a 
href="#perlretut-Alternative-capture-group-numbering" accesskey="p" 
rel="prev">perlretut Alternative capture group numbering</a>, Up: <a 
href="#perlretut-Part-1_003a-The-basics" accesskey="u" rel="up">perlretut Part 
1: The basics</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Position-information"></a>
-<h4 class="subsection">67.3.10 Position information</h4>
+<h4 class="subsection">68.3.10 Position information</h4>
 
 <p>In addition to what was matched, Perl also provides the
 positions of what was matched as contents of the <code>@-</code> and 
<code>@+</code>
@@ -87886,8 +87540,8 @@
 </p>
 <pre class="verbatim">    $x = &quot;Mmm...donut, thought Homer&quot;;
     $x =~ /^(Mmm|Yech)\.\.\.(donut|peas)/; # matches
-    foreach $expr (1..$#-) {
-        print &quot;Match $expr: '${$expr}' at position 
($-[$expr],$+[$expr])\n&quot;;
+    foreach $exp (1..$#-) {
+        print &quot;Match $exp: '${$exp}' at position 
($-[$exp],$+[$exp])\n&quot;;
     }
 </pre>
 <p>prints
@@ -87907,7 +87561,10 @@
 </pre>
 <p>In the second match, <code>$`</code> equals <code>''</code> because the 
regexp matched at the
 first character position in the string and stopped; it never saw the
-second &rsquo;the&rsquo;.  It is important to note that using <code>$`</code> 
and <code>$'</code>
+second &rsquo;the&rsquo;.
+</p>
+<p>If your code is to run on Perl versions earlier than
+5.20, it is worthwhile to note that using <code>$`</code> and <code>$'</code>
 slows down regexp matching quite a bit, while <code>$&amp;</code> slows it 
down to a
 lesser extent, because if they are used in one regexp in a program,
 they are generated for <em>all</em> regexps in the program.  So if raw
@@ -87920,8 +87577,11 @@
     $' is the same as substr( $x, $+[0] )
 </pre>
 <p>As of Perl 5.10, the <code>${^PREMATCH}</code>, <code>${^MATCH}</code> and 
<code>${^POSTMATCH}</code>
-variables may be used. These are only set if the <code>/p</code> modifier is 
present.
-Consequently they do not penalize the rest of the program.
+variables may be used.  These are only set if the <code>/p</code> modifier is
+present.  Consequently they do not penalize the rest of the program.  In
+Perl 5.20, <code>${^PREMATCH}</code>, <code>${^MATCH}</code> and 
<code>${^POSTMATCH}</code> are available
+whether the <code>/p</code> has been used or not (the modifier is ignored), and
+<code>$`</code>, <code>$'</code> and <code>$&amp;</code> do not cause any 
speed difference.
 </p>
 <hr>
 <a name="perlretut-Non_002dcapturing-groupings"></a>
@@ -87930,7 +87590,7 @@
 Next: <a href="#perlretut-Matching-repetitions" accesskey="n" 
rel="next">perlretut Matching repetitions</a>, Previous: <a 
href="#perlretut-Position-information" accesskey="p" rel="prev">perlretut 
Position information</a>, Up: <a href="#perlretut-Part-1_003a-The-basics" 
accesskey="u" rel="up">perlretut Part 1: The basics</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Non_002dcapturing-groupings"></a>
-<h4 class="subsection">67.3.11 Non-capturing groupings</h4>
+<h4 class="subsection">68.3.11 Non-capturing groupings</h4>
 
 <p>A group that is required to bundle a set of alternatives may or may not be
 useful as a capturing group.  If it isn&rsquo;t, it just creates a superfluous
@@ -87967,7 +87627,7 @@
 Next: <a href="#perlretut-Possessive-quantifiers" accesskey="n" 
rel="next">perlretut Possessive quantifiers</a>, Previous: <a 
href="#perlretut-Non_002dcapturing-groupings" accesskey="p" 
rel="prev">perlretut Non-capturing groupings</a>, Up: <a 
href="#perlretut-Part-1_003a-The-basics" accesskey="u" rel="up">perlretut Part 
1: The basics</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Matching-repetitions-1"></a>
-<h4 class="subsection">67.3.12 Matching repetitions</h4>
+<h4 class="subsection">68.3.12 Matching repetitions</h4>
 
 <p>The examples in the previous section display an annoying weakness.  We
 were only matching 3-letter words, or chunks of words of 4 letters or
@@ -88007,9 +87667,9 @@
     $year =~ /^\d{2,4}$/;  # make sure year is at least 2 but not more
                            # than 4 digits
     $year =~ /^\d{4}$|^\d{2}$/;    # better match; throw out 3-digit dates
-    $year =~ /^\d{2}(\d{2})?$/;  # same thing written differently. However,
-                                 # this captures the last two digits in $1
-                                 # and the other does not.
+    $year =~ /^\d{2}(\d{2})?$/; # same thing written differently.
+                                # However, this captures the last two
+                                # digits in $1 and the other does not.
 
     % simple_grep '^(\w+)\g1$' /usr/dict/words   # isn't this easier?
     beriberi
@@ -88291,7 +87951,7 @@
 Next: <a href="#perlretut-Building-a-regexp" accesskey="n" 
rel="next">perlretut Building a regexp</a>, Previous: <a 
href="#perlretut-Matching-repetitions" accesskey="p" rel="prev">perlretut 
Matching repetitions</a>, Up: <a href="#perlretut-Part-1_003a-The-basics" 
accesskey="u" rel="up">perlretut Part 1: The basics</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Possessive-quantifiers"></a>
-<h4 class="subsection">67.3.13 Possessive quantifiers</h4>
+<h4 class="subsection">68.3.13 Possessive quantifiers</h4>
 
 <p>Backtracking during the relentless search for a match may be a waste
 of time, particularly when the match is bound to fail.  Consider
@@ -88347,7 +88007,7 @@
 Next: <a href="#perlretut-Using-regular-expressions-in-Perl" accesskey="n" 
rel="next">perlretut Using regular expressions in Perl</a>, Previous: <a 
href="#perlretut-Possessive-quantifiers" accesskey="p" rel="prev">perlretut 
Possessive quantifiers</a>, Up: <a href="#perlretut-Part-1_003a-The-basics" 
accesskey="u" rel="up">perlretut Part 1: The basics</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Building-a-regexp"></a>
-<h4 class="subsection">67.3.14 Building a regexp</h4>
+<h4 class="subsection">68.3.14 Building a regexp</h4>
 
 <p>At this point, we have all the basic regexp concepts covered, so let&rsquo;s
 give a more involved example of a regular expression.  We will build a
@@ -88492,7 +88152,7 @@
 Previous: <a href="#perlretut-Building-a-regexp" accesskey="p" 
rel="prev">perlretut Building a regexp</a>, Up: <a 
href="#perlretut-Part-1_003a-The-basics" accesskey="u" rel="up">perlretut Part 
1: The basics</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Using-regular-expressions-in-Perl"></a>
-<h4 class="subsection">67.3.15 Using regular expressions in Perl</h4>
+<h4 class="subsection">68.3.15 Using regular expressions in Perl</h4>
 
 <p>The last topic of Part 1 briefly covers how regexps are used in Perl
 programs.  Where do they fit into Perl syntax?
@@ -88523,7 +88183,7 @@
 Next: <a href="#perlretut-Global-matching" accesskey="n" rel="next">perlretut 
Global matching</a>, Up: <a href="#perlretut-Using-regular-expressions-in-Perl" 
accesskey="u" rel="up">perlretut Using regular expressions in Perl</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Prohibiting-substitution"></a>
-<h4 class="subsubsection">67.3.15.1 Prohibiting substitution</h4>
+<h4 class="subsubsection">68.3.15.1 Prohibiting substitution</h4>
 
 <p>If you change <code>$pattern</code> after the first substitution happens, 
Perl
 will ignore it.  If you don&rsquo;t want any substitutions at all, use the
@@ -88548,7 +88208,7 @@
 Next: <a href="#perlretut-Search-and-replace" accesskey="n" 
rel="next">perlretut Search and replace</a>, Previous: <a 
href="#perlretut-Prohibiting-substitution" accesskey="p" rel="prev">perlretut 
Prohibiting substitution</a>, Up: <a 
href="#perlretut-Using-regular-expressions-in-Perl" accesskey="u" 
rel="up">perlretut Using regular expressions in Perl</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Global-matching"></a>
-<h4 class="subsubsection">67.3.15.2 Global matching</h4>
+<h4 class="subsubsection">68.3.15.2 Global matching</h4>
 
 <p>The final two modifiers we will discuss here,
 <code>//g</code> and <code>//c</code>, concern multiple matches.
@@ -88677,7 +88337,7 @@
 Next: <a href="#perlretut-The-split-function" accesskey="n" 
rel="next">perlretut The split function</a>, Previous: <a 
href="#perlretut-Global-matching" accesskey="p" rel="prev">perlretut Global 
matching</a>, Up: <a href="#perlretut-Using-regular-expressions-in-Perl" 
accesskey="u" rel="up">perlretut Using regular expressions in Perl</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Search-and-replace-1"></a>
-<h4 class="subsubsection">67.3.15.3 Search and replace</h4>
+<h4 class="subsubsection">68.3.15.3 Search and replace</h4>
 
 <p>Regular expressions also play a big role in <em>search and replace</em>
 operations in Perl.  Search and replace is accomplished with the
@@ -88758,7 +88418,8 @@
 substitutions:
 </p>
 <pre class="verbatim">    $x = &quot;Cats are great.&quot;;
-    print $x =~ s/Cats/Dogs/r =~ s/Dogs/Frogs/r =~ s/Frogs/Hedgehogs/r, 
&quot;\n&quot;;
+    print $x =~ s/Cats/Dogs/r =~ s/Dogs/Frogs/r =~
+        s/Frogs/Hedgehogs/r, &quot;\n&quot;;
     # prints &quot;Hedgehogs are great.&quot;
 </pre>
 <p>A modifier available specifically to search and replace is the
@@ -88801,7 +88462,7 @@
 Previous: <a href="#perlretut-Search-and-replace" accesskey="p" 
rel="prev">perlretut Search and replace</a>, Up: <a 
href="#perlretut-Using-regular-expressions-in-Perl" accesskey="u" 
rel="up">perlretut Using regular expressions in Perl</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="The-split-function"></a>
-<h4 class="subsubsection">67.3.15.4 The split function</h4>
+<h4 class="subsubsection">68.3.15.4 The split function</h4>
 
 <p>The <code>split()</code> function is another place where a regexp is used.
 <code>split /regexp/, string, limit</code> separates the <code>string</code> 
operand into
@@ -88850,7 +88511,7 @@
 Next: <a href="#perlretut-BUGS" accesskey="n" rel="next">perlretut BUGS</a>, 
Previous: <a href="#perlretut-Part-1_003a-The-basics" accesskey="p" 
rel="prev">perlretut Part 1: The basics</a>, Up: <a href="#perlretut" 
accesskey="u" rel="up">perlretut</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Part-2_003a-Power-tools"></a>
-<h3 class="section">67.4 Part 2: Power tools</h3>
+<h3 class="section">68.4 Part 2: Power tools</h3>
 
 <p>OK, you know the basics of regexps and you want to know more.  If
 matching regular expressions is analogous to a walk in the woods, then
@@ -88897,7 +88558,7 @@
 Next: <a href="#perlretut-Compiling-and-saving-regular-expressions" 
accesskey="n" rel="next">perlretut Compiling and saving regular 
expressions</a>, Up: <a href="#perlretut-Part-2_003a-Power-tools" accesskey="u" 
rel="up">perlretut Part 2: Power tools</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="More-on-characters_002c-strings_002c-and-character-classes"></a>
-<h4 class="subsection">67.4.1 More on characters, strings, and character 
classes</h4>
+<h4 class="subsection">68.4.1 More on characters, strings, and character 
classes</h4>
 
 <p>There are a number of escape sequences and character classes that we
 haven&rsquo;t covered yet.
@@ -89006,10 +88667,10 @@
 it is a sequence of characters, not bytes. See <a 
href="#perlunitut-NAME">perlunitut NAME</a> for a
 tutorial about that.
 </p>
-<p>Let us now discuss Unicode character classes.  Just as with Unicode
-characters, there are named Unicode character classes represented by the
+<p>Let us now discuss Unicode character classes, most usually called
+&quot;character properties&quot;.  These are represented by the
 <code>\p{name}</code> escape sequence.  Closely associated is the 
<code>\P{name}</code>
-character class, which is the negation of the <code>\p{name}</code> class.  For
+property, which is the negation of the <code>\p{name}</code> one.  For
 example, to match lower and uppercase characters,
 </p>
 <pre class="verbatim">    $x = &quot;BOB&quot;;
@@ -89020,39 +88681,20 @@
 </pre>
 <p>(The &quot;Is&quot; is optional.)
 </p>
-<p>Here is the association between some Perl named classes and the
-traditional Unicode classes:
-</p>
-<pre class="verbatim">    Perl class name  Unicode class name or regular 
expression
-
-    IsAlpha          /^[LM]/
-    IsAlnum          /^[LMN]/
-    IsASCII          $code &lt;= 127
-    IsCntrl          /^C/
-    IsBlank          $code =~ /^(0020|0009)$/ || /^Z[^lp]/
-    IsDigit          Nd
-    IsGraph          /^([LMNPS]|Co)/
-    IsLower          Ll
-    IsPrint          /^([LMNPS]|Co|Zs)/
-    IsPunct          /^P/
-    IsSpace          /^Z/ || ($code =~ /^(0009|000A|000B|000C|000D)$/
-    IsSpacePerl      /^Z/ || ($code =~ /^(0009|000A|000C|000D|0085|2028|2029)$/
-    IsUpper          /^L[ut]/
-    IsWord           /^[LMN]/ || $code eq &quot;005F&quot;
-    IsXDigit         $code =~ /^00(3[0-9]|[46][1-6])$/
-</pre>
-<p>You can also use the official Unicode class names with <code>\p</code> and
-<code>\P</code>, like <code>\p{L}</code> for Unicode &rsquo;letters&rsquo;, 
<code>\p{Lu}</code> for uppercase
-letters, or <code>\P{Nd}</code> for non-digits.  If a <code>name</code> is 
just one
-letter, the braces can be dropped.  For instance, <code>\pM</code> is the
-character class of Unicode &rsquo;marks&rsquo;, for example accent marks.
-For the full list see <a href="#perlunicode-NAME">perlunicode NAME</a>.
-</p>
-<p>Unicode has also been separated into various sets of characters
-which you can test with <code>\p{...}</code> (in) and <code>\P{...}</code> 
(not in).
-To test whether a character is (or is not) an element of a script
-you would use the script name, for example <code>\p{Latin}</code>, 
<code>\p{Greek}</code>,
-or <code>\P{Katakana}</code>.
+<p>There are many, many Unicode character properties.  For the full list
+see <a href="perluniprops.html#Top">(perluniprops)</a>.  Most of them have 
synonyms with shorter names,
+also listed there.  Some synonyms are a single character.  For these,
+you can drop the braces.  For instance, <code>\pM</code> is the same thing as
+<code>\p{Mark}</code>, meaning things like accent marks.
+</p>
+<p>The Unicode <code>\p{Script}</code> property is used to categorize every 
Unicode
+character into the language script it is written in.  For example,
+English, French, and a bunch of other European languages are written in
+the Latin script.  But there is also the Greek script, the Thai script,
+the Katakana script, etc.  You can test whether a character is in a
+particular script with, for example <code>\p{Latin}</code>, 
<code>\p{Greek}</code>,
+or <code>\p{Katakana}</code>.  To test if it isn&rsquo;t in the Balinese 
script, you
+would use <code>\P{Balinese}</code>.
 </p>
 <p>What we have described so far is the single form of the 
<code>\p{...}</code> character
 classes.  There is also a compound form which you may run into.  These
@@ -89060,8 +88702,9 @@
 can be used interchangeably).  These are more general than the single form,
 and in fact most of the single forms are just Perl-defined shortcuts for common
 compound forms.  For example, the script examples in the previous paragraph
-could be written equivalently as <code>\p{Script=Latin}</code>, 
<code>\p{Script:Greek}</code>, and
-<code>\P{script=katakana}</code> (case is irrelevant between the 
<code>{}</code> braces).  You may
+could be written equivalently as <code>\p{Script=Latin}</code>, 
<code>\p{Script:Greek}</code>,
+<code>\p{script=katakana}</code>, and <code>\P{script=balinese}</code> (case 
is irrelevant
+between the <code>{}</code> braces).  You may
 never have to use the compound forms, but sometimes it is necessary, and their
 use can make your code easier to understand.
 </p>
@@ -89070,7 +88713,7 @@
 what appears to be a single character, but may be represented internally by 
more
 than one.  As an example, using the Unicode full names, e.g., 
<code>A&nbsp;+&nbsp;COMBINING&nbsp;RING</code><!-- /@w --> is a grapheme 
cluster with base character <code>A</code> and combining character
 <code>COMBINING&nbsp;RING</code><!-- /@w -->, which translates in Danish to A 
with the circle atop it,
-as in the word Angstrom.
+as in the word Ångstrom.
 </p>
 <p>For the full and latest information about Unicode see the latest
 Unicode standard, or the Unicode Consortium&rsquo;s website <a 
href="http://www.unicode.org";>http://www.unicode.org</a>
@@ -89109,7 +88752,7 @@
 Next: <a href="#perlretut-Composing-regular-expressions-at-runtime" 
accesskey="n" rel="next">perlretut Composing regular expressions at 
runtime</a>, Previous: <a 
href="#perlretut-More-on-characters_002c-strings_002c-and-character-classes" 
accesskey="p" rel="prev">perlretut More on characters, strings, and character 
classes</a>, Up: <a href="#perlretut-Part-2_003a-Power-tools" accesskey="u" 
rel="up">perlretut Part 2: Power tools</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Compiling-and-saving-regular-expressions"></a>
-<h4 class="subsection">67.4.2 Compiling and saving regular expressions</h4>
+<h4 class="subsection">68.4.2 Compiling and saving regular expressions</h4>
 
 <p>In Part 1 we mentioned that Perl compiles a regexp into a compact
 sequence of opcodes.  Thus, a compiled regexp is a data structure
@@ -89173,7 +88816,7 @@
 Next: <a 
href="#perlretut-Embedding-comments-and-modifiers-in-a-regular-expression" 
accesskey="n" rel="next">perlretut Embedding comments and modifiers in a 
regular expression</a>, Previous: <a 
href="#perlretut-Compiling-and-saving-regular-expressions" accesskey="p" 
rel="prev">perlretut Compiling and saving regular expressions</a>, Up: <a 
href="#perlretut-Part-2_003a-Power-tools" accesskey="u" rel="up">perlretut Part 
2: Power tools</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Composing-regular-expressions-at-runtime"></a>
-<h4 class="subsection">67.4.3 Composing regular expressions at runtime</h4>
+<h4 class="subsection">68.4.3 Composing regular expressions at runtime</h4>
 
 <p>Backtracking is more efficient than repeated tries with different regular
 expressions.  If there are several regular expressions and a match with
@@ -89213,14 +88856,14 @@
 <pre class="verbatim">    % cat &gt; keymatch
     #!/usr/bin/perl
     $kwds = 'copy compare list print';
-    while( $command = &lt;&gt; ){
-        $command =~ s/^\s+|\s+$//g;  # trim leading and trailing spaces
-        if( ( @matches = $kwds =~ /\b$command\w*/g ) == 1 ){
+    while( $cmd = &lt;&gt; ){
+        $cmd =~ s/^\s+|\s+$//g;  # trim leading and trailing spaces
+        if( ( @matches = $kwds =~ /\b$cmd\w*/g ) == 1 ){
             print &quot;command: '@matches'\n&quot;;
         } elsif( @matches == 0 ){
-            print &quot;no such command: '$command'\n&quot;;
+            print &quot;no such command: '$cmd'\n&quot;;
         } else {
-            print &quot;not unique: '$command' (could be one of: 
@matches)\n&quot;;
+            print &quot;not unique: '$cmd' (could be one of: @matches)\n&quot;;
         }
     }
     ^D
@@ -89235,7 +88878,7 @@
 </pre>
 <p>Rather than trying to match the input against the keywords, we match the
 combined set of keywords against the input.  The pattern matching
-operation <code>$kwds&nbsp;=~&nbsp;/\b($command\w*)/g</code><!-- /@w --> does 
several things at the
+operation <code>$kwds&nbsp;=~&nbsp;/\b($cmd\w*)/g</code><!-- /@w --> does 
several things at the
 same time. It makes sure that the given command begins where a keyword
 begins (<code>\b</code>). It tolerates abbreviations due to the added 
<code>\w*</code>. It
 tells us the number of matches (<code>scalar @matches</code>) and all the 
keywords
@@ -89248,7 +88891,7 @@
 Next: <a href="#perlretut-Looking-ahead-and-looking-behind" accesskey="n" 
rel="next">perlretut Looking ahead and looking behind</a>, Previous: <a 
href="#perlretut-Composing-regular-expressions-at-runtime" accesskey="p" 
rel="prev">perlretut Composing regular expressions at runtime</a>, Up: <a 
href="#perlretut-Part-2_003a-Power-tools" accesskey="u" rel="up">perlretut Part 
2: Power tools</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Embedding-comments-and-modifiers-in-a-regular-expression"></a>
-<h4 class="subsection">67.4.4 Embedding comments and modifiers in a regular 
expression</h4>
+<h4 class="subsection">68.4.4 Embedding comments and modifiers in a regular 
expression</h4>
 
 <p>Starting with this section, we will be discussing Perl&rsquo;s set of
 <em>extended patterns</em>.  These are extensions to the traditional regular
@@ -89317,7 +88960,7 @@
 Next: <a 
href="#perlretut-Using-independent-subexpressions-to-prevent-backtracking" 
accesskey="n" rel="next">perlretut Using independent subexpressions to prevent 
backtracking</a>, Previous: <a 
href="#perlretut-Embedding-comments-and-modifiers-in-a-regular-expression" 
accesskey="p" rel="prev">perlretut Embedding comments and modifiers in a 
regular expression</a>, Up: <a href="#perlretut-Part-2_003a-Power-tools" 
accesskey="u" rel="up">perlretut Part 2: Power tools</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Looking-ahead-and-looking-behind"></a>
-<h4 class="subsection">67.4.5 Looking ahead and looking behind</h4>
+<h4 class="subsection">68.4.5 Looking ahead and looking behind</h4>
 
 <p>This section concerns the lookahead and lookbehind assertions.  First,
 a little background.
@@ -89401,7 +89044,7 @@
 Next: <a href="#perlretut-Conditional-expressions" accesskey="n" 
rel="next">perlretut Conditional expressions</a>, Previous: <a 
href="#perlretut-Looking-ahead-and-looking-behind" accesskey="p" 
rel="prev">perlretut Looking ahead and looking behind</a>, Up: <a 
href="#perlretut-Part-2_003a-Power-tools" accesskey="u" rel="up">perlretut Part 
2: Power tools</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Using-independent-subexpressions-to-prevent-backtracking"></a>
-<h4 class="subsection">67.4.6 Using independent subexpressions to prevent 
backtracking</h4>
+<h4 class="subsection">68.4.6 Using independent subexpressions to prevent 
backtracking</h4>
 
 <p><em>Independent subexpressions</em> are regular expressions, in the
 context of a larger regular expression, that function independently of
@@ -89474,7 +89117,7 @@
 Next: <a href="#perlretut-Defining-named-patterns" accesskey="n" 
rel="next">perlretut Defining named patterns</a>, Previous: <a 
href="#perlretut-Using-independent-subexpressions-to-prevent-backtracking" 
accesskey="p" rel="prev">perlretut Using independent subexpressions to prevent 
backtracking</a>, Up: <a href="#perlretut-Part-2_003a-Power-tools" 
accesskey="u" rel="up">perlretut Part 2: Power tools</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Conditional-expressions"></a>
-<h4 class="subsection">67.4.7 Conditional expressions</h4>
+<h4 class="subsection">68.4.7 Conditional expressions</h4>
 
 <p>A <em>conditional expression</em> is a form of if-then-else statement
 that allows one to choose which patterns are to be matched, based on
@@ -89533,7 +89176,7 @@
 Next: <a href="#perlretut-Recursive-patterns" accesskey="n" 
rel="next">perlretut Recursive patterns</a>, Previous: <a 
href="#perlretut-Conditional-expressions" accesskey="p" rel="prev">perlretut 
Conditional expressions</a>, Up: <a href="#perlretut-Part-2_003a-Power-tools" 
accesskey="u" rel="up">perlretut Part 2: Power tools</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Defining-named-patterns"></a>
-<h4 class="subsection">67.4.8 Defining named patterns</h4>
+<h4 class="subsection">68.4.8 Defining named patterns</h4>
 
 <p>Some regular expressions use identical subpatterns in several places.
 Starting with Perl 5.10, it is possible to define named subpatterns in
@@ -89566,7 +89209,7 @@
 Next: <a 
href="#perlretut-A-bit-of-magic_003a-executing-Perl-code-in-a-regular-expression"
 accesskey="n" rel="next">perlretut A bit of magic: executing Perl code in a 
regular expression</a>, Previous: <a href="#perlretut-Defining-named-patterns" 
accesskey="p" rel="prev">perlretut Defining named patterns</a>, Up: <a 
href="#perlretut-Part-2_003a-Power-tools" accesskey="u" rel="up">perlretut Part 
2: Power tools</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Recursive-patterns"></a>
-<h4 class="subsection">67.4.9 Recursive patterns</h4>
+<h4 class="subsection">68.4.9 Recursive patterns</h4>
 
 <p>This feature (introduced in Perl 5.10) significantly extends the
 power of Perl&rsquo;s pattern matching.  By referring to some other
@@ -89607,7 +89250,7 @@
 Next: <a href="#perlretut-Backtracking-control-verbs" accesskey="n" 
rel="next">perlretut Backtracking control verbs</a>, Previous: <a 
href="#perlretut-Recursive-patterns" accesskey="p" rel="prev">perlretut 
Recursive patterns</a>, Up: <a href="#perlretut-Part-2_003a-Power-tools" 
accesskey="u" rel="up">perlretut Part 2: Power tools</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="A-bit-of-magic_003a-executing-Perl-code-in-a-regular-expression"></a>
-<h4 class="subsection">67.4.10 A bit of magic: executing Perl code in a 
regular expression</h4>
+<h4 class="subsection">68.4.10 A bit of magic: executing Perl code in a 
regular expression</h4>
 
 <p>Normally, regexps are a part of Perl expressions.
 <em>Code evaluation</em> expressions turn that around by allowing
@@ -89838,7 +89481,7 @@
 Next: <a href="#perlretut-Pragmas-and-debugging" accesskey="n" 
rel="next">perlretut Pragmas and debugging</a>, Previous: <a 
href="#perlretut-A-bit-of-magic_003a-executing-Perl-code-in-a-regular-expression"
 accesskey="p" rel="prev">perlretut A bit of magic: executing Perl code in a 
regular expression</a>, Up: <a href="#perlretut-Part-2_003a-Power-tools" 
accesskey="u" rel="up">perlretut Part 2: Power tools</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Backtracking-control-verbs"></a>
-<h4 class="subsection">67.4.11 Backtracking control verbs</h4>
+<h4 class="subsection">68.4.11 Backtracking control verbs</h4>
 
 <p>Perl 5.10 introduced a number of control verbs intended to provide
 detailed control over the backtracking process, by directly influencing
@@ -89884,7 +89527,7 @@
 Previous: <a href="#perlretut-Backtracking-control-verbs" accesskey="p" 
rel="prev">perlretut Backtracking control verbs</a>, Up: <a 
href="#perlretut-Part-2_003a-Power-tools" accesskey="u" rel="up">perlretut Part 
2: Power tools</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Pragmas-and-debugging"></a>
-<h4 class="subsection">67.4.12 Pragmas and debugging</h4>
+<h4 class="subsection">68.4.12 Pragmas and debugging</h4>
 
 <p>Speaking of debugging, there are several pragmas available to control
 and debug regexps in Perl.  We have already encountered one pragma in
@@ -90031,7 +89674,7 @@
 Next: <a href="#perlretut-SEE-ALSO" accesskey="n" rel="next">perlretut SEE 
ALSO</a>, Previous: <a href="#perlretut-Part-2_003a-Power-tools" accesskey="p" 
rel="prev">perlretut Part 2: Power tools</a>, Up: <a href="#perlretut" 
accesskey="u" rel="up">perlretut</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="BUGS-8"></a>
-<h3 class="section">67.5 BUGS</h3>
+<h3 class="section">68.5 BUGS</h3>
 
 <p>Code expressions, conditional expressions, and independent expressions
 are <em>experimental</em>.  Don&rsquo;t use them in production code.  Yet.
@@ -90042,8 +89685,8 @@
 <p>
 Next: <a href="#perlretut-AUTHOR-AND-COPYRIGHT" accesskey="n" 
rel="next">perlretut AUTHOR AND COPYRIGHT</a>, Previous: <a 
href="#perlretut-BUGS" accesskey="p" rel="prev">perlretut BUGS</a>, Up: <a 
href="#perlretut" accesskey="u" rel="up">perlretut</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-35"></a>
-<h3 class="section">67.6 SEE ALSO</h3>
+<a name="SEE-ALSO-34"></a>
+<h3 class="section">68.6 SEE ALSO</h3>
 
 <p>This is just a tutorial.  For the full story on Perl regular
 expressions, see the <a href="#perlre-NAME">perlre NAME</a> regular 
expressions reference page.
@@ -90060,10 +89703,10 @@
 <a name="perlretut-AUTHOR-AND-COPYRIGHT"></a>
 <div class="header">
 <p>
-Next: <a href="#perlretut-POD-ERRORS" accesskey="n" rel="next">perlretut POD 
ERRORS</a>, Previous: <a href="#perlretut-SEE-ALSO" accesskey="p" 
rel="prev">perlretut SEE ALSO</a>, Up: <a href="#perlretut" accesskey="u" 
rel="up">perlretut</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
+Previous: <a href="#perlretut-SEE-ALSO" accesskey="p" rel="prev">perlretut SEE 
ALSO</a>, Up: <a href="#perlretut" accesskey="u" rel="up">perlretut</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="AUTHOR-AND-COPYRIGHT-1"></a>
-<h3 class="section">67.7 AUTHOR AND COPYRIGHT</h3>
+<h3 class="section">68.7 AUTHOR AND COPYRIGHT</h3>
 
 <p>Copyright (c) 2000 Mark Kvale
 All rights reserved.
@@ -90082,7 +89725,7 @@
 Up: <a href="#perlretut-AUTHOR-AND-COPYRIGHT" accesskey="u" rel="up">perlretut 
AUTHOR AND COPYRIGHT</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Acknowledgments-1"></a>
-<h4 class="subsection">67.7.1 Acknowledgments</h4>
+<h4 class="subsection">68.7.1 Acknowledgments</h4>
 
 <p>The inspiration for the stop codon DNA example came from the ZIP
 code example in chapter 7 of <em>Mastering Regular Expressions</em>.
@@ -90092,102 +89735,13 @@
 comments.
 </p>
 <hr>
-<a name="perlretut-POD-ERRORS"></a>
-<div class="header">
-<p>
-Previous: <a href="#perlretut-AUTHOR-AND-COPYRIGHT" accesskey="p" 
rel="prev">perlretut AUTHOR AND COPYRIGHT</a>, Up: <a href="#perlretut" 
accesskey="u" rel="up">perlretut</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="POD-ERRORS"></a>
-<h3 class="section">67.8 POD ERRORS</h3>
-
-<p>Hey! <strong>The above document had some coding errors, which are explained 
below:</strong>
-</p>
-<dl compact="compact">
-<dt>Around line 643:</dt>
-<dd><a name="perlretut-Around-line-643_003a"></a>
-<p>Expected text after =item, not a number
-</p>
-</dd>
-<dt>Around line 647:</dt>
-<dd><a name="perlretut-Around-line-647_003a"></a>
-<p>Expected text after =item, not a number
-</p>
-</dd>
-<dt>Around line 651:</dt>
-<dd><a name="perlretut-Around-line-651_003a"></a>
-<p>Expected text after =item, not a number
-</p>
-</dd>
-<dt>Around line 657:</dt>
-<dd><a name="perlretut-Around-line-657_003a"></a>
-<p>Expected text after =item, not a number
-</p>
-</dd>
-<dt>Around line 662:</dt>
-<dd><a name="perlretut-Around-line-662_003a"></a>
-<p>Expected text after =item, not a number
-</p>
-</dd>
-<dt>Around line 667:</dt>
-<dd><a name="perlretut-Around-line-667_003a"></a>
-<p>Expected text after =item, not a number
-</p>
-</dd>
-<dt>Around line 671:</dt>
-<dd><a name="perlretut-Around-line-671_003a"></a>
-<p>Expected text after =item, not a number
-</p>
-</dd>
-<dt>Around line 677:</dt>
-<dd><a name="perlretut-Around-line-677_003a"></a>
-<p>Expected text after =item, not a number
-</p>
-</dd>
-<dt>Around line 682:</dt>
-<dd><a name="perlretut-Around-line-682_003a"></a>
-<p>Expected text after =item, not a number
-</p>
-</dd>
-<dt>Around line 1250:</dt>
-<dd><a name="perlretut-Around-line-1250_003a"></a>
-<p>Expected text after =item, not a number
-</p>
-</dd>
-<dt>Around line 1255:</dt>
-<dd><a name="perlretut-Around-line-1255_003a"></a>
-<p>Expected text after =item, not a number
-</p>
-</dd>
-<dt>Around line 1260:</dt>
-<dd><a name="perlretut-Around-line-1260_003a"></a>
-<p>Expected text after =item, not a number
-</p>
-</dd>
-<dt>Around line 1265:</dt>
-<dd><a name="perlretut-Around-line-1265_003a"></a>
-<p>Expected text after =item, not a number
-</p>
-</dd>
-<dt>Around line 1269:</dt>
-<dd><a name="perlretut-Around-line-1269_003a"></a>
-<p>Expected text after =item, not a number
-</p>
-</dd>
-<dt>Around line 1274:</dt>
-<dd><a name="perlretut-Around-line-1274_003a"></a>
-<p>Expected text after =item, not a number
-</p>
-</dd>
-</dl>
-
-<hr>
 <a name="perlrun"></a>
 <div class="header">
 <p>
 Next: <a href="#perlsec" accesskey="n" rel="next">perlsec</a>, Previous: <a 
href="#perlretut" accesskey="p" rel="prev">perlretut</a>, Up: <a href="#Top" 
accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="perlrun-1"></a>
-<h2 class="chapter">68 perlrun</h2>
+<h2 class="chapter">69 perlrun</h2>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perlrun-NAME" 
accesskey="1">perlrun NAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -90206,8 +89760,8 @@
 <p>
 Next: <a href="#perlrun-SYNOPSIS" accesskey="n" rel="next">perlrun 
SYNOPSIS</a>, Up: <a href="#perlrun" accesskey="u" rel="up">perlrun</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="NAME-67"></a>
-<h3 class="section">68.1 NAME</h3>
+<a name="NAME-68"></a>
+<h3 class="section">69.1 NAME</h3>
 
 <p>perlrun - how to execute the Perl interpreter
 </p>
@@ -90218,7 +89772,7 @@
 Next: <a href="#perlrun-DESCRIPTION" accesskey="n" rel="next">perlrun 
DESCRIPTION</a>, Previous: <a href="#perlrun-NAME" accesskey="p" 
rel="prev">perlrun NAME</a>, Up: <a href="#perlrun" accesskey="u" 
rel="up">perlrun</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="SYNOPSIS-9"></a>
-<h3 class="section">68.2 SYNOPSIS</h3>
+<h3 class="section">69.2 SYNOPSIS</h3>
 
 <p><strong>perl</strong>       [&nbsp;<strong><span 
class="nolinebreak">-sTtuUWX</span></strong>&nbsp;]<!-- /@w -->
        [&nbsp;<strong><span 
class="nolinebreak">-hv</span></strong>&nbsp;]&nbsp;[&nbsp;<strong><span 
class="nolinebreak">-V</span></strong>[:<em>configvar</em>]&nbsp;]<!-- /@w -->
@@ -90237,8 +89791,8 @@
 <p>
 Next: <a href="#perlrun-ENVIRONMENT" accesskey="n" rel="next">perlrun 
ENVIRONMENT</a>, Previous: <a href="#perlrun-SYNOPSIS" accesskey="p" 
rel="prev">perlrun SYNOPSIS</a>, Up: <a href="#perlrun" accesskey="u" 
rel="up">perlrun</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="DESCRIPTION-66"></a>
-<h3 class="section">68.3 DESCRIPTION</h3>
+<a name="DESCRIPTION-67"></a>
+<h3 class="section">69.3 DESCRIPTION</h3>
 
 <p>The normal way to run a Perl program is by making it directly
 executable, or else by passing the name of the source file as an
@@ -90341,7 +89895,7 @@
 Next: <a href="#perlrun-Location-of-Perl" accesskey="n" rel="next">perlrun 
Location of Perl</a>, Up: <a href="#perlrun-DESCRIPTION" accesskey="u" 
rel="up">perlrun DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="g_t_0023_0021-and-quoting-on-non_002dUnix-systems"></a>
-<h4 class="subsection">68.3.1 #! and quoting on non-Unix systems</h4>
+<h4 class="subsection">69.3.1 #! and quoting on non-Unix systems</h4>
 
 <p>Unix&rsquo;s <code>#!</code> technique can be simulated on other systems:
 </p>
@@ -90431,7 +89985,7 @@
 Next: <a href="#perlrun-Command-Switches" accesskey="n" rel="next">perlrun 
Command Switches</a>, Previous: <a 
href="#perlrun-_0023_0021-and-quoting-on-non_002dUnix-systems" accesskey="p" 
rel="prev">perlrun #! and quoting on non-Unix systems</a>, Up: <a 
href="#perlrun-DESCRIPTION" accesskey="u" rel="up">perlrun DESCRIPTION</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Location-of-Perl"></a>
-<h4 class="subsection">68.3.2 Location of Perl</h4>
+<h4 class="subsection">69.3.2 Location of Perl</h4>
 
 <p>It may seem obvious to say, but Perl is useful only when users can
 easily find it.  When possible, it&rsquo;s good for both 
<samp>/usr/bin/perl</samp>
@@ -90459,13 +90013,16 @@
 Previous: <a href="#perlrun-Location-of-Perl" accesskey="p" rel="prev">perlrun 
Location of Perl</a>, Up: <a href="#perlrun-DESCRIPTION" accesskey="u" 
rel="up">perlrun DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Command-Switches"></a>
-<h4 class="subsection">68.3.3 Command Switches</h4>
+<h4 class="subsection">69.3.3 Command Switches</h4>
 
 <p>As with all standard commands, a single-character switch may be
 clustered with the following switch, if any.
 </p>
 <pre class="verbatim">    #!/usr/bin/perl -spi.orig   # same as -s -p -i.orig
 </pre>
+<p>A <code>--</code> signals the end of options and disables further option 
processing. Any
+arguments after the <code>--</code> are treated as filenames and arguments.
+</p>
 <p>Switches include:
 </p>
 <dl compact="compact">
@@ -90509,6 +90066,8 @@
 </pre>
 <p>An alternate delimiter may be specified using <strong>-F</strong>.
 </p>
+<p><strong>-a</strong> implicitly sets <strong>-n</strong>.
+</p>
 </dd>
 <dt><strong>-C [<em>number/list</em>]</strong></dt>
 <dd><a name="perlrun-_002dC-_005bnumber_002flist_005d"></a>
@@ -90727,9 +90286,11 @@
 </dd>
 <dt><strong>-F</strong><em>pattern</em></dt>
 <dd><a name="perlrun-_002dFpattern"></a>
-<p>specifies the pattern to split on if <strong>-a</strong> is also in effect. 
 The
-pattern may be surrounded by <code>//</code>, <code>&quot;&quot;</code>, or 
<code>''</code>, otherwise it will be
-put in single quotes. You can&rsquo;t use literal whitespace in the pattern.
+<p>specifies the pattern to split on for <strong>-a</strong>. The pattern may 
be
+surrounded by <code>//</code>, <code>&quot;&quot;</code>, or <code>''</code>, 
otherwise it will be put in single
+quotes. You can&rsquo;t use literal whitespace in the pattern.
+</p>
+<p><strong>-F</strong> implicitly sets both <strong>-a</strong> and 
<strong>-n</strong>.
 </p>
 </dd>
 <dt><strong>-h</strong></dt>
@@ -90832,8 +90393,9 @@
 specified in the extension then it will skip that file and continue on
 with the next one (if it exists).
 </p>
-<p>For a discussion of issues surrounding file permissions and 
<strong>-i</strong>,
-see <a 
href="perlfaq5.html#Why-does-Perl-let-me-delete-read_002donly-files_003f-Why-does-_002di-clobber-protected-files_003f-Isn_0027t-this-a-bug-in-Perl_003f">(perlfaq5)Why
 does Perl let me delete read-only files?  Why does -i clobber protected files? 
 Isn't this a bug in Perl?</a>.
+<p>For a discussion of issues surrounding file permissions and 
<strong>-i</strong>, see
+<a 
href="perlfaq5.html#Why-does-Perl-let-me-delete-read_002donly-files_003f-Why-does-_002di-clobber-protected-files_003f-Isn_0027t-this-a-bug-in-Perl_003f">(perlfaq5)Why
 does Perl let me delete read-only files?  Why does -i clobber
+protected files?  Isn't this a bug in Perl?</a>.
 </p>
 <p>You cannot use <strong>-i</strong> to create directories or to strip 
extensions from
 files.
@@ -90906,7 +90468,8 @@
 <strong>&rsquo;-M<em>MODULE</em> qw(foo bar)&rsquo;</strong>.  This avoids the 
need to use quotes when
 importing symbols.  The actual code generated by 
<strong>-M<em>MODULE</em>=foo,bar</strong> is
 <code>use module split(/,/,q{foo,bar})</code>.  Note that the <code>=</code> 
form
-removes the distinction between <strong>-m</strong> and <strong>-M</strong>.
+removes the distinction between <strong>-m</strong> and <strong>-M</strong>; 
that is,
+<strong>-m<em>MODULE</em>=foo,bar</strong> is the same as 
<strong>-M<em>MODULE</em>=foo,bar</strong>.
 </p>
 <p>A consequence of this is that <strong>-M<em>MODULE</em>=number</strong> 
never does a version check,
 unless <code><em>MODULE</em>::import()</code> itself is set up to do a version 
check, which
@@ -90980,9 +90543,10 @@
 <pre class="verbatim">    #!/usr/bin/perl -s
     if ($xyz) { print &quot;$xyz\n&quot; }
 </pre>
-<p>Do note that a switch like <strong>&ndash;help</strong> creates the 
variable <code>${-help}</code>, which is not compliant
-with <code>use strict &quot;refs&quot;</code>.  Also, when using this option 
on a script with
-warnings enabled you may get a lot of spurious &quot;used only once&quot; 
warnings.
+<p>Do note that a switch like <strong>&ndash;help</strong> creates the 
variable <code>${-help}</code>, which is
+not compliant with <code>use strict &quot;refs&quot;</code>.  Also, when using 
this option on a
+script with warnings enabled you may get a lot of spurious &quot;used only 
once&quot;
+warnings.
 </p>
 </dd>
 <dt><strong>-S</strong></dt>
@@ -91153,19 +90717,19 @@
 <code>__WARN__</code> hooks, as described in <a href="#perlvar-NAME">perlvar 
NAME</a> and &lsquo;perlfunc warn&rsquo;.
 See also <a href="#perldiag-NAME">perldiag NAME</a> and <a 
href="#perltrap-NAME">perltrap NAME</a>.  A fine-grained warning
 facility is also available if you want to manipulate entire classes
-of warnings; see <a href="warnings.html#Top">(warnings)</a> or <a 
href="#perllexwarn-NAME">perllexwarn NAME</a>.
+of warnings; see <a href="warnings.html#Top">(warnings)</a>.
 </p>
 </dd>
 <dt><strong>-W</strong></dt>
 <dd><a name="perlrun-_002dW"></a>
 <p>Enables all warnings regardless of <code>no warnings</code> or 
<code>$^W</code>.
-See <a href="#perllexwarn-NAME">perllexwarn NAME</a>.
+See <a href="warnings.html#Top">(warnings)</a>.
 </p>
 </dd>
 <dt><strong>-X</strong></dt>
 <dd><a name="perlrun-_002dX"></a>
 <p>Disables all warnings regardless of <code>use warnings</code> or 
<code>$^W</code>.
-See <a href="#perllexwarn-NAME">perllexwarn NAME</a>.
+See <a href="warnings.html#Top">(warnings)</a>.
 </p>
 </dd>
 <dt><strong>-x</strong></dt>
@@ -91205,7 +90769,7 @@
 Previous: <a href="#perlrun-DESCRIPTION" accesskey="p" rel="prev">perlrun 
DESCRIPTION</a>, Up: <a href="#perlrun" accesskey="u" rel="up">perlrun</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="ENVIRONMENT-2"></a>
-<h3 class="section">68.4 ENVIRONMENT</h3>
+<h3 class="section">69.4 ENVIRONMENT</h3>
 
 <dl compact="compact">
 <dt>HOME</dt>
@@ -91513,7 +91077,7 @@
 code. By manually setting a seed, this protection may be partially or
 completely lost.
 </p>
-<p>See <a href="#perlsec-Algorithmic-Complexity-Attacks">perlsec Algorithmic 
Complexity Attacks</a> and <a 
href="#perlrun-PERL_005fPERTURB_005fKEYS">PERL_PERTURB_KEYS</a>
+<p>See <a href="#perlsec-Algorithmic-Complexity-Attacks">perlsec Algorithmic 
Complexity Attacks</a>, <a 
href="#perlrun-PERL_005fPERTURB_005fKEYS">PERL_PERTURB_KEYS</a>, and
 <a href="#perlrun-PERL_005fHASH_005fSEED_005fDEBUG">PERL_HASH_SEED_DEBUG</a> 
for more information.
 </p>
 </dd>
@@ -91640,7 +91204,7 @@
 Next: <a href="#perlsource" accesskey="n" rel="next">perlsource</a>, Previous: 
<a href="#perlrun" accesskey="p" rel="prev">perlrun</a>, Up: <a href="#Top" 
accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="perlsec-1"></a>
-<h2 class="chapter">69 perlsec</h2>
+<h2 class="chapter">70 perlsec</h2>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perlsec-NAME" 
accesskey="1">perlsec NAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -91661,8 +91225,8 @@
 <p>
 Next: <a href="#perlsec-DESCRIPTION" accesskey="n" rel="next">perlsec 
DESCRIPTION</a>, Up: <a href="#perlsec" accesskey="u" rel="up">perlsec</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="NAME-68"></a>
-<h3 class="section">69.1 NAME</h3>
+<a name="NAME-69"></a>
+<h3 class="section">70.1 NAME</h3>
 
 <p>perlsec - Perl security
 </p>
@@ -91672,8 +91236,8 @@
 <p>
 Next: <a href="#perlsec-SECURITY-VULNERABILITY-CONTACT-INFORMATION" 
accesskey="n" rel="next">perlsec SECURITY VULNERABILITY CONTACT 
INFORMATION</a>, Previous: <a href="#perlsec-NAME" accesskey="p" 
rel="prev">perlsec NAME</a>, Up: <a href="#perlsec" accesskey="u" 
rel="up">perlsec</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="DESCRIPTION-67"></a>
-<h3 class="section">69.2 DESCRIPTION</h3>
+<a name="DESCRIPTION-68"></a>
+<h3 class="section">70.2 DESCRIPTION</h3>
 
 <p>Perl is designed to make it easy to program securely even when running
 with extra privileges, like setuid or setgid programs.  Unlike most
@@ -91690,7 +91254,7 @@
 Next: <a href="#perlsec-SECURITY-MECHANISMS-AND-CONCERNS" accesskey="n" 
rel="next">perlsec SECURITY MECHANISMS AND CONCERNS</a>, Previous: <a 
href="#perlsec-DESCRIPTION" accesskey="p" rel="prev">perlsec DESCRIPTION</a>, 
Up: <a href="#perlsec" accesskey="u" rel="up">perlsec</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="SECURITY-VULNERABILITY-CONTACT-INFORMATION"></a>
-<h3 class="section">69.3 SECURITY VULNERABILITY CONTACT INFORMATION</h3>
+<h3 class="section">70.3 SECURITY VULNERABILITY CONTACT INFORMATION</h3>
 
 <p>If you believe you have found a security vulnerability in Perl, please email
 address@hidden with details.  This points to a closed
@@ -91705,7 +91269,7 @@
 Next: <a href="#perlsec-SEE-ALSO" accesskey="n" rel="next">perlsec SEE 
ALSO</a>, Previous: <a 
href="#perlsec-SECURITY-VULNERABILITY-CONTACT-INFORMATION" accesskey="p" 
rel="prev">perlsec SECURITY VULNERABILITY CONTACT INFORMATION</a>, Up: <a 
href="#perlsec" accesskey="u" rel="up">perlsec</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="SECURITY-MECHANISMS-AND-CONCERNS"></a>
-<h3 class="section">69.4 SECURITY MECHANISMS AND CONCERNS</h3>
+<h3 class="section">70.4 SECURITY MECHANISMS AND CONCERNS</h3>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perlsec-Taint-mode" 
accesskey="1">perlsec Taint mode</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -91735,7 +91299,7 @@
 Next: <a href="#perlsec-Laundering-and-Detecting-Tainted-Data" accesskey="n" 
rel="next">perlsec Laundering and Detecting Tainted Data</a>, Up: <a 
href="#perlsec-SECURITY-MECHANISMS-AND-CONCERNS" accesskey="u" rel="up">perlsec 
SECURITY MECHANISMS AND CONCERNS</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Taint-mode"></a>
-<h4 class="subsection">69.4.1 Taint mode</h4>
+<h4 class="subsection">70.4.1 Taint mode</h4>
 
 <p>Perl automatically enables a set of special security checks, called 
<em>taint
 mode</em>, when it detects its program running with differing real and 
effective
@@ -91872,7 +91436,7 @@
 Next: <a href="#perlsec-Switches-On-the-_0022_0023_0021_0022-Line" 
accesskey="n" rel="next">perlsec Switches On the &quot;#!&quot; Line</a>, 
Previous: <a href="#perlsec-Taint-mode" accesskey="p" rel="prev">perlsec Taint 
mode</a>, Up: <a href="#perlsec-SECURITY-MECHANISMS-AND-CONCERNS" accesskey="u" 
rel="up">perlsec SECURITY MECHANISMS AND CONCERNS</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Laundering-and-Detecting-Tainted-Data"></a>
-<h4 class="subsection">69.4.2 Laundering and Detecting Tainted Data</h4>
+<h4 class="subsection">70.4.2 Laundering and Detecting Tainted Data</h4>
 
 <p>To test whether a variable contains tainted data, and whose use would
 thus trigger an &quot;Insecure dependency&quot; message, you can use the
@@ -91896,8 +91460,9 @@
 to clear your data&rsquo;s taintedness.  Values may be untainted by using them
 as keys in a hash; otherwise the only way to bypass the tainting
 mechanism is by referencing subpatterns from a regular expression match.
-Perl presumes that if you reference a substring using $1, $2, etc., that
-you knew what you were doing when you wrote the pattern.  That means using
+Perl presumes that if you reference a substring using $1, $2, etc. in a
+non-tainting pattern, that
+you knew what you were doing when you wrote that pattern.  That means using
 a bit of thought&ndash;don&rsquo;t just blindly untaint anything, or you 
defeat the
 entire mechanism.  It&rsquo;s better to verify that the variable has only good
 characters (for certain values of &quot;good&quot;) rather than checking 
whether it
@@ -91938,7 +91503,7 @@
 Next: <a href="#perlsec-Taint-mode-and-_0040INC" accesskey="n" 
rel="next">perlsec Taint mode and @INC</a>, Previous: <a 
href="#perlsec-Laundering-and-Detecting-Tainted-Data" accesskey="p" 
rel="prev">perlsec Laundering and Detecting Tainted Data</a>, Up: <a 
href="#perlsec-SECURITY-MECHANISMS-AND-CONCERNS" accesskey="u" rel="up">perlsec 
SECURITY MECHANISMS AND CONCERNS</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Switches-On-the-_0022_0023_0021_0022-Line"></a>
-<h4 class="subsection">69.4.3 Switches On the &quot;#!&quot; Line</h4>
+<h4 class="subsection">70.4.3 Switches On the &quot;#!&quot; Line</h4>
 
 <p>When you make a script executable, in order to make it usable as a
 command, the system will pass switches to perl from the script&rsquo;s #!
@@ -91956,7 +91521,7 @@
 Next: <a href="#perlsec-Cleaning-Up-Your-Path" accesskey="n" 
rel="next">perlsec Cleaning Up Your Path</a>, Previous: <a 
href="#perlsec-Switches-On-the-_0022_0023_0021_0022-Line" accesskey="p" 
rel="prev">perlsec Switches On the &quot;#!&quot; Line</a>, Up: <a 
href="#perlsec-SECURITY-MECHANISMS-AND-CONCERNS" accesskey="u" rel="up">perlsec 
SECURITY MECHANISMS AND CONCERNS</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Taint-mode-and-_0040INC"></a>
-<h4 class="subsection">69.4.4 Taint mode and @INC</h4>
+<h4 class="subsection">70.4.4 Taint mode and @INC</h4>
 
 <p>When the taint mode (<code>-T</code>) is in effect, the &quot;.&quot; 
directory is removed
 from <code>@INC</code>, and the environment variables <code>PERL5LIB</code> 
and <code>PERLLIB</code>
@@ -91988,7 +91553,7 @@
 Next: <a href="#perlsec-Security-Bugs" accesskey="n" rel="next">perlsec 
Security Bugs</a>, Previous: <a href="#perlsec-Taint-mode-and-_0040INC" 
accesskey="p" rel="prev">perlsec Taint mode and @INC</a>, Up: <a 
href="#perlsec-SECURITY-MECHANISMS-AND-CONCERNS" accesskey="u" rel="up">perlsec 
SECURITY MECHANISMS AND CONCERNS</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Cleaning-Up-Your-Path"></a>
-<h4 class="subsection">69.4.5 Cleaning Up Your Path</h4>
+<h4 class="subsection">70.4.5 Cleaning Up Your Path</h4>
 
 <p>For &quot;Insecure <code>$ENV{PATH}</code>&quot; messages, you need to set 
<code>$ENV{'PATH'}</code> to
 a known value, and each directory in the path must be absolute and
@@ -92041,7 +91606,7 @@
 best way to call something that might be subjected to shell escapes: just
 never call the shell at all.  
 </p>
-<pre class="verbatim">        use English '-no_match_vars';
+<pre class="verbatim">        use English;
         die &quot;Can't fork: $!&quot; unless defined($pid = open(KID, 
&quot;-|&quot;));
         if ($pid) {           # parent
             while (&lt;KID&gt;) {
@@ -92096,7 +91661,7 @@
 Next: <a href="#perlsec-Protecting-Your-Programs" accesskey="n" 
rel="next">perlsec Protecting Your Programs</a>, Previous: <a 
href="#perlsec-Cleaning-Up-Your-Path" accesskey="p" rel="prev">perlsec Cleaning 
Up Your Path</a>, Up: <a href="#perlsec-SECURITY-MECHANISMS-AND-CONCERNS" 
accesskey="u" rel="up">perlsec SECURITY MECHANISMS AND CONCERNS</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Security-Bugs"></a>
-<h4 class="subsection">69.4.6 Security Bugs</h4>
+<h4 class="subsection">70.4.6 Security Bugs</h4>
 
 <p>Beyond the obvious problems that stem from giving special privileges to
 systems as flexible as scripts, on many versions of Unix, set-id scripts
@@ -92147,7 +91712,7 @@
 Next: <a href="#perlsec-Unicode" accesskey="n" rel="next">perlsec Unicode</a>, 
Previous: <a href="#perlsec-Security-Bugs" accesskey="p" rel="prev">perlsec 
Security Bugs</a>, Up: <a href="#perlsec-SECURITY-MECHANISMS-AND-CONCERNS" 
accesskey="u" rel="up">perlsec SECURITY MECHANISMS AND CONCERNS</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Protecting-Your-Programs"></a>
-<h4 class="subsection">69.4.7 Protecting Your Programs</h4>
+<h4 class="subsection">70.4.7 Protecting Your Programs</h4>
 
 <p>There are a number of ways to hide the source to your Perl programs,
 with varying levels of &quot;security&quot;.
@@ -92191,7 +91756,7 @@
 Next: <a href="#perlsec-Algorithmic-Complexity-Attacks" accesskey="n" 
rel="next">perlsec Algorithmic Complexity Attacks</a>, Previous: <a 
href="#perlsec-Protecting-Your-Programs" accesskey="p" rel="prev">perlsec 
Protecting Your Programs</a>, Up: <a 
href="#perlsec-SECURITY-MECHANISMS-AND-CONCERNS" accesskey="u" rel="up">perlsec 
SECURITY MECHANISMS AND CONCERNS</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Unicode-1"></a>
-<h4 class="subsection">69.4.8 Unicode</h4>
+<h4 class="subsection">70.4.8 Unicode</h4>
 
 <p>Unicode is a new and complex technology and one may easily overlook
 certain security pitfalls.  See <a href="#perluniintro-NAME">perluniintro 
NAME</a> for an overview and
@@ -92204,7 +91769,7 @@
 Previous: <a href="#perlsec-Unicode" accesskey="p" rel="prev">perlsec 
Unicode</a>, Up: <a href="#perlsec-SECURITY-MECHANISMS-AND-CONCERNS" 
accesskey="u" rel="up">perlsec SECURITY MECHANISMS AND CONCERNS</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Algorithmic-Complexity-Attacks"></a>
-<h4 class="subsection">69.4.9 Algorithmic Complexity Attacks</h4>
+<h4 class="subsection">70.4.9 Algorithmic Complexity Attacks</h4>
 
 <p>Certain internal algorithms used in the implementation of Perl can
 be attacked by choosing the input carefully to consume large amounts
@@ -92321,8 +91886,8 @@
 <p>
 Previous: <a href="#perlsec-SECURITY-MECHANISMS-AND-CONCERNS" accesskey="p" 
rel="prev">perlsec SECURITY MECHANISMS AND CONCERNS</a>, Up: <a href="#perlsec" 
accesskey="u" rel="up">perlsec</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-36"></a>
-<h3 class="section">69.5 SEE ALSO</h3>
+<a name="SEE-ALSO-35"></a>
+<h3 class="section">70.5 SEE ALSO</h3>
 
 <p><a href="#perlrun-NAME">perlrun NAME</a> for its description of cleaning up 
environment variables.
 </p>
@@ -92333,7 +91898,7 @@
 Next: <a href="#perlstyle" accesskey="n" rel="next">perlstyle</a>, Previous: 
<a href="#perlsec" accesskey="p" rel="prev">perlsec</a>, Up: <a href="#Top" 
accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="perlsource-1"></a>
-<h2 class="chapter">70 perlsource</h2>
+<h2 class="chapter">71 perlsource</h2>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perlsource-NAME" 
accesskey="1">perlsource NAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -92350,8 +91915,8 @@
 <p>
 Next: <a href="#perlsource-DESCRIPTION" accesskey="n" rel="next">perlsource 
DESCRIPTION</a>, Up: <a href="#perlsource" accesskey="u" 
rel="up">perlsource</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="NAME-69"></a>
-<h3 class="section">70.1 NAME</h3>
+<a name="NAME-70"></a>
+<h3 class="section">71.1 NAME</h3>
 
 <p>perlsource - A guide to the Perl source tree
 </p>
@@ -92361,8 +91926,8 @@
 <p>
 Next: <a href="#perlsource-FINDING-YOUR-WAY-AROUND" accesskey="n" 
rel="next">perlsource FINDING YOUR WAY AROUND</a>, Previous: <a 
href="#perlsource-NAME" accesskey="p" rel="prev">perlsource NAME</a>, Up: <a 
href="#perlsource" accesskey="u" rel="up">perlsource</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="DESCRIPTION-68"></a>
-<h3 class="section">70.2 DESCRIPTION</h3>
+<a name="DESCRIPTION-69"></a>
+<h3 class="section">71.2 DESCRIPTION</h3>
 
 <p>This document describes the layout of the Perl source tree. If you&rsquo;re
 hacking on the Perl core, this will help you find what you&rsquo;re looking
@@ -92375,7 +91940,7 @@
 Previous: <a href="#perlsource-DESCRIPTION" accesskey="p" 
rel="prev">perlsource DESCRIPTION</a>, Up: <a href="#perlsource" accesskey="u" 
rel="up">perlsource</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="FINDING-YOUR-WAY-AROUND"></a>
-<h3 class="section">70.3 FINDING YOUR WAY AROUND</h3>
+<h3 class="section">71.3 FINDING YOUR WAY AROUND</h3>
 
 <p>The Perl source tree is big. Here&rsquo;s some of the thing you&rsquo;ll 
find in
 it:
@@ -92406,7 +91971,7 @@
 Next: <a href="#perlsource-Core-modules" accesskey="n" rel="next">perlsource 
Core modules</a>, Up: <a href="#perlsource-FINDING-YOUR-WAY-AROUND" 
accesskey="u" rel="up">perlsource FINDING YOUR WAY AROUND</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="C-code"></a>
-<h4 class="subsection">70.3.1 C code</h4>
+<h4 class="subsection">71.3.1 C code</h4>
 
 <p>The C source code and header files mostly live in the root of the
 source tree. There are a few platform-specific directories which
@@ -92423,7 +91988,7 @@
 Next: <a href="#perlsource-Tests" accesskey="n" rel="next">perlsource 
Tests</a>, Previous: <a href="#perlsource-C-code" accesskey="p" 
rel="prev">perlsource C code</a>, Up: <a 
href="#perlsource-FINDING-YOUR-WAY-AROUND" accesskey="u" rel="up">perlsource 
FINDING YOUR WAY AROUND</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Core-modules"></a>
-<h4 class="subsection">70.3.2 Core modules</h4>
+<h4 class="subsection">71.3.2 Core modules</h4>
 
 <p>Modules shipped as part of the Perl core live in four subdirectories.
 Two of these directories contain modules that live in the core, and two
@@ -92439,15 +92004,20 @@
 </p>
 </li><li> <samp>ext/</samp>
 
-<p>This directory contains XS-using modules which are only released as
-part of the core. These modules generally have their <samp>Makefile.PL</samp> 
and
-are laid out more like a typical CPAN module.
+<p>Like <samp>lib/</samp>, this directory contains modules which are only 
released
+as part of the core.  Unlike <samp>lib/</samp>, however, a module under 
<samp>ext/</samp>
+generally has a CPAN-style directory- and file-layout and its own
+<samp>Makefile.PL</samp>.  There is no expectation that a module under 
<samp>ext/</samp>
+will work with earlier versions of Perl 5.  Hence, such a module may
+take full advantage of syntactical and other improvements in Perl 5
+blead.
 </p>
 </li><li> <samp>dist/</samp>
 
 <p>This directory is for dual-life modules where the blead source is
 canonical. Note that some modules in this directory may not yet have
-been released separately on CPAN.
+been released separately on CPAN.  Modules under <samp>dist/</samp> should make
+an effort to work with earlier versions of Perl 5.
 </p>
 </li><li> <samp>cpan/</samp>
 
@@ -92470,7 +92040,7 @@
 Next: <a href="#perlsource-Documentation" accesskey="n" rel="next">perlsource 
Documentation</a>, Previous: <a href="#perlsource-Core-modules" accesskey="p" 
rel="prev">perlsource Core modules</a>, Up: <a 
href="#perlsource-FINDING-YOUR-WAY-AROUND" accesskey="u" rel="up">perlsource 
FINDING YOUR WAY AROUND</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Tests"></a>
-<h4 class="subsection">70.3.3 Tests</h4>
+<h4 class="subsection">71.3.3 Tests</h4>
 
 <p>The Perl core has an extensive test suite. If you add new tests (or new
 modules with tests), you may need to update the <samp>t/TEST</samp> file so 
that
@@ -92517,10 +92087,10 @@
 </p>
 </li><li> <samp>t/opbasic/</samp>
 
-<p>Tests for perl&rsquo;s built in functions which, like those in 
<samp>t/op/</samp>, do not fit
-into any of the other directories, but which, in addition, cannot use
-<samp>t/test.pl</samp>,as that program depends on functionality which the
-test file itself is testing.
+<p>Tests for perl&rsquo;s built in functions which, like those in 
<samp>t/op/</samp>, do
+not fit into any of the other directories, but which, in addition,
+cannot use <samp>t/test.pl</samp>,as that program depends on functionality 
which
+the test file itself is testing.
 </p>
 </li><li> <samp>t/re/</samp>
 
@@ -92565,7 +92135,7 @@
 Next: <a href="#perlsource-Hacking-tools-and-documentation" accesskey="n" 
rel="next">perlsource Hacking tools and documentation</a>, Previous: <a 
href="#perlsource-Tests" accesskey="p" rel="prev">perlsource Tests</a>, Up: <a 
href="#perlsource-FINDING-YOUR-WAY-AROUND" accesskey="u" rel="up">perlsource 
FINDING YOUR WAY AROUND</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Documentation-1"></a>
-<h4 class="subsection">70.3.4 Documentation</h4>
+<h4 class="subsection">71.3.4 Documentation</h4>
 
 <p>All of the core documentation intended for end users lives in 
<samp>pod/</samp>.
 Individual modules in <samp>lib/</samp>, <samp>ext/</samp>, 
<samp>dist/</samp>, and <samp>cpan/</samp> usually
@@ -92582,7 +92152,7 @@
 Next: <a href="#perlsource-Build-system" accesskey="n" rel="next">perlsource 
Build system</a>, Previous: <a href="#perlsource-Documentation" accesskey="p" 
rel="prev">perlsource Documentation</a>, Up: <a 
href="#perlsource-FINDING-YOUR-WAY-AROUND" accesskey="u" rel="up">perlsource 
FINDING YOUR WAY AROUND</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Hacking-tools-and-documentation"></a>
-<h4 class="subsection">70.3.5 Hacking tools and documentation</h4>
+<h4 class="subsection">71.3.5 Hacking tools and documentation</h4>
 
 <p>The <samp>Porting</samp> directory contains a grab bag of code and 
documentation
 intended to help porters work on Perl. Some of the highlights include:
@@ -92613,7 +92183,7 @@
 Next: <a href="#perlsource-AUTHORS" accesskey="n" rel="next">perlsource 
<samp>AUTHORS</samp></a>, Previous: <a 
href="#perlsource-Hacking-tools-and-documentation" accesskey="p" 
rel="prev">perlsource Hacking tools and documentation</a>, Up: <a 
href="#perlsource-FINDING-YOUR-WAY-AROUND" accesskey="u" rel="up">perlsource 
FINDING YOUR WAY AROUND</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Build-system"></a>
-<h4 class="subsection">70.3.6 Build system</h4>
+<h4 class="subsection">71.3.6 Build system</h4>
 
 <p>The Perl build system starts with the <samp>Configure</samp> script in the 
root
 directory.
@@ -92640,7 +92210,7 @@
 Next: <a href="#perlsource-MANIFEST" accesskey="n" rel="next">perlsource 
<samp>MANIFEST</samp></a>, Previous: <a href="#perlsource-Build-system" 
accesskey="p" rel="prev">perlsource Build system</a>, Up: <a 
href="#perlsource-FINDING-YOUR-WAY-AROUND" accesskey="u" rel="up">perlsource 
FINDING YOUR WAY AROUND</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="AUTHORS-5"></a>
-<h4 class="subsection">70.3.7 <samp>AUTHORS</samp></h4>
+<h4 class="subsection">71.3.7 <samp>AUTHORS</samp></h4>
 
 <p>This file lists everyone who&rsquo;s contributed to Perl. If you submit a
 patch, you should add your name to this file as part of the patch.
@@ -92652,7 +92222,7 @@
 Previous: <a href="#perlsource-AUTHORS" accesskey="p" rel="prev">perlsource 
<samp>AUTHORS</samp></a>, Up: <a href="#perlsource-FINDING-YOUR-WAY-AROUND" 
accesskey="u" rel="up">perlsource FINDING YOUR WAY AROUND</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="MANIFEST"></a>
-<h4 class="subsection">70.3.8 <samp>MANIFEST</samp></h4>
+<h4 class="subsection">71.3.8 <samp>MANIFEST</samp></h4>
 
 <p>The <samp>MANIFEST</samp> file in the root of the source tree contains a 
list of
 every file in the Perl core, as well as a brief description of each
@@ -92669,7 +92239,7 @@
 Next: <a href="#perlsub" accesskey="n" rel="next">perlsub</a>, Previous: <a 
href="#perlsource" accesskey="p" rel="prev">perlsource</a>, Up: <a href="#Top" 
accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="perlstyle-1"></a>
-<h2 class="chapter">71 perlstyle</h2>
+<h2 class="chapter">72 perlstyle</h2>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perlstyle-NAME" 
accesskey="1">perlstyle NAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -92684,8 +92254,8 @@
 <p>
 Next: <a href="#perlstyle-DESCRIPTION" accesskey="n" rel="next">perlstyle 
DESCRIPTION</a>, Up: <a href="#perlstyle" accesskey="u" rel="up">perlstyle</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="NAME-70"></a>
-<h3 class="section">71.1 NAME</h3>
+<a name="NAME-71"></a>
+<h3 class="section">72.1 NAME</h3>
 
 <p>perlstyle - Perl style guide
 </p>
@@ -92695,8 +92265,8 @@
 <p>
 Previous: <a href="#perlstyle-NAME" accesskey="p" rel="prev">perlstyle 
NAME</a>, Up: <a href="#perlstyle" accesskey="u" rel="up">perlstyle</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="DESCRIPTION-69"></a>
-<h3 class="section">71.2 DESCRIPTION</h3>
+<a name="DESCRIPTION-70"></a>
+<h3 class="section">72.2 DESCRIPTION</h3>
 
 <p>Each programmer will, of course, have his or her own preferences in
 regards to formatting, but there are some general guidelines that will
@@ -92926,7 +92496,7 @@
 Next: <a href="#perlsyn" accesskey="n" rel="next">perlsyn</a>, Previous: <a 
href="#perlstyle" accesskey="p" rel="prev">perlstyle</a>, Up: <a href="#Top" 
accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="perlsub-2"></a>
-<h2 class="chapter">72 perlsub</h2>
+<h2 class="chapter">73 perlsub</h2>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perlsub-NAME" 
accesskey="1">perlsub NAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -92945,8 +92515,8 @@
 <p>
 Next: <a href="#perlsub-SYNOPSIS" accesskey="n" rel="next">perlsub 
SYNOPSIS</a>, Up: <a href="#perlsub" accesskey="u" rel="up">perlsub</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="NAME-71"></a>
-<h3 class="section">72.1 NAME</h3>
+<a name="NAME-72"></a>
+<h3 class="section">73.1 NAME</h3>
 
 <p>perlsub - Perl subroutines
 </p>
@@ -92957,7 +92527,7 @@
 Next: <a href="#perlsub-DESCRIPTION" accesskey="n" rel="next">perlsub 
DESCRIPTION</a>, Previous: <a href="#perlsub-NAME" accesskey="p" 
rel="prev">perlsub NAME</a>, Up: <a href="#perlsub" accesskey="u" 
rel="up">perlsub</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="SYNOPSIS-10"></a>
-<h3 class="section">72.2 SYNOPSIS</h3>
+<h3 class="section">73.2 SYNOPSIS</h3>
 
 <p>To declare subroutines:
 </p>
@@ -92968,15 +92538,19 @@
 
     sub NAME BLOCK                # A declaration and a definition.
     sub NAME(PROTO) BLOCK         #  ditto, but with prototypes
+    sub NAME SIG BLOCK            #  with signature
     sub NAME : ATTRS BLOCK        #  with attributes
     sub NAME(PROTO) : ATTRS BLOCK #  with prototypes and attributes
+    sub NAME : ATTRS SIG BLOCK    #  with attributes and signature
 </pre>
 <p>To define an anonymous subroutine at runtime:
 </p>
 <pre class="verbatim">    $subref = sub BLOCK;                 # no proto
     $subref = sub (PROTO) BLOCK;         # with proto
+    $subref = sub SIG BLOCK;             # with signature
     $subref = sub : ATTRS BLOCK;         # with attributes
     $subref = sub (PROTO) : ATTRS BLOCK; # with proto and attributes
+    $subref = sub : ATTRS SIG BLOCK;     # with attribs and signature
 </pre>
 <p>To import subroutines:
 </p>
@@ -92995,8 +92569,8 @@
 <p>
 Next: <a href="#perlsub-SEE-ALSO" accesskey="n" rel="next">perlsub SEE 
ALSO</a>, Previous: <a href="#perlsub-SYNOPSIS" accesskey="p" 
rel="prev">perlsub SYNOPSIS</a>, Up: <a href="#perlsub" accesskey="u" 
rel="up">perlsub</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="DESCRIPTION-70"></a>
-<h3 class="section">72.3 DESCRIPTION</h3>
+<a name="DESCRIPTION-71"></a>
+<h3 class="section">73.3 DESCRIPTION</h3>
 
 <p>Like many languages, Perl provides for user-defined subroutines.
 These may be located anywhere in the main program, loaded in from
@@ -93015,7 +92589,9 @@
 function without an explicit return statement is called a subroutine, but
 there&rsquo;s really no difference from Perl&rsquo;s perspective.)
 </p>
-<p>Any arguments passed in show up in the array <code>@_</code>.  Therefore, if
+<p>Any arguments passed in show up in the array <code>@_</code>.
+(They may also show up in lexical variables introduced by a signature;
+see <a href="#perlsub-Signatures">Signatures</a> below.)  Therefore, if
 you called a function with two arguments, those would be stored in
 <code>$_[0]</code> and <code>$_[1]</code>.  The array <code>@_</code> is a 
local array, but its
 elements are aliases for the actual scalar parameters.  In particular,
@@ -93042,7 +92618,8 @@
 like a <code>foreach</code> or a <code>while</code>, the returned value is 
unspecified. The
 empty sub returns the empty list.
 </p>
-<p>Perl does not have named formal parameters.  In practice all you
+<p>Aside from an experimental facility (see <a 
href="#perlsub-Signatures">Signatures</a> below),
+Perl does not have named formal parameters.  In practice all you
 do is assign to a <code>my()</code> list of these.  Variables that aren&rsquo;t
 declared to be private are global variables.  For gory details
 on creating private variables, see <a 
href="#perlsub-Private-Variables-via-my_0028_0029">Private Variables via 
my()</a>
@@ -93187,32 +92764,91 @@
 core, as are modules whose names are in all lower case.  A subroutine in
 all capitals is a loosely-held convention meaning it will be called
 indirectly by the run-time system itself, usually due to a triggered event.
-Subroutines that do special, pre-defined things include <code>AUTOLOAD</code>, 
<code>CLONE</code>,
-<code>DESTROY</code> plus all functions mentioned in <a 
href="#perltie-NAME">perltie NAME</a> and <a 
href="PerlIO-via.html#Top">(PerlIO-via)</a>.
+Subroutines whose name start with a left parenthesis are also reserved the 
+same way. The following is a list of some subroutines that currently do 
+special, pre-defined things.
+</p>
+<dl compact="compact">
+<dt>documented later in this document</dt>
+<dd><a name="perlsub-documented-later-in-this-document"></a>
+<p><code>AUTOLOAD</code>
+</p>
+</dd>
+<dt>documented in <a href="#perlmod-NAME">perlmod NAME</a></dt>
+<dd><a name="perlsub-documented-in-perlmod-NAME"></a>
+<p><code>CLONE</code>, <code>CLONE_SKIP</code>, 
+</p>
+</dd>
+<dt>documented in <a href="#perlobj-NAME">perlobj NAME</a></dt>
+<dd><a name="perlsub-documented-in-perlobj-NAME"></a>
+<p><code>DESTROY</code>
+</p>
+</dd>
+<dt>documented in <a href="#perltie-NAME">perltie NAME</a></dt>
+<dd><a name="perlsub-documented-in-perltie-NAME"></a>
+<p><code>BINMODE</code>, <code>CLEAR</code>, <code>CLOSE</code>, 
<code>DELETE</code>, <code>DESTROY</code>, <code>EOF</code>, 
<code>EXISTS</code>, 
+<code>EXTEND</code>, <code>FETCH</code>, <code>FETCHSIZE</code>, 
<code>FILENO</code>, <code>FIRSTKEY</code>, <code>GETC</code>, 
+<code>NEXTKEY</code>, <code>OPEN</code>, <code>POP</code>, <code>PRINT</code>, 
<code>PRINTF</code>, <code>PUSH</code>, <code>READ</code>, 
+<code>READLINE</code>, <code>SCALAR</code>, <code>SEEK</code>, 
<code>SHIFT</code>, <code>SPLICE</code>, <code>STORE</code>, 
+<code>STORESIZE</code>, <code>TELL</code>, <code>TIEARRAY</code>, 
<code>TIEHANDLE</code>, <code>TIEHASH</code>, 
+<code>TIESCALAR</code>, <code>UNSHIFT</code>, <code>UNTIE</code>, 
<code>WRITE</code>
+</p>
+</dd>
+<dt>documented in <a href="PerlIO-via.html#Top">(PerlIO-via)</a></dt>
+<dd><a name="perlsub-documented-in-PerlIO_002dvia"></a>
+<p><code>BINMODE</code>, <code>CLEARERR</code>, <code>CLOSE</code>, 
<code>EOF</code>, <code>ERROR</code>, <code>FDOPEN</code>, <code>FILENO</code>, 
+<code>FILL</code>, <code>FLUSH</code>, <code>OPEN</code>, <code>POPPED</code>, 
<code>PUSHED</code>, <code>READ</code>, <code>SEEK</code>, 
+<code>SETLINEBUF</code>, <code>SYSOPEN</code>, <code>TELL</code>, 
<code>UNREAD</code>, <code>UTF8</code>, <code>WRITE</code>
+</p>
+</dd>
+<dt>documented in <a href="#perlfunc-NAME">perlfunc NAME</a></dt>
+<dd><a name="perlsub-documented-in-perlfunc-NAME"></a>
+<p><a href="_perlfunc.html#use">(_perlfunc)<code>import</code></a>, <a 
href="_perlfunc.html#use">(_perlfunc)<code>unimport</code></a>,
+<a href="_perlfunc.html#require">(_perlfunc)<code>INC</code></a>
+</p>
+</dd>
+<dt>documented in <a href="UNIVERSAL.html#Top">(UNIVERSAL)</a></dt>
+<dd><a name="perlsub-documented-in-UNIVERSAL"></a>
+<p><code>VERSION</code>
+</p>
+</dd>
+<dt>documented in <a href="#perldebguts-NAME">perldebguts NAME</a></dt>
+<dd><a name="perlsub-documented-in-perldebguts-NAME"></a>
+<p><code>DB::DB</code>, <code>DB::sub</code>, <code>DB::lsub</code>, 
<code>DB::goto</code>, <code>DB::postponed</code>
 </p>
+</dd>
+<dt>undocumented, used internally by the <a 
href="overload.html#Top">(overload)</a> feature</dt>
+<dd><a 
name="perlsub-undocumented_002c-used-internally-by-the-overload-feature"></a>
+<p>any starting with <code>(</code>
+</p>
+</dd>
+</dl>
+
 <p>The <code>BEGIN</code>, <code>UNITCHECK</code>, <code>CHECK</code>, 
<code>INIT</code> and <code>END</code> subroutines
 are not so much subroutines as named special code blocks, of which you
 can have more than one in a package, and which you can <strong>not</strong> 
call
 explicitly.  See <a 
href="#perlmod-BEGIN_002c-UNITCHECK_002c-CHECK_002c-INIT-and-END">perlmod 
BEGIN, UNITCHECK, CHECK, INIT and END</a>
 </p>
 <table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a 
href="#perlsub-Private-Variables-via-my_0028_0029" accesskey="1">perlsub 
Private Variables via my()</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#perlsub-Signatures" 
accesskey="1">perlsub Signatures</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a 
href="#perlsub-Private-Variables-via-my_0028_0029" accesskey="2">perlsub 
Private Variables via my()</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlsub-Persistent-Private-Variables" accesskey="2">perlsub Persistent 
Private Variables</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlsub-Persistent-Private-Variables" accesskey="3">perlsub Persistent 
Private Variables</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlsub-Temporary-Values-via-local_0028_0029" accesskey="3">perlsub 
Temporary Values via local()</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlsub-Temporary-Values-via-local_0028_0029" accesskey="4">perlsub 
Temporary Values via local()</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perlsub-Lvalue-subroutines" 
accesskey="4">perlsub Lvalue subroutines</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#perlsub-Lvalue-subroutines" 
accesskey="5">perlsub Lvalue subroutines</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlsub-Lexical-Subroutines" accesskey="5">perlsub Lexical 
Subroutines</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlsub-Lexical-Subroutines" accesskey="6">perlsub Lexical 
Subroutines</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlsub-Passing-Symbol-Table-Entries-_0028typeglobs_0029" 
accesskey="6">perlsub Passing Symbol Table Entries 
(typeglobs)</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlsub-Passing-Symbol-Table-Entries-_0028typeglobs_0029" 
accesskey="7">perlsub Passing Symbol Table Entries 
(typeglobs)</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlsub-When-to-Still-Use-local_0028_0029" accesskey="7">perlsub When to 
Still Use local()</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlsub-When-to-Still-Use-local_0028_0029" accesskey="8">perlsub When to 
Still Use local()</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perlsub-Pass-by-Reference" 
accesskey="8">perlsub Pass by Reference</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#perlsub-Pass-by-Reference" 
accesskey="9">perlsub Pass by Reference</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perlsub-Prototypes" 
accesskey="9">perlsub Prototypes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#perlsub-Prototypes">perlsub 
Prototypes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perlsub-Constant-Functions">perlsub Constant 
Functions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
@@ -93225,13 +92861,214 @@
 </table>
 
 <hr>
+<a name="perlsub-Signatures"></a>
+<div class="header">
+<p>
+Next: <a href="#perlsub-Private-Variables-via-my_0028_0029" accesskey="n" 
rel="next">perlsub Private Variables via my()</a>, Up: <a 
href="#perlsub-DESCRIPTION" accesskey="u" rel="up">perlsub DESCRIPTION</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
+</div>
+<a name="Signatures"></a>
+<h4 class="subsection">73.3.1 Signatures</h4>
+
+<p><strong>WARNING</strong>: Subroutine signatures are experimental.  The 
feature may be
+modified or removed in future versions of Perl.
+</p>
+<p>Perl has an experimental facility to allow a subroutine&rsquo;s formal
+parameters to be introduced by special syntax, separate from the
+procedural code of the subroutine body.  The formal parameter list
+is known as a <em>signature</em>.  The facility must be enabled first by a
+pragmatic declaration, <code>use feature 'signatures'</code>, and it will 
produce
+a warning unless the &quot;experimental::signatures&quot; warnings category is
+disabled.
+</p>
+<p>The signature is part of a subroutine&rsquo;s body.  Normally the body of a
+subroutine is simply a braced block of code.  When using a signature,
+the signature is a parenthesised list that goes immediately before
+the braced block.  The signature declares lexical variables that are
+in scope for the block.  When the subroutine is called, the signature
+takes control first.  It populates the signature variables from the
+list of arguments that were passed.  If the argument list doesn&rsquo;t meet
+the requirements of the signature, then it will throw an exception.
+When the signature processing is complete, control passes to the block.
+</p>
+<p>Positional parameters are handled by simply naming scalar variables in
+the signature.  For example,
+</p>
+<pre class="verbatim">    sub foo ($left, $right) {
+        return $left + $right;
+    }
+</pre>
+<p>takes two positional parameters, which must be filled at runtime by
+two arguments.  By default the parameters are mandatory, and it is
+not permitted to pass more arguments than expected.  So the above is
+equivalent to
+</p>
+<pre class="verbatim">    sub foo {
+        die &quot;Too many arguments for subroutine&quot; unless @_ &lt;= 2;
+        die &quot;Too few arguments for subroutine&quot; unless @_ &gt;= 2;
+        my $left = $_[0];
+        my $right = $_[1];
+        return $left + $right;
+    }
+</pre>
+<p>An argument can be ignored by omitting the main part of the name from
+a parameter declaration, leaving just a bare <code>$</code> sigil.  For 
example,
+</p>
+<pre class="verbatim">    sub foo ($first, $, $third) {
+        return &quot;first=$first, third=$third&quot;;
+    }
+</pre>
+<p>Although the ignored argument doesn&rsquo;t go into a variable, it is still
+mandatory for the caller to pass it.
+</p>
+<p>A positional parameter is made optional by giving a default value,
+separated from the parameter name by <code>=</code>:
+</p>
+<pre class="verbatim">    sub foo ($left, $right = 0) {
+        return $left + $right;
+    }
+</pre>
+<p>The above subroutine may be called with either one or two arguments.
+The default value expression is evaluated when the subroutine is called,
+so it may provide different default values for different calls.  It is
+only evaluated if the argument was actually omitted from the call.
+For example,
+</p>
+<pre class="verbatim">    my $auto_id = 0;
+    sub foo ($thing, $id = $auto_id++) {
+        print &quot;$thing has ID $id&quot;;
+    }
+</pre>
+<p>automatically assigns distinct sequential IDs to things for which no
+ID was supplied by the caller.  A default value expression may also
+refer to parameters earlier in the signature, making the default for
+one parameter vary according to the earlier parameters.  For example,
+</p>
+<pre class="verbatim">    sub foo ($first_name, $surname, $nickname = 
$first_name) {
+        print &quot;$first_name $surname is known as 
\&quot;$nickname\&quot;&quot;;
+    }
+</pre>
+<p>An optional parameter can be nameless just like a mandatory parameter.
+For example,
+</p>
+<pre class="verbatim">    sub foo ($thing, $ = 1) {
+        print $thing;
+    }
+</pre>
+<p>The parameter&rsquo;s default value will still be evaluated if the 
corresponding
+argument isn&rsquo;t supplied, even though the value won&rsquo;t be stored 
anywhere.
+This is in case evaluating it has important side effects.  However, it
+will be evaluated in void context, so if it doesn&rsquo;t have side effects
+and is not trivial it will generate a warning if the &quot;void&quot; warning
+category is enabled.  If a nameless optional parameter&rsquo;s default value
+is not important, it may be omitted just as the parameter&rsquo;s name was:
+</p>
+<pre class="verbatim">    sub foo ($thing, $=) {
+        print $thing;
+    }
+</pre>
+<p>Optional positional parameters must come after all mandatory positional
+parameters.  (If there are no mandatory positional parameters then an
+optional positional parameters can be the first thing in the signature.)
+If there are multiple optional positional parameters and not enough
+arguments are supplied to fill them all, they will be filled from left
+to right.
+</p>
+<p>After positional parameters, additional arguments may be captured in a
+slurpy parameter.  The simplest form of this is just an array variable:
+</p>
+<pre class="verbatim">    sub foo ($filter, @inputs) {
+        print $filter-&gt;($_) foreach @inputs;
+    }
+</pre>
+<p>With a slurpy parameter in the signature, there is no upper limit on how
+many arguments may be passed.  A slurpy array parameter may be nameless
+just like a positional parameter, in which case its only effect is to
+turn off the argument limit that would otherwise apply:
+</p>
+<pre class="verbatim">    sub foo ($thing, @) {
+        print $thing;
+    }
+</pre>
+<p>A slurpy parameter may instead be a hash, in which case the arguments
+available to it are interpreted as alternating keys and values.
+There must be as many keys as values: if there is an odd argument then
+an exception will be thrown.  Keys will be stringified, and if there are
+duplicates then the later instance takes precedence over the earlier,
+as with standard hash construction.
+</p>
+<pre class="verbatim">    sub foo ($filter, %inputs) {
+        print $filter-&gt;($_, $inputs{$_}) foreach sort keys %inputs;
+    }
+</pre>
+<p>A slurpy hash parameter may be nameless just like other kinds of
+parameter.  It still insists that the number of arguments available to
+it be even, even though they&rsquo;re not being put into a variable.
+</p>
+<pre class="verbatim">    sub foo ($thing, %) {
+        print $thing;
+    }
+</pre>
+<p>A slurpy parameter, either array or hash, must be the last thing in the
+signature.  It may follow mandatory and optional positional parameters;
+it may also be the only thing in the signature.  Slurpy parameters cannot
+have default values: if no arguments are supplied for them then you get
+an empty array or empty hash.
+</p>
+<p>A signature may be entirely empty, in which case all it does is check
+that the caller passed no arguments:
+</p>
+<pre class="verbatim">    sub foo () {
+        return 123;
+    }
+</pre>
+<p>When using a signature, the arguments are still available in the special
+array variable <code>@_</code>, in addition to the lexical variables of the
+signature.  There is a difference between the two ways of accessing the
+arguments: <code>@_</code> <em>aliases</em> the arguments, but the signature 
variables
+get <em>copies</em> of the arguments.  So writing to a signature variable
+only changes that variable, and has no effect on the caller&rsquo;s variables,
+but writing to an element of <code>@_</code> modifies whatever the caller used 
to
+supply that argument.
+</p>
+<p>There is a potential syntactic ambiguity between signatures and prototypes
+(see <a href="#perlsub-Prototypes">Prototypes</a>), because both start with an 
opening parenthesis and
+both can appear in some of the same places, such as just after the name
+in a subroutine declaration.  For historical reasons, when signatures
+are not enabled, any opening parenthesis in such a context will trigger
+very forgiving prototype parsing.  Most signatures will be interpreted
+as prototypes in those circumstances, but won&rsquo;t be valid prototypes.
+(A valid prototype cannot contain any alphabetic character.)  This will
+lead to somewhat confusing error messages.
+</p>
+<p>To avoid ambiguity, when signatures are enabled the special syntax
+for prototypes is disabled.  There is no attempt to guess whether a
+parenthesised group was intended to be a prototype or a signature.
+To give a subroutine a prototype under these circumstances, use a
+<a href="attributes.html#Built_002din-Attributes">(attributes)prototype 
attribute</a>.  For example,
+</p>
+<pre class="verbatim">    sub foo :prototype($) { $_[0] }
+</pre>
+<p>It is entirely possible for a subroutine to have both a prototype and
+a signature.  They do different jobs: the prototype affects compilation
+of calls to the subroutine, and the signature puts argument values into
+lexical variables at runtime.  You can therefore write
+</p>
+<pre class="verbatim">    sub foo :prototype($$) ($left, $right) {
+        return $left + $right;
+    }
+</pre>
+<p>The prototype attribute, and any other attributes, must come before
+the signature.  The signature always immediately precedes the block of
+the subroutine&rsquo;s body.
+</p>
+<hr>
 <a name="perlsub-Private-Variables-via-my_0028_0029"></a>
 <div class="header">
 <p>
-Next: <a href="#perlsub-Persistent-Private-Variables" accesskey="n" 
rel="next">perlsub Persistent Private Variables</a>, Up: <a 
href="#perlsub-DESCRIPTION" accesskey="u" rel="up">perlsub DESCRIPTION</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
+Next: <a href="#perlsub-Persistent-Private-Variables" accesskey="n" 
rel="next">perlsub Persistent Private Variables</a>, Previous: <a 
href="#perlsub-Signatures" accesskey="p" rel="prev">perlsub Signatures</a>, Up: 
<a href="#perlsub-DESCRIPTION" accesskey="u" rel="up">perlsub DESCRIPTION</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Private-Variables-via-my_0028_0029"></a>
-<h4 class="subsection">72.3.1 Private Variables via my()</h4>
+<h4 class="subsection">73.3.2 Private Variables via my()</h4>
 
 <p>Synopsis:
 </p>
@@ -93430,7 +93267,7 @@
 Next: <a href="#perlsub-Temporary-Values-via-local_0028_0029" accesskey="n" 
rel="next">perlsub Temporary Values via local()</a>, Previous: <a 
href="#perlsub-Private-Variables-via-my_0028_0029" accesskey="p" 
rel="prev">perlsub Private Variables via my()</a>, Up: <a 
href="#perlsub-DESCRIPTION" accesskey="u" rel="up">perlsub DESCRIPTION</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Persistent-Private-Variables"></a>
-<h4 class="subsection">72.3.2 Persistent Private Variables</h4>
+<h4 class="subsection">73.3.3 Persistent Private Variables</h4>
 
 <p>There are two ways to build persistent private variables in Perl 5.10.
 First, you can simply use the <code>state</code> feature. Or, you can use 
closures,
@@ -93450,7 +93287,7 @@
 Next: <a href="#perlsub-Persistent-variables-with-closures" accesskey="n" 
rel="next">perlsub Persistent variables with closures</a>, Up: <a 
href="#perlsub-Persistent-Private-Variables" accesskey="u" rel="up">perlsub 
Persistent Private Variables</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Persistent-variables-via-state_0028_0029"></a>
-<h4 class="subsubsection">72.3.2.1 Persistent variables via state()</h4>
+<h4 class="subsubsection">73.3.3.1 Persistent variables via state()</h4>
 
 <p>Beginning with Perl 5.10.0, you can declare variables with the 
<code>state</code>
 keyword in place of <code>my</code>.  For that to work, though, you must have
@@ -93495,7 +93332,7 @@
 Previous: <a href="#perlsub-Persistent-variables-via-state_0028_0029" 
accesskey="p" rel="prev">perlsub Persistent variables via state()</a>, Up: <a 
href="#perlsub-Persistent-Private-Variables" accesskey="u" rel="up">perlsub 
Persistent Private Variables</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Persistent-variables-with-closures"></a>
-<h4 class="subsubsection">72.3.2.2 Persistent variables with closures</h4>
+<h4 class="subsubsection">73.3.3.2 Persistent variables with closures</h4>
 
 <p>Just because a lexical variable is lexically (also called statically)
 scoped to its enclosing block, <code>eval</code>, or <code>do</code> FILE, 
this doesn&rsquo;t mean that
@@ -93559,7 +93396,7 @@
 Next: <a href="#perlsub-Lvalue-subroutines" accesskey="n" rel="next">perlsub 
Lvalue subroutines</a>, Previous: <a 
href="#perlsub-Persistent-Private-Variables" accesskey="p" rel="prev">perlsub 
Persistent Private Variables</a>, Up: <a href="#perlsub-DESCRIPTION" 
accesskey="u" rel="up">perlsub DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Temporary-Values-via-local_0028_0029"></a>
-<h4 class="subsection">72.3.3 Temporary Values via local()</h4>
+<h4 class="subsection">73.3.4 Temporary Values via local()</h4>
 
 <p><strong>WARNING</strong>: In general, you should be using <code>my</code> 
instead of <code>local</code>, because
 it&rsquo;s faster and safer.  Exceptions to this include the global punctuation
@@ -93635,7 +93472,7 @@
 Next: <a href="#perlsub-Localization-of-special-variables" accesskey="n" 
rel="next">perlsub Localization of special variables</a>, Up: <a 
href="#perlsub-Temporary-Values-via-local_0028_0029" accesskey="u" 
rel="up">perlsub Temporary Values via local()</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Grammatical-note-on-local_0028_0029"></a>
-<h4 class="subsubsection">72.3.3.1 Grammatical note on local()</h4>
+<h4 class="subsubsection">73.3.4.1 Grammatical note on local()</h4>
 
 <p>A <code>local</code> is simply a modifier on an lvalue expression.  When 
you assign to
 a <code>local</code>ized variable, the <code>local</code> doesn&rsquo;t change 
whether its list is viewed
@@ -93657,7 +93494,7 @@
 Next: <a href="#perlsub-Localization-of-globs" accesskey="n" 
rel="next">perlsub Localization of globs</a>, Previous: <a 
href="#perlsub-Grammatical-note-on-local_0028_0029" accesskey="p" 
rel="prev">perlsub Grammatical note on local()</a>, Up: <a 
href="#perlsub-Temporary-Values-via-local_0028_0029" accesskey="u" 
rel="up">perlsub Temporary Values via local()</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Localization-of-special-variables"></a>
-<h4 class="subsubsection">72.3.3.2 Localization of special variables</h4>
+<h4 class="subsubsection">73.3.4.2 Localization of special variables</h4>
 
 <p>If you localize a special variable, you&rsquo;ll be giving a new value to 
it,
 but its magic won&rsquo;t go away.  That means that all side-effects related
@@ -93694,7 +93531,7 @@
 Next: <a href="#perlsub-Localization-of-elements-of-composite-types" 
accesskey="n" rel="next">perlsub Localization of elements of composite 
types</a>, Previous: <a href="#perlsub-Localization-of-special-variables" 
accesskey="p" rel="prev">perlsub Localization of special variables</a>, Up: <a 
href="#perlsub-Temporary-Values-via-local_0028_0029" accesskey="u" 
rel="up">perlsub Temporary Values via local()</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Localization-of-globs"></a>
-<h4 class="subsubsection">72.3.3.3 Localization of globs</h4>
+<h4 class="subsubsection">73.3.4.3 Localization of globs</h4>
 
 <p>The construct
 </p>
@@ -93716,7 +93553,7 @@
 Next: <a href="#perlsub-Localized-deletion-of-elements-of-composite-types" 
accesskey="n" rel="next">perlsub Localized deletion of elements of composite 
types</a>, Previous: <a href="#perlsub-Localization-of-globs" accesskey="p" 
rel="prev">perlsub Localization of globs</a>, Up: <a 
href="#perlsub-Temporary-Values-via-local_0028_0029" accesskey="u" 
rel="up">perlsub Temporary Values via local()</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Localization-of-elements-of-composite-types"></a>
-<h4 class="subsubsection">72.3.3.4 Localization of elements of composite 
types</h4>
+<h4 class="subsubsection">73.3.4.4 Localization of elements of composite 
types</h4>
 
 <p>It&rsquo;s also worth taking a moment to explain what happens when you
 <code>local</code>ize a member of a composite type (i.e. an array or hash 
element).
@@ -93765,7 +93602,7 @@
 Previous: <a href="#perlsub-Localization-of-elements-of-composite-types" 
accesskey="p" rel="prev">perlsub Localization of elements of composite 
types</a>, Up: <a href="#perlsub-Temporary-Values-via-local_0028_0029" 
accesskey="u" rel="up">perlsub Temporary Values via local()</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Localized-deletion-of-elements-of-composite-types"></a>
-<h4 class="subsubsection">72.3.3.5 Localized deletion of elements of composite 
types</h4>
+<h4 class="subsubsection">73.3.4.5 Localized deletion of elements of composite 
types</h4>
 
 <p>You can use the <code>delete local $array[$idx]</code> and <code>delete 
local $hash{key}</code>
 constructs to delete a composite type entry for the current block and restore
@@ -93820,11 +93657,8 @@
 Next: <a href="#perlsub-Lexical-Subroutines" accesskey="n" rel="next">perlsub 
Lexical Subroutines</a>, Previous: <a 
href="#perlsub-Temporary-Values-via-local_0028_0029" accesskey="p" 
rel="prev">perlsub Temporary Values via local()</a>, Up: <a 
href="#perlsub-DESCRIPTION" accesskey="u" rel="up">perlsub DESCRIPTION</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Lvalue-subroutines"></a>
-<h4 class="subsection">72.3.4 Lvalue subroutines</h4>
+<h4 class="subsection">73.3.5 Lvalue subroutines</h4>
 
-<p><strong>WARNING</strong>: Lvalue subroutines are still experimental and the
-implementation may change in future versions of Perl.
-</p>
 <p>It is possible to return a modifiable value from a subroutine.
 To do this, you have to declare the subroutine to return an lvalue.
 </p>
@@ -93855,34 +93689,13 @@
 </pre>
 <p>all the subroutines are called in a list context.
 </p>
-<dl compact="compact">
-<dt>Lvalue subroutines are EXPERIMENTAL</dt>
-<dd><a name="perlsub-Lvalue-subroutines-are-EXPERIMENTAL"></a>
-<p>They appear to be convenient, but there is at least one reason to be
-circumspect.
-</p>
-<p>They violate encapsulation.  A normal mutator can check the supplied
-argument before setting the attribute it is protecting, an lvalue
-subroutine never gets that chance.  Consider;
+<p>Lvalue subroutines are convenient, but you have to keep in mind that,
+when used with objects, they may violate encapsulation. A normal
+mutator can check the supplied argument before setting the attribute
+it is protecting, an lvalue subroutine cannot. If you require any
+special processing when storing and retrieving the values, consider
+using the CPAN module Sentinel or something similar.
 </p>
-<pre class="verbatim">    my $some_array_ref = [];    # protected by mutators 
??
-
-    sub set_arr {               # normal mutator
-        my $val = shift;
-        die(&quot;expected array, you supplied &quot;, ref $val)
-           unless ref $val eq 'ARRAY';
-        $some_array_ref = $val;
-    }
-    sub set_arr_lv : lvalue {   # lvalue mutator
-        $some_array_ref;
-    }
-
-    # set_arr_lv cannot stop this !
-    set_arr_lv() = { a =&gt; 1 };
-</pre>
-</dd>
-</dl>
-
 <hr>
 <a name="perlsub-Lexical-Subroutines"></a>
 <div class="header">
@@ -93890,7 +93703,7 @@
 Next: <a href="#perlsub-Passing-Symbol-Table-Entries-_0028typeglobs_0029" 
accesskey="n" rel="next">perlsub Passing Symbol Table Entries (typeglobs)</a>, 
Previous: <a href="#perlsub-Lvalue-subroutines" accesskey="p" 
rel="prev">perlsub Lvalue subroutines</a>, Up: <a href="#perlsub-DESCRIPTION" 
accesskey="u" rel="up">perlsub DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Lexical-Subroutines"></a>
-<h4 class="subsection">72.3.5 Lexical Subroutines</h4>
+<h4 class="subsection">73.3.6 Lexical Subroutines</h4>
 
 <p><strong>WARNING</strong>: Lexical subroutines are still experimental.  The 
feature may be
 modified or removed in future versions of Perl.
@@ -93942,7 +93755,7 @@
 Next: <a href="#perlsub-our-subroutines" accesskey="n" rel="next">perlsub 
<code>our</code> subroutines</a>, Up: <a href="#perlsub-Lexical-Subroutines" 
accesskey="u" rel="up">perlsub Lexical Subroutines</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="state-sub-vs-my-sub"></a>
-<h4 class="subsubsection">72.3.5.1 <code>state sub</code> vs <code>my 
sub</code></h4>
+<h4 class="subsubsection">73.3.6.1 <code>state sub</code> vs <code>my 
sub</code></h4>
 
 <p>What is the difference between &quot;state&quot; subs and &quot;my&quot; 
subs?  Each time that
 execution enters a block when &quot;my&quot; subs are declared, a new copy of 
each
@@ -93974,7 +93787,7 @@
 Previous: <a href="#perlsub-state-sub-vs-my-sub" accesskey="p" 
rel="prev">perlsub <code>state sub</code> vs <code>my sub</code></a>, Up: <a 
href="#perlsub-Lexical-Subroutines" accesskey="u" rel="up">perlsub Lexical 
Subroutines</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="our-subroutines"></a>
-<h4 class="subsubsection">72.3.5.2 <code>our</code> subroutines</h4>
+<h4 class="subsubsection">73.3.6.2 <code>our</code> subroutines</h4>
 
 <p>Like <code>our $variable</code>, <code>our sub</code> creates a lexical 
alias to the package
 subroutine of the same name.
@@ -94018,7 +93831,7 @@
 Next: <a href="#perlsub-When-to-Still-Use-local_0028_0029" accesskey="n" 
rel="next">perlsub When to Still Use local()</a>, Previous: <a 
href="#perlsub-Lexical-Subroutines" accesskey="p" rel="prev">perlsub Lexical 
Subroutines</a>, Up: <a href="#perlsub-DESCRIPTION" accesskey="u" 
rel="up">perlsub DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Passing-Symbol-Table-Entries-_0028typeglobs_0029"></a>
-<h4 class="subsection">72.3.6 Passing Symbol Table Entries (typeglobs)</h4>
+<h4 class="subsection">73.3.7 Passing Symbol Table Entries (typeglobs)</h4>
 
 <p><strong>WARNING</strong>: The mechanism described in this section was 
originally
 the only way to simulate pass-by-reference in older versions of
@@ -94067,7 +93880,7 @@
 Next: <a href="#perlsub-Pass-by-Reference" accesskey="n" rel="next">perlsub 
Pass by Reference</a>, Previous: <a 
href="#perlsub-Passing-Symbol-Table-Entries-_0028typeglobs_0029" accesskey="p" 
rel="prev">perlsub Passing Symbol Table Entries (typeglobs)</a>, Up: <a 
href="#perlsub-DESCRIPTION" accesskey="u" rel="up">perlsub DESCRIPTION</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="When-to-Still-Use-local_0028_0029"></a>
-<h4 class="subsection">72.3.7 When to Still Use local()</h4>
+<h4 class="subsection">73.3.8 When to Still Use local()</h4>
 
 <p>Despite the existence of <code>my</code>, there are still three places 
where the
 <code>local</code> operator still shines.  In fact, in these three places, you
@@ -94143,7 +93956,7 @@
 Next: <a href="#perlsub-Prototypes" accesskey="n" rel="next">perlsub 
Prototypes</a>, Previous: <a href="#perlsub-When-to-Still-Use-local_0028_0029" 
accesskey="p" rel="prev">perlsub When to Still Use local()</a>, Up: <a 
href="#perlsub-DESCRIPTION" accesskey="u" rel="up">perlsub DESCRIPTION</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Pass-by-Reference"></a>
-<h4 class="subsection">72.3.8 Pass by Reference</h4>
+<h4 class="subsection">73.3.9 Pass by Reference</h4>
 
 <p>If you want to pass more than one array or hash into a function&ndash;or
 return them from it&ndash;and have them maintain their integrity, then
@@ -94263,14 +94076,24 @@
 Next: <a href="#perlsub-Constant-Functions" accesskey="n" rel="next">perlsub 
Constant Functions</a>, Previous: <a href="#perlsub-Pass-by-Reference" 
accesskey="p" rel="prev">perlsub Pass by Reference</a>, Up: <a 
href="#perlsub-DESCRIPTION" accesskey="u" rel="up">perlsub DESCRIPTION</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Prototypes"></a>
-<h4 class="subsection">72.3.9 Prototypes</h4>
+<h4 class="subsection">73.3.10 Prototypes</h4>
 
 <p>Perl supports a very limited kind of compile-time argument checking
-using function prototyping.  If you declare
+using function prototyping.  This can be declared in either the PROTO
+section or with a <a 
href="attributes.html#Built_002din-Attributes">(attributes)prototype 
attribute</a>.
+If you declare either of
 </p>
 <pre class="verbatim">    sub mypush (+@)
+    sub mypush :prototype(+@)
 </pre>
-<p>then <code>mypush()</code> takes arguments exactly like <code>push()</code> 
does.  The
+<p>then <code>mypush()</code> takes arguments exactly like <code>push()</code> 
does.
+</p>
+<p>If subroutine signatures are enabled (see <a 
href="#perlsub-Signatures">Signatures</a>), then
+the shorter PROTO syntax is unavailable, because it would clash with
+signatures.  In that case, a prototype can only be declared in the form
+of an attribute.
+</p>
+<p>The
 function declaration must be visible at compile time.  The prototype
 affects only interpretation of new-style calls to the function,
 where new-style is defined as not using the <code>&amp;</code> character.  In
@@ -94462,6 +94285,16 @@
 in <code>@foo</code>.  And the <code>split</code> gets called in scalar 
context so it
 starts scribbling on your <code>@_</code> parameter list.  Ouch!
 </p>
+<p>If a sub has both a PROTO and a BLOCK, the prototype is not applied
+until after the BLOCK is completely defined.  This means that a recursive
+function with a prototype has to be predeclared for the prototype to take
+effect, like so:
+</p>
+<pre class="verbatim">        sub foo($$);
+        sub foo($$) {
+                foo 1, 2;
+        }
+</pre>
 <p>This is all very powerful, of course, and should be used only in moderation
 to make the world a better place.
 </p>
@@ -94472,7 +94305,7 @@
 Next: <a href="#perlsub-Overriding-Built_002din-Functions" accesskey="n" 
rel="next">perlsub Overriding Built-in Functions</a>, Previous: <a 
href="#perlsub-Prototypes" accesskey="p" rel="prev">perlsub Prototypes</a>, Up: 
<a href="#perlsub-DESCRIPTION" accesskey="u" rel="up">perlsub DESCRIPTION</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Constant-Functions"></a>
-<h4 class="subsection">72.3.10 Constant Functions</h4>
+<h4 class="subsection">73.3.11 Constant Functions</h4>
 
 <p>Functions with a prototype of <code>()</code> are potential candidates for
 inlining.  If the result after optimization and constant folding
@@ -94513,20 +94346,82 @@
         }
     }
 </pre>
-<p>If you redefine a subroutine that was eligible for inlining, you&rsquo;ll 
get
-a warning by default.  (You can use this warning to tell whether or not a
-particular subroutine is considered constant.)  The warning is
-considered severe enough not to be affected by the <strong>-w</strong>
-switch (or its absence) because previously compiled
-invocations of the function will still be using the old value of the
-function.  If you need to be able to redefine the subroutine, you need to
-ensure that it isn&rsquo;t inlined, either by dropping the <code>()</code> 
prototype
-(which changes calling semantics, so beware) or by thwarting the
-inlining mechanism in some other way, such as
+<p>As alluded to earlier you can also declare inlined subs dynamically at
+BEGIN time if their body consists of a lexically-scoped scalar which
+has no other references. Only the first example here will be inlined:
+</p>
+<pre class="verbatim">    BEGIN {
+        my $var = 1;
+        no strict 'refs';
+        *INLINED = sub () { $var };
+    }
+
+    BEGIN {
+        my $var = 1;
+        my $ref = \$var;
+        no strict 'refs';
+        *NOT_INLINED = sub () { $var };
+    }
+</pre>
+<p>A not so obvious caveat with this (see [RT #79908]) is that the
+variable will be immediately inlined, and will stop behaving like a
+normal lexical variable, e.g. this will print <code>79907</code>, not 
<code>79908</code>:
 </p>
-<pre class="verbatim">    sub not_inlined () {
-        23 if $];
+<pre class="verbatim">    BEGIN {
+        my $x = 79907;
+        *RT_79908 = sub () { $x };
+        $x++;
+    }
+    print RT_79908(); # prints 79907
+</pre>
+<p>If you really want a subroutine with a <code>()</code> prototype that 
returns a
+lexical variable you can easily force it to not be inlined by adding
+an explicit <code>return</code>:
+</p>
+<pre class="verbatim">    BEGIN {
+        my $x = 79907;
+        *RT_79908 = sub () { return $x };
+        $x++;
+    }
+    print RT_79908(); # prints 79908
+</pre>
+<p>The easiest way to tell if a subroutine was inlined is by using
+<a href="B-Deparse.html#Top">(B-Deparse)</a>, consider this example of two 
subroutines returning
+<code>1</code>, one with a <code>()</code> prototype causing it to be inlined, 
and one
+without (with deparse output truncated for clarity):
+</p>
+<pre class="verbatim"> $ perl -MO=Deparse -le 'sub ONE { 1 } if (ONE) { print 
ONE if ONE }'
+ sub ONE {
+     1;
+ }
+ if (ONE ) {
+     print ONE() if ONE ;
     }
+ $ perl -MO=Deparse -le 'sub ONE () { 1 } if (ONE) { print ONE if ONE }'
+ sub ONE () { 1 }
+ do {
+     print 1
+ };
+</pre>
+<p>If you redefine a subroutine that was eligible for inlining, you&rsquo;ll
+get a warning by default. You can use this warning to tell whether or
+not a particular subroutine is considered inlinable, since it&rsquo;s
+different than the warning for overriding non-inlined subroutines:
+</p>
+<pre class="verbatim">    $ perl -e 'sub one () {1} sub one () {2}'
+    Constant subroutine one redefined at -e line 1.
+    $ perl -we 'sub one {1} sub one {2}'
+    Subroutine one redefined at -e line 1.
+</pre>
+<p>The warning is considered severe enough not to be affected by the
+<strong>-w</strong> switch (or its absence) because previously compiled 
invocations
+of the function will still be using the old value of the function.  If
+you need to be able to redefine the subroutine, you need to ensure
+that it isn&rsquo;t inlined, either by dropping the <code>()</code> prototype 
(which
+changes calling semantics, so beware) or by thwarting the inlining
+mechanism in some other way, e.g. by adding an explicit <code>return</code>:
+</p>
+<pre class="verbatim">    sub not_inlined () { return 23 }
 </pre>
 <hr>
 <a name="perlsub-Overriding-Built_002din-Functions"></a>
@@ -94535,7 +94430,7 @@
 Next: <a href="#perlsub-Autoloading" accesskey="n" rel="next">perlsub 
Autoloading</a>, Previous: <a href="#perlsub-Constant-Functions" accesskey="p" 
rel="prev">perlsub Constant Functions</a>, Up: <a href="#perlsub-DESCRIPTION" 
accesskey="u" rel="up">perlsub DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Overriding-Built_002din-Functions"></a>
-<h4 class="subsection">72.3.11 Overriding Built-in Functions</h4>
+<h4 class="subsection">73.3.12 Overriding Built-in Functions</h4>
 
 <p>Many built-in functions may be overridden, though this should be tried
 only occasionally and for good reason.  Typically this might be
@@ -94666,7 +94561,7 @@
 Next: <a href="#perlsub-Subroutine-Attributes" accesskey="n" 
rel="next">perlsub Subroutine Attributes</a>, Previous: <a 
href="#perlsub-Overriding-Built_002din-Functions" accesskey="p" 
rel="prev">perlsub Overriding Built-in Functions</a>, Up: <a 
href="#perlsub-DESCRIPTION" accesskey="u" rel="up">perlsub DESCRIPTION</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Autoloading"></a>
-<h4 class="subsection">72.3.12 Autoloading</h4>
+<h4 class="subsection">73.3.13 Autoloading</h4>
 
 <p>If you call a subroutine that is undefined, you would ordinarily
 get an immediate, fatal error complaining that the subroutine doesn&rsquo;t
@@ -94726,7 +94621,7 @@
 Previous: <a href="#perlsub-Autoloading" accesskey="p" rel="prev">perlsub 
Autoloading</a>, Up: <a href="#perlsub-DESCRIPTION" accesskey="u" 
rel="up">perlsub DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Subroutine-Attributes"></a>
-<h4 class="subsection">72.3.13 Subroutine Attributes</h4>
+<h4 class="subsection">73.3.14 Subroutine Attributes</h4>
 
 <p>A subroutine declaration or definition may have a list of attributes
 associated with it.  If such an attribute list is present, it is
@@ -94772,8 +94667,8 @@
 <p>
 Previous: <a href="#perlsub-DESCRIPTION" accesskey="p" rel="prev">perlsub 
DESCRIPTION</a>, Up: <a href="#perlsub" accesskey="u" rel="up">perlsub</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-37"></a>
-<h3 class="section">72.4 SEE ALSO</h3>
+<a name="SEE-ALSO-36"></a>
+<h3 class="section">73.4 SEE ALSO</h3>
 
 <p>See <a href="#perlref-Function-Templates">perlref Function Templates</a> 
for more about references and closures.
 See <a href="perlxs.html#Top">(perlxs)</a> if you&rsquo;d like to learn about 
calling C subroutines from Perl.  
@@ -94789,15 +94684,13 @@
 Next: <a href="#perlthrtut" accesskey="n" rel="next">perlthrtut</a>, Previous: 
<a href="#perlsub" accesskey="p" rel="prev">perlsub</a>, Up: <a href="#Top" 
accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="perlsyn-2"></a>
-<h2 class="chapter">73 perlsyn</h2>
+<h2 class="chapter">74 perlsyn</h2>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perlsyn-NAME" 
accesskey="1">perlsyn NAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a href="#perlsyn-DESCRIPTION" 
accesskey="2">perlsyn DESCRIPTION</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perlsyn-POD-ERRORS" 
accesskey="3">perlsyn POD ERRORS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
-</td></tr>
 </table>
 
 <hr>
@@ -94806,8 +94699,8 @@
 <p>
 Next: <a href="#perlsyn-DESCRIPTION" accesskey="n" rel="next">perlsyn 
DESCRIPTION</a>, Up: <a href="#perlsyn" accesskey="u" rel="up">perlsyn</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="NAME-72"></a>
-<h3 class="section">73.1 NAME</h3>
+<a name="NAME-73"></a>
+<h3 class="section">74.1 NAME</h3>
 
 <p>perlsyn - Perl syntax
 </p>
@@ -94815,10 +94708,10 @@
 <a name="perlsyn-DESCRIPTION"></a>
 <div class="header">
 <p>
-Next: <a href="#perlsyn-POD-ERRORS" accesskey="n" rel="next">perlsyn POD 
ERRORS</a>, Previous: <a href="#perlsyn-NAME" accesskey="p" rel="prev">perlsyn 
NAME</a>, Up: <a href="#perlsyn" accesskey="u" rel="up">perlsyn</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
+Previous: <a href="#perlsyn-NAME" accesskey="p" rel="prev">perlsyn NAME</a>, 
Up: <a href="#perlsyn" accesskey="u" rel="up">perlsyn</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="DESCRIPTION-71"></a>
-<h3 class="section">73.2 DESCRIPTION</h3>
+<a name="DESCRIPTION-72"></a>
+<h3 class="section">74.2 DESCRIPTION</h3>
 
 <p>A Perl program consists of a sequence of declarations and statements
 which run from the top to the bottom.  Loops, subroutines, and other
@@ -94885,7 +94778,7 @@
 Next: <a href="#perlsyn-Comments" accesskey="n" rel="next">perlsyn 
Comments</a>, Up: <a href="#perlsyn-DESCRIPTION" accesskey="u" rel="up">perlsyn 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Declarations"></a>
-<h4 class="subsection">73.2.1 Declarations</h4>
+<h4 class="subsection">74.2.1 Declarations</h4>
 
 <p>The only things you need to declare in Perl are report formats and
 subroutines (and sometimes not even subroutines).  A scalar variable holds
@@ -94939,7 +94832,7 @@
 </pre>
 <p>That now parses as you&rsquo;d expect, but you still ought to get in the 
habit of
 using parentheses in that situation.  For more on prototypes, see
-<a href="#perlsub-NAME">perlsub NAME</a>
+<a href="#perlsub-NAME">perlsub NAME</a>.
 </p>
 <p>Subroutines declarations can also be loaded up with the 
<code>require</code> statement
 or both loaded and imported into your namespace with a <code>use</code> 
statement.
@@ -94958,7 +94851,7 @@
 Next: <a href="#perlsyn-Simple-Statements" accesskey="n" rel="next">perlsyn 
Simple Statements</a>, Previous: <a href="#perlsyn-Declarations" accesskey="p" 
rel="prev">perlsyn Declarations</a>, Up: <a href="#perlsyn-DESCRIPTION" 
accesskey="u" rel="up">perlsyn DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Comments"></a>
-<h4 class="subsection">73.2.2 Comments</h4>
+<h4 class="subsection">74.2.2 Comments</h4>
 
 <p>Text from a <code>&quot;#&quot;</code> character until the end of the line 
is a comment,
 and is ignored.  Exceptions include <code>&quot;#&quot;</code> inside a string 
or regular
@@ -94971,7 +94864,7 @@
 Next: <a href="#perlsyn-Truth-and-Falsehood" accesskey="n" rel="next">perlsyn 
Truth and Falsehood</a>, Previous: <a href="#perlsyn-Comments" accesskey="p" 
rel="prev">perlsyn Comments</a>, Up: <a href="#perlsyn-DESCRIPTION" 
accesskey="u" rel="up">perlsyn DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Simple-Statements"></a>
-<h4 class="subsection">73.2.3 Simple Statements</h4>
+<h4 class="subsection">74.2.3 Simple Statements</h4>
 
 <p>The only kind of simple statement is an expression evaluated for its
 side-effects.  Every simple statement must be terminated with a
@@ -94990,7 +94883,7 @@
 Next: <a href="#perlsyn-Statement-Modifiers" accesskey="n" rel="next">perlsyn 
Statement Modifiers</a>, Previous: <a href="#perlsyn-Simple-Statements" 
accesskey="p" rel="prev">perlsyn Simple Statements</a>, Up: <a 
href="#perlsyn-DESCRIPTION" accesskey="u" rel="up">perlsyn DESCRIPTION</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Truth-and-Falsehood"></a>
-<h4 class="subsection">73.2.4 Truth and Falsehood</h4>
+<h4 class="subsection">74.2.4 Truth and Falsehood</h4>
 
 <p>The number 0, the strings <code>'0'</code> and <code>&quot;&quot;</code>, 
the empty list <code>()</code>, and
 <code>undef</code> are all false in a boolean context.  All other values are 
true.
@@ -95006,7 +94899,7 @@
 Next: <a href="#perlsyn-Compound-Statements" accesskey="n" rel="next">perlsyn 
Compound Statements</a>, Previous: <a href="#perlsyn-Truth-and-Falsehood" 
accesskey="p" rel="prev">perlsyn Truth and Falsehood</a>, Up: <a 
href="#perlsyn-DESCRIPTION" accesskey="u" rel="up">perlsyn DESCRIPTION</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Statement-Modifiers"></a>
-<h4 class="subsection">73.2.5 Statement Modifiers</h4>
+<h4 class="subsection">74.2.5 Statement Modifiers</h4>
 
 <p>Any simple statement may optionally be followed by a <em>SINGLE</em> 
modifier,
 just before the terminating semicolon (or block ending).  The possible
@@ -95104,7 +94997,7 @@
 Next: <a href="#perlsyn-Loop-Control" accesskey="n" rel="next">perlsyn Loop 
Control</a>, Previous: <a href="#perlsyn-Statement-Modifiers" accesskey="p" 
rel="prev">perlsyn Statement Modifiers</a>, Up: <a href="#perlsyn-DESCRIPTION" 
accesskey="u" rel="up">perlsyn DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Compound-Statements"></a>
-<h4 class="subsection">73.2.6 Compound Statements</h4>
+<h4 class="subsection">74.2.6 Compound Statements</h4>
 
 <p>In Perl, a sequence of statements that defines a scope is called a block.
 Sometimes a block is delimited by the file containing it (in the case
@@ -95208,7 +95101,7 @@
 Next: <a href="#perlsyn-For-Loops" accesskey="n" rel="next">perlsyn For 
Loops</a>, Previous: <a href="#perlsyn-Compound-Statements" accesskey="p" 
rel="prev">perlsyn Compound Statements</a>, Up: <a href="#perlsyn-DESCRIPTION" 
accesskey="u" rel="up">perlsyn DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Loop-Control"></a>
-<h4 class="subsection">73.2.7 Loop Control</h4>
+<h4 class="subsection">74.2.7 Loop Control</h4>
 
 <p>The <code>next</code> command starts the next iteration of the loop:
 </p>
@@ -95297,7 +95190,7 @@
 Next: <a href="#perlsyn-Foreach-Loops" accesskey="n" rel="next">perlsyn 
Foreach Loops</a>, Previous: <a href="#perlsyn-Loop-Control" accesskey="p" 
rel="prev">perlsyn Loop Control</a>, Up: <a href="#perlsyn-DESCRIPTION" 
accesskey="u" rel="up">perlsyn DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="For-Loops"></a>
-<h4 class="subsection">73.2.8 For Loops</h4>
+<h4 class="subsection">74.2.8 For Loops</h4>
 
 <p>Perl&rsquo;s C-style <code>for</code> loop works like the corresponding 
<code>while</code> loop;
 that means that this:
@@ -95348,7 +95241,7 @@
 Next: <a href="#perlsyn-Basic-BLOCKs" accesskey="n" rel="next">perlsyn Basic 
BLOCKs</a>, Previous: <a href="#perlsyn-For-Loops" accesskey="p" 
rel="prev">perlsyn For Loops</a>, Up: <a href="#perlsyn-DESCRIPTION" 
accesskey="u" rel="up">perlsyn DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Foreach-Loops"></a>
-<h4 class="subsection">73.2.9 Foreach Loops</h4>
+<h4 class="subsection">74.2.9 Foreach Loops</h4>
 
 <p>The <code>foreach</code> loop iterates over a normal list value and sets the
 variable VAR to be each element of the list in turn.  If the variable
@@ -95425,6 +95318,12 @@
 Perl executes a <code>foreach</code> statement more rapidly than it would the
 equivalent <code>for</code> loop.
 </p>
+<p>Perceptive Perl hackers may have noticed that a <code>for</code> loop has a 
return
+value, and that this value can be captured by wrapping the loop in a 
<code>do</code>
+block.  The reward for this discovery is this cautionary advice:  The
+return value of a <code>for</code> loop is unspecified and may change without 
notice.
+Do not rely on it.
+</p>
 <hr>
 <a name="perlsyn-Basic-BLOCKs"></a>
 <div class="header">
@@ -95432,7 +95331,7 @@
 Next: <a href="#perlsyn-Switch-Statements" accesskey="n" rel="next">perlsyn 
Switch Statements</a>, Previous: <a href="#perlsyn-Foreach-Loops" accesskey="p" 
rel="prev">perlsyn Foreach Loops</a>, Up: <a href="#perlsyn-DESCRIPTION" 
accesskey="u" rel="up">perlsyn DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Basic-BLOCKs"></a>
-<h4 class="subsection">73.2.10 Basic BLOCKs</h4>
+<h4 class="subsection">74.2.10 Basic BLOCKs</h4>
 
 <p>A BLOCK by itself (labeled or not) is semantically equivalent to a
 loop that executes once.  Thus you can use any of the loop control
@@ -95472,7 +95371,7 @@
 Next: <a href="#perlsyn-Goto" accesskey="n" rel="next">perlsyn Goto</a>, 
Previous: <a href="#perlsyn-Basic-BLOCKs" accesskey="p" rel="prev">perlsyn 
Basic BLOCKs</a>, Up: <a href="#perlsyn-DESCRIPTION" accesskey="u" 
rel="up">perlsyn DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Switch-Statements"></a>
-<h4 class="subsection">73.2.11 Switch Statements</h4>
+<h4 class="subsection">74.2.11 Switch Statements</h4>
 
 <p>Starting from Perl 5.10.1 (well, 5.10.0, but it didn&rsquo;t work
 right), you can say
@@ -95571,7 +95470,7 @@
 Next: <a href="#perlsyn-The-Ellipsis-Statement" accesskey="n" 
rel="next">perlsyn The Ellipsis Statement</a>, Previous: <a 
href="#perlsyn-Switch-Statements" accesskey="p" rel="prev">perlsyn Switch 
Statements</a>, Up: <a href="#perlsyn-DESCRIPTION" accesskey="u" 
rel="up">perlsyn DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Goto"></a>
-<h4 class="subsection">73.2.12 Goto</h4>
+<h4 class="subsection">74.2.12 Goto</h4>
 
 <p>Although not for the faint of heart, Perl does support a <code>goto</code>
 statement.  There are three forms: <code>goto</code>-LABEL, 
<code>goto</code>-EXPR, and
@@ -95613,7 +95512,7 @@
 Next: <a href="#perlsyn-PODs_003a-Embedded-Documentation" accesskey="n" 
rel="next">perlsyn PODs: Embedded Documentation</a>, Previous: <a 
href="#perlsyn-Goto" accesskey="p" rel="prev">perlsyn Goto</a>, Up: <a 
href="#perlsyn-DESCRIPTION" accesskey="u" rel="up">perlsyn DESCRIPTION</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="The-Ellipsis-Statement"></a>
-<h4 class="subsection">73.2.13 The Ellipsis Statement</h4>
+<h4 class="subsection">74.2.13 The Ellipsis Statement</h4>
 
 <p>Beginning in Perl 5.12, Perl accepts an ellipsis, 
&quot;<code>...</code>&quot;, as a
 placeholder for code that you haven&rsquo;t implemented yet.  This form of
@@ -95694,7 +95593,7 @@
 Next: <a href="#perlsyn-Plain-Old-Comments-_0028Not_0021_0029" accesskey="n" 
rel="next">perlsyn Plain Old Comments (Not!)</a>, Previous: <a 
href="#perlsyn-The-Ellipsis-Statement" accesskey="p" rel="prev">perlsyn The 
Ellipsis Statement</a>, Up: <a href="#perlsyn-DESCRIPTION" accesskey="u" 
rel="up">perlsyn DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="PODs_003a-Embedded-Documentation"></a>
-<h4 class="subsection">73.2.14 PODs: Embedded Documentation</h4>
+<h4 class="subsection">74.2.14 PODs: Embedded Documentation</h4>
 
 <p>Perl has a mechanism for intermixing documentation with source code.
 While it&rsquo;s expecting the beginning of a new statement, if the compiler
@@ -95748,7 +95647,7 @@
 Next: <a href="#perlsyn-Experimental-Details-on-given-and-when" accesskey="n" 
rel="next">perlsyn Experimental Details on given and when</a>, Previous: <a 
href="#perlsyn-PODs_003a-Embedded-Documentation" accesskey="p" 
rel="prev">perlsyn PODs: Embedded Documentation</a>, Up: <a 
href="#perlsyn-DESCRIPTION" accesskey="u" rel="up">perlsyn DESCRIPTION</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Plain-Old-Comments-_0028Not_0021_0029"></a>
-<h4 class="subsection">73.2.15 Plain Old Comments (Not!)</h4>
+<h4 class="subsection">74.2.15 Plain Old Comments (Not!)</h4>
 
 <p>Perl can process line directives, much like the C preprocessor.  Using
 this, one can control Perl&rsquo;s idea of filenames and line numbers in
@@ -95806,7 +95705,7 @@
 Previous: <a href="#perlsyn-Plain-Old-Comments-_0028Not_0021_0029" 
accesskey="p" rel="prev">perlsyn Plain Old Comments (Not!)</a>, Up: <a 
href="#perlsyn-DESCRIPTION" accesskey="u" rel="up">perlsyn DESCRIPTION</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Experimental-Details-on-given-and-when"></a>
-<h4 class="subsection">73.2.16 Experimental Details on given and when</h4>
+<h4 class="subsection">74.2.16 Experimental Details on given and when</h4>
 
 <p>As previously mentioned, the &quot;switch&quot; feature is considered highly
 experimental; it is subject to change with little notice.  In particular,
@@ -95860,40 +95759,64 @@
 But when <em>EXPR</em> is one of the 10 exceptional cases (or things like them)
 listed below, it is used directly as a boolean.
 </p>
-<ol>
-<li> A user-defined subroutine call or a method invocation.
-
-</li><li> A regular expression match in the form of <code>/REGEX/</code>, 
<code>$foo =~ /REGEX/</code>,
+<dl compact="compact">
+<dt>1.</dt>
+<dd><a name="perlsyn-1_002e"></a>
+<p>A user-defined subroutine call or a method invocation.
+</p>
+</dd>
+<dt>2.</dt>
+<dd><a name="perlsyn-2_002e"></a>
+<p>A regular expression match in the form of <code>/REGEX/</code>, <code>$foo 
=~ /REGEX/</code>,
 or <code>$foo =~ EXPR</code>.  Also, a negated regular expression match in
 the form <code>!/REGEX/</code>, <code>$foo !~ /REGEX/</code>, or <code>$foo !~ 
EXPR</code>.
-
-</li><li> A smart match that uses an explicit <code>~~</code> operator, such 
as <code>EXPR ~~ EXPR</code>.
-
-</li><li> A boolean comparison operator such as <code>$_ &lt; 10</code> or 
<code>$x eq &quot;abc&quot;</code>.  The
+</p>
+</dd>
+<dt>3.</dt>
+<dd><a name="perlsyn-3_002e"></a>
+<p>A smart match that uses an explicit <code>~~</code> operator, such as 
<code>EXPR ~~ EXPR</code>.
+</p>
+</dd>
+<dt>4.</dt>
+<dd><a name="perlsyn-4_002e"></a>
+<p>A boolean comparison operator such as <code>$_ &lt; 10</code> or <code>$x 
eq &quot;abc&quot;</code>.  The
 relational operators that this applies to are the six numeric comparisons
 (<code>&lt;</code>, <code>&gt;</code>, <code>&lt;=</code>, <code>&gt;=</code>, 
<code>==</code>, and <code>!=</code>), and
 the six string comparisons (<code>lt</code>, <code>gt</code>, <code>le</code>, 
<code>ge</code>, <code>eq</code>, and <code>ne</code>).
-
+</p>
 <p><strong>NOTE:</strong> You will often have to use <code>$c ~~ $_</code> 
because
 the default case uses <code>$_ ~~ $c</code> , which is frequently
 the opposite of what you want.
 </p>
-</li><li> At least the three builtin functions <code>defined(...)</code>, 
<code>exists(...)</code>, and
+</dd>
+<dt>5.</dt>
+<dd><a name="perlsyn-5_002e"></a>
+<p>At least the three builtin functions <code>defined(...)</code>, 
<code>exists(...)</code>, and
 <code>eof(...)</code>.  We might someday add more of these later if we think 
of them.
-
-</li><li> A negated expression, whether <code>!(EXPR)</code> or 
<code>not(EXPR)</code>, or a logical
+</p>
+</dd>
+<dt>6.</dt>
+<dd><a name="perlsyn-6_002e"></a>
+<p>A negated expression, whether <code>!(EXPR)</code> or 
<code>not(EXPR)</code>, or a logical
 exclusive-or, <code>(EXPR1) xor (EXPR2)</code>.  The bitwise versions 
(<code>~</code> and <code>^</code>)
 are not included.
-
-</li><li> A filetest operator, with exactly 4 exceptions: <code>-s</code>, 
<code>-M</code>, <code>-A</code>, and
+</p>
+</dd>
+<dt>7.</dt>
+<dd><a name="perlsyn-7_002e"></a>
+<p>A filetest operator, with exactly 4 exceptions: <code>-s</code>, 
<code>-M</code>, <code>-A</code>, and
 <code>-C</code>, as these return numerical values, not boolean ones.  The 
<code>-z</code>
 filetest operator is not included in the exception list.
-
-</li><li> The <code>..</code> and <code>...</code> flip-flop operators.  Note 
that the <code>...</code> flip-flop
+</p>
+</dd>
+<dt>8.</dt>
+<dd><a name="perlsyn-8_002e"></a>
+<p>The <code>..</code> and <code>...</code> flip-flop operators.  Note that 
the <code>...</code> flip-flop
 operator is completely different from the <code>...</code> elliptical statement
 just described.
-
-</li></ol>
+</p>
+</dd>
+</dl>
 
 <p>In those 8 cases above, the value of EXPR is used directly as a boolean, so
 no smartmatching is done.  You may think of <code>when</code> as a 
smartsmartmatch.
@@ -95998,7 +95921,7 @@
 Next: <a href="#perlsyn-Fall_002dthrough" accesskey="n" rel="next">perlsyn 
Fall-through</a>, Up: <a href="#perlsyn-Experimental-Details-on-given-and-when" 
accesskey="u" rel="up">perlsyn Experimental Details on given and when</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Breaking-out"></a>
-<h4 class="subsubsection">73.2.16.1 Breaking out</h4>
+<h4 class="subsubsection">74.2.16.1 Breaking out</h4>
 
 <p>You can use the <code>break</code> keyword to break out of the enclosing
 <code>given</code> block.  Every <code>when</code> block is implicitly ended 
with
@@ -96011,7 +95934,7 @@
 Next: <a href="#perlsyn-Return-value" accesskey="n" rel="next">perlsyn Return 
value</a>, Previous: <a href="#perlsyn-Breaking-out" accesskey="p" 
rel="prev">perlsyn Breaking out</a>, Up: <a 
href="#perlsyn-Experimental-Details-on-given-and-when" accesskey="u" 
rel="up">perlsyn Experimental Details on given and when</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Fall_002dthrough"></a>
-<h4 class="subsubsection">73.2.16.2 Fall-through</h4>
+<h4 class="subsubsection">74.2.16.2 Fall-through</h4>
 
 <p>You can use the <code>continue</code> keyword to fall through from one
 case to the next:
@@ -96029,7 +95952,7 @@
 Next: <a href="#perlsyn-Switching-in-a-loop" accesskey="n" rel="next">perlsyn 
Switching in a loop</a>, Previous: <a href="#perlsyn-Fall_002dthrough" 
accesskey="p" rel="prev">perlsyn Fall-through</a>, Up: <a 
href="#perlsyn-Experimental-Details-on-given-and-when" accesskey="u" 
rel="up">perlsyn Experimental Details on given and when</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Return-value"></a>
-<h4 class="subsubsection">73.2.16.3 Return value</h4>
+<h4 class="subsubsection">74.2.16.3 Return value</h4>
 
 <p>When a <code>given</code> statement is also a valid expression (for example,
 when it&rsquo;s the last statement of a block), it evaluates to:
@@ -96071,7 +95994,7 @@
 Next: <a href="#perlsyn-Differences-from-Perl-6" accesskey="n" 
rel="next">perlsyn Differences from Perl 6</a>, Previous: <a 
href="#perlsyn-Return-value" accesskey="p" rel="prev">perlsyn Return value</a>, 
Up: <a href="#perlsyn-Experimental-Details-on-given-and-when" accesskey="u" 
rel="up">perlsyn Experimental Details on given and when</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Switching-in-a-loop"></a>
-<h4 class="subsubsection">73.2.16.4 Switching in a loop</h4>
+<h4 class="subsubsection">74.2.16.4 Switching in a loop</h4>
 
 <p>Instead of using <code>given()</code>, you can use a <code>foreach()</code> 
loop.
 For example, here&rsquo;s one way to count how many times a particular
@@ -96107,7 +96030,7 @@
 Previous: <a href="#perlsyn-Switching-in-a-loop" accesskey="p" 
rel="prev">perlsyn Switching in a loop</a>, Up: <a 
href="#perlsyn-Experimental-Details-on-given-and-when" accesskey="u" 
rel="up">perlsyn Experimental Details on given and when</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Differences-from-Perl-6"></a>
-<h4 class="subsubsection">73.2.16.5 Differences from Perl 6</h4>
+<h4 class="subsubsection">74.2.16.5 Differences from Perl 6</h4>
 
 <p>The Perl 5 smartmatch and <code>given</code>/<code>when</code> constructs 
are not compatible
 with their Perl 6 analogues.  The most visible difference and least
@@ -96142,7 +96065,7 @@
     say &quot;that's all, folks!&quot;;
 </pre>
 <p>But it doesn&rsquo;t work at all in Perl 6.  Instead, you should
-use the (parallelizable) <code>any</code> operator instead:
+use the (parallelizable) <code>any</code> operator:
 </p>
 <pre class="verbatim">   if any(@primary) eq &quot;red&quot; {
        say &quot;primary smartmatches red&quot;;
@@ -96164,32 +96087,13 @@
 Perl 5 does not have, even internally, a boolean type.)
 </p>
 <hr>
-<a name="perlsyn-POD-ERRORS"></a>
-<div class="header">
-<p>
-Previous: <a href="#perlsyn-DESCRIPTION" accesskey="p" rel="prev">perlsyn 
DESCRIPTION</a>, Up: <a href="#perlsyn" accesskey="u" rel="up">perlsyn</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
-</div>
-<a name="POD-ERRORS-1"></a>
-<h3 class="section">73.3 POD ERRORS</h3>
-
-<p>Hey! <strong>The above document had some coding errors, which are explained 
below:</strong>
-</p>
-<dl compact="compact">
-<dt>Around line 1008:</dt>
-<dd><a name="perlsyn-Around-line-1008_003a"></a>
-<p>Expected text after =item, not a number
-</p>
-</dd>
-</dl>
-
-<hr>
 <a name="perlthrtut"></a>
 <div class="header">
 <p>
 Next: <a href="#perltie" accesskey="n" rel="next">perltie</a>, Previous: <a 
href="#perlsyn" accesskey="p" rel="prev">perlsyn</a>, Up: <a href="#Top" 
accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="perlthrtut-1"></a>
-<h2 class="chapter">74 perlthrtut</h2>
+<h2 class="chapter">75 perlthrtut</h2>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perlthrtut-NAME" 
accesskey="1">perlthrtut NAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -96242,8 +96146,8 @@
 <p>
 Next: <a href="#perlthrtut-DESCRIPTION" accesskey="n" rel="next">perlthrtut 
DESCRIPTION</a>, Up: <a href="#perlthrtut" accesskey="u" 
rel="up">perlthrtut</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="NAME-73"></a>
-<h3 class="section">74.1 NAME</h3>
+<a name="NAME-74"></a>
+<h3 class="section">75.1 NAME</h3>
 
 <p>perlthrtut - Tutorial on threads in Perl
 </p>
@@ -96253,8 +96157,8 @@
 <p>
 Next: <a href="#perlthrtut-What-Is-A-Thread-Anyway_003f" accesskey="n" 
rel="next">perlthrtut What Is A Thread Anyway?</a>, Previous: <a 
href="#perlthrtut-NAME" accesskey="p" rel="prev">perlthrtut NAME</a>, Up: <a 
href="#perlthrtut" accesskey="u" rel="up">perlthrtut</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="DESCRIPTION-72"></a>
-<h3 class="section">74.2 DESCRIPTION</h3>
+<a name="DESCRIPTION-73"></a>
+<h3 class="section">75.2 DESCRIPTION</h3>
 
 <p>This tutorial describes the use of Perl interpreter threads (sometimes
 referred to as <em>ithreads</em>).  In this
@@ -96286,7 +96190,7 @@
 Next: <a href="#perlthrtut-Threaded-Program-Models" accesskey="n" 
rel="next">perlthrtut Threaded Program Models</a>, Previous: <a 
href="#perlthrtut-DESCRIPTION" accesskey="p" rel="prev">perlthrtut 
DESCRIPTION</a>, Up: <a href="#perlthrtut" accesskey="u" 
rel="up">perlthrtut</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="What-Is-A-Thread-Anyway_003f"></a>
-<h3 class="section">74.3 What Is A Thread Anyway?</h3>
+<h3 class="section">75.3 What Is A Thread Anyway?</h3>
 
 <p>A thread is a flow of control through a program with a single
 execution point.
@@ -96304,7 +96208,7 @@
 Next: <a href="#perlthrtut-What-kind-of-threads-are-Perl-threads_003f" 
accesskey="n" rel="next">perlthrtut What kind of threads are Perl threads?</a>, 
Previous: <a href="#perlthrtut-What-Is-A-Thread-Anyway_003f" accesskey="p" 
rel="prev">perlthrtut What Is A Thread Anyway?</a>, Up: <a href="#perlthrtut" 
accesskey="u" rel="up">perlthrtut</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Threaded-Program-Models"></a>
-<h3 class="section">74.4 Threaded Program Models</h3>
+<h3 class="section">75.4 Threaded Program Models</h3>
 
 <p>There are three basic ways that you can structure a threaded
 program.  Which model you choose depends on what you need your program
@@ -96327,7 +96231,7 @@
 Next: <a href="#perlthrtut-Work-Crew" accesskey="n" rel="next">perlthrtut Work 
Crew</a>, Up: <a href="#perlthrtut-Threaded-Program-Models" accesskey="u" 
rel="up">perlthrtut Threaded Program Models</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Boss_002fWorker"></a>
-<h4 class="subsection">74.4.1 Boss/Worker</h4>
+<h4 class="subsection">75.4.1 Boss/Worker</h4>
 
 <p>The boss/worker model usually has one <em>boss</em> thread and one or more
 <em>worker</em> threads.  The boss thread gathers or generates tasks that need
@@ -96350,7 +96254,7 @@
 Next: <a href="#perlthrtut-Pipeline" accesskey="n" rel="next">perlthrtut 
Pipeline</a>, Previous: <a href="#perlthrtut-Boss_002fWorker" accesskey="p" 
rel="prev">perlthrtut Boss/Worker</a>, Up: <a 
href="#perlthrtut-Threaded-Program-Models" accesskey="u" rel="up">perlthrtut 
Threaded Program Models</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Work-Crew"></a>
-<h4 class="subsection">74.4.2 Work Crew</h4>
+<h4 class="subsection">75.4.2 Work Crew</h4>
 
 <p>In the work crew model, several threads are created that do
 essentially the same thing to different pieces of data.  It closely
@@ -96371,7 +96275,7 @@
 Previous: <a href="#perlthrtut-Work-Crew" accesskey="p" rel="prev">perlthrtut 
Work Crew</a>, Up: <a href="#perlthrtut-Threaded-Program-Models" accesskey="u" 
rel="up">perlthrtut Threaded Program Models</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Pipeline"></a>
-<h4 class="subsection">74.4.3 Pipeline</h4>
+<h4 class="subsection">75.4.3 Pipeline</h4>
 
 <p>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
@@ -96400,7 +96304,7 @@
 Next: <a href="#perlthrtut-Thread_002dSafe-Modules" accesskey="n" 
rel="next">perlthrtut Thread-Safe Modules</a>, Previous: <a 
href="#perlthrtut-Threaded-Program-Models" accesskey="p" rel="prev">perlthrtut 
Threaded Program Models</a>, Up: <a href="#perlthrtut" accesskey="u" 
rel="up">perlthrtut</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="What-kind-of-threads-are-Perl-threads_003f"></a>
-<h3 class="section">74.5 What kind of threads are Perl threads?</h3>
+<h3 class="section">75.5 What kind of threads are Perl threads?</h3>
 
 <p>If you have experience with other thread implementations, you might
 find that things aren&rsquo;t quite what you expect.  It&rsquo;s very 
important to
@@ -96432,7 +96336,7 @@
 Next: <a href="#perlthrtut-Thread-Basics" accesskey="n" rel="next">perlthrtut 
Thread Basics</a>, Previous: <a 
href="#perlthrtut-What-kind-of-threads-are-Perl-threads_003f" accesskey="p" 
rel="prev">perlthrtut What kind of threads are Perl threads?</a>, Up: <a 
href="#perlthrtut" accesskey="u" rel="up">perlthrtut</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Thread_002dSafe-Modules"></a>
-<h3 class="section">74.6 Thread-Safe Modules</h3>
+<h3 class="section">75.6 Thread-Safe Modules</h3>
 
 <p>The addition of threads has changed Perl&rsquo;s internals
 substantially. There are implications for people who write
@@ -96468,7 +96372,7 @@
 Next: <a href="#perlthrtut-Threads-And-Data" accesskey="n" 
rel="next">perlthrtut Threads And Data</a>, Previous: <a 
href="#perlthrtut-Thread_002dSafe-Modules" accesskey="p" rel="prev">perlthrtut 
Thread-Safe Modules</a>, Up: <a href="#perlthrtut" accesskey="u" 
rel="up">perlthrtut</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Thread-Basics"></a>
-<h3 class="section">74.7 Thread Basics</h3>
+<h3 class="section">75.7 Thread Basics</h3>
 
 <p>The <a href="threads.html#Top">(threads)</a> module provides the basic 
functions you need to write
 threaded programs.  In the following sections, we&rsquo;ll cover the basics,
@@ -96498,7 +96402,7 @@
 Next: <a href="#perlthrtut-A-Note-about-the-Examples" accesskey="n" 
rel="next">perlthrtut A Note about the Examples</a>, Up: <a 
href="#perlthrtut-Thread-Basics" accesskey="u" rel="up">perlthrtut Thread 
Basics</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Basic-Thread-Support"></a>
-<h4 class="subsection">74.7.1 Basic Thread Support</h4>
+<h4 class="subsection">75.7.1 Basic Thread Support</h4>
 
 <p>Thread support is a Perl compile-time option. It&rsquo;s something 
that&rsquo;s
 turned on or off when Perl is built at your site, rather than when
@@ -96510,7 +96414,8 @@
 like:
 </p>
 <pre class="verbatim">    use Config;
-    $Config{useithreads} or die('Recompile Perl with threads to run this 
program.');
+    $Config{useithreads} or
+        die('Recompile Perl with threads to run this program.');
 </pre>
 <p>A possibly-threaded program using a possibly-threaded module might
 have code like this:
@@ -96541,7 +96446,7 @@
 Next: <a href="#perlthrtut-Creating-Threads" accesskey="n" 
rel="next">perlthrtut Creating Threads</a>, Previous: <a 
href="#perlthrtut-Basic-Thread-Support" accesskey="p" rel="prev">perlthrtut 
Basic Thread Support</a>, Up: <a href="#perlthrtut-Thread-Basics" accesskey="u" 
rel="up">perlthrtut Thread Basics</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="A-Note-about-the-Examples"></a>
-<h4 class="subsection">74.7.2 A Note about the Examples</h4>
+<h4 class="subsection">75.7.2 A Note about the Examples</h4>
 
 <p>In a real situation, care should be taken that all threads are finished
 executing before the program exits.  That care has <strong>not</strong> been 
taken in these
@@ -96556,7 +96461,7 @@
 Next: <a href="#perlthrtut-Waiting-For-A-Thread-To-Exit" accesskey="n" 
rel="next">perlthrtut Waiting For A Thread To Exit</a>, Previous: <a 
href="#perlthrtut-A-Note-about-the-Examples" accesskey="p" 
rel="prev">perlthrtut A Note about the Examples</a>, Up: <a 
href="#perlthrtut-Thread-Basics" accesskey="u" rel="up">perlthrtut Thread 
Basics</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Creating-Threads"></a>
-<h4 class="subsection">74.7.3 Creating Threads</h4>
+<h4 class="subsection">75.7.3 Creating Threads</h4>
 
 <p>The <a href="threads.html#Top">(threads)</a> module provides the tools you 
need to create new
 threads.  Like any other module, you need to tell Perl that you want to use
@@ -96592,7 +96497,7 @@
     sub sub1 {
         my @InboundParameters = @_;
         print(&quot;In the thread\n&quot;);
-        print('Got parameters &gt;', join('&lt;&gt;', @InboundParameters), 
&quot;&lt;\n&quot;);
+        print('Got parameters &gt;', join('&lt;&gt;',@InboundParameters), 
&quot;&lt;\n&quot;);
     }
 </pre>
 <p>The last example illustrates another feature of threads.  You can spawn
@@ -96609,7 +96514,7 @@
 Next: <a href="#perlthrtut-Ignoring-A-Thread" accesskey="n" 
rel="next">perlthrtut Ignoring A Thread</a>, Previous: <a 
href="#perlthrtut-Creating-Threads" accesskey="p" rel="prev">perlthrtut 
Creating Threads</a>, Up: <a href="#perlthrtut-Thread-Basics" accesskey="u" 
rel="up">perlthrtut Thread Basics</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Waiting-For-A-Thread-To-Exit"></a>
-<h4 class="subsection">74.7.4 Waiting For A Thread To Exit</h4>
+<h4 class="subsection">75.7.4 Waiting For A Thread To Exit</h4>
 
 <p>Since threads are also subroutines, they can return values.  To wait
 for a thread to exit and extract any values it might return, you can
@@ -96645,7 +96550,7 @@
 Next: <a href="#perlthrtut-Process-and-Thread-Termination" accesskey="n" 
rel="next">perlthrtut Process and Thread Termination</a>, Previous: <a 
href="#perlthrtut-Waiting-For-A-Thread-To-Exit" accesskey="p" 
rel="prev">perlthrtut Waiting For A Thread To Exit</a>, Up: <a 
href="#perlthrtut-Thread-Basics" accesskey="u" rel="up">perlthrtut Thread 
Basics</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Ignoring-A-Thread"></a>
-<h4 class="subsection">74.7.5 Ignoring A Thread</h4>
+<h4 class="subsection">75.7.5 Ignoring A Thread</h4>
 
 <p><code>join()</code> 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
@@ -96697,7 +96602,7 @@
 Previous: <a href="#perlthrtut-Ignoring-A-Thread" accesskey="p" 
rel="prev">perlthrtut Ignoring A Thread</a>, Up: <a 
href="#perlthrtut-Thread-Basics" accesskey="u" rel="up">perlthrtut Thread 
Basics</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Process-and-Thread-Termination"></a>
-<h4 class="subsection">74.7.6 Process and Thread Termination</h4>
+<h4 class="subsection">75.7.6 Process and Thread Termination</h4>
 
 <p>With threads one must be careful to make sure they all have a chance to
 run to completion, assuming that is what you want.
@@ -96734,7 +96639,7 @@
 Next: <a href="#perlthrtut-Synchronization-and-control" accesskey="n" 
rel="next">perlthrtut Synchronization and control</a>, Previous: <a 
href="#perlthrtut-Thread-Basics" accesskey="p" rel="prev">perlthrtut Thread 
Basics</a>, Up: <a href="#perlthrtut" accesskey="u" rel="up">perlthrtut</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Threads-And-Data"></a>
-<h3 class="section">74.8 Threads And Data</h3>
+<h3 class="section">75.8 Threads And Data</h3>
 
 <p>Now that we&rsquo;ve covered the basics of threads, it&rsquo;s time for our 
next
 topic: Data.  Threading introduces a couple of complications to data
@@ -96754,7 +96659,7 @@
 Next: <a href="#perlthrtut-Thread-Pitfalls_003a-Races" accesskey="n" 
rel="next">perlthrtut Thread Pitfalls: Races</a>, Up: <a 
href="#perlthrtut-Threads-And-Data" accesskey="u" rel="up">perlthrtut Threads 
And Data</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Shared-And-Unshared-Data"></a>
-<h4 class="subsection">74.8.1 Shared And Unshared Data</h4>
+<h4 class="subsection">75.8.1 Shared And Unshared Data</h4>
 
 <p>The biggest difference between Perl <em>ithreads</em> and the old 5.005 
style
 threading, or for that matter, to most other threading systems out there,
@@ -96795,7 +96700,8 @@
 
     ... create some threads ...
 
-    $hash{a} = 1;       # All threads see exists($hash{a}) and $hash{a} == 1
+    $hash{a} = 1;       # All threads see exists($hash{a})
+                        # and $hash{a} == 1
     $hash{a} = $var;    # okay - copy-by-value: same effect as previous
     $hash{a} = $svar;   # okay - copy-by-value: same effect as previous
     $hash{a} = \$svar;  # okay - a reference to a shared variable
@@ -96814,7 +96720,7 @@
 Previous: <a href="#perlthrtut-Shared-And-Unshared-Data" accesskey="p" 
rel="prev">perlthrtut Shared And Unshared Data</a>, Up: <a 
href="#perlthrtut-Threads-And-Data" accesskey="u" rel="up">perlthrtut Threads 
And Data</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Thread-Pitfalls_003a-Races"></a>
-<h4 class="subsection">74.8.2 Thread Pitfalls: Races</h4>
+<h4 class="subsection">75.8.2 Thread Pitfalls: Races</h4>
 
 <p>While threads bring a new set of useful tools, they also bring a
 number of pitfalls.  One pitfall is the race condition:
@@ -96872,7 +96778,7 @@
 Next: <a href="#perlthrtut-General-Thread-Utility-Routines" accesskey="n" 
rel="next">perlthrtut General Thread Utility Routines</a>, Previous: <a 
href="#perlthrtut-Threads-And-Data" accesskey="p" rel="prev">perlthrtut Threads 
And Data</a>, Up: <a href="#perlthrtut" accesskey="u" rel="up">perlthrtut</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Synchronization-and-control"></a>
-<h3 class="section">74.9 Synchronization and control</h3>
+<h3 class="section">75.9 Synchronization and control</h3>
 
 <p>Perl provides a number of mechanisms to coordinate the interactions
 between themselves and their data, to avoid race conditions and the like.
@@ -96908,7 +96814,7 @@
 Next: <a href="#perlthrtut-A-Thread-Pitfall_003a-Deadlocks" accesskey="n" 
rel="next">perlthrtut A Thread Pitfall: Deadlocks</a>, Up: <a 
href="#perlthrtut-Synchronization-and-control" accesskey="u" 
rel="up">perlthrtut Synchronization and control</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Controlling-access_003a-lock_0028_0029"></a>
-<h4 class="subsection">74.9.1 Controlling access: lock()</h4>
+<h4 class="subsection">75.9.1 Controlling access: lock()</h4>
 
 <p>The <code>lock()</code> function takes a shared variable and puts a lock on 
it.
 No other thread may lock the variable until the variable is unlocked
@@ -97001,7 +96907,7 @@
 Next: <a href="#perlthrtut-Queues_003a-Passing-Data-Around" accesskey="n" 
rel="next">perlthrtut Queues: Passing Data Around</a>, Previous: <a 
href="#perlthrtut-Controlling-access_003a-lock_0028_0029" accesskey="p" 
rel="prev">perlthrtut Controlling access: lock()</a>, Up: <a 
href="#perlthrtut-Synchronization-and-control" accesskey="u" 
rel="up">perlthrtut Synchronization and control</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="A-Thread-Pitfall_003a-Deadlocks"></a>
-<h4 class="subsection">74.9.2 A Thread Pitfall: Deadlocks</h4>
+<h4 class="subsection">75.9.2 A Thread Pitfall: Deadlocks</h4>
 
 <p>Locks are a handy tool to synchronize access to data, and using them
 properly is the key to safe shared data.  Unfortunately, locks aren&rsquo;t
@@ -97056,7 +96962,7 @@
 Next: <a href="#perlthrtut-Semaphores_003a-Synchronizing-Data-Access" 
accesskey="n" rel="next">perlthrtut Semaphores: Synchronizing Data Access</a>, 
Previous: <a href="#perlthrtut-A-Thread-Pitfall_003a-Deadlocks" accesskey="p" 
rel="prev">perlthrtut A Thread Pitfall: Deadlocks</a>, Up: <a 
href="#perlthrtut-Synchronization-and-control" accesskey="u" 
rel="up">perlthrtut Synchronization and control</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Queues_003a-Passing-Data-Around"></a>
-<h4 class="subsection">74.9.3 Queues: Passing Data Around</h4>
+<h4 class="subsection">75.9.3 Queues: Passing Data Around</h4>
 
 <p>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
@@ -97095,7 +97001,7 @@
 Next: <a href="#perlthrtut-Basic-semaphores" accesskey="n" 
rel="next">perlthrtut Basic semaphores</a>, Previous: <a 
href="#perlthrtut-Queues_003a-Passing-Data-Around" accesskey="p" 
rel="prev">perlthrtut Queues: Passing Data Around</a>, Up: <a 
href="#perlthrtut-Synchronization-and-control" accesskey="u" 
rel="up">perlthrtut Synchronization and control</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Semaphores_003a-Synchronizing-Data-Access"></a>
-<h4 class="subsection">74.9.4 Semaphores: Synchronizing Data Access</h4>
+<h4 class="subsection">75.9.4 Semaphores: Synchronizing Data Access</h4>
 
 <p>Semaphores are a kind of generic locking mechanism. In their most basic
 form, they behave very much like lockable scalars, except that they
@@ -97110,7 +97016,7 @@
 Next: <a href="#perlthrtut-Advanced-Semaphores" accesskey="n" 
rel="next">perlthrtut Advanced Semaphores</a>, Previous: <a 
href="#perlthrtut-Semaphores_003a-Synchronizing-Data-Access" accesskey="p" 
rel="prev">perlthrtut Semaphores: Synchronizing Data Access</a>, Up: <a 
href="#perlthrtut-Synchronization-and-control" accesskey="u" 
rel="up">perlthrtut Synchronization and control</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Basic-semaphores"></a>
-<h4 class="subsection">74.9.5 Basic semaphores</h4>
+<h4 class="subsection">75.9.5 Basic semaphores</h4>
 
 <p>Semaphores have two methods, <code>down()</code> and <code>up()</code>: 
<code>down()</code> decrements the resource
 count, while <code>up()</code> increments it. Calls to <code>down()</code> 
will block if the
@@ -97135,7 +97041,8 @@
         while ($TryCount--) {
             $semaphore-&gt;down();
             $LocalCopy = $GlobalVariable;
-            print(&quot;$TryCount tries left for sub $SubNumber 
(\$GlobalVariable is $GlobalVariable)\n&quot;);
+            print(&quot;$TryCount tries left for sub $SubNumber &quot;
+                 .&quot;(\$GlobalVariable is $GlobalVariable)\n&quot;);
             sleep(2);
             $LocalCopy++;
             $GlobalVariable = $LocalCopy;
@@ -97158,7 +97065,7 @@
 Next: <a href="#perlthrtut-Waiting-for-a-Condition" accesskey="n" 
rel="next">perlthrtut Waiting for a Condition</a>, Previous: <a 
href="#perlthrtut-Basic-semaphores" accesskey="p" rel="prev">perlthrtut Basic 
semaphores</a>, Up: <a href="#perlthrtut-Synchronization-and-control" 
accesskey="u" rel="up">perlthrtut Synchronization and control</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Advanced-Semaphores"></a>
-<h4 class="subsection">74.9.6 Advanced Semaphores</h4>
+<h4 class="subsection">75.9.6 Advanced Semaphores</h4>
 
 <p>By default, semaphores behave like locks, letting only one thread
 <code>down()</code> them at a time.  However, there are other uses for 
semaphores.
@@ -97224,7 +97131,7 @@
 Next: <a href="#perlthrtut-Giving-up-control" accesskey="n" 
rel="next">perlthrtut Giving up control</a>, Previous: <a 
href="#perlthrtut-Advanced-Semaphores" accesskey="p" rel="prev">perlthrtut 
Advanced Semaphores</a>, Up: <a href="#perlthrtut-Synchronization-and-control" 
accesskey="u" rel="up">perlthrtut Synchronization and control</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Waiting-for-a-Condition"></a>
-<h4 class="subsection">74.9.7 Waiting for a Condition</h4>
+<h4 class="subsection">75.9.7 Waiting for a Condition</h4>
 
 <p>The functions <code>cond_wait()</code> and <code>cond_signal()</code>
 can be used in conjunction with locks to notify
@@ -97240,7 +97147,7 @@
 Previous: <a href="#perlthrtut-Waiting-for-a-Condition" accesskey="p" 
rel="prev">perlthrtut Waiting for a Condition</a>, Up: <a 
href="#perlthrtut-Synchronization-and-control" accesskey="u" 
rel="up">perlthrtut Synchronization and control</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Giving-up-control"></a>
-<h4 class="subsection">74.9.8 Giving up control</h4>
+<h4 class="subsection">75.9.8 Giving up control</h4>
 
 <p>There are times when you may find it useful to have a thread
 explicitly give up the CPU to another thread.  You may be doing something
@@ -97280,7 +97187,7 @@
 Next: <a href="#perlthrtut-A-Complete-Example" accesskey="n" 
rel="next">perlthrtut A Complete Example</a>, Previous: <a 
href="#perlthrtut-Synchronization-and-control" accesskey="p" 
rel="prev">perlthrtut Synchronization and control</a>, Up: <a 
href="#perlthrtut" accesskey="u" rel="up">perlthrtut</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="General-Thread-Utility-Routines"></a>
-<h3 class="section">74.10 General Thread Utility Routines</h3>
+<h3 class="section">75.10 General Thread Utility Routines</h3>
 
 <p>We&rsquo;ve covered the workhorse parts of Perl&rsquo;s threading package, 
and
 with these tools you should be well on your way to writing threaded
@@ -97305,7 +97212,7 @@
 Next: <a href="#perlthrtut-Thread-IDs" accesskey="n" rel="next">perlthrtut 
Thread IDs</a>, Up: <a href="#perlthrtut-General-Thread-Utility-Routines" 
accesskey="u" rel="up">perlthrtut General Thread Utility Routines</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="What-Thread-Am-I-In_003f"></a>
-<h4 class="subsection">74.10.1 What Thread Am I In?</h4>
+<h4 class="subsection">75.10.1 What Thread Am I In?</h4>
 
 <p>The <code>threads-&gt;self()</code> class method provides your program with 
a way to
 get an object representing the thread it&rsquo;s currently in.  You can use 
this
@@ -97318,7 +97225,7 @@
 Next: <a href="#perlthrtut-Are-These-Threads-The-Same_003f" accesskey="n" 
rel="next">perlthrtut Are These Threads The Same?</a>, Previous: <a 
href="#perlthrtut-What-Thread-Am-I-In_003f" accesskey="p" rel="prev">perlthrtut 
What Thread Am I In?</a>, Up: <a 
href="#perlthrtut-General-Thread-Utility-Routines" accesskey="u" 
rel="up">perlthrtut General Thread Utility Routines</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Thread-IDs"></a>
-<h4 class="subsection">74.10.2 Thread IDs</h4>
+<h4 class="subsection">75.10.2 Thread IDs</h4>
 
 <p><code>tid()</code> is a thread object method that returns the thread ID of 
the
 thread the object represents.  Thread IDs are integers, with the main
@@ -97335,7 +97242,7 @@
 Next: <a href="#perlthrtut-What-Threads-Are-Running_003f" accesskey="n" 
rel="next">perlthrtut What Threads Are Running?</a>, Previous: <a 
href="#perlthrtut-Thread-IDs" accesskey="p" rel="prev">perlthrtut Thread 
IDs</a>, Up: <a href="#perlthrtut-General-Thread-Utility-Routines" 
accesskey="u" rel="up">perlthrtut General Thread Utility Routines</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Are-These-Threads-The-Same_003f"></a>
-<h4 class="subsection">74.10.3 Are These Threads The Same?</h4>
+<h4 class="subsection">75.10.3 Are These Threads The Same?</h4>
 
 <p>The <code>equal()</code> method takes two thread objects and returns true
 if the objects represent the same thread, and false if they don&rsquo;t.
@@ -97350,7 +97257,7 @@
 Previous: <a href="#perlthrtut-Are-These-Threads-The-Same_003f" accesskey="p" 
rel="prev">perlthrtut Are These Threads The Same?</a>, Up: <a 
href="#perlthrtut-General-Thread-Utility-Routines" accesskey="u" 
rel="up">perlthrtut General Thread Utility Routines</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="What-Threads-Are-Running_003f"></a>
-<h4 class="subsection">74.10.4 What Threads Are Running?</h4>
+<h4 class="subsection">75.10.4 What Threads Are Running?</h4>
 
 <p><code>threads-&gt;list()</code> returns a list of thread objects, one for 
each thread
 that&rsquo;s currently running and not detached.  Handy for a number of things,
@@ -97376,7 +97283,7 @@
 Next: <a href="#perlthrtut-Different-implementations-of-threads" accesskey="n" 
rel="next">perlthrtut Different implementations of threads</a>, Previous: <a 
href="#perlthrtut-General-Thread-Utility-Routines" accesskey="p" 
rel="prev">perlthrtut General Thread Utility Routines</a>, Up: <a 
href="#perlthrtut" accesskey="u" rel="up">perlthrtut</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="A-Complete-Example"></a>
-<h3 class="section">74.11 A Complete Example</h3>
+<h3 class="section">75.11 A Complete Example</h3>
 
 <p>Confused yet? It&rsquo;s time for an example program to show some of the
 things we&rsquo;ve covered.  This program finds prime numbers using threads.
@@ -97470,7 +97377,7 @@
 Next: <a href="#perlthrtut-Performance-considerations" accesskey="n" 
rel="next">perlthrtut Performance considerations</a>, Previous: <a 
href="#perlthrtut-A-Complete-Example" accesskey="p" rel="prev">perlthrtut A 
Complete Example</a>, Up: <a href="#perlthrtut" accesskey="u" 
rel="up">perlthrtut</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Different-implementations-of-threads"></a>
-<h3 class="section">74.12 Different implementations of threads</h3>
+<h3 class="section">75.12 Different implementations of threads</h3>
 
 <p>Some background on thread implementations from the operating system
 viewpoint.  There are three basic categories of threads: user-mode threads,
@@ -97546,7 +97453,7 @@
 Next: <a href="#perlthrtut-Process_002dscope-Changes" accesskey="n" 
rel="next">perlthrtut Process-scope Changes</a>, Previous: <a 
href="#perlthrtut-Different-implementations-of-threads" accesskey="p" 
rel="prev">perlthrtut Different implementations of threads</a>, Up: <a 
href="#perlthrtut" accesskey="u" rel="up">perlthrtut</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Performance-considerations"></a>
-<h3 class="section">74.13 Performance considerations</h3>
+<h3 class="section">75.13 Performance considerations</h3>
 
 <p>The main thing to bear in mind when comparing Perl&rsquo;s 
<em>ithreads</em> to other threading
 models is the fact that for each new thread created, a complete copy of
@@ -97569,7 +97476,7 @@
 Next: <a href="#perlthrtut-Thread_002dSafety-of-System-Libraries" 
accesskey="n" rel="next">perlthrtut Thread-Safety of System Libraries</a>, 
Previous: <a href="#perlthrtut-Performance-considerations" accesskey="p" 
rel="prev">perlthrtut Performance considerations</a>, Up: <a href="#perlthrtut" 
accesskey="u" rel="up">perlthrtut</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Process_002dscope-Changes"></a>
-<h3 class="section">74.14 Process-scope Changes</h3>
+<h3 class="section">75.14 Process-scope Changes</h3>
 
 <p>Note that while threads themselves are separate execution threads and
 Perl data is thread-private unless explicitly shared, the threads can
@@ -97608,7 +97515,7 @@
 Next: <a href="#perlthrtut-Conclusion" accesskey="n" rel="next">perlthrtut 
Conclusion</a>, Previous: <a href="#perlthrtut-Process_002dscope-Changes" 
accesskey="p" rel="prev">perlthrtut Process-scope Changes</a>, Up: <a 
href="#perlthrtut" accesskey="u" rel="up">perlthrtut</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Thread_002dSafety-of-System-Libraries"></a>
-<h3 class="section">74.15 Thread-Safety of System Libraries</h3>
+<h3 class="section">75.15 Thread-Safety of System Libraries</h3>
 
 <p>Whether various library calls are thread-safe is outside the control
 of Perl.  Calls often suffering from not being thread-safe include:
@@ -97639,7 +97546,7 @@
 Next: <a href="#perlthrtut-SEE-ALSO" accesskey="n" rel="next">perlthrtut SEE 
ALSO</a>, Previous: <a href="#perlthrtut-Thread_002dSafety-of-System-Libraries" 
accesskey="p" rel="prev">perlthrtut Thread-Safety of System Libraries</a>, Up: 
<a href="#perlthrtut" accesskey="u" rel="up">perlthrtut</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Conclusion"></a>
-<h3 class="section">74.16 Conclusion</h3>
+<h3 class="section">75.16 Conclusion</h3>
 
 <p>A complete thread tutorial could fill a book (and has, many times),
 but with what we&rsquo;ve covered in this introduction, you should be well
@@ -97651,8 +97558,8 @@
 <p>
 Next: <a href="#perlthrtut-Bibliography" accesskey="n" rel="next">perlthrtut 
Bibliography</a>, Previous: <a href="#perlthrtut-Conclusion" accesskey="p" 
rel="prev">perlthrtut Conclusion</a>, Up: <a href="#perlthrtut" accesskey="u" 
rel="up">perlthrtut</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-38"></a>
-<h3 class="section">74.17 SEE ALSO</h3>
+<a name="SEE-ALSO-37"></a>
+<h3 class="section">75.17 SEE ALSO</h3>
 
 <p>Annotated POD for <a href="threads.html#Top">(threads)</a>:
 <a 
href="http://annocpan.org/?mode=search&amp;field=Module&amp;name=threads";>http://annocpan.org/?mode=search&amp;field=Module&amp;name=threads</a>
@@ -97676,7 +97583,7 @@
 Next: <a href="#perlthrtut-Acknowledgements" accesskey="n" 
rel="next">perlthrtut Acknowledgements</a>, Previous: <a 
href="#perlthrtut-SEE-ALSO" accesskey="p" rel="prev">perlthrtut SEE ALSO</a>, 
Up: <a href="#perlthrtut" accesskey="u" rel="up">perlthrtut</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Bibliography"></a>
-<h3 class="section">74.18 Bibliography</h3>
+<h3 class="section">75.18 Bibliography</h3>
 
 <p>Here&rsquo;s a short bibliography courtesy of Jürgen Christoffel:
 </p>
@@ -97696,7 +97603,7 @@
 Next: <a href="#perlthrtut-OS_002dRelated-References" accesskey="n" 
rel="next">perlthrtut OS-Related References</a>, Up: <a 
href="#perlthrtut-Bibliography" accesskey="u" rel="up">perlthrtut 
Bibliography</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Introductory-Texts"></a>
-<h4 class="subsection">74.18.1 Introductory Texts</h4>
+<h4 class="subsection">75.18.1 Introductory Texts</h4>
 
 <p>Birrell, Andrew D. An Introduction to Programming with
 Threads. Digital Equipment Corporation, 1989, DEC-SRC Research Report
@@ -97726,7 +97633,7 @@
 Next: <a href="#perlthrtut-Other-References" accesskey="n" 
rel="next">perlthrtut Other References</a>, Previous: <a 
href="#perlthrtut-Introductory-Texts" accesskey="p" rel="prev">perlthrtut 
Introductory Texts</a>, Up: <a href="#perlthrtut-Bibliography" accesskey="u" 
rel="up">perlthrtut Bibliography</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="OS_002dRelated-References"></a>
-<h4 class="subsection">74.18.2 OS-Related References</h4>
+<h4 class="subsection">75.18.2 OS-Related References</h4>
 
 <p>Boykin, Joseph, David Kirschen, Alan Langerman, and Susan
 LoVerso. Programming under Mach. Addison-Wesley, 1994, ISBN
@@ -97745,7 +97652,7 @@
 Previous: <a href="#perlthrtut-OS_002dRelated-References" accesskey="p" 
rel="prev">perlthrtut OS-Related References</a>, Up: <a 
href="#perlthrtut-Bibliography" accesskey="u" rel="up">perlthrtut 
Bibliography</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Other-References"></a>
-<h4 class="subsection">74.18.3 Other References</h4>
+<h4 class="subsection">75.18.3 Other References</h4>
 
 <p>Arnold, Ken and James Gosling. The Java Programming Language, 2nd
 ed. Addison-Wesley, 1998, ISBN 0-201-31006-6.
@@ -97769,7 +97676,7 @@
 Next: <a href="#perlthrtut-AUTHOR" accesskey="n" rel="next">perlthrtut 
AUTHOR</a>, Previous: <a href="#perlthrtut-Bibliography" accesskey="p" 
rel="prev">perlthrtut Bibliography</a>, Up: <a href="#perlthrtut" accesskey="u" 
rel="up">perlthrtut</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Acknowledgements"></a>
-<h3 class="section">74.19 Acknowledgements</h3>
+<h3 class="section">75.19 Acknowledgements</h3>
 
 <p>Thanks (in no particular order) to Chaim Frenkel, Steve Fink, Gurusamy
 Sarathy, Ilya Zakharevich, Benjamin Sugars, Jürgen Christoffel, Joshua
@@ -97783,8 +97690,8 @@
 <p>
 Next: <a href="#perlthrtut-Copyrights" accesskey="n" rel="next">perlthrtut 
Copyrights</a>, Previous: <a href="#perlthrtut-Acknowledgements" accesskey="p" 
rel="prev">perlthrtut Acknowledgements</a>, Up: <a href="#perlthrtut" 
accesskey="u" rel="up">perlthrtut</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="AUTHOR-28"></a>
-<h3 class="section">74.20 AUTHOR</h3>
+<a name="AUTHOR-27"></a>
+<h3 class="section">75.20 AUTHOR</h3>
 
 <p>Dan Sugalski &lt;address@hidden&lt;gt&gt;
 </p>
@@ -97803,7 +97710,7 @@
 Previous: <a href="#perlthrtut-AUTHOR" accesskey="p" rel="prev">perlthrtut 
AUTHOR</a>, Up: <a href="#perlthrtut" accesskey="u" rel="up">perlthrtut</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Copyrights-1"></a>
-<h3 class="section">74.21 Copyrights</h3>
+<h3 class="section">75.21 Copyrights</h3>
 
 <p>The original version of this article originally appeared in The Perl
 Journal #10, and is copyright 1998 The Perl Journal. It appears courtesy
@@ -97817,7 +97724,7 @@
 Next: <a href="#perltodo" accesskey="n" rel="next">perltodo</a>, Previous: <a 
href="#perlthrtut" accesskey="p" rel="prev">perlthrtut</a>, Up: <a href="#Top" 
accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="perltie-1"></a>
-<h2 class="chapter">75 perltie</h2>
+<h2 class="chapter">76 perltie</h2>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perltie-NAME" 
accesskey="1">perltie NAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -97840,8 +97747,8 @@
 <p>
 Next: <a href="#perltie-SYNOPSIS" accesskey="n" rel="next">perltie 
SYNOPSIS</a>, Up: <a href="#perltie" accesskey="u" rel="up">perltie</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="NAME-74"></a>
-<h3 class="section">75.1 NAME</h3>
+<a name="NAME-75"></a>
+<h3 class="section">76.1 NAME</h3>
 
 <p>perltie - how to hide an object class in a simple variable
 </p>
@@ -97852,7 +97759,7 @@
 Next: <a href="#perltie-DESCRIPTION" accesskey="n" rel="next">perltie 
DESCRIPTION</a>, Previous: <a href="#perltie-NAME" accesskey="p" 
rel="prev">perltie NAME</a>, Up: <a href="#perltie" accesskey="u" 
rel="up">perltie</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="SYNOPSIS-11"></a>
-<h3 class="section">75.2 SYNOPSIS</h3>
+<h3 class="section">76.2 SYNOPSIS</h3>
 
 <pre class="verbatim"> tie VARIABLE, CLASSNAME, LIST
 
@@ -97866,8 +97773,8 @@
 <p>
 Next: <a href="#perltie-SEE-ALSO" accesskey="n" rel="next">perltie SEE 
ALSO</a>, Previous: <a href="#perltie-SYNOPSIS" accesskey="p" 
rel="prev">perltie SYNOPSIS</a>, Up: <a href="#perltie" accesskey="u" 
rel="up">perltie</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="DESCRIPTION-73"></a>
-<h3 class="section">75.3 DESCRIPTION</h3>
+<a name="DESCRIPTION-74"></a>
+<h3 class="section">76.3 DESCRIPTION</h3>
 
 <p>Prior to release 5.0 of Perl, a programmer could use dbmopen()
 to connect an on-disk database in the standard Unix dbm(3x)
@@ -97924,7 +97831,7 @@
 Next: <a href="#perltie-Tying-Arrays" accesskey="n" rel="next">perltie Tying 
Arrays</a>, Up: <a href="#perltie-DESCRIPTION" accesskey="u" rel="up">perltie 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Tying-Scalars"></a>
-<h4 class="subsection">75.3.1 Tying Scalars</h4>
+<h4 class="subsection">76.3.1 Tying Scalars</h4>
 
 <p>A class implementing a tied scalar should define the following methods:
 TIESCALAR, FETCH, STORE, and possibly UNTIE and/or DESTROY.
@@ -98074,10 +97981,11 @@
 Next: <a href="#perltie-Tying-Hashes" accesskey="n" rel="next">perltie Tying 
Hashes</a>, Previous: <a href="#perltie-Tying-Scalars" accesskey="p" 
rel="prev">perltie Tying Scalars</a>, Up: <a href="#perltie-DESCRIPTION" 
accesskey="u" rel="up">perltie DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Tying-Arrays"></a>
-<h4 class="subsection">75.3.2 Tying Arrays</h4>
+<h4 class="subsection">76.3.2 Tying Arrays</h4>
 
 <p>A class implementing a tied ordinary array should define the following
-methods: TIEARRAY, FETCH, STORE, FETCHSIZE, STORESIZE and perhaps UNTIE and/or 
DESTROY.
+methods: TIEARRAY, FETCH, STORE, FETCHSIZE, STORESIZE, CLEAR
+and perhaps UNTIE and/or DESTROY.
 </p>
 <p>FETCHSIZE and STORESIZE are used to provide <code>$#array</code> and
 equivalent <code>scalar(@array)</code> access.
@@ -98378,7 +98286,7 @@
 Next: <a href="#perltie-Tying-FileHandles" accesskey="n" rel="next">perltie 
Tying FileHandles</a>, Previous: <a href="#perltie-Tying-Arrays" accesskey="p" 
rel="prev">perltie Tying Arrays</a>, Up: <a href="#perltie-DESCRIPTION" 
accesskey="u" rel="up">perltie DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Tying-Hashes"></a>
-<h4 class="subsection">75.3.3 Tying Hashes</h4>
+<h4 class="subsection">76.3.3 Tying Hashes</h4>
 
 <p>Hashes were the first Perl data type to be tied (see dbmopen()).  A class
 implementing a tied hash should define the following methods: TIEHASH is
@@ -98743,7 +98651,7 @@
 Next: <a href="#perltie-UNTIE-this-4" accesskey="n" rel="next">perltie UNTIE 
this 4</a>, Previous: <a href="#perltie-Tying-Hashes" accesskey="p" 
rel="prev">perltie Tying Hashes</a>, Up: <a href="#perltie-DESCRIPTION" 
accesskey="u" rel="up">perltie DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Tying-FileHandles"></a>
-<h4 class="subsection">75.3.4 Tying FileHandles</h4>
+<h4 class="subsection">76.3.4 Tying FileHandles</h4>
 
 <p>This is partially implemented now.
 </p>
@@ -98921,7 +98829,7 @@
 Next: <a href="#perltie-The-untie-Gotcha" accesskey="n" rel="next">perltie The 
<code>untie</code> Gotcha</a>, Previous: <a href="#perltie-Tying-FileHandles" 
accesskey="p" rel="prev">perltie Tying FileHandles</a>, Up: <a 
href="#perltie-DESCRIPTION" accesskey="u" rel="up">perltie DESCRIPTION</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="UNTIE-this"></a>
-<h4 class="subsection">75.3.5 UNTIE this</h4>
+<h4 class="subsection">76.3.5 UNTIE this</h4>
 
 <p>You can define for all tie types an UNTIE method that will be called
 at untie().  See <a href="#perltie-The-untie-Gotcha">The untie Gotcha</a> 
below.
@@ -98933,7 +98841,7 @@
 Previous: <a href="#perltie-UNTIE-this-4" accesskey="p" rel="prev">perltie 
UNTIE this 4</a>, Up: <a href="#perltie-DESCRIPTION" accesskey="u" 
rel="up">perltie DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="The-untie-Gotcha"></a>
-<h4 class="subsection">75.3.6 The <code>untie</code> Gotcha</h4>
+<h4 class="subsection">76.3.6 The <code>untie</code> Gotcha</h4>
 
 <p>If you intend making use of the object returned from either tie() or
 tied(), and if the tie&rsquo;s target class defines a destructor, there is a
@@ -99088,8 +98996,8 @@
 <p>
 Next: <a href="#perltie-BUGS" accesskey="n" rel="next">perltie BUGS</a>, 
Previous: <a href="#perltie-DESCRIPTION" accesskey="p" rel="prev">perltie 
DESCRIPTION</a>, Up: <a href="#perltie" accesskey="u" rel="up">perltie</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-39"></a>
-<h3 class="section">75.4 SEE ALSO</h3>
+<a name="SEE-ALSO-38"></a>
+<h3 class="section">76.4 SEE ALSO</h3>
 
 <p>See <a href="DB_File.html#Top">(DB_File)</a> or <a 
href="Config.html#Top">(Config)</a> for some interesting tie() implementations.
 A good starting point for many tie() implementations is with one of the
@@ -99102,7 +99010,7 @@
 Next: <a href="#perltie-AUTHOR" accesskey="n" rel="next">perltie AUTHOR</a>, 
Previous: <a href="#perltie-SEE-ALSO" accesskey="p" rel="prev">perltie SEE 
ALSO</a>, Up: <a href="#perltie" accesskey="u" rel="up">perltie</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="BUGS-9"></a>
-<h3 class="section">75.5 BUGS</h3>
+<h3 class="section">76.5 BUGS</h3>
 
 <p>The bucket usage information provided by <code>scalar(%hash)</code> is not
 available.  What this means is that using %tied_hash in boolean
@@ -99138,8 +99046,8 @@
 <p>
 Previous: <a href="#perltie-BUGS" accesskey="p" rel="prev">perltie BUGS</a>, 
Up: <a href="#perltie" accesskey="u" rel="up">perltie</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="AUTHOR-29"></a>
-<h3 class="section">75.6 AUTHOR</h3>
+<a name="AUTHOR-28"></a>
+<h3 class="section">76.6 AUTHOR</h3>
 
 <p>Tom Christiansen
 </p>
@@ -99158,7 +99066,7 @@
 Next: <a href="#perltooc" accesskey="n" rel="next">perltooc</a>, Previous: <a 
href="#perltie" accesskey="p" rel="prev">perltie</a>, Up: <a href="#Top" 
accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="perltodo-1"></a>
-<h2 class="chapter">76 perltodo</h2>
+<h2 class="chapter">77 perltodo</h2>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perltodo-NAME" 
accesskey="1">perltodo NAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -99173,10 +99081,10 @@
 <p>
 Next: <a href="#perltodo-DESCRIPTION" accesskey="n" rel="next">perltodo 
DESCRIPTION</a>, Up: <a href="#perltodo" accesskey="u" rel="up">perltodo</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="NAME-75"></a>
-<h3 class="section">76.1 NAME</h3>
+<a name="NAME-76"></a>
+<h3 class="section">77.1 NAME</h3>
 
-<p>perltodo - Perl TO-DO List
+<p>perltodo - Link to the Perl to-do list
 </p>
 <hr>
 <a name="perltodo-DESCRIPTION"></a>
@@ -99184,14 +99092,15 @@
 <p>
 Previous: <a href="#perltodo-NAME" accesskey="p" rel="prev">perltodo NAME</a>, 
Up: <a href="#perltodo" accesskey="u" rel="up">perltodo</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="DESCRIPTION-74"></a>
-<h3 class="section">76.2 DESCRIPTION</h3>
+<a name="DESCRIPTION-75"></a>
+<h3 class="section">77.2 DESCRIPTION</h3>
 
-<p>We no longer install the Perl 5 to-do list as a manpage, as installing
-snapshot that becomes increasingly out of date isn&rsquo;t that useful to 
anyone.
-The current Perl 5 to-do list is maintained in the git repository, and can
+<p>The Perl 5 to-do list is maintained in the git repository, and can
 be viewed at <a 
href="http://perl5.git.perl.org/perl.git/blob/HEAD:/Porting/todo.pod";>http://perl5.git.perl.org/perl.git/blob/HEAD:/Porting/todo.pod</a>
 </p>
+<p>(The to-do list used to be here in perltodo. That has stopped, as 
installing a
+snapshot that becomes increasingly out of date isn&rsquo;t that useful to 
anyone.)
+</p>
 <hr>
 <a name="perltooc"></a>
 <div class="header">
@@ -99199,7 +99108,7 @@
 Next: <a href="#perltoot" accesskey="n" rel="next">perltoot</a>, Previous: <a 
href="#perltodo" accesskey="p" rel="prev">perltodo</a>, Up: <a href="#Top" 
accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="perltooc-1"></a>
-<h2 class="chapter">77 perltooc</h2>
+<h2 class="chapter">78 perltooc</h2>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perltooc-NAME" 
accesskey="1">perltooc NAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -99214,10 +99123,10 @@
 <p>
 Next: <a href="#perltooc-DESCRIPTION" accesskey="n" rel="next">perltooc 
DESCRIPTION</a>, Up: <a href="#perltooc" accesskey="u" rel="up">perltooc</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="NAME-76"></a>
-<h3 class="section">77.1 NAME</h3>
+<a name="NAME-77"></a>
+<h3 class="section">78.1 NAME</h3>
 
-<p>perltooc - This document has been deleted
+<p>perltooc - Links to information on object-oriented programming in Perl
 </p>
 <hr>
 <a name="perltooc-DESCRIPTION"></a>
@@ -99225,12 +99134,15 @@
 <p>
 Previous: <a href="#perltooc-NAME" accesskey="p" rel="prev">perltooc NAME</a>, 
Up: <a href="#perltooc" accesskey="u" rel="up">perltooc</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="DESCRIPTION-75"></a>
-<h3 class="section">77.2 DESCRIPTION</h3>
+<a name="DESCRIPTION-76"></a>
+<h3 class="section">78.2 DESCRIPTION</h3>
 
 <p>For information on OO programming with Perl, please see <a 
href="#perlootut-NAME">perlootut NAME</a>
 and <a href="#perlobj-NAME">perlobj NAME</a>.
 </p>
+<p>(The above documents supersede the tutorial that was formerly here in
+perltooc.)
+</p>
 <hr>
 <a name="perltoot"></a>
 <div class="header">
@@ -99238,7 +99150,7 @@
 Next: <a href="#perltrap" accesskey="n" rel="next">perltrap</a>, Previous: <a 
href="#perltooc" accesskey="p" rel="prev">perltooc</a>, Up: <a href="#Top" 
accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="perltoot-1"></a>
-<h2 class="chapter">78 perltoot</h2>
+<h2 class="chapter">79 perltoot</h2>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perltoot-NAME" 
accesskey="1">perltoot NAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -99253,10 +99165,10 @@
 <p>
 Next: <a href="#perltoot-DESCRIPTION" accesskey="n" rel="next">perltoot 
DESCRIPTION</a>, Up: <a href="#perltoot" accesskey="u" rel="up">perltoot</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="NAME-77"></a>
-<h3 class="section">78.1 NAME</h3>
+<a name="NAME-78"></a>
+<h3 class="section">79.1 NAME</h3>
 
-<p>perltoot - This document has been deleted
+<p>perltoot - Links to information on object-oriented programming in Perl
 </p>
 <hr>
 <a name="perltoot-DESCRIPTION"></a>
@@ -99264,12 +99176,15 @@
 <p>
 Previous: <a href="#perltoot-NAME" accesskey="p" rel="prev">perltoot NAME</a>, 
Up: <a href="#perltoot" accesskey="u" rel="up">perltoot</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="DESCRIPTION-76"></a>
-<h3 class="section">78.2 DESCRIPTION</h3>
+<a name="DESCRIPTION-77"></a>
+<h3 class="section">79.2 DESCRIPTION</h3>
 
 <p>For information on OO programming with Perl, please see <a 
href="#perlootut-NAME">perlootut NAME</a>
 and <a href="#perlobj-NAME">perlobj NAME</a>.
 </p>
+<p>(The above documents supersede the tutorial that was formerly here in
+perltoot.)
+</p>
 <hr>
 <a name="perltrap"></a>
 <div class="header">
@@ -99277,7 +99192,7 @@
 Next: <a href="#perlunicode" accesskey="n" rel="next">perlunicode</a>, 
Previous: <a href="#perltoot" accesskey="p" rel="prev">perltoot</a>, Up: <a 
href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="perltrap-1"></a>
-<h2 class="chapter">79 perltrap</h2>
+<h2 class="chapter">80 perltrap</h2>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perltrap-NAME" 
accesskey="1">perltrap NAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -99292,8 +99207,8 @@
 <p>
 Next: <a href="#perltrap-DESCRIPTION" accesskey="n" rel="next">perltrap 
DESCRIPTION</a>, Up: <a href="#perltrap" accesskey="u" rel="up">perltrap</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="NAME-78"></a>
-<h3 class="section">79.1 NAME</h3>
+<a name="NAME-79"></a>
+<h3 class="section">80.1 NAME</h3>
 
 <p>perltrap - Perl traps for the unwary
 </p>
@@ -99303,11 +99218,11 @@
 <p>
 Previous: <a href="#perltrap-NAME" accesskey="p" rel="prev">perltrap NAME</a>, 
Up: <a href="#perltrap" accesskey="u" rel="up">perltrap</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="DESCRIPTION-77"></a>
-<h3 class="section">79.2 DESCRIPTION</h3>
+<a name="DESCRIPTION-78"></a>
+<h3 class="section">80.2 DESCRIPTION</h3>
 
 <p>The biggest trap of all is forgetting to <code>use warnings</code> or use 
the <strong>-w</strong>
-switch; see <a href="#perllexwarn-NAME">perllexwarn NAME</a> and <a 
href="#perlrun-NAME">perlrun NAME</a>. The second biggest trap is not
+switch; see <a href="warnings.html#Top">(warnings)</a> and <a 
href="#perlrun-NAME">perlrun NAME</a>. The second biggest trap is not
 making your entire program runnable under <code>use strict</code>.  The third 
biggest
 trap is not reading the list of changes in this version of Perl; see
 <a href="perldelta.html#Top">(perldelta)</a>.
@@ -99317,11 +99232,13 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a 
href="#perltrap-C_002fC_002b_002b-Traps" accesskey="2">perltrap C/C++ 
Traps</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perltrap-Sed-Traps" 
accesskey="3">perltrap Sed Traps</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#perltrap-JavaScript-Traps" 
accesskey="3">perltrap JavaScript Traps</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perltrap-Shell-Traps" 
accesskey="4">perltrap Shell Traps</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#perltrap-Sed-Traps" 
accesskey="4">perltrap Sed Traps</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#perltrap-Perl-Traps" 
accesskey="5">perltrap Perl Traps</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="#perltrap-Shell-Traps" 
accesskey="5">perltrap Shell Traps</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#perltrap-Perl-Traps" 
accesskey="6">perltrap Perl Traps</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
 </table>
 
@@ -99332,7 +99249,7 @@
 Next: <a href="#perltrap-C_002fC_002b_002b-Traps" accesskey="n" 
rel="next">perltrap C/C++ Traps</a>, Up: <a href="#perltrap-DESCRIPTION" 
accesskey="u" rel="up">perltrap DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Awk-Traps"></a>
-<h4 class="subsection">79.2.1 Awk Traps</h4>
+<h4 class="subsection">80.2.1 Awk Traps</h4>
 
 <p>Accustomed <strong>awk</strong> users should take special note of the 
following:
 </p>
@@ -99428,10 +99345,10 @@
 <a name="perltrap-C_002fC_002b_002b-Traps"></a>
 <div class="header">
 <p>
-Next: <a href="#perltrap-Sed-Traps" accesskey="n" rel="next">perltrap Sed 
Traps</a>, Previous: <a href="#perltrap-Awk-Traps" accesskey="p" 
rel="prev">perltrap Awk Traps</a>, Up: <a href="#perltrap-DESCRIPTION" 
accesskey="u" rel="up">perltrap DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+Next: <a href="#perltrap-JavaScript-Traps" accesskey="n" rel="next">perltrap 
JavaScript Traps</a>, Previous: <a href="#perltrap-Awk-Traps" accesskey="p" 
rel="prev">perltrap Awk Traps</a>, Up: <a href="#perltrap-DESCRIPTION" 
accesskey="u" rel="up">perltrap DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="C_002fC_002b_002b-Traps"></a>
-<h4 class="subsection">79.2.2 C/C++ Traps</h4>
+<h4 class="subsection">80.2.2 C/C++ Traps</h4>
 
 <p>Cerebral C and C++ programmers should take note of the following:
 </p>
@@ -99468,13 +99385,90 @@
 </li></ul>
 
 <hr>
+<a name="perltrap-JavaScript-Traps"></a>
+<div class="header">
+<p>
+Next: <a href="#perltrap-Sed-Traps" accesskey="n" rel="next">perltrap Sed 
Traps</a>, Previous: <a href="#perltrap-C_002fC_002b_002b-Traps" accesskey="p" 
rel="prev">perltrap C/C++ Traps</a>, Up: <a href="#perltrap-DESCRIPTION" 
accesskey="u" rel="up">perltrap DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+</div>
+<a name="JavaScript-Traps"></a>
+<h4 class="subsection">80.2.3 JavaScript Traps</h4>
+
+<p>Judicious JavaScript programmers should take note of the following:
+</p>
+<ul>
+<li> In Perl, binary <code>+</code> is always addition.  <code>$string1 + 
$string2</code> converts
+both strings to numbers and then adds them.  To concatenate two strings,
+use the <code>.</code> operator.
+
+</li><li> The <code>+</code> unary operator doesn&rsquo;t do anything in Perl. 
 It exists to avoid
+syntactic ambiguities.
+
+</li><li> Unlike <code>for...in</code>, Perl&rsquo;s <code>for</code> (also 
spelled <code>foreach</code>) does not allow
+the left-hand side to be an arbitrary expression.  It must be a variable:
+
+<pre class="verbatim">   for my $variable (keys %hash) {
+        ...
+   }
+</pre>
+<p>Furthermore, don&rsquo;t forget the <code>keys</code> in there, as
+<code>foreach my $kv (%hash) {}</code> iterates over the keys and values, and 
is
+generally not useful ($kv would be a key, then a value, and so on).
+</p>
+</li><li> To iterate over the indices of an array, use <code>foreach my $i (0 
.. $#array)
+{}</code>.  <code>foreach my $v (@array) {}</code> iterates over the values.
+
+</li><li> Perl requires braces following <code>if</code>, <code>while</code>, 
<code>foreach</code>, etc.
+
+</li><li> In Perl, <code>else if</code> is spelled <code>elsif</code>.
+
+</li><li> <code>? :</code> has higher precedence than assignment.  In 
JavaScript, one can
+write:
+
+<pre class="verbatim">    condition ? do_something() : variable = 3
+</pre>
+<p>and the variable is only assigned if the condition is false.  In Perl, you
+need parentheses:
+</p>
+<pre class="verbatim">    $condition ? do_something() : ($variable = 3);
+</pre>
+<p>Or just use <code>if</code>.
+</p>
+</li><li> Perl requires semicolons to separate statements.
+
+</li><li> Variables declared with <code>my</code> only affect code 
<em>after</em> the declaration.
+You cannot write <code>$x = 1; my $x;</code> and expect the first assignment to
+affect the same variable.  It will instead assign to an <code>$x</code> 
declared
+previously in an outer scope, or to a global variable.
+
+<p>Note also that the variable is not visible until the following
+<em>statement</em>.  This means that in <code>my $x = 1 + $x</code> the second 
$x refers
+to one declared previously.
+</p>
+</li><li> <code>my</code> variables are scoped to the current block, not to 
the current
+function.  If you write <code>{my $x;} $x;</code>, the second <code>$x</code> 
does not refer to
+the one declared inside the block.
+
+</li><li> An object&rsquo;s members cannot be made accessible as variables.  
The closest
+Perl equivalent to <code>with(object) { method() }</code> is <code>for</code>, 
which can alias
+<code>$_</code> to the object:
+
+<pre class="verbatim">    for ($object) {
+        $_-&gt;method;
+    }
+</pre>
+</li><li> The object or class on which a method is called is passed as one of 
the
+method&rsquo;s arguments, not as a separate <code>this</code> value.
+
+</li></ul>
+
+<hr>
 <a name="perltrap-Sed-Traps"></a>
 <div class="header">
 <p>
-Next: <a href="#perltrap-Shell-Traps" accesskey="n" rel="next">perltrap Shell 
Traps</a>, Previous: <a href="#perltrap-C_002fC_002b_002b-Traps" accesskey="p" 
rel="prev">perltrap C/C++ Traps</a>, Up: <a href="#perltrap-DESCRIPTION" 
accesskey="u" rel="up">perltrap DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+Next: <a href="#perltrap-Shell-Traps" accesskey="n" rel="next">perltrap Shell 
Traps</a>, Previous: <a href="#perltrap-JavaScript-Traps" accesskey="p" 
rel="prev">perltrap JavaScript Traps</a>, Up: <a href="#perltrap-DESCRIPTION" 
accesskey="u" rel="up">perltrap DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Sed-Traps"></a>
-<h4 class="subsection">79.2.3 Sed Traps</h4>
+<h4 class="subsection">80.2.4 Sed Traps</h4>
 
 <p>Seasoned <strong>sed</strong> programmers should take note of the following:
 </p>
@@ -99498,7 +99492,7 @@
 Next: <a href="#perltrap-Perl-Traps" accesskey="n" rel="next">perltrap Perl 
Traps</a>, Previous: <a href="#perltrap-Sed-Traps" accesskey="p" 
rel="prev">perltrap Sed Traps</a>, Up: <a href="#perltrap-DESCRIPTION" 
accesskey="u" rel="up">perltrap DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Shell-Traps"></a>
-<h4 class="subsection">79.2.4 Shell Traps</h4>
+<h4 class="subsection">80.2.5 Shell Traps</h4>
 
 <p>Sharp shell programmers should take note of the following:
 </p>
@@ -99535,7 +99529,7 @@
 Previous: <a href="#perltrap-Shell-Traps" accesskey="p" rel="prev">perltrap 
Shell Traps</a>, Up: <a href="#perltrap-DESCRIPTION" accesskey="u" 
rel="up">perltrap DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Perl-Traps"></a>
-<h4 class="subsection">79.2.5 Perl Traps</h4>
+<h4 class="subsection">80.2.6 Perl Traps</h4>
 
 <p>Practicing Perl Programmers should take note of the following:
 </p>
@@ -99597,7 +99591,7 @@
 Next: <a href="#perlunifaq" accesskey="n" rel="next">perlunifaq</a>, Previous: 
<a href="#perltrap" accesskey="p" rel="prev">perltrap</a>, Up: <a href="#Top" 
accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="perlunicode-1"></a>
-<h2 class="chapter">80 perlunicode</h2>
+<h2 class="chapter">81 perlunicode</h2>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perlunicode-NAME" 
accesskey="1">perlunicode NAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -99616,8 +99610,8 @@
 <p>
 Next: <a href="#perlunicode-DESCRIPTION" accesskey="n" rel="next">perlunicode 
DESCRIPTION</a>, Up: <a href="#perlunicode" accesskey="u" 
rel="up">perlunicode</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="NAME-79"></a>
-<h3 class="section">80.1 NAME</h3>
+<a name="NAME-80"></a>
+<h3 class="section">81.1 NAME</h3>
 
 <p>perlunicode - Unicode support in Perl
 </p>
@@ -99627,8 +99621,8 @@
 <p>
 Next: <a href="#perlunicode-BUGS" accesskey="n" rel="next">perlunicode 
BUGS</a>, Previous: <a href="#perlunicode-NAME" accesskey="p" 
rel="prev">perlunicode NAME</a>, Up: <a href="#perlunicode" accesskey="u" 
rel="up">perlunicode</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="DESCRIPTION-78"></a>
-<h3 class="section">80.2 DESCRIPTION</h3>
+<a name="DESCRIPTION-79"></a>
+<h3 class="section">81.2 DESCRIPTION</h3>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a 
href="#perlunicode-Important-Caveats" accesskey="1">perlunicode Important 
Caveats</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
@@ -99678,7 +99672,7 @@
 Next: <a href="#perlunicode-Byte-and-Character-Semantics" accesskey="n" 
rel="next">perlunicode Byte and Character Semantics</a>, Up: <a 
href="#perlunicode-DESCRIPTION" accesskey="u" rel="up">perlunicode 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Important-Caveats"></a>
-<h4 class="subsection">80.2.1 Important Caveats</h4>
+<h4 class="subsection">81.2.1 Important Caveats</h4>
 
 <p>Unicode support is an extensive requirement. While Perl does not
 implement the Unicode standard or the accompanying technical reports
@@ -99693,8 +99687,8 @@
 Read <a href="http://www.unicode.org/reports/tr36";>Unicode Security 
Considerations</a>.
 </p>
 <dl compact="compact">
-<dt>Safest if you &quot;use feature &rsquo;unicode_strings&rsquo;&quot;</dt>
-<dd><a 
name="perlunicode-Safest-if-you-_0022use-feature-_0027unicode_005fstrings_0027_0022"></a>
+<dt>Safest if you <code>use feature 'unicode_strings'</code></dt>
+<dd><a 
name="perlunicode-Safest-if-you-use-feature-_0027unicode_005fstrings_0027"></a>
 <p>In order to preserve backward compatibility, Perl does not turn
 on full internal Unicode support unless the pragma
 <code>use feature 'unicode_strings'</code> is specified.  (This is 
automatically
@@ -99711,9 +99705,9 @@
 <dd><a name="perlunicode-Input-and-Output-Layers"></a>
 <p>Perl knows when a filehandle uses Perl&rsquo;s internal Unicode encodings
 (UTF-8, or UTF-EBCDIC if in EBCDIC) if the filehandle is opened with
-the &quot;:encoding(utf8)&quot; layer.  Other encodings can be converted to 
Perl&rsquo;s
+the <code>:encoding(utf8)</code> layer.  Other encodings can be converted to 
Perl&rsquo;s
 encoding on input or from Perl&rsquo;s encoding on output by use of the
-&quot;:encoding(...)&quot;  layer.  See <a href="open.html#Top">(open)</a>.
+<code>:encoding(...)</code>  layer.  See <a href="open.html#Top">(open)</a>.
 </p>
 <p>To indicate that Perl source itself is in UTF-8, use <code>use utf8;</code>.
 </p>
@@ -99728,12 +99722,12 @@
 is needed.</strong>  See <a href="utf8.html#Top">(utf8)</a>.
 </p>
 </dd>
-<dt>BOM-marked scripts and UTF-16 scripts autodetected</dt>
+<dt><code>BOM</code>-marked scripts and UTF-16 scripts autodetected</dt>
 <dd><a 
name="perlunicode-BOM_002dmarked-scripts-and-UTF_002d16-scripts-autodetected"></a>
-<p>If a Perl script begins marked with the Unicode BOM (UTF-16LE, UTF16-BE,
-or UTF-8), or if the script looks like non-BOM-marked UTF-16 of either
+<p>If a Perl script begins marked with the Unicode <code>BOM</code> (UTF-16LE, 
UTF16-BE,
+or UTF-8), or if the script looks like non-<code>BOM</code>-marked UTF-16 of 
either
 endianness, Perl will correctly read in the script as Unicode.
-(BOMless UTF-8 cannot be effectively recognized or differentiated from
+(<code>BOM</code>less UTF-8 cannot be effectively recognized or differentiated 
from
 ISO 8859-1 or other eight-bit encodings.)
 </p>
 </dd>
@@ -99757,7 +99751,7 @@
 Next: <a href="#perlunicode-Effects-of-Character-Semantics" accesskey="n" 
rel="next">perlunicode Effects of Character Semantics</a>, Previous: <a 
href="#perlunicode-Important-Caveats" accesskey="p" rel="prev">perlunicode 
Important Caveats</a>, Up: <a href="#perlunicode-DESCRIPTION" accesskey="u" 
rel="up">perlunicode DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Byte-and-Character-Semantics"></a>
-<h4 class="subsection">80.2.2 Byte and Character Semantics</h4>
+<h4 class="subsection">81.2.2 Byte and Character Semantics</h4>
 
 <p>Perl uses logically-wide characters to represent strings internally.
 </p>
@@ -99777,13 +99771,13 @@
 compatibility and chooses to use byte semantics.
 </p>
 <p>When <code>use locale</code> (but not <code>use locale 
':not_characters'</code>) is in
-effect, Perl uses the semantics associated with the current locale.
+effect, Perl uses the rules associated with the current locale.
 (<code>use locale</code> overrides <code>use feature 'unicode_strings'</code> 
in the same scope;
 while <code>use locale ':not_characters'</code> effectively also selects
 <code>use feature 'unicode_strings'</code> in its scope; see <a 
href="#perllocale-NAME">perllocale NAME</a>.)
 Otherwise, Perl uses the platform&rsquo;s native
 byte semantics for characters whose code points are less than 256, and
-Unicode semantics for those greater than 255.  That means that non-ASCII
+Unicode rules for those greater than 255.  That means that non-ASCII
 characters are undefined except for their
 ordinal numbers.  This means that none have case (upper and lower), nor are any
 a member of character classes, like <code>[:alpha:]</code> or <code>\w</code>. 
 (But all do belong
@@ -99793,7 +99787,7 @@
 which allowed byte semantics in Perl operations only if
 none of the program&rsquo;s inputs were marked as being a source of Unicode
 character data.  Such data may come from filehandles, from calls to
-external programs, from information provided by the system (such as %ENV),
+external programs, from information provided by the system (such as 
<code>%ENV</code>),
 or from literals and constants in the source text.
 </p>
 <p>The <code>utf8</code> pragma is primarily a compatibility device that 
enables
@@ -99805,7 +99799,7 @@
 <p>If strings operating under byte semantics and strings with Unicode
 character data are concatenated, the new string will have
 character semantics.  This can cause surprises: See <a 
href="#perlunicode-BUGS">BUGS</a>, below.
-You can choose to be warned when this happens.  See <a 
href="encoding-warnings.html#Top">(encoding-warnings)</a>.
+You can choose to be warned when this happens.  See <code><a 
href="encoding-warnings.html#Top">(encoding-warnings)</a></code>.
 </p>
 <p>Under character semantics, many operations that formerly operated on
 bytes now operate on characters. A character in Perl is
@@ -99821,7 +99815,7 @@
 Next: <a href="#perlunicode-Unicode-Character-Properties" accesskey="n" 
rel="next">perlunicode Unicode Character Properties</a>, Previous: <a 
href="#perlunicode-Byte-and-Character-Semantics" accesskey="p" 
rel="prev">perlunicode Byte and Character Semantics</a>, Up: <a 
href="#perlunicode-DESCRIPTION" accesskey="u" rel="up">perlunicode 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Effects-of-Character-Semantics"></a>
-<h4 class="subsection">80.2.3 Effects of Character Semantics</h4>
+<h4 class="subsection">81.2.3 Effects of Character Semantics</h4>
 
 <p>Character semantics have the following effects:
 </p>
@@ -99831,15 +99825,15 @@
 
 <p>If you use a Unicode editor to edit your program, Unicode characters may
 occur directly within the literal strings in UTF-8 encoding, or UTF-16.
-(The former requires a BOM or <code>use utf8</code>, the latter requires a 
BOM.)
+(The former requires a <code>BOM</code> or <code>use utf8</code>, the latter 
requires a <code>BOM</code>.)
 </p>
 <p>Unicode characters can also be added to a string by using the 
<code>\N{U+...}</code>
 notation.  The Unicode code for the desired character, in hexadecimal,
 should be placed in the braces, after the <code>U</code>. For instance, a 
smiley face is
 <code>\N{U+263A}</code>.
 </p>
-<p>Alternatively, you can use the <code>\x{...}</code> notation for characters 
0x100 and
-above.  For characters below 0x100 you may get byte semantics instead of
+<p>Alternatively, you can use the <code>\x{...}</code> notation for characters 
<code>0x100</code> and
+above.  For characters below <code>0x100</code> you may get byte semantics 
instead of
 character semantics;  see <a href="#perlunicode-The-_0022Unicode-Bug_0022">The 
&quot;Unicode Bug&quot;</a>.  On EBCDIC machines there is
 the additional problem that the value for such characters gives the EBCDIC
 character rather than the Unicode one, thus it is more portable to use
@@ -99859,7 +99853,7 @@
 ideographs.  Perl does not currently attempt to canonicalize variable
 names.
 
-</li><li> Regular expressions match characters instead of bytes.  
&quot;.&quot; matches
+</li><li> Regular expressions match characters instead of bytes.  
<code>&quot;.&quot;</code> matches
 a character instead of a byte.
 
 </li><li> Bracketed character classes in regular expressions match characters 
instead of
@@ -99925,7 +99919,7 @@
 the complement cannot return <strong>both</strong> the 8-bit (byte-wide) bit
 complement <strong>and</strong> the full character-wide bit complement.
 
-</li><li> There is a CPAN module, <a 
href="Unicode-Casing.html#Top">(Unicode-Casing)</a>, which allows you to define
+</li><li> There is a CPAN module, <code><a 
href="Unicode-Casing.html#Top">(Unicode-Casing)</a></code>, which allows you to 
define
 your own mappings to be used in <code>lc()</code>, <code>lcfirst()</code>, 
<code>uc()</code>,
 <code>ucfirst()</code>, and <code>fc</code> (or their double-quoted string 
inlined
 versions such as <code>\U</code>).
@@ -99947,7 +99941,7 @@
 Next: <a href="#perlunicode-User_002dDefined-Character-Properties" 
accesskey="n" rel="next">perlunicode User-Defined Character Properties</a>, 
Previous: <a href="#perlunicode-Effects-of-Character-Semantics" accesskey="p" 
rel="prev">perlunicode Effects of Character Semantics</a>, Up: <a 
href="#perlunicode-DESCRIPTION" accesskey="u" rel="up">perlunicode 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Unicode-Character-Properties"></a>
-<h4 class="subsection">80.2.4 Unicode Character Properties</h4>
+<h4 class="subsection">81.2.4 Unicode Character Properties</h4>
 
 <p>(The only time that Perl considers a sequence of individual code
 points as a single logical character is in the <code>\X</code> construct, 
already
@@ -99959,27 +99953,29 @@
 and the <code>\P{}</code> &quot;doesn&rsquo;t match property&quot; for its 
negation.
 </p>
 <p>For instance, <code>\p{Uppercase}</code> matches any single character with 
the Unicode
-&quot;Uppercase&quot; property, while <code>\p{L}</code> matches any character 
with a
-General_Category of &quot;L&quot; (letter) property.  Brackets are not
+<code>&quot;Uppercase&quot;</code> property, while <code>\p{L}</code> matches 
any character with a
+<code>General_Category</code> of <code>&quot;L&quot;</code> (letter) property 
(see
+<a href="#perlunicode-General_005fCategory">General_Category</a> below).  
Brackets are not
 required for single letter property names, so <code>\p{L}</code> is equivalent 
to <code>\pL</code>.
 </p>
 <p>More formally, <code>\p{Uppercase}</code> matches any single character 
whose Unicode
-Uppercase property value is True, and <code>\P{Uppercase}</code> matches any 
character
-whose Uppercase property value is False, and they could have been written as
+<code>Uppercase</code> property value is <code>True</code>, and 
<code>\P{Uppercase}</code> matches any character
+whose <code>Uppercase</code> property value is <code>False</code>, and they 
could have been written as
 <code>\p{Uppercase=True}</code> and <code>\p{Uppercase=False}</code>, 
respectively.
 </p>
 <p>This formality is needed when properties are not binary; that is, if they 
can
-take on more values than just True and False.  For example, the Bidi_Class (see
-<a href="#perlunicode-Bidirectional-Character-Types">Bidirectional Character 
Types</a> below), can take on several different
-values, such as Left, Right, Whitespace, and others.  To match these, one needs
-to specify both the property name (Bidi_Class), AND the value being
+take on more values than just <code>True</code> and <code>False</code>.  For 
example, the
+<code>Bidi_Class</code> property (see <a 
href="#perlunicode-Bidirectional-Character-Types">Bidirectional Character 
Types</a> below),
+can take on several different
+values, such as <code>Left</code>, <code>Right</code>, 
<code>Whitespace</code>, and others.  To match these, one needs
+to specify both the property name (<code>Bidi_Class</code>), AND the value 
being
 matched against
-(Left, Right, etc.).  This is done, as in the examples above, by having the
+(<code>Left</code>, <code>Right</code>, etc.).  This is done, as in the 
examples above, by having the
 two components separated by an equal sign (or interchangeably, a colon), like
 <code>\p{Bidi_Class: Left}</code>.
 </p>
 <p>All Unicode-defined character properties may be written in these compound 
forms
-of <code>\p{property=value}</code> or <code>\p{property:value}</code>, but 
Perl provides some
+of <code>\p{<em>property</em>=<em>value</em>}</code> or 
<code>\p{<em>property</em>:<em>value</em>}</code>, but Perl provides some
 additional properties that are written only in the single form, as well as
 single-form short-cuts for all binary properties and certain others described
 below, in which you may omit the property name and the equals or colon
@@ -99987,17 +99983,19 @@
 </p>
 <p>Most Unicode character properties have at least two synonyms (or aliases if 
you
 prefer): a short one that is easier to type and a longer one that is more
-descriptive and hence easier to understand.  Thus the &quot;L&quot; and 
&quot;Letter&quot; properties
-above are equivalent and can be used interchangeably.  Likewise,
-&quot;Upper&quot; is a synonym for &quot;Uppercase&quot;, and we could have 
written
-<code>\p{Uppercase}</code> equivalently as <code>\p{Upper}</code>.  Also, 
there are typically
-various synonyms for the values the property can be.   For binary properties,
-&quot;True&quot; has 3 synonyms: &quot;T&quot;, &quot;Yes&quot;, and 
&quot;Y&quot;; and &quot;False has correspondingly &quot;F&quot;,
-&quot;No&quot;, and &quot;N&quot;.  But be careful.  A short form of a value 
for one property may
-not mean the same thing as the same short form for another.  Thus, for the
-General_Category property, &quot;L&quot; means &quot;Letter&quot;, but for the 
Bidi_Class property,
-&quot;L&quot; means &quot;Left&quot;.  A complete list of properties and 
synonyms is in
-<a href="perluniprops.html#Top">(perluniprops)</a>.
+descriptive and hence easier to understand.  Thus the 
<code>&quot;L&quot;</code> and
+<code>&quot;Letter&quot;</code> properties above are equivalent and can be used
+interchangeably.  Likewise, <code>&quot;Upper&quot;</code> is a synonym for 
<code>&quot;Uppercase&quot;</code>,
+and we could have written <code>\p{Uppercase}</code> equivalently as 
<code>\p{Upper}</code>.
+Also, there are typically various synonyms for the values the property
+can be.   For binary properties, <code>&quot;True&quot;</code> has 3 synonyms: 
<code>&quot;T&quot;</code>,
+<code>&quot;Yes&quot;</code>, and <code>&quot;Y&quot;</code>; and 
<code>&quot;False&quot;</code> has correspondingly <code>&quot;F&quot;</code>,
+<code>&quot;No&quot;</code>, and <code>&quot;N&quot;</code>.  But be careful.  
A short form of a value for one
+property may not mean the same thing as the same short form for another.
+Thus, for the <code><a 
href="#perlunicode-General_005fCategory">General_Category</a></code> property, 
<code>&quot;L&quot;</code> means
+<code>&quot;Letter&quot;</code>, but for the <a 
href="#perlunicode-Bidirectional-Character-Types"><code>Bidi_Class</code></a>
+property, <code>&quot;L&quot;</code> means <code>&quot;Left&quot;</code>.  A 
complete list of properties and
+synonyms is in <a href="perluniprops.html#Top">(perluniprops)</a>.
 </p>
 <p>Upper/lower case differences in property names and values are irrelevant;
 thus <code>\p{Upper}</code> means the same thing as <code>\p{upper}</code> or 
even <code>\p{UpPeR}</code>.
@@ -100014,7 +100012,7 @@
 hyphens, and non-interior underscores.
 </p>
 <p>You can also use negation in both <code>\p{}</code> and <code>\P{}</code> 
by introducing a caret
-(^) between the first brace and the property name: <code>\p{^Tamil}</code> is
+(<code>^</code>) between the first brace and the property name: 
<code>\p{^Tamil}</code> is
 equal to <code>\P{Tamil}</code>.
 </p>
 <p>Almost all properties are immune to case-insensitive matching.  That is,
@@ -100031,19 +100029,14 @@
 and <code>Titlecase</code>,
 all of which match <code>Cased</code> under <code>/i</code> matching.
 This set also includes its subsets <code>PosixUpper</code> and 
<code>PosixLower</code> both
-of which under <code>/i</code> matching match <code>PosixAlpha</code>.
+of which under <code>/i</code> match <code>PosixAlpha</code>.
 (The difference between these sets is that some things, such as Roman
 numerals, come in both upper and lower case so they are <code>Cased</code>, 
but aren&rsquo;t considered
 letters, so they aren&rsquo;t <code>Cased_Letter</code>s.)
 </p>
-<p>The result is undefined if you try to match a non-Unicode code point
-(that is, one above 0x10FFFF) against a Unicode property.  Currently, a
-warning is raised, and the match will fail.  In some cases, this is
-counterintuitive, as both these fail:
+<p>See <a href="#perlunicode-Beyond-Unicode-code-points">Beyond Unicode code 
points</a> for special considerations when
+matching Unicode properties against non-Unicode code points.
 </p>
-<pre class="verbatim"> chr(0x110000) =~ \p{ASCII_Hex_Digit=True}      # Fails.
- chr(0x110000) =~ \p{ASCII_Hex_Digit=False}     # Fails!
-</pre>
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a 
href="#perlunicode-General_005fCategory" accesskey="1">perlunicode 
<strong>General_Category</strong></a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
 </td></tr>
@@ -100051,7 +100044,7 @@
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a href="#perlunicode-Scripts" 
accesskey="3">perlunicode 
<strong>Scripts</strong></a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
-<tr><td align="left" valign="top">&bull; <a 
href="#perlunicode-Use-of-_0022Is_0022-Prefix" accesskey="4">perlunicode 
<strong>Use of &quot;Is&quot; Prefix</strong></a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a 
href="#perlunicode-Use-of-the-_0022Is_0022-Prefix" accesskey="4">perlunicode 
<strong>Use of the <code>&quot;Is&quot;</code> 
Prefix</strong></a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 </td></tr>
 <tr><td align="left" valign="top">&bull; <a href="#perlunicode-Blocks" 
accesskey="5">perlunicode 
<strong>Blocks</strong></a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
 </td></tr>
@@ -100066,7 +100059,7 @@
 Next: <a href="#perlunicode-Bidirectional-Character-Types" accesskey="n" 
rel="next">perlunicode <strong>Bidirectional Character Types</strong></a>, Up: 
<a href="#perlunicode-Unicode-Character-Properties" accesskey="u" 
rel="up">perlunicode Unicode Character Properties</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="General_005fCategory"></a>
-<h4 class="subsubsection">80.2.4.1 <strong>General_Category</strong></h4>
+<h4 class="subsubsection">81.2.4.1 <strong>General_Category</strong></h4>
 
 <p>Every Unicode character is assigned a general category, which is the 
&quot;most
 usual categorization of a character&quot; (from
@@ -100077,7 +100070,8 @@
 through the equal or colon separator is omitted.  So you can instead just write
 <code>\pN</code>.
 </p>
-<p>Here are the short and long forms of the General Category properties:
+<p>Here are the short and long forms of the values the <code>General 
Category</code> property
+can have:
 </p>
 <pre class="verbatim">    Short       Long
 
@@ -100139,13 +100133,13 @@
 Next: <a href="#perlunicode-Scripts" accesskey="n" rel="next">perlunicode 
<strong>Scripts</strong></a>, Previous: <a 
href="#perlunicode-General_005fCategory" accesskey="p" rel="prev">perlunicode 
<strong>General_Category</strong></a>, Up: <a 
href="#perlunicode-Unicode-Character-Properties" accesskey="u" 
rel="up">perlunicode Unicode Character Properties</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Bidirectional-Character-Types"></a>
-<h4 class="subsubsection">80.2.4.2 <strong>Bidirectional Character 
Types</strong></h4>
+<h4 class="subsubsection">81.2.4.2 <strong>Bidirectional Character 
Types</strong></h4>
 
 <p>Because scripts differ in their directionality (Hebrew and Arabic are
-written right to left, for example) Unicode supplies these properties in
-the Bidi_Class class:
+written right to left, for example) Unicode supplies a <code>Bidi_Class</code> 
property.
+Some of the values this property can have are:
 </p>
-<pre class="verbatim">    Property    Meaning
+<pre class="verbatim">    Value       Meaning
 
     L           Left-to-Right
     LRE         Left-to-Right Embedding
@@ -100169,16 +100163,22 @@
 </pre>
 <p>This property is always written in the compound form.
 For example, <code>\p{Bidi_Class:R}</code> matches characters that are normally
-written right to left.
+written right to left.  Unlike the
+<code><a href="#perlunicode-General_005fCategory">General_Category</a></code> 
property, this
+property can have more values added in a future Unicode release.  Those
+listed above comprised the complete set for many Unicode releases, but
+others were added in Unicode 6.3; you can always find what the
+current ones are in in <a href="perluniprops.html#Top">(perluniprops)</a>.  And
+<a 
href="http://www.unicode.org/reports/tr9/";>http://www.unicode.org/reports/tr9/</a>
 describes how to use them.
 </p>
 <hr>
 <a name="perlunicode-Scripts"></a>
 <div class="header">
 <p>
-Next: <a href="#perlunicode-Use-of-_0022Is_0022-Prefix" accesskey="n" 
rel="next">perlunicode <strong>Use of &quot;Is&quot; Prefix</strong></a>, 
Previous: <a href="#perlunicode-Bidirectional-Character-Types" accesskey="p" 
rel="prev">perlunicode <strong>Bidirectional Character Types</strong></a>, Up: 
<a href="#perlunicode-Unicode-Character-Properties" accesskey="u" 
rel="up">perlunicode Unicode Character Properties</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
+Next: <a href="#perlunicode-Use-of-the-_0022Is_0022-Prefix" accesskey="n" 
rel="next">perlunicode <strong>Use of the <code>&quot;Is&quot;</code> 
Prefix</strong></a>, Previous: <a 
href="#perlunicode-Bidirectional-Character-Types" accesskey="p" 
rel="prev">perlunicode <strong>Bidirectional Character Types</strong></a>, Up: 
<a href="#perlunicode-Unicode-Character-Properties" accesskey="u" 
rel="up">perlunicode Unicode Character Properties</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Scripts"></a>
-<h4 class="subsubsection">80.2.4.3 <strong>Scripts</strong></h4>
+<h4 class="subsubsection">81.2.4.3 <strong>Scripts</strong></h4>
 
 <p>The world&rsquo;s languages are written in many different scripts.  This 
sentence
 (unless you&rsquo;re reading it in translation) is written in Latin, while 
Russian is
@@ -100200,7 +100200,7 @@
 used in multiple scripts.  For example the digits &rsquo;0&rsquo; through 
&rsquo;9&rsquo; are
 used in many parts of the world.  These are placed in a script named
 <code>Common</code>.  Other characters are used in just a few scripts.  For
-example, the &quot;KATAKANA-HIRAGANA DOUBLE HYPHEN&quot; is used in both 
Japanese
+example, the <code>&quot;KATAKANA-HIRAGANA DOUBLE HYPHEN&quot;</code> is used 
in both Japanese
 scripts, Katakana and Hiragana, but nowhere else.  The <code>Script</code>
 property places all characters that are used in multiple scripts in the
 <code>Common</code> script, while the <code>Script_Extensions</code> property 
places those
@@ -100246,13 +100246,13 @@
 <p>A complete list of scripts and their shortcuts is in <a 
href="perluniprops.html#Top">(perluniprops)</a>.
 </p>
 <hr>
-<a name="perlunicode-Use-of-_0022Is_0022-Prefix"></a>
+<a name="perlunicode-Use-of-the-_0022Is_0022-Prefix"></a>
 <div class="header">
 <p>
 Next: <a href="#perlunicode-Blocks" accesskey="n" rel="next">perlunicode 
<strong>Blocks</strong></a>, Previous: <a href="#perlunicode-Scripts" 
accesskey="p" rel="prev">perlunicode <strong>Scripts</strong></a>, Up: <a 
href="#perlunicode-Unicode-Character-Properties" accesskey="u" 
rel="up">perlunicode Unicode Character Properties</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="Use-of-_0022Is_0022-Prefix"></a>
-<h4 class="subsubsection">80.2.4.4 <strong>Use of &quot;Is&quot; 
Prefix</strong></h4>
+<a name="Use-of-the-_0022Is_0022-Prefix"></a>
+<h4 class="subsubsection">81.2.4.4 <strong>Use of the 
<code>&quot;Is&quot;</code> Prefix</strong></h4>
 
 <p>For backward compatibility (with Perl 5.6), all properties mentioned
 so far may have <code>Is</code> or <code>Is_</code> prepended to their name, 
so <code>\P{Is_Lu}</code>, for
@@ -100263,20 +100263,20 @@
 <a name="perlunicode-Blocks"></a>
 <div class="header">
 <p>
-Next: <a href="#perlunicode-Other-Properties" accesskey="n" 
rel="next">perlunicode <strong>Other Properties</strong></a>, Previous: <a 
href="#perlunicode-Use-of-_0022Is_0022-Prefix" accesskey="p" 
rel="prev">perlunicode <strong>Use of &quot;Is&quot; Prefix</strong></a>, Up: 
<a href="#perlunicode-Unicode-Character-Properties" accesskey="u" 
rel="up">perlunicode Unicode Character Properties</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
+Next: <a href="#perlunicode-Other-Properties" accesskey="n" 
rel="next">perlunicode <strong>Other Properties</strong></a>, Previous: <a 
href="#perlunicode-Use-of-the-_0022Is_0022-Prefix" accesskey="p" 
rel="prev">perlunicode <strong>Use of the <code>&quot;Is&quot;</code> 
Prefix</strong></a>, Up: <a href="#perlunicode-Unicode-Character-Properties" 
accesskey="u" rel="up">perlunicode Unicode Character Properties</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Blocks"></a>
-<h4 class="subsubsection">80.2.4.5 <strong>Blocks</strong></h4>
+<h4 class="subsubsection">81.2.4.5 <strong>Blocks</strong></h4>
 
 <p>In addition to <strong>scripts</strong>, Unicode also defines 
<strong>blocks</strong> of
 characters.  The difference between scripts and blocks is that the
 concept of scripts is closer to natural languages, while the concept
 of blocks is more of an artificial grouping based on groups of Unicode
-characters with consecutive ordinal values. For example, the &quot;Basic 
Latin&quot;
+characters with consecutive ordinal values. For example, the <code>&quot;Basic 
Latin&quot;</code>
 block is all characters whose ordinals are between 0 and 127, inclusive; in
-other words, the ASCII characters.  The &quot;Latin&quot; script contains some 
letters
-from this as well as several other blocks, like &quot;Latin-1 Supplement&quot;,
-&quot;Latin Extended-A&quot;, etc., but it does not contain all the characters 
from
+other words, the ASCII characters.  The <code>&quot;Latin&quot;</code> script 
contains some letters
+from this as well as several other blocks, like <code>&quot;Latin-1 
Supplement&quot;</code>,
+<code>&quot;Latin Extended-A&quot;</code>, etc., but it does not contain all 
the characters from
 those blocks. It does not, for example, contain the digits 0-9, because
 those digits are shared across many scripts, and hence are in the
 <code>Common</code> script.
@@ -100286,7 +100286,7 @@
 </p>
 <p>The <code>Script</code> or <code>Script_Extensions</code> properties are 
likely to be the
 ones you want to use when processing
-natural language; the Block property may occasionally be useful in working
+natural language; the <code>Block</code> property may occasionally be useful 
in working
 with the nuts and bolts of Unicode.
 </p>
 <p>Block names are matched in the compound form, like <code>\p{Block: 
Arrows}</code> or
@@ -100303,7 +100303,7 @@
 For example, <code>\p{Hebrew}</code> means the <em>script</em> Hebrew, and NOT 
the <em>block</em>
 Hebrew.  But would you remember that 6 months from now?
 
-</li><li> It is unstable.  A new version of Unicode may pre-empt the current 
meaning by
+</li><li> It is unstable.  A new version of Unicode may preempt the current 
meaning by
 creating a property with the same name.  There was a time in very early Unicode
 releases when <code>\p{Hebrew}</code> would have matched the <em>block</em> 
Hebrew; now it
 doesn&rsquo;t.
@@ -100324,7 +100324,7 @@
 Previous: <a href="#perlunicode-Blocks" accesskey="p" rel="prev">perlunicode 
<strong>Blocks</strong></a>, Up: <a 
href="#perlunicode-Unicode-Character-Properties" accesskey="u" 
rel="up">perlunicode Unicode Character Properties</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Other-Properties"></a>
-<h4 class="subsubsection">80.2.4.6 <strong>Other Properties</strong></h4>
+<h4 class="subsubsection">81.2.4.6 <strong>Other Properties</strong></h4>
 
 <p>There are many more properties than the very basic ones described here.
 A complete list is in <a href="perluniprops.html#Top">(perluniprops)</a>.
@@ -100343,8 +100343,10 @@
 <dl compact="compact">
 <dt><strong><code>\p{All}</code></strong></dt>
 <dd><a name="perlunicode-_005cp_007bAll_007d"></a>
-<p>This matches any of the 1_114_112 Unicode code points.  It is a synonym for
-<code>\p{Any}</code>.
+<p>This matches every possible code point.  It is equivalent to 
<code>qr/./s</code>.
+Unlike all the other non-user-defined <code>\p{}</code> property matches, no
+warning is ever generated if this is property is matched against a
+non-Unicode code point (see <a 
href="#perlunicode-Beyond-Unicode-code-points">Beyond Unicode code points</a> 
below).
 </p>
 </dd>
 <dt><strong><code>\p{Alnum}</code></strong></dt>
@@ -100354,8 +100356,8 @@
 </dd>
 <dt><strong><code>\p{Any}</code></strong></dt>
 <dd><a name="perlunicode-_005cp_007bAny_007d"></a>
-<p>This matches any of the 1_114_112 Unicode code points.  It is a synonym for
-<code>\p{All}</code>.
+<p>This matches any of the 1_114_112 Unicode code points.  It is a synonym
+for <code>\p{Unicode}</code>.
 </p>
 </dd>
 <dt><strong><code>\p{ASCII}</code></strong></dt>
@@ -100366,8 +100368,8 @@
 </dd>
 <dt><strong><code>\p{Assigned}</code></strong></dt>
 <dd><a name="perlunicode-_005cp_007bAssigned_007d"></a>
-<p>This matches any assigned code point; that is, any code point whose general
-category is not Unassigned (or equivalently, not Cn).
+<p>This matches any assigned code point; that is, any code point whose <a 
href="#perlunicode-General_005fCategory">general
+category</a> is not <code>Unassigned</code> (or equivalently, not 
<code>Cn</code>).
 </p>
 </dd>
 <dt><strong><code>\p{Blank}</code></strong></dt>
@@ -100380,7 +100382,7 @@
 <dd><a 
name="perlunicode-_005cp_007bDecomposition_005fType_003a-Non_005fCanonical_007d-_0028Short_003a-_005cp_007bDt_003dNonCanon_007d_0029"></a>
 <p>Matches a character that has a non-canonical decomposition.
 </p>
-<p>To understand the use of this rarely used property=value combination, it is
+<p>To understand the use of this rarely used <em>property=value</em> 
combination, it is
 necessary to know some basics about decomposition.
 Consider a character, say H.  It could appear with various marks around it,
 such as an acute accent, or a circumflex, or various hooks, circles, arrows,
@@ -100398,13 +100400,13 @@
 <p>But Unicode&rsquo;s intent is to unify the existing character set standards 
and
 practices, and several pre-existing standards have single characters that
 mean the same thing as some of these combinations.  An example is ISO-8859-1,
-which has quite a few of these in the Latin-1 range, an example being 
&quot;LATIN
-CAPITAL LETTER E WITH ACUTE&quot;.  Because this character was in this 
pre-existing
+which has quite a few of these in the Latin-1 range, an example being 
<code>&quot;LATIN
+CAPITAL LETTER E WITH ACUTE&quot;</code>.  Because this character was in this 
pre-existing
 standard, Unicode added it to its repertoire.  But this character is considered
 by Unicode to be equivalent to the sequence consisting of the character
-&quot;LATIN CAPITAL LETTER E&quot; followed by the character &quot;COMBINING 
ACUTE ACCENT&quot;.
+<code>&quot;LATIN CAPITAL LETTER E&quot;</code> followed by the character 
<code>&quot;COMBINING ACUTE ACCENT&quot;</code>.
 </p>
-<p>&quot;LATIN CAPITAL LETTER E WITH ACUTE&quot; is called a 
&quot;pre-composed&quot; character, and
+<p><code>&quot;LATIN CAPITAL LETTER E WITH ACUTE&quot;</code> is called a 
&quot;pre-composed&quot; character, and
 its equivalence with the sequence is called canonical equivalence.  All
 pre-composed characters are said to have a decomposition (into the equivalent
 sequence), and the decomposition type is also called canonical.
@@ -100412,7 +100414,7 @@
 <p>However, many more characters have a different type of decomposition, a
 &quot;compatible&quot; or &quot;non-canonical&quot; decomposition.  The 
sequences that form these
 decompositions are not considered canonically equivalent to the pre-composed
-character.  An example, again in the Latin-1 range, is the &quot;SUPERSCRIPT 
ONE&quot;.
+character.  An example, again in the Latin-1 range, is the 
<code>&quot;SUPERSCRIPT ONE&quot;</code>.
 It is somewhat like a regular digit 1, but not exactly; its decomposition
 into the digit 1 is called a &quot;compatible&quot; decomposition, 
specifically a
 &quot;super&quot; decomposition.  There are several such compatibility
@@ -100421,7 +100423,7 @@
 that doesn&rsquo;t fit into the decomposition categories that Unicode has 
chosen.
 </p>
 <p>Note that most Unicode characters don&rsquo;t have a decomposition, so their
-decomposition type is &quot;None&quot;.
+decomposition type is <code>&quot;None&quot;</code>.
 </p>
 <p>For your convenience, Perl has added the <code>Non_Canonical</code> 
decomposition
 type to mean any of the several compatibility decompositions.
@@ -100461,7 +100463,7 @@
 </dd>
 <dt><strong><code>\p{Posix...}</code></strong></dt>
 <dd><a name="perlunicode-_005cp_007bPosix_002e_002e_002e_007d"></a>
-<p>There are several of these, which are equivalents using the <code>\p</code>
+<p>There are several of these, which are equivalents using the 
<code>\p{}</code>
 notation for Posix classes and are described in
 <a href="#perlrecharclass-POSIX-Character-Classes">perlrecharclass POSIX 
Character Classes</a>.
 </p>
@@ -100477,10 +100479,10 @@
 Unicode release given by the version number; <code>\p{Present_In: 
Unassigned}</code>
 will match those code points whose meaning has yet to be assigned.
 </p>
-<p>For example, <code>U+0041</code> &quot;LATIN CAPITAL LETTER A&quot; was 
present in the very first
+<p>For example, <code>U+0041</code> <code>&quot;LATIN CAPITAL LETTER 
A&quot;</code> was present in the very first
 Unicode release available, which is <code>1.1</code>, so this property is true 
for all
 valid &quot;*&quot; versions.  On the other hand, <code>U+1EFF</code> was not 
assigned until version
-5.1 when it became &quot;LATIN SMALL LETTER Y WITH LOOP&quot;, so the only 
&quot;*&quot; that
+5.1 when it became <code>&quot;LATIN SMALL LETTER Y WITH LOOP&quot;</code>, so 
the only &quot;*&quot; that
 would match it are 5.1, 5.2, and later.
 </p>
 <p>Unicode furnishes the <code>Age</code> property from which this is derived. 
 The problem
@@ -100490,12 +100492,12 @@
 you want.
 </p>
 <p>Some non-Perl implementations of the Age property may change its meaning to 
be
-the same as the Perl Present_In property; just be aware of that.
+the same as the Perl <code>Present_In</code> property; just be aware of that.
 </p>
 <p>Another confusion with both these properties is that the definition is not
 that the code point has been <em>assigned</em>, but that the meaning of the 
code point
 has been <em>determined</em>.  This is because 66 code points will always be
-unassigned, and so the Age for them is the Unicode version in which the 
decision
+unassigned, and so the <code>Age</code> for them is the Unicode version in 
which the decision
 to make them so was made.  For example, <code>U+FDD0</code> is to be 
permanently
 unassigned to a character, and the decision to do that was made in version 3.1,
 so <code>\p{Age=3.1}</code> matches this character, as also does 
<code>\p{Present_In: 3.1}</code> and up.
@@ -100522,6 +100524,12 @@
 <code>\p{Cased}</code>, whereas <code>\p{gc=lt}</code> matches 
<code>\p{Cased_Letter</code>).
 </p>
 </dd>
+<dt><strong><code>\p{Unicode}</code></strong></dt>
+<dd><a name="perlunicode-_005cp_007bUnicode_007d"></a>
+<p>This matches any of the 1_114_112 Unicode code points.
+<code>\p{Any}</code>.
+</p>
+</dd>
 <dt><strong><code>\p{VertSpace}</code></strong></dt>
 <dd><a name="perlunicode-_005cp_007bVertSpace_007d"></a>
 <p>This is the same as <code>\v</code>:  A character that changes the spacing 
vertically.
@@ -100548,16 +100556,16 @@
 Next: <a 
href="#perlunicode-User_002dDefined-Case-Mappings-_0028for-serious-hackers-only_0029"
 accesskey="n" rel="next">perlunicode User-Defined Case Mappings (for serious 
hackers only)</a>, Previous: <a 
href="#perlunicode-Unicode-Character-Properties" accesskey="p" 
rel="prev">perlunicode Unicode Character Properties</a>, Up: <a 
href="#perlunicode-DESCRIPTION" accesskey="u" rel="up">perlunicode 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="User_002dDefined-Character-Properties"></a>
-<h4 class="subsection">80.2.5 User-Defined Character Properties</h4>
+<h4 class="subsection">81.2.5 User-Defined Character Properties</h4>
 
 <p>You can define your own binary character properties by defining subroutines
-whose names begin with &quot;In&quot; or &quot;Is&quot;.  (The experimental 
feature
+whose names begin with <code>&quot;In&quot;</code> or 
<code>&quot;Is&quot;</code>.  (The experimental feature
 <a href="#perlre-_0028_003f_005b-_005d_0029">perlre <code>(?[ ])</code></a> 
provides an alternative which allows more complex
 definitions.)  The subroutines can be defined in any
 package.  The user-defined properties can be used in the regular expression
-<code>\p</code> and <code>\P</code> constructs; if you are using a 
user-defined property from a
+<code>\p{}</code> and <code>\P{}</code> constructs; if you are using a 
user-defined property from a
 package other than the one you are in, you must specify its package in the
-<code>\p</code> or <code>\P</code> construct.
+<code>\p{}</code> or <code>\P{}</code> construct.
 </p>
 <pre class="verbatim">    # assuming property Is_Foreign defined in Lang::
     package main;  # property package name required
@@ -100575,38 +100583,38 @@
 matches.
 </p>
 <p>Note that if the regular expression is tainted, then Perl will die rather
-than calling the subroutine, where the name of the subroutine is
+than calling the subroutine when the name of the subroutine is
 determined by the tainted data.
 </p>
 <p>The subroutines must return a specially-formatted string, with one
 or more newline-separated lines.  Each line must be one of the following:
 </p>
 <ul>
-<li> A single hexadecimal number denoting a Unicode code point to include.
+<li> A single hexadecimal number denoting a code point to include.
 
 </li><li> Two hexadecimal numbers separated by horizontal whitespace (space or
-tabular characters) denoting a range of Unicode code points to include.
+tabular characters) denoting a range of code points to include.
 
-</li><li> Something to include, prefixed by &quot;+&quot;: a built-in character
-property (prefixed by &quot;utf8::&quot;) or a fully qualified (including 
package
+</li><li> Something to include, prefixed by <code>&quot;+&quot;</code>: a 
built-in character
+property (prefixed by <code>&quot;utf8::&quot;</code>) or a fully qualified 
(including package
 name) user-defined character property,
 to represent all the characters in that property; two hexadecimal code
 points for a range; or a single hexadecimal code point.
 
-</li><li> Something to exclude, prefixed by &quot;-&quot;: an existing 
character
-property (prefixed by &quot;utf8::&quot;) or a fully qualified (including 
package
+</li><li> Something to exclude, prefixed by <code>&quot;-&quot;</code>: an 
existing character
+property (prefixed by <code>&quot;utf8::&quot;</code>) or a fully qualified 
(including package
 name) user-defined character property,
 to represent all the characters in that property; two hexadecimal code
 points for a range; or a single hexadecimal code point.
 
-</li><li> Something to negate, prefixed &quot;!&quot;: an existing character
-property (prefixed by &quot;utf8::&quot;) or a fully qualified (including 
package
+</li><li> Something to negate, prefixed <code>&quot;!&quot;</code>: an 
existing character
+property (prefixed by <code>&quot;utf8::&quot;</code>) or a fully qualified 
(including package
 name) user-defined character property,
 to represent all the characters in that property; two hexadecimal code
 points for a range; or a single hexadecimal code point.
 
-</li><li> Something to intersect with, prefixed by &quot;&amp;&quot;: an 
existing character
-property (prefixed by &quot;utf8::&quot;) or a fully qualified (including 
package
+</li><li> Something to intersect with, prefixed by 
<code>&quot;&amp;&quot;</code>: an existing character
+property (prefixed by <code>&quot;utf8::&quot;</code>) or a fully qualified 
(including package
 name) user-defined character property,
 for all the characters except the characters in the property; two
 hexadecimal code points for a range; or a single hexadecimal code point.
@@ -100673,13 +100681,13 @@
 <p><code>&amp;utf8::Any</code> must be the last line in the definition.
 </p>
 <p>Intersection is used generally for getting the common characters matched
-by two (or more) classes.  It&rsquo;s important to remember not to use 
&quot;&amp;&quot; for
+by two (or more) classes.  It&rsquo;s important to remember not to use 
<code>&quot;&amp;&quot;</code> for
 the first set; that would be intersecting with nothing, resulting in an
 empty set.
 </p>
-<p>(Note that official Unicode properties differ from these in that they
-automatically exclude non-Unicode code points and a warning is raised if
-a match is attempted on one of those.)
+<p>Unlike non-user-defined <code>\p{}</code> property matches, no warning is 
ever
+generated if these properties are matched against a non-Unicode code
+point (see <a href="#perlunicode-Beyond-Unicode-code-points">Beyond Unicode 
code points</a> below).
 </p>
 <hr>
 <a 
name="perlunicode-User_002dDefined-Case-Mappings-_0028for-serious-hackers-only_0029"></a>
@@ -100688,10 +100696,10 @@
 Next: <a href="#perlunicode-Character-Encodings-for-Input-and-Output" 
accesskey="n" rel="next">perlunicode Character Encodings for Input and 
Output</a>, Previous: <a 
href="#perlunicode-User_002dDefined-Character-Properties" accesskey="p" 
rel="prev">perlunicode User-Defined Character Properties</a>, Up: <a 
href="#perlunicode-DESCRIPTION" accesskey="u" rel="up">perlunicode 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a 
name="User_002dDefined-Case-Mappings-_0028for-serious-hackers-only_0029"></a>
-<h4 class="subsection">80.2.6 User-Defined Case Mappings (for serious hackers 
only)</h4>
+<h4 class="subsection">81.2.6 User-Defined Case Mappings (for serious hackers 
only)</h4>
 
 <p><strong>This feature has been removed as of Perl 5.16.</strong>
-The CPAN module <a href="Unicode-Casing.html#Top">(Unicode-Casing)</a> 
provides better functionality without
+The CPAN module <code><a 
href="Unicode-Casing.html#Top">(Unicode-Casing)</a></code> provides better 
functionality without
 the drawbacks that this feature had.  If you are using a Perl earlier
 than 5.16, this feature was most fully documented in the 5.14 version of
 this pod:
@@ -100704,7 +100712,7 @@
 Next: <a href="#perlunicode-Unicode-Regular-Expression-Support-Level" 
accesskey="n" rel="next">perlunicode Unicode Regular Expression Support 
Level</a>, Previous: <a 
href="#perlunicode-User_002dDefined-Case-Mappings-_0028for-serious-hackers-only_0029"
 accesskey="p" rel="prev">perlunicode User-Defined Case Mappings (for serious 
hackers only)</a>, Up: <a href="#perlunicode-DESCRIPTION" accesskey="u" 
rel="up">perlunicode DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Character-Encodings-for-Input-and-Output"></a>
-<h4 class="subsection">80.2.7 Character Encodings for Input and Output</h4>
+<h4 class="subsection">81.2.7 Character Encodings for Input and Output</h4>
 
 <p>See <a href="Encode.html#Top">(Encode)</a>.
 </p>
@@ -100715,7 +100723,7 @@
 Next: <a href="#perlunicode-Unicode-Encodings" accesskey="n" 
rel="next">perlunicode Unicode Encodings</a>, Previous: <a 
href="#perlunicode-Character-Encodings-for-Input-and-Output" accesskey="p" 
rel="prev">perlunicode Character Encodings for Input and Output</a>, Up: <a 
href="#perlunicode-DESCRIPTION" accesskey="u" rel="up">perlunicode 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Unicode-Regular-Expression-Support-Level"></a>
-<h4 class="subsection">80.2.8 Unicode Regular Expression Support Level</h4>
+<h4 class="subsection">81.2.8 Unicode Regular Expression Support Level</h4>
 
 <p>The following list of Unicode supported features for regular expressions 
describes
 all features currently directly supported by core Perl.  The references to 
&quot;Level N&quot;
@@ -100737,12 +100745,12 @@
 <dl compact="compact">
 <dt>[1]</dt>
 <dd><a name="perlunicode-_005b1_005d"></a>
-<p>\x{...}
+<p><code>\x{...}</code>
 </p>
 </dd>
 <dt>[2]</dt>
 <dd><a name="perlunicode-_005b2_005d"></a>
-<p>\p{...} \P{...}
+<p><code>\p{...}</code> <code>\P{...}</code>
 </p>
 </dd>
 <dt>[3]</dt>
@@ -100752,12 +100760,12 @@
 </dd>
 <dt>[4]</dt>
 <dd><a name="perlunicode-_005b4_005d"></a>
-<p>\d \D \s \S \w \W \X [:prop:] [:^prop:]
+<p><code>\d</code> <code>\D</code> <code>\s</code> <code>\S</code> 
<code>\w</code> <code>\W</code> <code>\X</code> <code>[:<em>prop</em>:]</code> 
<code>[:^<em>prop</em>:]</code>
 </p>
 </dd>
 <dt>[5]</dt>
 <dd><a name="perlunicode-_005b5_005d"></a>
-<p>The experimental feature in v5.18 &quot;(?[...])&quot; accomplishes this.  
See
+<p>The experimental feature in v5.18 <code>&quot;(?[...])&quot;</code> 
accomplishes this.  See
 <a href="#perlre-_0028_003f_005b-_005d_0029">perlre <code>(?[ ])</code></a>.  
If you don&rsquo;t want to use an experimental feature,
 you can use one of the following:
 </p>
@@ -100780,46 +100788,54 @@
 </pre>
 <p>which will match assigned characters known to be part of the Greek script.
 </p>
-</li><li> CPAN module <a 
href="Unicode-Regex-Set.html#Top">(Unicode-Regex-Set)</a>
+</li><li> CPAN module <code><a 
href="Unicode-Regex-Set.html#Top">(Unicode-Regex-Set)</a></code>
 
 <p>It does implement the full UTS#18 grouping, intersection, union, and
 removal (subtraction) syntax.
 </p>
 </li><li> <a 
href="#perlunicode-User_002dDefined-Character-Properties">User-Defined 
Character Properties</a>
 
-<p>&rsquo;+&rsquo; for union, &rsquo;-&rsquo; for removal (set-difference), 
&rsquo;&amp;&rsquo; for intersection
+<p><code>&quot;+&quot;</code> for union, <code>&quot;-&quot;</code> for 
removal (set-difference), <code>&quot;&amp;&quot;</code> for intersection
 </p>
 </li></ul>
 
 </dd>
 <dt>[6]</dt>
 <dd><a name="perlunicode-_005b6_005d"></a>
-<p>\b \B
+<p><code>\b</code> <code>\B</code>
 </p>
 </dd>
 <dt>[7]</dt>
 <dd><a name="perlunicode-_005b7_005d"></a>
-<p>Note that Perl does Full case-folding in matching (but with bugs), not 
Simple: for example U+1F88 is equivalent to U+1F00 U+03B9, instead of just 
U+1F80.  This difference matters mainly for certain Greek capital letters with 
certain modifiers: the Full case-folding decomposes the letter, while the 
Simple case-folding would map it to a single character.
+<p>Note that Perl does Full case-folding in matching (but with bugs), not
+Simple: for example <code>U+1F88</code> is equivalent to <code>U+1F00 
U+03B9</code>, instead of
+just <code>U+1F80</code>.  This difference matters mainly for certain Greek 
capital
+letters with certain modifiers: the Full case-folding decomposes the
+letter, while the Simple case-folding would map it to a single
+character.
 </p>
 </dd>
 <dt>[8]</dt>
 <dd><a name="perlunicode-_005b8_005d"></a>
-<p>Should do ^ and $ also on U+000B (\v in C), FF (\f), CR (\r), CRLF
-(\r\n), NEL (U+0085), LS (U+2028), and PS (U+2029); should also affect
-&lt;&gt;, $., and script line numbers; should not split lines within CRLF
-(i.e. there is no empty line between \r and \n).  For CRLF, try the
+<p>Should do <code>^</code> and <code>$</code> also on <code>U+000B</code> 
(<code>\v</code> in C), <code>FF</code> (<code>\f</code>),
+<code>CR</code> (<code>\r</code>), <code>CRLF</code> (<code>\r\n</code>), 
<code>NEL</code> (<code>U+0085</code>), <code>LS</code> (<code>U+2028</code>),
+and <code>PS</code> (<code>U+2029</code>); should also affect 
<code>&lt;&gt;</code>, <code>$.</code>, and
+script line numbers; should not split lines within <code>CRLF</code> (i.e. 
there
+is no empty line between <code>\r</code> and <code>\n</code>).  For 
<code>CRLF</code>, try the
 <code>:crlf</code> layer (see <a href="PerlIO.html#Top">(PerlIO)</a>).
 </p>
 </dd>
 <dt>[9]</dt>
 <dd><a name="perlunicode-_005b9_005d"></a>
-<p>Linebreaking conformant with UAX#14 &quot;Unicode Line Breaking 
Algorithm&quot; is available through the Unicode::LineBreaking module.
+<p>Linebreaking conformant with <a 
href="http://www.unicode.org/reports/tr14";>UAX#14 &quot;Unicode Line Breaking
+Algorithm&quot;</a>
+is available through the <code><a 
href="Unicode-LineBreak.html#Top">(Unicode-LineBreak)</a></code> module.
 </p>
 </dd>
 <dt>[10]</dt>
 <dd><a name="perlunicode-_005b10_005d"></a>
-<p>UTF-8/UTF-EBDDIC used in Perl allows not only U+10000 to
-U+10FFFF but also beyond U+10FFFF
+<p>UTF-8/UTF-EBDDIC used in Perl allows not only <code>U+10000</code> to
+<code>U+10FFFF</code> but also beyond <code>U+10FFFF</code>
 </p>
 </dd>
 </dl>
@@ -100871,7 +100887,7 @@
 Next: <a href="#perlunicode-Non_002dcharacter-code-points" accesskey="n" 
rel="next">perlunicode Non-character code points</a>, Previous: <a 
href="#perlunicode-Unicode-Regular-Expression-Support-Level" accesskey="p" 
rel="prev">perlunicode Unicode Regular Expression Support Level</a>, Up: <a 
href="#perlunicode-DESCRIPTION" accesskey="u" rel="up">perlunicode 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Unicode-Encodings"></a>
-<h4 class="subsection">80.2.9 Unicode Encodings</h4>
+<h4 class="subsection">81.2.9 Unicode Encodings</h4>
 
 <p>Unicode characters are assigned to <em>code points</em>, which are abstract
 numbers.  To use these numbers, various encodings are needed.
@@ -100913,12 +100929,12 @@
            ccccbbbbbbaaaaaa  1110cccc  10bbbbbb  10aaaaaa
  00000dddccccccbbbbbbaaaaaa  11110ddd  10cccccc  10bbbbbb  10aaaaaa
 </pre>
-<p>As you can see, the continuation bytes all begin with &quot;10&quot;, and 
the
+<p>As you can see, the continuation bytes all begin with 
<code>&quot;10&quot;</code>, and the
 leading bits of the start byte tell how many bytes there are in the
 encoded character.
 </p>
 <p>The original UTF-8 specification allowed up to 6 bytes, to allow
-encoding of numbers up to 0x7FFF_FFFF.  Perl continues to allow those,
+encoding of numbers up to <code>0x7FFF_FFFF</code>.  Perl continues to allow 
those,
 and has extended that up to 13 bytes to encode code points up to what
 can fit in a 64-bit word.  However, Perl will warn if you output any of
 these as being non-portable; and under strict UTF-8 input protocols,
@@ -100931,7 +100947,7 @@
 
 <p>Like UTF-8 but EBCDIC-safe, in the way that UTF-8 is ASCII-safe.
 </p>
-</li><li> UTF-16, UTF-16BE, UTF-16LE, Surrogates, and BOMs (Byte Order Marks)
+</li><li> UTF-16, UTF-16BE, UTF-16LE, Surrogates, and <code>BOM</code>s (Byte 
Order Marks)
 
 <p>The followings items are mostly for reference and general Unicode
 knowledge, Perl doesn&rsquo;t use these constructs internally.
@@ -100963,11 +100979,11 @@
 </p>
 <p>This introduces another problem: what if you just know that your data
 is UTF-16, but you don&rsquo;t know which endianness?  Byte Order Marks, or
-BOMs, are a solution to this.  A special character has been reserved
+<code>BOM</code>s, are a solution to this.  A special character has been 
reserved
 in Unicode to function as a byte order marker: the character with the
-code point <code>U+FEFF</code> is the BOM.
+code point <code>U+FEFF</code> is the <code>BOM</code>.
 </p>
-<p>The trick is that if you read a BOM, you will know the byte order,
+<p>The trick is that if you read a <code>BOM</code>, you will know the byte 
order,
 since if it was written on a big-endian platform, you will read the
 bytes <code>0xFE 0xFF</code>, but if it was written on a little-endian 
platform,
 you will read the bytes <code>0xFF 0xFE</code>.  (And if the originating 
platform
@@ -100975,7 +100991,7 @@
 </p>
 <p>The way this trick works is that the character with the code point
 <code>U+FFFE</code> is not supposed to be in input streams, so the
-sequence of bytes <code>0xFF 0xFE</code> is unambiguously &quot;BOM, 
represented in
+sequence of bytes <code>0xFF 0xFE</code> is unambiguously 
&quot;<code>BOM</code>, represented in
 little-endian format&quot; and cannot be <code>U+FFFE</code>, represented in 
big-endian
 format&quot;.
 </p>
@@ -100985,9 +101001,9 @@
 <code>chr(0xD801)</code>, so that all code points, not just those valid for 
open
 interchange, are
 representable.  Unicode does define semantics for them, such as their
-General Category is &quot;Cs&quot;.  But because their use is somewhat 
dangerous,
-Perl will warn (using the warning category &quot;surrogate&quot;, which is a
-sub-category of &quot;utf8&quot;) if an attempt is made
+<code><a href="#perlunicode-General_005fCategory">General_Category</a></code> 
is <code>&quot;Cs&quot;</code>.  But because their use is somewhat dangerous,
+Perl will warn (using the warning category <code>&quot;surrogate&quot;</code>, 
which is a
+sub-category of <code>&quot;utf8&quot;</code>) if an attempt is made
 to do things like take the lower case of one, or match
 case-insensitively, or to output them.  (But don&rsquo;t try this on Perls
 before 5.14.)
@@ -100996,7 +101012,7 @@
 
 <p>The UTF-32 family is pretty much like the UTF-16 family, expect that
 the units are 32-bit, and therefore the surrogate scheme is not
-needed.  UTF-32 is a fixed-width encoding.  The BOM signatures are
+needed.  UTF-32 is a fixed-width encoding.  The <code>BOM</code> signatures are
 <code>0x00 0x00 0xFE 0xFF</code> for BE and <code>0xFF 0xFE 0x00 0x00</code> 
for LE.
 </p>
 </li><li> UCS-2, UCS-4
@@ -101005,7 +101021,7 @@
 encoding.  Unlike UTF-16, UCS-2 is not extensible beyond <code>U+FFFF</code>,
 because it does not use surrogates.  UCS-4 is a 32-bit encoding,
 functionally identical to UTF-32 (the difference being that
-UCS-4 forbids neither surrogates nor code points larger than 0x10_FFFF).
+UCS-4 forbids neither surrogates nor code points larger than 
<code>0x10_FFFF</code>).
 </p>
 </li><li> UTF-7
 
@@ -101021,23 +101037,24 @@
 Next: <a href="#perlunicode-Beyond-Unicode-code-points" accesskey="n" 
rel="next">perlunicode Beyond Unicode code points</a>, Previous: <a 
href="#perlunicode-Unicode-Encodings" accesskey="p" rel="prev">perlunicode 
Unicode Encodings</a>, Up: <a href="#perlunicode-DESCRIPTION" accesskey="u" 
rel="up">perlunicode DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Non_002dcharacter-code-points"></a>
-<h4 class="subsection">80.2.10 Non-character code points</h4>
+<h4 class="subsection">81.2.10 Non-character code points</h4>
 
 <p>66 code points are set aside in Unicode as &quot;non-character code 
points&quot;.
-These all have the Unassigned (Cn) General Category, and they never will
+These all have the <code>Unassigned</code> (<code>Cn</code>) <code><a 
href="#perlunicode-General_005fCategory">General_Category</a></code>, and
+they never will
 be assigned.  These are never supposed to be in legal Unicode input
 streams, so that code can use them as sentinels that can be mixed in
 with character data, and they always will be distinguishable from that data.
 To keep them out of Perl input streams, strict UTF-8 should be
 specified, such as by using the layer <code>:encoding('UTF-8')</code>.  The
-non-character code points are the 32 between U+FDD0 and U+FDEF, and the
-34 code points U+FFFE, U+FFFF, U+1FFFE, U+1FFFF, ... U+10FFFE, U+10FFFF.
+non-character code points are the 32 between <code>U+FDD0</code> and 
<code>U+FDEF</code>, and the
+34 code points <code>U+FFFE</code>, <code>U+FFFF</code>, <code>U+1FFFE</code>, 
<code>U+1FFFF</code>, ... <code>U+10FFFE</code>, <code>U+10FFFF</code>.
 Some people are under the mistaken impression that these are 
&quot;illegal&quot;,
 but that is not true.  An application or cooperating set of applications
 can legally use them at will internally; but these code points are
 &quot;illegal for open interchange&quot;.  Therefore, Perl will not accept 
these
 from input streams unless lax rules are being used, and will warn
-(using the warning category &quot;nonchar&quot;, which is a sub-category of 
&quot;utf8&quot;) if
+(using the warning category <code>&quot;nonchar&quot;</code>, which is a 
sub-category of <code>&quot;utf8&quot;</code>) if
 an attempt is made to output them.
 </p>
 <hr>
@@ -101047,16 +101064,119 @@
 Next: <a href="#perlunicode-Security-Implications-of-Unicode" accesskey="n" 
rel="next">perlunicode Security Implications of Unicode</a>, Previous: <a 
href="#perlunicode-Non_002dcharacter-code-points" accesskey="p" 
rel="prev">perlunicode Non-character code points</a>, Up: <a 
href="#perlunicode-DESCRIPTION" accesskey="u" rel="up">perlunicode 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Beyond-Unicode-code-points"></a>
-<h4 class="subsection">80.2.11 Beyond Unicode code points</h4>
+<h4 class="subsection">81.2.11 Beyond Unicode code points</h4>
 
-<p>The maximum Unicode code point is U+10FFFF.  But Perl accepts code
+<p>The maximum Unicode code point is <code>U+10FFFF</code>, and Unicode only 
defines
+operations on code points up through that.  But Perl works on code
 points up to the maximum permissible unsigned number available on the
 platform.  However, Perl will not accept these from input streams unless
 lax rules are being used, and will warn (using the warning category
-&quot;non_unicode&quot;, which is a sub-category of &quot;utf8&quot;) if an 
attempt is made to
-operate on or output them.  For example, <code>uc(0x11_0000)</code> will 
generate
-this warning, returning the input parameter as its result, as the upper
-case of every non-Unicode code point is the code point itself.
+<code>&quot;non_unicode&quot;</code>, which is a sub-category of 
<code>&quot;utf8&quot;</code>) if any are output.
+</p>
+<p>Since Unicode rules are not defined on these code points, if a
+Unicode-defined operation is done on them, Perl uses what we believe are
+sensible rules, while generally warning, using the 
<code>&quot;non_unicode&quot;</code>
+category.  For example, <code>uc(&quot;\x{11_0000}&quot;)</code> will generate 
such a
+warning, returning the input parameter as its result, since Perl defines
+the uppercase of every non-Unicode code point to be the code point
+itself.  In fact, all the case changing operations, not just
+uppercasing, work this way.
+</p>
+<p>The situation with matching Unicode properties in regular expressions,
+the <code>\p{}</code> and <code>\P{}</code> constructs, against these code 
points is not as
+clear cut, and how these are handled has changed as we&rsquo;ve gained
+experience.
+</p>
+<p>One possibility is to treat any match against these code points as
+undefined.  But since Perl doesn&rsquo;t have the concept of a match being
+undefined, it converts this to failing or <code>FALSE</code>.  This is almost, 
but
+not quite, what Perl did from v5.14 (when use of these code points
+became generally reliable) through v5.18.  The difference is that Perl
+treated all <code>\p{}</code> matches as failing, but all <code>\P{}</code> 
matches as
+succeeding.
+</p>
+<p>One problem with this is that it leads to unexpected, and confusting
+results in some cases:
+</p>
+<pre class="verbatim"> chr(0x110000) =~ \p{ASCII_Hex_Digit=True}      # Failed 
on &lt;= v5.18
+ chr(0x110000) =~ \p{ASCII_Hex_Digit=False}     # Failed! on &lt;= v5.18
+</pre>
+<p>That is, it treated both matches as undefined, and converted that to
+false (raising a warning on each).  The first case is the expected
+result, but the second is likely counterintuitive: &quot;How could both be
+false when they are complements?&quot;  Another problem was that the
+implementation optimized many Unicode property matches down to already
+existing simpler, faster operations, which don&rsquo;t raise the warning.  We
+chose to not forgo those optimizations, which help the vast majority of
+matches, just to generate a warning for the unlikely event that an
+above-Unicode code point is being matched against.
+</p>
+<p>As a result of these problems, starting in v5.20, what Perl does is
+to treat non-Unicode code points as just typical unassigned Unicode
+characters, and matches accordingly.  (Note: Unicode has atypical
+unassigned code points.  For example, it has non-character code points,
+and ones that, when they do get assigned, are destined to be written
+Right-to-left, as Arabic and Hebrew are.  Perl assumes that no
+non-Unicode code point has any atypical properties.)
+</p>
+<p>Perl, in most cases, will raise a warning when matching an above-Unicode
+code point against a Unicode property when the result is <code>TRUE</code> for
+<code>\p{}</code>, and <code>FALSE</code> for <code>\P{}</code>.  For example:
+</p>
+<pre class="verbatim"> chr(0x110000) =~ \p{ASCII_Hex_Digit=True}      # Fails, 
no warning
+ chr(0x110000) =~ \p{ASCII_Hex_Digit=False}     # Succeeds, with warning
+</pre>
+<p>In both these examples, the character being matched is non-Unicode, so
+Unicode doesn&rsquo;t define how it should match.  It clearly isn&rsquo;t an 
ASCII
+hex digit, so the first example clearly should fail, and so it does,
+with no warning.  But it is arguable that the second example should have
+an undefined, hence <code>FALSE</code>, result.  So a warning is raised for it.
+</p>
+<p>Thus the warning is raised for many fewer cases than in earlier Perls,
+and only when what the result is could be arguable.  It turns out that
+none of the optimizations made by Perl (or are ever likely to be made)
+cause the warning to be skipped, so it solves both problems of Perl&rsquo;s
+earlier approach.  The most commonly used property that is affected by
+this change is <code>\p{Unassigned}</code> which is a short form for
+<code>\p{General_Category=Unassigned}</code>.  Starting in v5.20, all 
non-Unicode
+code points are considered <code>Unassigned</code>.  In earlier releases the
+matches failed because the result was considered undefined.
+</p>
+<p>The only place where the warning is not raised when it might ought to
+have been is if optimizations cause the whole pattern match to not even
+be attempted.  For example, Perl may figure out that for a string to
+match a certain regular expression pattern, the string has to contain
+the substring <code>&quot;foobar&quot;</code>.  Before attempting the match, 
Perl may look
+for that substring, and if not found, immediately fail the match without
+actually trying it; so no warning gets generated even if the string
+contains an above-Unicode code point.
+</p>
+<p>This behavior is more &quot;Do what I mean&quot; than in earlier Perls for 
most
+applications.  But it catches fewer issues for code that needs to be
+strictly Unicode compliant.  Therefore there is an additional mode of
+operation available to accommodate such code.  This mode is enabled if a
+regular expression pattern is compiled within the lexical scope where
+the <code>&quot;non_unicode&quot;</code> warning class has been made fatal, 
say by:
+</p>
+<pre class="verbatim"> use warnings FATAL =&gt; &quot;non_unicode&quot;
+</pre>
+<p>(see <a href="warnings.html#Top">(warnings)</a>).  In this mode of 
operation, Perl will raise the
+warning for all matches against a non-Unicode code point (not just the
+arguable ones), and it skips the optimizations that might cause the
+warning to not be output.  (It currently still won&rsquo;t warn if the match
+isn&rsquo;t even attempted, like in the <code>&quot;foobar&quot;</code> 
example above.)
+</p>
+<p>In summary, Perl now normally treats non-Unicode code points as typical
+Unicode unassigned code points for regular expression matches, raising a
+warning only when it is arguable what the result should be.  However, if
+this warning has been made fatal, it isn&rsquo;t skipped.
+</p>
+<p>There is one exception to all this.  <code>\p{All}</code> looks like a 
Unicode
+property, but it is a Perl extension that is defined to be true for all
+possible code points, Unicode or not, so no warning is ever generated
+when matching this against a non-Unicode code point.  (Prior to v5.20,
+it was an exact synonym for <code>\p{Any}</code>, matching code points 
<code>0</code>
+through <code>0x10FFFF</code>.)
 </p>
 <hr>
 <a name="perlunicode-Security-Implications-of-Unicode"></a>
@@ -101065,7 +101185,7 @@
 Next: <a href="#perlunicode-Unicode-in-Perl-on-EBCDIC" accesskey="n" 
rel="next">perlunicode Unicode in Perl on EBCDIC</a>, Previous: <a 
href="#perlunicode-Beyond-Unicode-code-points" accesskey="p" 
rel="prev">perlunicode Beyond Unicode code points</a>, Up: <a 
href="#perlunicode-DESCRIPTION" accesskey="u" rel="up">perlunicode 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Security-Implications-of-Unicode"></a>
-<h4 class="subsection">80.2.12 Security Implications of Unicode</h4>
+<h4 class="subsection">81.2.12 Security Implications of Unicode</h4>
 
 <p>Read <a href="http://www.unicode.org/reports/tr36";>Unicode Security 
Considerations</a>.
 Also, note the following:
@@ -101107,14 +101227,14 @@
 Next: <a href="#perlunicode-Locales" accesskey="n" rel="next">perlunicode 
Locales</a>, Previous: <a href="#perlunicode-Security-Implications-of-Unicode" 
accesskey="p" rel="prev">perlunicode Security Implications of Unicode</a>, Up: 
<a href="#perlunicode-DESCRIPTION" accesskey="u" rel="up">perlunicode 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Unicode-in-Perl-on-EBCDIC"></a>
-<h4 class="subsection">80.2.13 Unicode in Perl on EBCDIC</h4>
+<h4 class="subsection">81.2.13 Unicode in Perl on EBCDIC</h4>
 
 <p>The way Unicode is handled on EBCDIC platforms is still
 experimental.  On such platforms, references to UTF-8 encoding in this
 document and elsewhere should be read as meaning the UTF-EBCDIC
 specified in Unicode Technical Report 16, unless ASCII vs. EBCDIC issues
 are specifically discussed. There is no <code>utfebcdic</code> pragma or
-&quot;:utfebcdic&quot; layer; rather, &quot;utf8&quot; and &quot;:utf8&quot; 
are reused to mean
+<code>&quot;:utfebcdic&quot;</code> layer; rather, 
<code>&quot;utf8&quot;</code> and <code>&quot;:utf8&quot;</code> are reused to 
mean
 the platform&rsquo;s &quot;natural&quot; 8-bit encoding of Unicode. See <a 
href="#perlebcdic-NAME">perlebcdic NAME</a>
 for more discussion of the issues.
 </p>
@@ -101125,7 +101245,7 @@
 Next: <a href="#perlunicode-When-Unicode-Does-Not-Happen" accesskey="n" 
rel="next">perlunicode When Unicode Does Not Happen</a>, Previous: <a 
href="#perlunicode-Unicode-in-Perl-on-EBCDIC" accesskey="p" 
rel="prev">perlunicode Unicode in Perl on EBCDIC</a>, Up: <a 
href="#perlunicode-DESCRIPTION" accesskey="u" rel="up">perlunicode 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Locales"></a>
-<h4 class="subsection">80.2.14 Locales</h4>
+<h4 class="subsection">81.2.14 Locales</h4>
 
 <p>See <a href="#perllocale-Unicode-and-UTF_002d8">perllocale Unicode and 
UTF-8</a>
 </p>
@@ -101136,10 +101256,10 @@
 Next: <a href="#perlunicode-The-_0022Unicode-Bug_0022" accesskey="n" 
rel="next">perlunicode The &quot;Unicode Bug&quot;</a>, Previous: <a 
href="#perlunicode-Locales" accesskey="p" rel="prev">perlunicode Locales</a>, 
Up: <a href="#perlunicode-DESCRIPTION" accesskey="u" rel="up">perlunicode 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="When-Unicode-Does-Not-Happen"></a>
-<h4 class="subsection">80.2.15 When Unicode Does Not Happen</h4>
+<h4 class="subsection">81.2.15 When Unicode Does Not Happen</h4>
 
 <p>While Perl does have extensive ways to input and output in Unicode,
-and a few other &quot;entry points&quot; like the @ARGV array (which can 
sometimes be
+and a few other &quot;entry points&quot; like the <code>@ARGV</code> array 
(which can sometimes be
 interpreted as UTF-8), there are still many places where Unicode
 (in some encoding or another) could be given as arguments or received as
 results, or both, but it is not.
@@ -101157,18 +101277,18 @@
 &quot;command-line interface&quot; (and which of them?) handle Unicode?
 </p>
 <ul>
-<li> chdir, chmod, chown, chroot, exec, link, lstat, mkdir,
-rename, rmdir, stat, symlink, truncate, unlink, utime, -X
+<li> <code>chdir</code>, <code>chmod</code>, <code>chown</code>, 
<code>chroot</code>, <code>exec</code>, <code>link</code>, <code>lstat</code>, 
<code>mkdir</code>,
+<code>rename</code>, <code>rmdir</code>, <code>stat</code>, 
<code>symlink</code>, <code>truncate</code>, <code>unlink</code>, 
<code>utime</code>, <code>-X</code>
 
-</li><li> %ENV
+</li><li> <code>%ENV</code>
 
-</li><li> glob (aka the &lt;*&gt;)
+</li><li> <code>glob</code> (aka the <code>&lt;*&gt;</code>)
 
-</li><li> open, opendir, sysopen
+</li><li> <code>open</code>, <code>opendir</code>, <code>sysopen</code>
 
-</li><li> qx (aka the backtick operator), system
+</li><li> <code>qx</code> (aka the backtick operator), <code>system</code>
 
-</li><li> readdir, readlink
+</li><li> <code>readdir</code>, <code>readlink</code>
 
 </li></ul>
 
@@ -101179,11 +101299,11 @@
 Next: <a 
href="#perlunicode-Forcing-Unicode-in-Perl-_0028Or-Unforcing-Unicode-in-Perl_0029"
 accesskey="n" rel="next">perlunicode Forcing Unicode in Perl (Or Unforcing 
Unicode in Perl)</a>, Previous: <a 
href="#perlunicode-When-Unicode-Does-Not-Happen" accesskey="p" 
rel="prev">perlunicode When Unicode Does Not Happen</a>, Up: <a 
href="#perlunicode-DESCRIPTION" accesskey="u" rel="up">perlunicode 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="The-_0022Unicode-Bug_0022"></a>
-<h4 class="subsection">80.2.16 The &quot;Unicode Bug&quot;</h4>
+<h4 class="subsection">81.2.16 The &quot;Unicode Bug&quot;</h4>
 
 <p>The term, &quot;Unicode bug&quot; has been applied to an inconsistency
 on ASCII platforms with the
-Unicode code points in the Latin-1 Supplement block, that
+Unicode code points in the <code>Latin-1 Supplement</code> block, that
 is, between 128 and 255.  Without a locale specified, unlike all other
 characters or code points, these characters have very different semantics in
 byte semantics versus character semantics, unless
@@ -101265,9 +101385,9 @@
 </p>
 <p>For Perls earlier than those described above, or when a string is passed
 to a function outside the subpragma&rsquo;s scope, a workaround is to always
-call <code>utf8::upgrade($string)</code>,
+call <a 
href="utf8.html#Utility-functions">(utf8)<code>utf8::upgrade($string)</code></a>,
 or to use the standard module <a href="Encode.html#Top">(Encode)</a>.   Also, 
a scalar that has any characters
-whose ordinal is above 0x100, or which were specified using either of the
+whose ordinal is <code>0x100</code> or above, or which were specified using 
either of the
 <code>\N{...}</code> notations, will automatically have character semantics.
 </p>
 <hr>
@@ -101277,15 +101397,16 @@
 Next: <a href="#perlunicode-Using-Unicode-in-XS" accesskey="n" 
rel="next">perlunicode Using Unicode in XS</a>, Previous: <a 
href="#perlunicode-The-_0022Unicode-Bug_0022" accesskey="p" 
rel="prev">perlunicode The &quot;Unicode Bug&quot;</a>, Up: <a 
href="#perlunicode-DESCRIPTION" accesskey="u" rel="up">perlunicode 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Forcing-Unicode-in-Perl-_0028Or-Unforcing-Unicode-in-Perl_0029"></a>
-<h4 class="subsection">80.2.17 Forcing Unicode in Perl (Or Unforcing Unicode 
in Perl)</h4>
+<h4 class="subsection">81.2.17 Forcing Unicode in Perl (Or Unforcing Unicode 
in Perl)</h4>
 
 <p>Sometimes (see <a href="#perlunicode-When-Unicode-Does-Not-Happen">When 
Unicode Does Not Happen</a> or <a 
href="#perlunicode-The-_0022Unicode-Bug_0022">The &quot;Unicode Bug&quot;</a>)
 there are situations where you simply need to force a byte
 string into UTF-8, or vice versa.  The low-level calls
-utf8::upgrade($bytestring) and utf8::downgrade($utf8string[, FAIL_OK]) are
+<a 
href="utf8.html#Utility-functions">(utf8)<code>utf8::upgrade($bytestring)</code></a>
 and
+<a 
href="utf8.html#Utility-functions">(utf8)<code>utf8::downgrade($utf8string[, 
FAIL_OK])</code></a> are
 the answers.
 </p>
-<p>Note that utf8::downgrade() can fail if the string contains characters
+<p>Note that <code>utf8::downgrade()</code> can fail if the string contains 
characters
 that don&rsquo;t fit into a byte.
 </p>
 <p>Calling either function on a string that already is in the desired state is 
a
@@ -101298,7 +101419,7 @@
 Next: <a 
href="#perlunicode-Hacking-Perl-to-work-on-earlier-Unicode-versions-_0028for-very-serious-hackers-only_0029"
 accesskey="n" rel="next">perlunicode Hacking Perl to work on earlier Unicode 
versions (for very serious hackers only)</a>, Previous: <a 
href="#perlunicode-Forcing-Unicode-in-Perl-_0028Or-Unforcing-Unicode-in-Perl_0029"
 accesskey="p" rel="prev">perlunicode Forcing Unicode in Perl (Or Unforcing 
Unicode in Perl)</a>, Up: <a href="#perlunicode-DESCRIPTION" accesskey="u" 
rel="up">perlunicode DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Using-Unicode-in-XS"></a>
-<h4 class="subsection">80.2.18 Using Unicode in XS</h4>
+<h4 class="subsection">81.2.18 Using Unicode in XS</h4>
 
 <p>If you want to handle Perl Unicode in XS extensions, you may find the
 following C APIs useful.  See also <a 
href="#perlguts-Unicode-Support">perlguts Unicode Support</a> for an
@@ -101308,7 +101429,7 @@
 <ul>
 <li> <code>DO_UTF8(sv)</code> returns true if the <code>UTF8</code> flag is on 
and the bytes
 pragma is not in effect.  <code>SvUTF8(sv)</code> returns true if the 
<code>UTF8</code>
-flag is on; the bytes pragma is ignored.  The <code>UTF8</code> flag being on
+flag is on; the <code>bytes</code> pragma is ignored.  The <code>UTF8</code> 
flag being on
 does <strong>not</strong> mean that there are any characters of code points 
greater
 than 255 (or 127) in the scalar or that there are even any characters
 in the scalar.  What the <code>UTF8</code> flag means is that the sequence of
@@ -101388,7 +101509,7 @@
 Previous: <a href="#perlunicode-Using-Unicode-in-XS" accesskey="p" 
rel="prev">perlunicode Using Unicode in XS</a>, Up: <a 
href="#perlunicode-DESCRIPTION" accesskey="u" rel="up">perlunicode 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a 
name="Hacking-Perl-to-work-on-earlier-Unicode-versions-_0028for-very-serious-hackers-only_0029"></a>
-<h4 class="subsection">80.2.19 Hacking Perl to work on earlier Unicode 
versions (for very serious hackers only)</h4>
+<h4 class="subsection">81.2.19 Hacking Perl to work on earlier Unicode 
versions (for very serious hackers only)</h4>
 
 <p>Perl by default comes with the latest supported Unicode version built in, 
but
 you can change to use any earlier one.
@@ -101406,7 +101527,7 @@
 Next: <a href="#perlunicode-SEE-ALSO" accesskey="n" rel="next">perlunicode SEE 
ALSO</a>, Previous: <a href="#perlunicode-DESCRIPTION" accesskey="p" 
rel="prev">perlunicode DESCRIPTION</a>, Up: <a href="#perlunicode" 
accesskey="u" rel="up">perlunicode</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="BUGS-10"></a>
-<h3 class="section">80.3 BUGS</h3>
+<h3 class="section">81.3 BUGS</h3>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a 
href="#perlunicode-Interaction-with-Locales" accesskey="1">perlunicode 
Interaction with Locales</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -101430,7 +101551,7 @@
 Next: <a 
href="#perlunicode-Problems-with-characters-in-the-Latin_002d1-Supplement-range"
 accesskey="n" rel="next">perlunicode Problems with characters in the Latin-1 
Supplement range</a>, Up: <a href="#perlunicode-BUGS" accesskey="u" 
rel="up">perlunicode BUGS</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Interaction-with-Locales"></a>
-<h4 class="subsection">80.3.1 Interaction with Locales</h4>
+<h4 class="subsection">81.3.1 Interaction with Locales</h4>
 
 <p>See <a href="#perllocale-Unicode-and-UTF_002d8">perllocale Unicode and 
UTF-8</a>
 </p>
@@ -101441,7 +101562,7 @@
 Next: <a href="#perlunicode-Interaction-with-Extensions" accesskey="n" 
rel="next">perlunicode Interaction with Extensions</a>, Previous: <a 
href="#perlunicode-Interaction-with-Locales" accesskey="p" 
rel="prev">perlunicode Interaction with Locales</a>, Up: <a 
href="#perlunicode-BUGS" accesskey="u" rel="up">perlunicode BUGS</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Problems-with-characters-in-the-Latin_002d1-Supplement-range"></a>
-<h4 class="subsection">80.3.2 Problems with characters in the Latin-1 
Supplement range</h4>
+<h4 class="subsection">81.3.2 Problems with characters in the Latin-1 
Supplement range</h4>
 
 <p>See <a href="#perlunicode-The-_0022Unicode-Bug_0022">The &quot;Unicode 
Bug&quot;</a>
 </p>
@@ -101452,7 +101573,7 @@
 Next: <a href="#perlunicode-Speed" accesskey="n" rel="next">perlunicode 
Speed</a>, Previous: <a 
href="#perlunicode-Problems-with-characters-in-the-Latin_002d1-Supplement-range"
 accesskey="p" rel="prev">perlunicode Problems with characters in the Latin-1 
Supplement range</a>, Up: <a href="#perlunicode-BUGS" accesskey="u" 
rel="up">perlunicode BUGS</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Interaction-with-Extensions"></a>
-<h4 class="subsection">80.3.3 Interaction with Extensions</h4>
+<h4 class="subsection">81.3.3 Interaction with Extensions</h4>
 
 <p>When Perl exchanges data with an extension, the extension should be
 able to understand the UTF8 flag and act accordingly. If the
@@ -101474,7 +101595,7 @@
 encoding. Write wrapper functions that do the conversions for you, so
 you can later change the functions when the extension catches up.
 </p>
-<p>To provide an example, let&rsquo;s say the popular Foo::Bar::escape_html
+<p>To provide an example, let&rsquo;s say the popular 
<code>Foo::Bar::escape_html</code>
 function doesn&rsquo;t deal with Unicode data yet. The wrapper function
 would convert the argument to raw UTF-8 and convert the result back to
 Perl&rsquo;s internal representation like so:
@@ -101488,9 +101609,9 @@
 </pre>
 <p>Sometimes, when the extension does not convert data but just stores
 and retrieves them, you will be able to use the otherwise
-dangerous Encode::_utf8_on() function. Let&rsquo;s say the popular
-<code>Foo::Bar</code> extension, written in C, provides a <code>param</code> 
method that
-lets you store and retrieve data according to these prototypes:
+dangerous <a 
href="Encode.html#g_t_005futf8_005fon">(Encode)<code>Encode::_utf8_on()</code></a>
 function. Let&rsquo;s say
+the popular <code>Foo::Bar</code> extension, written in C, provides a 
<code>param</code>
+method that lets you store and retrieve data according to these prototypes:
 </p>
 <pre class="verbatim">    $self-&gt;param($name, $value);            # set a 
scalar
     $value = $self-&gt;param($name);           # retrieve a scalar
@@ -101512,7 +101633,7 @@
     }
 </pre>
 <p>Some extensions provide filters on data entry/exit points, such as
-DB_File::filter_store_key and family. Look out for such filters in
+<code>DB_File::filter_store_key</code> and family. Look out for such filters in
 the documentation of your extensions, they can make the transition to
 Unicode data much easier.
 </p>
@@ -101523,12 +101644,12 @@
 Next: <a href="#perlunicode-Problems-on-EBCDIC-platforms" accesskey="n" 
rel="next">perlunicode Problems on EBCDIC platforms</a>, Previous: <a 
href="#perlunicode-Interaction-with-Extensions" accesskey="p" 
rel="prev">perlunicode Interaction with Extensions</a>, Up: <a 
href="#perlunicode-BUGS" accesskey="u" rel="up">perlunicode BUGS</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Speed"></a>
-<h4 class="subsection">80.3.4 Speed</h4>
+<h4 class="subsection">81.3.4 Speed</h4>
 
 <p>Some functions are slower when working on UTF-8 encoded strings than
 on byte encoded strings.  All functions that need to hop over
-characters such as length(), substr() or index(), or matching regular
-expressions can work <strong>much</strong> faster when the underlying data are
+characters such as <code>length()</code>, <code>substr()</code> or 
<code>index()</code>, or matching
+regular expressions can work <strong>much</strong> faster when the underlying 
data are
 byte-encoded.
 </p>
 <p>In Perl 5.8.0 the slowness was often quite spectacular; in Perl 5.8.1
@@ -101547,7 +101668,7 @@
 Next: <a href="#perlunicode-Porting-code-from-perl_002d5_002e6_002eX" 
accesskey="n" rel="next">perlunicode Porting code from perl-5.6.X</a>, 
Previous: <a href="#perlunicode-Speed" accesskey="p" rel="prev">perlunicode 
Speed</a>, Up: <a href="#perlunicode-BUGS" accesskey="u" rel="up">perlunicode 
BUGS</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Problems-on-EBCDIC-platforms"></a>
-<h4 class="subsection">80.3.5 Problems on EBCDIC platforms</h4>
+<h4 class="subsection">81.3.5 Problems on EBCDIC platforms</h4>
 
 <p>There are several known problems with Perl on EBCDIC platforms.  If you
 want to use Perl there, send email to address@hidden
@@ -101566,7 +101687,7 @@
 Previous: <a href="#perlunicode-Problems-on-EBCDIC-platforms" accesskey="p" 
rel="prev">perlunicode Problems on EBCDIC platforms</a>, Up: <a 
href="#perlunicode-BUGS" accesskey="u" rel="up">perlunicode BUGS</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Porting-code-from-perl_002d5_002e6_002eX"></a>
-<h4 class="subsection">80.3.6 Porting code from perl-5.6.X</h4>
+<h4 class="subsection">81.3.6 Porting code from perl-5.6.X</h4>
 
 <p>Perl 5.8 has a different Unicode model from 5.6. In 5.6 the programmer
 was required to use the <code>utf8</code> pragma to declare that a given scope
@@ -101585,7 +101706,7 @@
 </pre>
 </li><li> A scalar that is going to be passed to some extension
 
-<p>Be it Compress::Zlib, Apache::Request or any extension that has no
+<p>Be it <code>Compress::Zlib</code>, <code>Apache::Request</code> or any 
extension that has no
 mention of Unicode in the manpage, you need to make sure that the
 UTF8 flag is stripped off. Note that at the time of this writing
 (January 2012) the mentioned modules are not UTF-8-aware. Please
@@ -101613,14 +101734,14 @@
     Encode::_utf8_on($val);
   }
 </pre>
-</li><li> A wrapper for fetchrow_array and fetchrow_hashref
+</li><li> A wrapper for <a href="DBI.html#Top">(DBI)</a> 
<code>fetchrow_array</code> and <code>fetchrow_hashref</code>
 
 <p>When the database contains only UTF-8, a wrapper function or method is
-a convenient way to replace all your fetchrow_array and
-fetchrow_hashref calls. A wrapper function will also make it easier to
+a convenient way to replace all your <code>fetchrow_array</code> and
+<code>fetchrow_hashref</code> calls. A wrapper function will also make it 
easier to
 adapt to future enhancements in your database driver. Note that at the
 time of this writing (January 2012), the DBI has no standardized way
-to deal with UTF-8 data. Please check the documentation to verify if
+to deal with UTF-8 data. Please check the <a href="DBI.html#Top">(DBI)DBI 
documentation</a> to verify if
 that is still true.
 </p>
 <pre class="verbatim">  sub fetchrow {
@@ -101669,8 +101790,8 @@
 <p>
 Previous: <a href="#perlunicode-BUGS" accesskey="p" rel="prev">perlunicode 
BUGS</a>, Up: <a href="#perlunicode" accesskey="u" rel="up">perlunicode</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-40"></a>
-<h3 class="section">80.4 SEE ALSO</h3>
+<a name="SEE-ALSO-39"></a>
+<h3 class="section">81.4 SEE ALSO</h3>
 
 <p><a href="#perlunitut-NAME">perlunitut NAME</a>, <a 
href="#perluniintro-NAME">perluniintro NAME</a>, <a 
href="perluniprops.html#Top">(perluniprops)</a>, <a 
href="Encode.html#Top">(Encode)</a>, <a href="open.html#Top">(open)</a>, <a 
href="utf8.html#Top">(utf8)</a>, <a href="bytes.html#Top">(bytes)</a>,
 <a href="#perlretut-NAME">perlretut NAME</a>, <a 
href="#perlvar-_0024_007b_005eUNICODE_007d">perlvar ${^UNICODE}</a>
@@ -101683,7 +101804,7 @@
 Next: <a href="#perluniintro" accesskey="n" rel="next">perluniintro</a>, 
Previous: <a href="#perlunicode" accesskey="p" rel="prev">perlunicode</a>, Up: 
<a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="perlunifaq-1"></a>
-<h2 class="chapter">81 perlunifaq</h2>
+<h2 class="chapter">82 perlunifaq</h2>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perlunifaq-NAME" 
accesskey="1">perlunifaq NAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -101704,8 +101825,8 @@
 <p>
 Next: <a href="#perlunifaq-Q-and-A" accesskey="n" rel="next">perlunifaq Q and 
A</a>, Up: <a href="#perlunifaq" accesskey="u" rel="up">perlunifaq</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="NAME-80"></a>
-<h3 class="section">81.1 NAME</h3>
+<a name="NAME-81"></a>
+<h3 class="section">82.1 NAME</h3>
 
 <p>perlunifaq - Perl Unicode FAQ
 </p>
@@ -101716,7 +101837,7 @@
 Next: <a href="#perlunifaq-INTERNALS" accesskey="n" rel="next">perlunifaq 
INTERNALS</a>, Previous: <a href="#perlunifaq-NAME" accesskey="p" 
rel="prev">perlunifaq NAME</a>, Up: <a href="#perlunifaq" accesskey="u" 
rel="up">perlunifaq</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Q-and-A"></a>
-<h3 class="section">81.2 Q and A</h3>
+<h3 class="section">82.2 Q and A</h3>
 
 <p>This is a list of questions and answers about Unicode in Perl, intended to 
be
 read after <a href="#perlunitut-NAME">perlunitut NAME</a>.
@@ -101765,7 +101886,7 @@
 Next: <a href="#perlunifaq-What-character-encodings-does-Perl-support_003f" 
accesskey="n" rel="next">perlunifaq What character encodings does Perl 
support?</a>, Up: <a href="#perlunifaq-Q-and-A" accesskey="u" 
rel="up">perlunifaq Q and A</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="perlunitut-isn_0027t-really-a-Unicode-tutorial_002c-is-it_003f"></a>
-<h4 class="subsection">81.2.1 perlunitut isn&rsquo;t really a Unicode 
tutorial, is it?</h4>
+<h4 class="subsection">82.2.1 perlunitut isn&rsquo;t really a Unicode 
tutorial, is it?</h4>
 
 <p>No, and this isn&rsquo;t really a Unicode FAQ.
 </p>
@@ -101781,7 +101902,7 @@
 Next: <a href="#perlunifaq-Which-version-of-perl-should-I-use_003f" 
accesskey="n" rel="next">perlunifaq Which version of perl should I use?</a>, 
Previous: <a 
href="#perlunifaq-perlunitut-isn_0027t-really-a-Unicode-tutorial_002c-is-it_003f"
 accesskey="p" rel="prev">perlunifaq perlunitut isn't really a Unicode 
tutorial, is it?</a>, Up: <a href="#perlunifaq-Q-and-A" accesskey="u" 
rel="up">perlunifaq Q and A</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="What-character-encodings-does-Perl-support_003f"></a>
-<h4 class="subsection">81.2.2 What character encodings does Perl support?</h4>
+<h4 class="subsection">82.2.2 What character encodings does Perl support?</h4>
 
 <p>To find out which character encodings your Perl supports, run:
 </p>
@@ -101794,7 +101915,7 @@
 Next: <a href="#perlunifaq-What-about-binary-data_002c-like-images_003f" 
accesskey="n" rel="next">perlunifaq What about binary data, like images?</a>, 
Previous: <a href="#perlunifaq-What-character-encodings-does-Perl-support_003f" 
accesskey="p" rel="prev">perlunifaq What character encodings does Perl 
support?</a>, Up: <a href="#perlunifaq-Q-and-A" accesskey="u" 
rel="up">perlunifaq Q and A</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Which-version-of-perl-should-I-use_003f"></a>
-<h4 class="subsection">81.2.3 Which version of perl should I use?</h4>
+<h4 class="subsection">82.2.3 Which version of perl should I use?</h4>
 
 <p>Well, if you can, upgrade to the most recent, but certainly 
<code>5.8.1</code> or newer.
 The tutorial and FAQ assume the latest release.
@@ -101810,7 +101931,7 @@
 Next: <a href="#perlunifaq-When-should-I-decode-or-encode_003f" accesskey="n" 
rel="next">perlunifaq When should I decode or encode?</a>, Previous: <a 
href="#perlunifaq-Which-version-of-perl-should-I-use_003f" accesskey="p" 
rel="prev">perlunifaq Which version of perl should I use?</a>, Up: <a 
href="#perlunifaq-Q-and-A" accesskey="u" rel="up">perlunifaq Q and A</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="What-about-binary-data_002c-like-images_003f"></a>
-<h4 class="subsection">81.2.4 What about binary data, like images?</h4>
+<h4 class="subsection">82.2.4 What about binary data, like images?</h4>
 
 <p>Well, apart from a bare <code>binmode $fh</code>, you shouldn&rsquo;t treat 
them specially.
 (The binmode is needed because otherwise Perl may convert line endings on Win32
@@ -101828,7 +101949,7 @@
 Next: <a href="#perlunifaq-What-if-I-don_0027t-decode_003f" accesskey="n" 
rel="next">perlunifaq What if I don't decode?</a>, Previous: <a 
href="#perlunifaq-What-about-binary-data_002c-like-images_003f" accesskey="p" 
rel="prev">perlunifaq What about binary data, like images?</a>, Up: <a 
href="#perlunifaq-Q-and-A" accesskey="u" rel="up">perlunifaq Q and A</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="When-should-I-decode-or-encode_003f"></a>
-<h4 class="subsection">81.2.5 When should I decode or encode?</h4>
+<h4 class="subsection">82.2.5 When should I decode or encode?</h4>
 
 <p>Whenever you&rsquo;re communicating text with anything that is external to 
your perl
 process, like a database, a text file, a socket, or another program. Even if
@@ -101841,7 +101962,7 @@
 Next: <a href="#perlunifaq-What-if-I-don_0027t-encode_003f" accesskey="n" 
rel="next">perlunifaq What if I don't encode?</a>, Previous: <a 
href="#perlunifaq-When-should-I-decode-or-encode_003f" accesskey="p" 
rel="prev">perlunifaq When should I decode or encode?</a>, Up: <a 
href="#perlunifaq-Q-and-A" accesskey="u" rel="up">perlunifaq Q and A</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="What-if-I-don_0027t-decode_003f"></a>
-<h4 class="subsection">81.2.6 What if I don&rsquo;t decode?</h4>
+<h4 class="subsection">82.2.6 What if I don&rsquo;t decode?</h4>
 
 <p>Whenever your encoded, binary string is used together with a text string, 
Perl
 will assume that your binary string was encoded with ISO-8859-1, also known as
@@ -101861,7 +101982,7 @@
 Next: <a 
href="#perlunifaq-Is-there-a-way-to-automatically-decode-or-encode_003f" 
accesskey="n" rel="next">perlunifaq Is there a way to automatically decode or 
encode?</a>, Previous: <a href="#perlunifaq-What-if-I-don_0027t-decode_003f" 
accesskey="p" rel="prev">perlunifaq What if I don't decode?</a>, Up: <a 
href="#perlunifaq-Q-and-A" accesskey="u" rel="up">perlunifaq Q and A</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="What-if-I-don_0027t-encode_003f"></a>
-<h4 class="subsection">81.2.7 What if I don&rsquo;t encode?</h4>
+<h4 class="subsection">82.2.7 What if I don&rsquo;t encode?</h4>
 
 <p>Your text string will be sent using the bytes in Perl&rsquo;s internal 
format. In
 some cases, Perl will warn you that you&rsquo;re doing something wrong, with a
@@ -101882,7 +102003,7 @@
 Next: <a 
href="#perlunifaq-What-if-I-don_0027t-know-which-encoding-was-used_003f" 
accesskey="n" rel="next">perlunifaq What if I don't know which encoding was 
used?</a>, Previous: <a href="#perlunifaq-What-if-I-don_0027t-encode_003f" 
accesskey="p" rel="prev">perlunifaq What if I don't encode?</a>, Up: <a 
href="#perlunifaq-Q-and-A" accesskey="u" rel="up">perlunifaq Q and A</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Is-there-a-way-to-automatically-decode-or-encode_003f"></a>
-<h4 class="subsection">81.2.8 Is there a way to automatically decode or 
encode?</h4>
+<h4 class="subsection">82.2.8 Is there a way to automatically decode or 
encode?</h4>
 
 <p>If all data that comes from a certain handle is encoded in exactly the same
 way, you can tell the PerlIO system to automatically decode everything, with
@@ -101908,7 +102029,7 @@
 Next: <a href="#perlunifaq-Can-I-use-Unicode-in-my-Perl-sources_003f" 
accesskey="n" rel="next">perlunifaq Can I use Unicode in my Perl sources?</a>, 
Previous: <a 
href="#perlunifaq-Is-there-a-way-to-automatically-decode-or-encode_003f" 
accesskey="p" rel="prev">perlunifaq Is there a way to automatically decode or 
encode?</a>, Up: <a href="#perlunifaq-Q-and-A" accesskey="u" 
rel="up">perlunifaq Q and A</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="What-if-I-don_0027t-know-which-encoding-was-used_003f"></a>
-<h4 class="subsection">81.2.9 What if I don&rsquo;t know which encoding was 
used?</h4>
+<h4 class="subsection">82.2.9 What if I don&rsquo;t know which encoding was 
used?</h4>
 
 <p>Do whatever you can to find out, and if you have to: guess. (Don&rsquo;t 
forget to
 document your guess with a comment.)
@@ -101927,7 +102048,7 @@
 Next: <a 
href="#perlunifaq-Data_003a_003aDumper-doesn_0027t-restore-the-UTF8-flag_003b-is-it-broken_003f"
 accesskey="n" rel="next">perlunifaq Data::Dumper doesn't restore the UTF8 
flag; is it broken?</a>, Previous: <a 
href="#perlunifaq-What-if-I-don_0027t-know-which-encoding-was-used_003f" 
accesskey="p" rel="prev">perlunifaq What if I don't know which encoding was 
used?</a>, Up: <a href="#perlunifaq-Q-and-A" accesskey="u" rel="up">perlunifaq 
Q and A</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Can-I-use-Unicode-in-my-Perl-sources_003f"></a>
-<h4 class="subsection">81.2.10 Can I use Unicode in my Perl sources?</h4>
+<h4 class="subsection">82.2.10 Can I use Unicode in my Perl sources?</h4>
 
 <p>Yes, you can! If your sources are UTF-8 encoded, you can indicate that with 
the
 <code>use utf8</code> pragma.
@@ -101946,7 +102067,7 @@
 Next: <a 
href="#perlunifaq-Why-do-regex-character-classes-sometimes-match-only-in-the-ASCII-range_003f"
 accesskey="n" rel="next">perlunifaq Why do regex character classes sometimes 
match only in the ASCII range?</a>, Previous: <a 
href="#perlunifaq-Can-I-use-Unicode-in-my-Perl-sources_003f" accesskey="p" 
rel="prev">perlunifaq Can I use Unicode in my Perl sources?</a>, Up: <a 
href="#perlunifaq-Q-and-A" accesskey="u" rel="up">perlunifaq Q and A</a> &nbsp; 
[<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a 
name="Data_003a_003aDumper-doesn_0027t-restore-the-UTF8-flag_003b-is-it-broken_003f"></a>
-<h4 class="subsection">81.2.11 Data::Dumper doesn&rsquo;t restore the UTF8 
flag; is it broken?</h4>
+<h4 class="subsection">82.2.11 Data::Dumper doesn&rsquo;t restore the UTF8 
flag; is it broken?</h4>
 
 <p>No, Data::Dumper&rsquo;s Unicode abilities are as they should be. There 
have been
 some complaints that it should restore the UTF8 flag when the data is read
@@ -101969,16 +102090,7 @@
 Next: <a 
href="#perlunifaq-Why-do-some-characters-not-uppercase-or-lowercase-correctly_003f"
 accesskey="n" rel="next">perlunifaq Why do some characters not uppercase or 
lowercase correctly?</a>, Previous: <a 
href="#perlunifaq-Data_003a_003aDumper-doesn_0027t-restore-the-UTF8-flag_003b-is-it-broken_003f"
 accesskey="p" rel="prev">perlunifaq Data::Dumper doesn't restore the UTF8 
flag; is it broken?</a>, Up: <a href="#perlunifaq-Q-and-A" accesskey="u" 
rel="up">perlunifaq Q and A</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a 
name="Why-do-regex-character-classes-sometimes-match-only-in-the-ASCII-range_003f"></a>
-<h4 class="subsection">81.2.12 Why do regex character classes sometimes match 
only in the ASCII range?</h4>
-
-<hr>
-<a 
name="perlunifaq-Why-do-some-characters-not-uppercase-or-lowercase-correctly_003f"></a>
-<div class="header">
-<p>
-Next: <a 
href="#perlunifaq-How-can-I-determine-if-a-string-is-a-text-string-or-a-binary-string_003f"
 accesskey="n" rel="next">perlunifaq How can I determine if a string is a text 
string or a binary string?</a>, Previous: <a 
href="#perlunifaq-Why-do-regex-character-classes-sometimes-match-only-in-the-ASCII-range_003f"
 accesskey="p" rel="prev">perlunifaq Why do regex character classes sometimes 
match only in the ASCII range?</a>, Up: <a href="#perlunifaq-Q-and-A" 
accesskey="u" rel="up">perlunifaq Q and A</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
-</div>
-<a name="Why-do-some-characters-not-uppercase-or-lowercase-correctly_003f"></a>
-<h4 class="subsection">81.2.13 Why do some characters not uppercase or 
lowercase correctly?</h4>
+<h4 class="subsection">82.2.12 Why do regex character classes sometimes match 
only in the ASCII range?</h4>
 
 <p>Starting in Perl 5.14 (and partially in Perl 5.12), just put a
 <code>use feature 'unicode_strings'</code> near the beginning of your program.
@@ -101999,7 +102111,7 @@
 the problem.
 </p>
 <p>However, on earlier Perls, or if you pass strings to subroutines outside
-the feature&rsquo;s scope, you can force Unicode semantics by changing the
+the feature&rsquo;s scope, you can force Unicode rules by changing the
 encoding to UTF-8 by doing <code>utf8::upgrade($string)</code>. This can be 
used
 safely on any string, as it checks and does not change strings that have
 already been upgraded.
@@ -102007,13 +102119,24 @@
 <p>For a more detailed discussion, see <a 
href="Unicode-Semantics.html#Top">(Unicode-Semantics)</a> on CPAN.
 </p>
 <hr>
+<a 
name="perlunifaq-Why-do-some-characters-not-uppercase-or-lowercase-correctly_003f"></a>
+<div class="header">
+<p>
+Next: <a 
href="#perlunifaq-How-can-I-determine-if-a-string-is-a-text-string-or-a-binary-string_003f"
 accesskey="n" rel="next">perlunifaq How can I determine if a string is a text 
string or a binary string?</a>, Previous: <a 
href="#perlunifaq-Why-do-regex-character-classes-sometimes-match-only-in-the-ASCII-range_003f"
 accesskey="p" rel="prev">perlunifaq Why do regex character classes sometimes 
match only in the ASCII range?</a>, Up: <a href="#perlunifaq-Q-and-A" 
accesskey="u" rel="up">perlunifaq Q and A</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
+</div>
+<a name="Why-do-some-characters-not-uppercase-or-lowercase-correctly_003f"></a>
+<h4 class="subsection">82.2.13 Why do some characters not uppercase or 
lowercase correctly?</h4>
+
+<p>See the answer to the previous question.
+</p>
+<hr>
 <a 
name="perlunifaq-How-can-I-determine-if-a-string-is-a-text-string-or-a-binary-string_003f"></a>
 <div class="header">
 <p>
 Next: <a 
href="#perlunifaq-How-do-I-convert-from-encoding-FOO-to-encoding-BAR_003f" 
accesskey="n" rel="next">perlunifaq How do I convert from encoding FOO to 
encoding BAR?</a>, Previous: <a 
href="#perlunifaq-Why-do-some-characters-not-uppercase-or-lowercase-correctly_003f"
 accesskey="p" rel="prev">perlunifaq Why do some characters not uppercase or 
lowercase correctly?</a>, Up: <a href="#perlunifaq-Q-and-A" accesskey="u" 
rel="up">perlunifaq Q and A</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a 
name="How-can-I-determine-if-a-string-is-a-text-string-or-a-binary-string_003f"></a>
-<h4 class="subsection">81.2.14 How can I determine if a string is a text 
string or a binary string?</h4>
+<h4 class="subsection">82.2.14 How can I determine if a string is a text 
string or a binary string?</h4>
 
 <p>You can&rsquo;t. Some use the UTF8 flag for this, but that&rsquo;s misuse, 
and makes well
 behaved modules like Data::Dumper look bad. The flag is useless for this
@@ -102030,7 +102153,7 @@
 Next: <a href="#perlunifaq-What-are-decode_005futf8-and-encode_005futf8_003f" 
accesskey="n" rel="next">perlunifaq What are <code>decode_utf8</code> and 
<code>encode_utf8</code>?</a>, Previous: <a 
href="#perlunifaq-How-can-I-determine-if-a-string-is-a-text-string-or-a-binary-string_003f"
 accesskey="p" rel="prev">perlunifaq How can I determine if a string is a text 
string or a binary string?</a>, Up: <a href="#perlunifaq-Q-and-A" accesskey="u" 
rel="up">perlunifaq Q and A</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="How-do-I-convert-from-encoding-FOO-to-encoding-BAR_003f"></a>
-<h4 class="subsection">81.2.15 How do I convert from encoding FOO to encoding 
BAR?</h4>
+<h4 class="subsection">82.2.15 How do I convert from encoding FOO to encoding 
BAR?</h4>
 
 <p>By first converting the FOO-encoded byte string to a text string, and then 
the
 text string to a BAR-encoded byte string:
@@ -102057,7 +102180,7 @@
 Next: <a href="#perlunifaq-What-is-a-_0022wide-character_0022_003f" 
accesskey="n" rel="next">perlunifaq What is a &quot;wide character&quot;?</a>, 
Previous: <a 
href="#perlunifaq-How-do-I-convert-from-encoding-FOO-to-encoding-BAR_003f" 
accesskey="p" rel="prev">perlunifaq How do I convert from encoding FOO to 
encoding BAR?</a>, Up: <a href="#perlunifaq-Q-and-A" accesskey="u" 
rel="up">perlunifaq Q and A</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="What-are-decode_005futf8-and-encode_005futf8_003f"></a>
-<h4 class="subsection">81.2.16 What are <code>decode_utf8</code> and 
<code>encode_utf8</code>?</h4>
+<h4 class="subsection">82.2.16 What are <code>decode_utf8</code> and 
<code>encode_utf8</code>?</h4>
 
 <p>These are alternate syntaxes for <code>decode('utf8', ...)</code> and 
<code>encode('utf8',
 ...)</code>.
@@ -102069,7 +102192,7 @@
 Previous: <a 
href="#perlunifaq-What-are-decode_005futf8-and-encode_005futf8_003f" 
accesskey="p" rel="prev">perlunifaq What are <code>decode_utf8</code> and 
<code>encode_utf8</code>?</a>, Up: <a href="#perlunifaq-Q-and-A" accesskey="u" 
rel="up">perlunifaq Q and A</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="What-is-a-_0022wide-character_0022_003f"></a>
-<h4 class="subsection">81.2.17 What is a &quot;wide character&quot;?</h4>
+<h4 class="subsection">82.2.17 What is a &quot;wide character&quot;?</h4>
 
 <p>This is a term used both for characters with an ordinal value greater than 
127,
 characters with an ordinal value greater than 255, or any character occupying
@@ -102093,7 +102216,7 @@
 Next: <a href="#perlunifaq-AUTHOR" accesskey="n" rel="next">perlunifaq 
AUTHOR</a>, Previous: <a href="#perlunifaq-Q-and-A" accesskey="p" 
rel="prev">perlunifaq Q and A</a>, Up: <a href="#perlunifaq" accesskey="u" 
rel="up">perlunifaq</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="INTERNALS"></a>
-<h3 class="section">81.3 INTERNALS</h3>
+<h3 class="section">82.3 INTERNALS</h3>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a 
href="#perlunifaq-What-is-_0022the-UTF8-flag_0022_003f" 
accesskey="1">perlunifaq What is &quot;the UTF8 
flag&quot;?</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
@@ -102117,7 +102240,7 @@
 Next: <a href="#perlunifaq-What-about-the-use-bytes-pragma_003f" accesskey="n" 
rel="next">perlunifaq What about the <code>use bytes</code> pragma?</a>, Up: <a 
href="#perlunifaq-INTERNALS" accesskey="u" rel="up">perlunifaq INTERNALS</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="What-is-_0022the-UTF8-flag_0022_003f"></a>
-<h4 class="subsection">81.3.1 What is &quot;the UTF8 flag&quot;?</h4>
+<h4 class="subsection">82.3.1 What is &quot;the UTF8 flag&quot;?</h4>
 
 <p>Please, unless you&rsquo;re hacking the internals, or debugging weirdness, 
don&rsquo;t
 think about the UTF8 flag at all. That means that you very probably 
shouldn&rsquo;t
@@ -102141,7 +102264,7 @@
 Next: <a href="#perlunifaq-What-about-the-use-encoding-pragma_003f" 
accesskey="n" rel="next">perlunifaq What about the <code>use encoding</code> 
pragma?</a>, Previous: <a 
href="#perlunifaq-What-is-_0022the-UTF8-flag_0022_003f" accesskey="p" 
rel="prev">perlunifaq What is &quot;the UTF8 flag&quot;?</a>, Up: <a 
href="#perlunifaq-INTERNALS" accesskey="u" rel="up">perlunifaq INTERNALS</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="What-about-the-use-bytes-pragma_003f"></a>
-<h4 class="subsection">81.3.2 What about the <code>use bytes</code> 
pragma?</h4>
+<h4 class="subsection">82.3.2 What about the <code>use bytes</code> 
pragma?</h4>
 
 <p>Don&rsquo;t use it. It makes no sense to deal with bytes in a text string, 
and it
 makes no sense to deal with characters in a byte string. Do the proper
@@ -102158,7 +102281,7 @@
 Next: <a 
href="#perlunifaq-What-is-the-difference-between-_003aencoding-and-_003autf8_003f"
 accesskey="n" rel="next">perlunifaq What is the difference between 
<code>:encoding</code> and <code>:utf8</code>?</a>, Previous: <a 
href="#perlunifaq-What-about-the-use-bytes-pragma_003f" accesskey="p" 
rel="prev">perlunifaq What about the <code>use bytes</code> pragma?</a>, Up: <a 
href="#perlunifaq-INTERNALS" accesskey="u" rel="up">perlunifaq INTERNALS</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="What-about-the-use-encoding-pragma_003f"></a>
-<h4 class="subsection">81.3.3 What about the <code>use encoding</code> 
pragma?</h4>
+<h4 class="subsection">82.3.3 What about the <code>use encoding</code> 
pragma?</h4>
 
 <p>Don&rsquo;t use it. Unfortunately, it assumes that the programmer&rsquo;s 
environment and
 that of the user will use the same encoding. It will use the same encoding for
@@ -102178,7 +102301,7 @@
 Next: <a 
href="#perlunifaq-What_0027s-the-difference-between-UTF_002d8-and-utf8_003f" 
accesskey="n" rel="next">perlunifaq What's the difference between 
<code>UTF-8</code> and <code>utf8</code>?</a>, Previous: <a 
href="#perlunifaq-What-about-the-use-encoding-pragma_003f" accesskey="p" 
rel="prev">perlunifaq What about the <code>use encoding</code> pragma?</a>, Up: 
<a href="#perlunifaq-INTERNALS" accesskey="u" rel="up">perlunifaq INTERNALS</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="What-is-the-difference-between-_003aencoding-and-_003autf8_003f"></a>
-<h4 class="subsection">81.3.4 What is the difference between 
<code>:encoding</code> and <code>:utf8</code>?</h4>
+<h4 class="subsection">82.3.4 What is the difference between 
<code>:encoding</code> and <code>:utf8</code>?</h4>
 
 <p>Because UTF-8 is one of Perl&rsquo;s internal formats, you can often just 
skip the
 encoding or decoding step, and manipulate the UTF8 flag directly.
@@ -102204,7 +102327,7 @@
 Next: <a 
href="#perlunifaq-I-lost-track_003b-what-encoding-is-the-internal-format-really_003f"
 accesskey="n" rel="next">perlunifaq I lost track; what encoding is the 
internal format really?</a>, Previous: <a 
href="#perlunifaq-What-is-the-difference-between-_003aencoding-and-_003autf8_003f"
 accesskey="p" rel="prev">perlunifaq What is the difference between 
<code>:encoding</code> and <code>:utf8</code>?</a>, Up: <a 
href="#perlunifaq-INTERNALS" accesskey="u" rel="up">perlunifaq INTERNALS</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="What_0027s-the-difference-between-UTF_002d8-and-utf8_003f"></a>
-<h4 class="subsection">81.3.5 What&rsquo;s the difference between 
<code>UTF-8</code> and <code>utf8</code>?</h4>
+<h4 class="subsection">82.3.5 What&rsquo;s the difference between 
<code>UTF-8</code> and <code>utf8</code>?</h4>
 
 <p><code>UTF-8</code> is the official standard. <code>utf8</code> is 
Perl&rsquo;s way of being liberal in
 what it accepts. If you have to communicate with things that aren&rsquo;t so 
liberal,
@@ -102231,7 +102354,7 @@
 Previous: <a 
href="#perlunifaq-What_0027s-the-difference-between-UTF_002d8-and-utf8_003f" 
accesskey="p" rel="prev">perlunifaq What's the difference between 
<code>UTF-8</code> and <code>utf8</code>?</a>, Up: <a 
href="#perlunifaq-INTERNALS" accesskey="u" rel="up">perlunifaq INTERNALS</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a 
name="I-lost-track_003b-what-encoding-is-the-internal-format-really_003f"></a>
-<h4 class="subsection">81.3.6 I lost track; what encoding is the internal 
format really?</h4>
+<h4 class="subsection">82.3.6 I lost track; what encoding is the internal 
format really?</h4>
 
 <p>It&rsquo;s good that you lost track, because you shouldn&rsquo;t depend on 
the internal
 format being any specific encoding. But since you asked: by default, the
@@ -102249,8 +102372,8 @@
 <p>
 Next: <a href="#perlunifaq-SEE-ALSO" accesskey="n" rel="next">perlunifaq SEE 
ALSO</a>, Previous: <a href="#perlunifaq-INTERNALS" accesskey="p" 
rel="prev">perlunifaq INTERNALS</a>, Up: <a href="#perlunifaq" accesskey="u" 
rel="up">perlunifaq</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="AUTHOR-30"></a>
-<h3 class="section">81.4 AUTHOR</h3>
+<a name="AUTHOR-29"></a>
+<h3 class="section">82.4 AUTHOR</h3>
 
 <p>Juerd Waalboer &lt;address@hidden&gt;
 </p>
@@ -102260,8 +102383,8 @@
 <p>
 Previous: <a href="#perlunifaq-AUTHOR" accesskey="p" rel="prev">perlunifaq 
AUTHOR</a>, Up: <a href="#perlunifaq" accesskey="u" rel="up">perlunifaq</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-41"></a>
-<h3 class="section">81.5 SEE ALSO</h3>
+<a name="SEE-ALSO-40"></a>
+<h3 class="section">82.5 SEE ALSO</h3>
 
 <p><a href="#perlunicode-NAME">perlunicode NAME</a>, <a 
href="#perluniintro-NAME">perluniintro NAME</a>, <a 
href="Encode.html#Top">(Encode)</a>
 </p>
@@ -102272,7 +102395,7 @@
 Next: <a href="#perlunitut" accesskey="n" rel="next">perlunitut</a>, Previous: 
<a href="#perlunifaq" accesskey="p" rel="prev">perlunifaq</a>, Up: <a 
href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="perluniintro-1"></a>
-<h2 class="chapter">82 perluniintro</h2>
+<h2 class="chapter">83 perluniintro</h2>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perluniintro-NAME" 
accesskey="1">perluniintro NAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -102295,8 +102418,8 @@
 <p>
 Next: <a href="#perluniintro-DESCRIPTION" accesskey="n" 
rel="next">perluniintro DESCRIPTION</a>, Up: <a href="#perluniintro" 
accesskey="u" rel="up">perluniintro</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="NAME-81"></a>
-<h3 class="section">82.1 NAME</h3>
+<a name="NAME-82"></a>
+<h3 class="section">83.1 NAME</h3>
 
 <p>perluniintro - Perl Unicode introduction
 </p>
@@ -102306,8 +102429,8 @@
 <p>
 Next: <a href="#perluniintro-UNICODE-IN-OLDER-PERLS" accesskey="n" 
rel="next">perluniintro UNICODE IN OLDER PERLS</a>, Previous: <a 
href="#perluniintro-NAME" accesskey="p" rel="prev">perluniintro NAME</a>, Up: 
<a href="#perluniintro" accesskey="u" rel="up">perluniintro</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="DESCRIPTION-79"></a>
-<h3 class="section">82.2 DESCRIPTION</h3>
+<a name="DESCRIPTION-80"></a>
+<h3 class="section">83.2 DESCRIPTION</h3>
 
 <p>This document gives a general idea of Unicode and how to use Unicode
 in Perl.  See <a href="#perluniintro-Further-Resources">Further Resources</a> 
for references to more in-depth
@@ -102353,7 +102476,7 @@
 Next: <a href="#perluniintro-Perl_0027s-Unicode-Support" accesskey="n" 
rel="next">perluniintro Perl's Unicode Support</a>, Up: <a 
href="#perluniintro-DESCRIPTION" accesskey="u" rel="up">perluniintro 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Unicode-2"></a>
-<h4 class="subsection">82.2.1 Unicode</h4>
+<h4 class="subsection">83.2.1 Unicode</h4>
 
 <p>Unicode is a character set standard which plans to codify all of the
 writing systems of the world, plus many other symbols.
@@ -102416,7 +102539,7 @@
 </p>
 <p>For some combinations of base character and modifiers, there are
 <em>precomposed</em> characters.  There is a single character equivalent, for
-example, to the sequence <code>LATIN CAPITAL LETTER A</code> followed by
+example, for the sequence <code>LATIN CAPITAL LETTER A</code> followed by
 <code>COMBINING ACUTE ACCENT</code>.  It is called  <code>LATIN CAPITAL LETTER 
A WITH
 ACUTE</code>.  These precomposed characters are, however, only available for
 some combinations, and are mainly meant to support round-trip
@@ -102454,7 +102577,7 @@
 far, the number of code points in these blocks has always been evenly
 divisible by 16.  Extras in a block, not currently needed, are left
 unallocated, for future growth.  But there have been occasions when
-a later relase needed more code points than the available extras, and a
+a later release needed more code points than the available extras, and a
 new block had to allocated somewhere else, not contiguous to the initial
 one, to handle the overflow.  Thus, it became apparent early on that
 &quot;block&quot; wasn&rsquo;t an adequate organizing principal, and so the 
<code>Script</code>
@@ -102495,7 +102618,7 @@
 Next: <a href="#perluniintro-Perl_0027s-Unicode-Model" accesskey="n" 
rel="next">perluniintro Perl's Unicode Model</a>, Previous: <a 
href="#perluniintro-Unicode" accesskey="p" rel="prev">perluniintro Unicode</a>, 
Up: <a href="#perluniintro-DESCRIPTION" accesskey="u" rel="up">perluniintro 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Perl_0027s-Unicode-Support"></a>
-<h4 class="subsection">82.2.2 Perl&rsquo;s Unicode Support</h4>
+<h4 class="subsection">83.2.2 Perl&rsquo;s Unicode Support</h4>
 
 <p>Starting from Perl v5.6.0, Perl has had the capacity to handle Unicode
 natively.  Perl v5.8.0, however, is the first recommended release for
@@ -102529,7 +102652,7 @@
 Next: <a href="#perluniintro-Unicode-and-EBCDIC" accesskey="n" 
rel="next">perluniintro Unicode and EBCDIC</a>, Previous: <a 
href="#perluniintro-Perl_0027s-Unicode-Support" accesskey="p" 
rel="prev">perluniintro Perl's Unicode Support</a>, Up: <a 
href="#perluniintro-DESCRIPTION" accesskey="u" rel="up">perluniintro 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Perl_0027s-Unicode-Model"></a>
-<h4 class="subsection">82.2.3 Perl&rsquo;s Unicode Model</h4>
+<h4 class="subsection">83.2.3 Perl&rsquo;s Unicode Model</h4>
 
 <p>Perl supports both pre-5.6 strings of eight-bit native bytes, and
 strings of Unicode characters.  The general principle is that Perl tries
@@ -102594,7 +102717,7 @@
 Next: <a href="#perluniintro-Creating-Unicode" accesskey="n" 
rel="next">perluniintro Creating Unicode</a>, Previous: <a 
href="#perluniintro-Perl_0027s-Unicode-Model" accesskey="p" 
rel="prev">perluniintro Perl's Unicode Model</a>, Up: <a 
href="#perluniintro-DESCRIPTION" accesskey="u" rel="up">perluniintro 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Unicode-and-EBCDIC"></a>
-<h4 class="subsection">82.2.4 Unicode and EBCDIC</h4>
+<h4 class="subsection">83.2.4 Unicode and EBCDIC</h4>
 
 <p>Perl 5.8.0 also supports Unicode on EBCDIC platforms.  There,
 Unicode support is somewhat more complex to implement since
@@ -102616,7 +102739,7 @@
 Next: <a href="#perluniintro-Handling-Unicode" accesskey="n" 
rel="next">perluniintro Handling Unicode</a>, Previous: <a 
href="#perluniintro-Unicode-and-EBCDIC" accesskey="p" rel="prev">perluniintro 
Unicode and EBCDIC</a>, Up: <a href="#perluniintro-DESCRIPTION" accesskey="u" 
rel="up">perluniintro DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Creating-Unicode"></a>
-<h4 class="subsection">82.2.5 Creating Unicode</h4>
+<h4 class="subsection">83.2.5 Creating Unicode</h4>
 
 <p>To create Unicode characters in literals for code points above 
<code>0xFF</code>,
 use the <code>\x{...}</code> notation in double-quoted strings:
@@ -102674,7 +102797,7 @@
 Next: <a href="#perluniintro-Legacy-Encodings" accesskey="n" 
rel="next">perluniintro Legacy Encodings</a>, Previous: <a 
href="#perluniintro-Creating-Unicode" accesskey="p" rel="prev">perluniintro 
Creating Unicode</a>, Up: <a href="#perluniintro-DESCRIPTION" accesskey="u" 
rel="up">perluniintro DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Handling-Unicode"></a>
-<h4 class="subsection">82.2.6 Handling Unicode</h4>
+<h4 class="subsection">83.2.6 Handling Unicode</h4>
 
 <p>Handling Unicode is for the most part transparent: just use the
 strings as usual.  Functions like <code>index()</code>, <code>length()</code>, 
and
@@ -102702,7 +102825,7 @@
 Next: <a href="#perluniintro-Unicode-I_002fO" accesskey="n" 
rel="next">perluniintro Unicode I/O</a>, Previous: <a 
href="#perluniintro-Handling-Unicode" accesskey="p" rel="prev">perluniintro 
Handling Unicode</a>, Up: <a href="#perluniintro-DESCRIPTION" accesskey="u" 
rel="up">perluniintro DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Legacy-Encodings"></a>
-<h4 class="subsection">82.2.7 Legacy Encodings</h4>
+<h4 class="subsection">83.2.7 Legacy Encodings</h4>
 
 <p>When you combine legacy data and Unicode, the legacy data needs
 to be upgraded to Unicode.  Normally the legacy data is assumed to be
@@ -102721,7 +102844,7 @@
 Next: <a href="#perluniintro-Displaying-Unicode-As-Text" accesskey="n" 
rel="next">perluniintro Displaying Unicode As Text</a>, Previous: <a 
href="#perluniintro-Legacy-Encodings" accesskey="p" rel="prev">perluniintro 
Legacy Encodings</a>, Up: <a href="#perluniintro-DESCRIPTION" accesskey="u" 
rel="up">perluniintro DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Unicode-I_002fO"></a>
-<h4 class="subsection">82.2.8 Unicode I/O</h4>
+<h4 class="subsection">83.2.8 Unicode I/O</h4>
 
 <p>Normally, writing out Unicode data
 </p>
@@ -102855,8 +102978,8 @@
 bug, or explicitly opening also the <samp>file</samp> for input as UTF-8.
 </p>
 <p><strong>NOTE</strong>: the <code>:utf8</code> and <code>:encoding</code> 
features work only if your
-Perl has been built with the new PerlIO feature (which is the default
-on most systems).
+Perl has been built with <a href="PerlIO.html#Top">(PerlIO)</a>, which is the 
default
+on most systems.
 </p>
 <hr>
 <a name="perluniintro-Displaying-Unicode-As-Text"></a>
@@ -102865,7 +102988,7 @@
 Next: <a href="#perluniintro-Special-Cases" accesskey="n" 
rel="next">perluniintro Special Cases</a>, Previous: <a 
href="#perluniintro-Unicode-I_002fO" accesskey="p" rel="prev">perluniintro 
Unicode I/O</a>, Up: <a href="#perluniintro-DESCRIPTION" accesskey="u" 
rel="up">perluniintro DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Displaying-Unicode-As-Text"></a>
-<h4 class="subsection">82.2.9 Displaying Unicode As Text</h4>
+<h4 class="subsection">83.2.9 Displaying Unicode As Text</h4>
 
 <p>Sometimes you might want to display Perl scalars containing Unicode as
 simple ASCII (or EBCDIC) text.  The following subroutine converts
@@ -102900,7 +103023,7 @@
 Next: <a href="#perluniintro-Advanced-Topics" accesskey="n" 
rel="next">perluniintro Advanced Topics</a>, Previous: <a 
href="#perluniintro-Displaying-Unicode-As-Text" accesskey="p" 
rel="prev">perluniintro Displaying Unicode As Text</a>, Up: <a 
href="#perluniintro-DESCRIPTION" accesskey="u" rel="up">perluniintro 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Special-Cases"></a>
-<h4 class="subsection">82.2.10 Special Cases</h4>
+<h4 class="subsection">83.2.10 Special Cases</h4>
 
 <ul>
 <li> Bit Complement Operator ~ And vec()
@@ -102946,7 +103069,7 @@
 Next: <a href="#perluniintro-Miscellaneous" accesskey="n" 
rel="next">perluniintro Miscellaneous</a>, Previous: <a 
href="#perluniintro-Special-Cases" accesskey="p" rel="prev">perluniintro 
Special Cases</a>, Up: <a href="#perluniintro-DESCRIPTION" accesskey="u" 
rel="up">perluniintro DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Advanced-Topics"></a>
-<h4 class="subsection">82.2.11 Advanced Topics</h4>
+<h4 class="subsection">83.2.11 Advanced Topics</h4>
 
 <ul>
 <li> String Equivalence
@@ -102969,7 +103092,7 @@
 </p>
 <p>As of Perl 5.8.0, the &quot;Full&quot; case-folding of <em>Case
 Mappings/SpecialCasing</em> is implemented, but bugs remain in 
<code>qr//i</code> with them,
-mostly fixed by 5.14.
+mostly fixed by 5.14, and essentially entirely by 5.18.
 </p>
 </li><li> String Collation
 
@@ -102998,7 +103121,7 @@
 Next: <a href="#perluniintro-Questions-With-Answers" accesskey="n" 
rel="next">perluniintro Questions With Answers</a>, Previous: <a 
href="#perluniintro-Advanced-Topics" accesskey="p" rel="prev">perluniintro 
Advanced Topics</a>, Up: <a href="#perluniintro-DESCRIPTION" accesskey="u" 
rel="up">perluniintro DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Miscellaneous-1"></a>
-<h4 class="subsection">82.2.12 Miscellaneous</h4>
+<h4 class="subsection">83.2.12 Miscellaneous</h4>
 
 <ul>
 <li> Character Ranges and Classes
@@ -103022,7 +103145,7 @@
 <p>Unicode does define several other decimal&ndash;and numeric&ndash;characters
 besides the familiar 0 to 9, such as the Arabic and Indic digits.
 Perl does not support string-to-number conversion for digits other
-than ASCII 0 to 9 (and ASCII a to f for hexadecimal).
+than ASCII <code>0</code> to <code>9</code> (and ASCII <code>a</code> to 
<code>f</code> for hexadecimal).
 To get safe conversions from any Unicode string, use
 <a href="Unicode-UCD.html#num_0028_0029">(Unicode-UCD)num()</a>.
 </p>
@@ -103035,7 +103158,7 @@
 Next: <a href="#perluniintro-Hexadecimal-Notation" accesskey="n" 
rel="next">perluniintro Hexadecimal Notation</a>, Previous: <a 
href="#perluniintro-Miscellaneous" accesskey="p" rel="prev">perluniintro 
Miscellaneous</a>, Up: <a href="#perluniintro-DESCRIPTION" accesskey="u" 
rel="up">perluniintro DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Questions-With-Answers"></a>
-<h4 class="subsection">82.2.13 Questions With Answers</h4>
+<h4 class="subsection">83.2.13 Questions With Answers</h4>
 
 <ul>
 <li> Will My Old Scripts Break?
@@ -103199,17 +103322,21 @@
 </p>
 </li><li> How Does Unicode Work With Traditional Locales?
 
-<p>Starting in Perl 5.16, you can specify
+<p>If your locale is a UTF-8 locale, starting in Perl v5.20, Perl works
+well for all categories except <code>LC_COLLATE</code> dealing with sorting and
+the <code>cmp</code> operator.
+</p>
+<p>For other locales, starting in Perl 5.16, you can specify
 </p>
 <pre class="verbatim">    use locale ':not_characters';
 </pre>
-<p>to get Perl to work well with tradtional locales.  The catch is that you
+<p>to get Perl to work well with them.  The catch is that you
 have to translate from the locale character set to/from Unicode
 yourself.  See <a href="#perluniintro-Unicode-I_002fO">Unicode I/O</a> above 
for how to
 </p>
 <pre class="verbatim">    use open ':locale';
 </pre>
-<p>to accomplish this, but full details are in <a 
href="#perllocale-Unicode-and-UTF_002d8">perllocale Unicode and UTF-8</a>, 
including gotchas that happen if you don&rsquo;t specifiy
+<p>to accomplish this, but full details are in <a 
href="#perllocale-Unicode-and-UTF_002d8">perllocale Unicode and UTF-8</a>, 
including gotchas that happen if you don&rsquo;t specify
 <code>:not_characters</code>.
 </p>
 </li></ul>
@@ -103221,7 +103348,7 @@
 Next: <a href="#perluniintro-Further-Resources" accesskey="n" 
rel="next">perluniintro Further Resources</a>, Previous: <a 
href="#perluniintro-Questions-With-Answers" accesskey="p" 
rel="prev">perluniintro Questions With Answers</a>, Up: <a 
href="#perluniintro-DESCRIPTION" accesskey="u" rel="up">perluniintro 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Hexadecimal-Notation"></a>
-<h4 class="subsection">82.2.14 Hexadecimal Notation</h4>
+<h4 class="subsection">83.2.14 Hexadecimal Notation</h4>
 
 <p>The Unicode standard prefers using hexadecimal notation because
 that more clearly shows the division of Unicode into blocks of 256 characters.
@@ -103258,7 +103385,7 @@
 Previous: <a href="#perluniintro-Hexadecimal-Notation" accesskey="p" 
rel="prev">perluniintro Hexadecimal Notation</a>, Up: <a 
href="#perluniintro-DESCRIPTION" accesskey="u" rel="up">perluniintro 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Further-Resources"></a>
-<h4 class="subsection">82.2.15 Further Resources</h4>
+<h4 class="subsection">83.2.15 Further Resources</h4>
 
 <ul>
 <li> Unicode Consortium
@@ -103308,7 +103435,7 @@
 Next: <a href="#perluniintro-SEE-ALSO" accesskey="n" rel="next">perluniintro 
SEE ALSO</a>, Previous: <a href="#perluniintro-DESCRIPTION" accesskey="p" 
rel="prev">perluniintro DESCRIPTION</a>, Up: <a href="#perluniintro" 
accesskey="u" rel="up">perluniintro</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="UNICODE-IN-OLDER-PERLS"></a>
-<h3 class="section">82.3 UNICODE IN OLDER PERLS</h3>
+<h3 class="section">83.3 UNICODE IN OLDER PERLS</h3>
 
 <p>If you cannot upgrade your Perl to 5.8.0 or later, you can still
 do some Unicode processing by using the modules <code>Unicode::String</code>,
@@ -103331,8 +103458,8 @@
 <p>
 Next: <a href="#perluniintro-ACKNOWLEDGMENTS" accesskey="n" 
rel="next">perluniintro ACKNOWLEDGMENTS</a>, Previous: <a 
href="#perluniintro-UNICODE-IN-OLDER-PERLS" accesskey="p" 
rel="prev">perluniintro UNICODE IN OLDER PERLS</a>, Up: <a href="#perluniintro" 
accesskey="u" rel="up">perluniintro</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-42"></a>
-<h3 class="section">82.4 SEE ALSO</h3>
+<a name="SEE-ALSO-41"></a>
+<h3 class="section">83.4 SEE ALSO</h3>
 
 <p><a href="#perlunitut-NAME">perlunitut NAME</a>, <a 
href="#perlunicode-NAME">perlunicode NAME</a>, <a 
href="Encode.html#Top">(Encode)</a>, <a href="open.html#Top">(open)</a>, <a 
href="utf8.html#Top">(utf8)</a>, <a href="bytes.html#Top">(bytes)</a>,
 <a href="#perlretut-NAME">perlretut NAME</a>, <a href="#perlrun-NAME">perlrun 
NAME</a>, <a href="Unicode-Collate.html#Top">(Unicode-Collate)</a>, <a 
href="Unicode-Normalize.html#Top">(Unicode-Normalize)</a>,
@@ -103345,7 +103472,7 @@
 Next: <a href="#perluniintro-AUTHOR_002c-COPYRIGHT_002c-AND-LICENSE" 
accesskey="n" rel="next">perluniintro AUTHOR, COPYRIGHT, AND LICENSE</a>, 
Previous: <a href="#perluniintro-SEE-ALSO" accesskey="p" 
rel="prev">perluniintro SEE ALSO</a>, Up: <a href="#perluniintro" accesskey="u" 
rel="up">perluniintro</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="ACKNOWLEDGMENTS"></a>
-<h3 class="section">82.5 ACKNOWLEDGMENTS</h3>
+<h3 class="section">83.5 ACKNOWLEDGMENTS</h3>
 
 <p>Thanks to the kind readers of the address@hidden,
 address@hidden, address@hidden, and address@hidden
@@ -103358,7 +103485,7 @@
 Previous: <a href="#perluniintro-ACKNOWLEDGMENTS" accesskey="p" 
rel="prev">perluniintro ACKNOWLEDGMENTS</a>, Up: <a href="#perluniintro" 
accesskey="u" rel="up">perluniintro</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="AUTHOR_002c-COPYRIGHT_002c-AND-LICENSE"></a>
-<h3 class="section">82.6 AUTHOR, COPYRIGHT, AND LICENSE</h3>
+<h3 class="section">83.6 AUTHOR, COPYRIGHT, AND LICENSE</h3>
 
 <p>Copyright 2001-2011 Jarkko Hietaniemi &lt;address@hidden&gt;
 </p>
@@ -103371,7 +103498,7 @@
 Next: <a href="#perlutil" accesskey="n" rel="next">perlutil</a>, Previous: <a 
href="#perluniintro" accesskey="p" rel="prev">perluniintro</a>, Up: <a 
href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="perlunitut-1"></a>
-<h2 class="chapter">83 perlunitut</h2>
+<h2 class="chapter">84 perlunitut</h2>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perlunitut-NAME" 
accesskey="1">perlunitut NAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -103396,8 +103523,8 @@
 <p>
 Next: <a href="#perlunitut-DESCRIPTION" accesskey="n" rel="next">perlunitut 
DESCRIPTION</a>, Up: <a href="#perlunitut" accesskey="u" 
rel="up">perlunitut</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="NAME-82"></a>
-<h3 class="section">83.1 NAME</h3>
+<a name="NAME-83"></a>
+<h3 class="section">84.1 NAME</h3>
 
 <p>perlunitut - Perl Unicode Tutorial
 </p>
@@ -103407,8 +103534,8 @@
 <p>
 Next: <a href="#perlunitut-SUMMARY" accesskey="n" rel="next">perlunitut 
SUMMARY</a>, Previous: <a href="#perlunitut-NAME" accesskey="p" 
rel="prev">perlunitut NAME</a>, Up: <a href="#perlunitut" accesskey="u" 
rel="up">perlunitut</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="DESCRIPTION-80"></a>
-<h3 class="section">83.2 DESCRIPTION</h3>
+<a name="DESCRIPTION-81"></a>
+<h3 class="section">84.2 DESCRIPTION</h3>
 
 <p>The days of just flinging strings around are over. It&rsquo;s well 
established that
 modern programs need to be capable of communicating funny accented letters, and
@@ -103448,7 +103575,7 @@
 Next: <a href="#perlunitut-Your-new-toolkit" accesskey="n" 
rel="next">perlunitut Your new toolkit</a>, Up: <a 
href="#perlunitut-DESCRIPTION" accesskey="u" rel="up">perlunitut 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Definitions-1"></a>
-<h4 class="subsection">83.2.1 Definitions</h4>
+<h4 class="subsection">84.2.1 Definitions</h4>
 
 <p>It&rsquo;s important to set a few things straight first. This is the most 
important
 part of this tutorial. This view may conflict with other information that you
@@ -103480,7 +103607,7 @@
 Next: <a href="#perlunitut-UTF_002d8" accesskey="n" rel="next">perlunitut 
UTF-8</a>, Up: <a href="#perlunitut-Definitions" accesskey="u" 
rel="up">perlunitut Definitions</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Unicode-3"></a>
-<h4 class="subsubsection">83.2.1.1 Unicode</h4>
+<h4 class="subsubsection">84.2.1.1 Unicode</h4>
 
 <p><strong>Unicode</strong> is a character set with room for lots of 
characters. The ordinal
 value of a character is called a <strong>code point</strong>.   (But in 
practice, the
@@ -103502,7 +103629,7 @@
 Next: <a href="#perlunitut-Text-strings-_0028character-strings_0029" 
accesskey="n" rel="next">perlunitut Text strings (character strings)</a>, 
Previous: <a href="#perlunitut-Unicode" accesskey="p" rel="prev">perlunitut 
Unicode</a>, Up: <a href="#perlunitut-Definitions" accesskey="u" 
rel="up">perlunitut Definitions</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="UTF_002d8"></a>
-<h4 class="subsubsection">83.2.1.2 UTF-8</h4>
+<h4 class="subsubsection">84.2.1.2 UTF-8</h4>
 
 <p><strong>UTF-8</strong> is a Unicode encoding. Many people think that 
Unicode and UTF-8 are
 the same thing, but they&rsquo;re not. There are more Unicode encodings, but 
much of
@@ -103520,7 +103647,7 @@
 Next: <a href="#perlunitut-Binary-strings-_0028byte-strings_0029" 
accesskey="n" rel="next">perlunitut Binary strings (byte strings)</a>, 
Previous: <a href="#perlunitut-UTF_002d8" accesskey="p" rel="prev">perlunitut 
UTF-8</a>, Up: <a href="#perlunitut-Definitions" accesskey="u" 
rel="up">perlunitut Definitions</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Text-strings-_0028character-strings_0029"></a>
-<h4 class="subsubsection">83.2.1.3 Text strings (character strings)</h4>
+<h4 class="subsubsection">84.2.1.3 Text strings (character strings)</h4>
 
 <p><strong>Text strings</strong>, or <strong>character strings</strong> are 
made of characters. Bytes are
 irrelevant here, and so are encodings. Each character is just that: the
@@ -103543,7 +103670,7 @@
 Next: <a href="#perlunitut-Encoding" accesskey="n" rel="next">perlunitut 
Encoding</a>, Previous: <a 
href="#perlunitut-Text-strings-_0028character-strings_0029" accesskey="p" 
rel="prev">perlunitut Text strings (character strings)</a>, Up: <a 
href="#perlunitut-Definitions" accesskey="u" rel="up">perlunitut 
Definitions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Binary-strings-_0028byte-strings_0029"></a>
-<h4 class="subsubsection">83.2.1.4 Binary strings (byte strings)</h4>
+<h4 class="subsubsection">84.2.1.4 Binary strings (byte strings)</h4>
 
 <p><strong>Binary strings</strong>, or <strong>byte strings</strong> are made 
of bytes. Here, you don&rsquo;t have
 characters, just bytes. All communication with the outside world (anything
@@ -103563,7 +103690,7 @@
 Next: <a href="#perlunitut-Decoding" accesskey="n" rel="next">perlunitut 
Decoding</a>, Previous: <a 
href="#perlunitut-Binary-strings-_0028byte-strings_0029" accesskey="p" 
rel="prev">perlunitut Binary strings (byte strings)</a>, Up: <a 
href="#perlunitut-Definitions" accesskey="u" rel="up">perlunitut 
Definitions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Encoding"></a>
-<h4 class="subsubsection">83.2.1.5 Encoding</h4>
+<h4 class="subsubsection">84.2.1.5 Encoding</h4>
 
 <p><strong>Encoding</strong> (as a verb) is the conversion from <em>text</em> 
to <em>binary</em>. To encode,
 you have to supply the target encoding, for example <code>iso-8859-1</code> or 
<code>UTF-8</code>.
@@ -103578,7 +103705,7 @@
 Next: <a href="#perlunitut-Internal-format" accesskey="n" 
rel="next">perlunitut Internal format</a>, Previous: <a 
href="#perlunitut-Encoding" accesskey="p" rel="prev">perlunitut Encoding</a>, 
Up: <a href="#perlunitut-Definitions" accesskey="u" rel="up">perlunitut 
Definitions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Decoding"></a>
-<h4 class="subsubsection">83.2.1.6 Decoding</h4>
+<h4 class="subsubsection">84.2.1.6 Decoding</h4>
 
 <p><strong>Decoding</strong> is the conversion from <em>binary</em> to 
<em>text</em>. To decode, you have to
 know what encoding was used during the encoding phase. And most of all, it must
@@ -103592,7 +103719,7 @@
 Previous: <a href="#perlunitut-Decoding" accesskey="p" rel="prev">perlunitut 
Decoding</a>, Up: <a href="#perlunitut-Definitions" accesskey="u" 
rel="up">perlunitut Definitions</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Internal-format"></a>
-<h4 class="subsubsection">83.2.1.7 Internal format</h4>
+<h4 class="subsubsection">84.2.1.7 Internal format</h4>
 
 <p>Perl has an <strong>internal format</strong>, an encoding that it uses to 
encode text strings
 so it can store them in memory. All text strings are in this internal format.
@@ -103608,7 +103735,7 @@
 Next: <a 
href="#perlunitut-I_002fO-flow-_0028the-actual-5-minute-tutorial_0029" 
accesskey="n" rel="next">perlunitut I/O flow (the actual 5 minute 
tutorial)</a>, Previous: <a href="#perlunitut-Definitions" accesskey="p" 
rel="prev">perlunitut Definitions</a>, Up: <a href="#perlunitut-DESCRIPTION" 
accesskey="u" rel="up">perlunitut DESCRIPTION</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Your-new-toolkit"></a>
-<h4 class="subsection">83.2.2 Your new toolkit</h4>
+<h4 class="subsection">84.2.2 Your new toolkit</h4>
 
 <p>Add to your standard heading the following line:
 </p>
@@ -103625,7 +103752,7 @@
 Previous: <a href="#perlunitut-Your-new-toolkit" accesskey="p" 
rel="prev">perlunitut Your new toolkit</a>, Up: <a 
href="#perlunitut-DESCRIPTION" accesskey="u" rel="up">perlunitut 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="I_002fO-flow-_0028the-actual-5-minute-tutorial_0029"></a>
-<h4 class="subsection">83.2.3 I/O flow (the actual 5 minute tutorial)</h4>
+<h4 class="subsection">84.2.3 I/O flow (the actual 5 minute tutorial)</h4>
 
 <p>The typical input/output flow of a program is:
 </p>
@@ -103681,7 +103808,7 @@
 Next: <a href="#perlunitut-Q-and-A-_0028or-FAQ_0029" accesskey="n" 
rel="next">perlunitut Q and A (or FAQ)</a>, Previous: <a 
href="#perlunitut-DESCRIPTION" accesskey="p" rel="prev">perlunitut 
DESCRIPTION</a>, Up: <a href="#perlunitut" accesskey="u" 
rel="up">perlunitut</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="SUMMARY-1"></a>
-<h3 class="section">83.3 SUMMARY</h3>
+<h3 class="section">84.3 SUMMARY</h3>
 
 <p>Decode everything you receive, encode everything you send out. (If 
it&rsquo;s text
 data.)
@@ -103693,7 +103820,7 @@
 Next: <a href="#perlunitut-ACKNOWLEDGEMENTS" accesskey="n" 
rel="next">perlunitut ACKNOWLEDGEMENTS</a>, Previous: <a 
href="#perlunitut-SUMMARY" accesskey="p" rel="prev">perlunitut SUMMARY</a>, Up: 
<a href="#perlunitut" accesskey="u" rel="up">perlunitut</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Q-and-A-_0028or-FAQ_0029"></a>
-<h3 class="section">83.4 Q and A (or FAQ)</h3>
+<h3 class="section">84.4 Q and A (or FAQ)</h3>
 
 <p>After reading this document, you ought to read <a 
href="#perlunifaq-NAME">perlunifaq NAME</a> too. 
 </p>
@@ -103704,7 +103831,7 @@
 Next: <a href="#perlunitut-AUTHOR" accesskey="n" rel="next">perlunitut 
AUTHOR</a>, Previous: <a href="#perlunitut-Q-and-A-_0028or-FAQ_0029" 
accesskey="p" rel="prev">perlunitut Q and A (or FAQ)</a>, Up: <a 
href="#perlunitut" accesskey="u" rel="up">perlunitut</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="ACKNOWLEDGEMENTS-1"></a>
-<h3 class="section">83.5 ACKNOWLEDGEMENTS</h3>
+<h3 class="section">84.5 ACKNOWLEDGEMENTS</h3>
 
 <p>Thanks to Johan Vromans from Squirrel Consultancy. His UTF-8 rants during 
the
 Amsterdam Perl Mongers meetings got me interested and determined to find out
@@ -103727,8 +103854,8 @@
 <p>
 Next: <a href="#perlunitut-SEE-ALSO" accesskey="n" rel="next">perlunitut SEE 
ALSO</a>, Previous: <a href="#perlunitut-ACKNOWLEDGEMENTS" accesskey="p" 
rel="prev">perlunitut ACKNOWLEDGEMENTS</a>, Up: <a href="#perlunitut" 
accesskey="u" rel="up">perlunitut</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="AUTHOR-31"></a>
-<h3 class="section">83.6 AUTHOR</h3>
+<a name="AUTHOR-30"></a>
+<h3 class="section">84.6 AUTHOR</h3>
 
 <p>Juerd Waalboer &lt;address@hidden&gt;
 </p>
@@ -103738,8 +103865,8 @@
 <p>
 Previous: <a href="#perlunitut-AUTHOR" accesskey="p" rel="prev">perlunitut 
AUTHOR</a>, Up: <a href="#perlunitut" accesskey="u" rel="up">perlunitut</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-43"></a>
-<h3 class="section">83.7 SEE ALSO</h3>
+<a name="SEE-ALSO-42"></a>
+<h3 class="section">84.7 SEE ALSO</h3>
 
 <p><a href="#perlunifaq-NAME">perlunifaq NAME</a>, <a 
href="#perlunicode-NAME">perlunicode NAME</a>, <a 
href="#perluniintro-NAME">perluniintro NAME</a>, <a 
href="Encode.html#Top">(Encode)</a>
 </p>
@@ -103750,7 +103877,7 @@
 Next: <a href="#perlvar" accesskey="n" rel="next">perlvar</a>, Previous: <a 
href="#perlunitut" accesskey="p" rel="prev">perlunitut</a>, Up: <a href="#Top" 
accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="perlutil-1"></a>
-<h2 class="chapter">84 perlutil</h2>
+<h2 class="chapter">85 perlutil</h2>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perlutil-NAME" 
accesskey="1">perlutil NAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -103769,8 +103896,8 @@
 <p>
 Next: <a href="#perlutil-DESCRIPTION" accesskey="n" rel="next">perlutil 
DESCRIPTION</a>, Up: <a href="#perlutil" accesskey="u" rel="up">perlutil</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="NAME-83"></a>
-<h3 class="section">84.1 NAME</h3>
+<a name="NAME-84"></a>
+<h3 class="section">85.1 NAME</h3>
 
 <p>perlutil - utilities packaged with the Perl distribution
 </p>
@@ -103780,8 +103907,8 @@
 <p>
 Next: <a href="#perlutil-LIST-OF-UTILITIES" accesskey="n" rel="next">perlutil 
LIST OF UTILITIES</a>, Previous: <a href="#perlutil-NAME" accesskey="p" 
rel="prev">perlutil NAME</a>, Up: <a href="#perlutil" accesskey="u" 
rel="up">perlutil</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="DESCRIPTION-81"></a>
-<h3 class="section">84.2 DESCRIPTION</h3>
+<a name="DESCRIPTION-82"></a>
+<h3 class="section">85.2 DESCRIPTION</h3>
 
 <p>Along with the Perl interpreter itself, the Perl distribution installs a
 range of utilities on your system. There are also several utilities
@@ -103797,7 +103924,7 @@
 Next: <a href="#perlutil-SEE-ALSO" accesskey="n" rel="next">perlutil SEE 
ALSO</a>, Previous: <a href="#perlutil-DESCRIPTION" accesskey="p" 
rel="prev">perlutil DESCRIPTION</a>, Up: <a href="#perlutil" accesskey="u" 
rel="up">perlutil</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="LIST-OF-UTILITIES"></a>
-<h3 class="section">84.3 LIST OF UTILITIES</h3>
+<h3 class="section">85.3 LIST OF UTILITIES</h3>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perlutil-Documentation" 
accesskey="1">perlutil Documentation</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
@@ -103821,7 +103948,7 @@
 Next: <a href="#perlutil-Converters" accesskey="n" rel="next">perlutil 
Converters</a>, Up: <a href="#perlutil-LIST-OF-UTILITIES" accesskey="u" 
rel="up">perlutil LIST OF UTILITIES</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Documentation-2"></a>
-<h4 class="subsection">84.3.1 Documentation</h4>
+<h4 class="subsection">85.3.1 Documentation</h4>
 
 <dl compact="compact">
 <dt><a href="perldoc.html#Top">(perldoc)perldoc</a></dt>
@@ -103844,11 +103971,10 @@
 piped through your favourite pager.
 </p>
 </dd>
-<dt><a href="pod2html.html#Top">(pod2html)pod2html</a> and <a 
href="pod2latex.html#Top">(pod2latex)pod2latex</a></dt>
-<dd><a name="perlutil-pod2html-and-pod2latex"></a>
-<p>As well as these two, there are two other converters: <samp>pod2html</samp> 
will
-produce HTML pages from POD, and <samp>pod2latex</samp>, which produces LaTeX
-files.
+<dt><a href="pod2html.html#Top">(pod2html)pod2html</a></dt>
+<dd><a name="perlutil-pod2html"></a>
+<p>As well as these two, there is another converter: <samp>pod2html</samp> will
+produce HTML pages from POD.
 </p>
 </dd>
 <dt><a href="pod2usage.html#Top">(pod2usage)pod2usage</a></dt>
@@ -103897,7 +104023,7 @@
 Next: <a href="#perlutil-Administration" accesskey="n" rel="next">perlutil 
Administration</a>, Previous: <a href="#perlutil-Documentation" accesskey="p" 
rel="prev">perlutil Documentation</a>, Up: <a 
href="#perlutil-LIST-OF-UTILITIES" accesskey="u" rel="up">perlutil LIST OF 
UTILITIES</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Converters"></a>
-<h4 class="subsection">84.3.2 Converters</h4>
+<h4 class="subsection">85.3.2 Converters</h4>
 
 <p>To help you convert legacy programs to Perl, we&rsquo;ve included three
 conversion filters:
@@ -103959,7 +104085,7 @@
 Next: <a href="#perlutil-Development" accesskey="n" rel="next">perlutil 
Development</a>, Previous: <a href="#perlutil-Converters" accesskey="p" 
rel="prev">perlutil Converters</a>, Up: <a href="#perlutil-LIST-OF-UTILITIES" 
accesskey="u" rel="up">perlutil LIST OF UTILITIES</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Administration"></a>
-<h4 class="subsection">84.3.3 Administration</h4>
+<h4 class="subsection">85.3.3 Administration</h4>
 
 <dl compact="compact">
 <dt><a href="config_data.html#Top">(config_data)config_data</a></dt>
@@ -103990,7 +104116,7 @@
 Next: <a href="#perlutil-General-tools" accesskey="n" rel="next">perlutil 
General tools</a>, Previous: <a href="#perlutil-Administration" accesskey="p" 
rel="prev">perlutil Administration</a>, Up: <a 
href="#perlutil-LIST-OF-UTILITIES" accesskey="u" rel="up">perlutil LIST OF 
UTILITIES</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Development"></a>
-<h4 class="subsection">84.3.4 Development</h4>
+<h4 class="subsection">85.3.4 Development</h4>
 
 <p>There are a set of utilities which help you in developing Perl programs, 
 and in particular, extending Perl with C.
@@ -104076,7 +104202,7 @@
 Next: <a href="#perlutil-Installation" accesskey="n" rel="next">perlutil 
Installation</a>, Previous: <a href="#perlutil-Development" accesskey="p" 
rel="prev">perlutil Development</a>, Up: <a href="#perlutil-LIST-OF-UTILITIES" 
accesskey="u" rel="up">perlutil LIST OF UTILITIES</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="General-tools"></a>
-<h4 class="subsection">84.3.5 General tools</h4>
+<h4 class="subsection">85.3.5 General tools</h4>
 
 <p>A few general-purpose tools are shipped with perl, mostly because they
 came along modules included in the perl distribution.
@@ -104130,7 +104256,7 @@
 Previous: <a href="#perlutil-General-tools" accesskey="p" rel="prev">perlutil 
General tools</a>, Up: <a href="#perlutil-LIST-OF-UTILITIES" accesskey="u" 
rel="up">perlutil LIST OF UTILITIES</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Installation"></a>
-<h4 class="subsection">84.3.6 Installation</h4>
+<h4 class="subsection">85.3.6 Installation</h4>
 
 <p>These utilities help manage extra Perl modules that don&rsquo;t come with 
the perl
 distribution.
@@ -104145,20 +104271,6 @@
 <pre class="verbatim">    perl -MCPAN -e shell
 </pre>
 </dd>
-<dt><a href="cpanp.html#Top">(cpanp)</a></dt>
-<dd><a name="perlutil-cpanp"></a>
-<p><samp>cpanp</samp> is, like <samp>cpan</samp>, a command-line interface to 
the CPAN, using
-the <code>CPANPLUS</code> module as a back-end. It can be used interactively or
-imperatively.
-</p>
-</dd>
-<dt><a href="cpan2dist.html#Top">(cpan2dist)</a></dt>
-<dd><a name="perlutil-cpan2dist"></a>
-<p><samp>cpan2dist</samp> is a tool to create distributions (or packages) from 
CPAN
-modules, then suitable for your package manager of choice. Support for
-specific formats are available from CPAN as <code>CPANPLUS::Dist::*</code> 
modules.
-</p>
-</dd>
 <dt><a href="instmodsh.html#Top">(instmodsh)</a></dt>
 <dd><a name="perlutil-instmodsh"></a>
 <p>A little interface to ExtUtils::Installed to examine installed modules,
@@ -104173,8 +104285,8 @@
 <p>
 Previous: <a href="#perlutil-LIST-OF-UTILITIES" accesskey="p" 
rel="prev">perlutil LIST OF UTILITIES</a>, Up: <a href="#perlutil" 
accesskey="u" rel="up">perlutil</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<a name="SEE-ALSO-44"></a>
-<h3 class="section">84.4 SEE ALSO</h3>
+<a name="SEE-ALSO-43"></a>
+<h3 class="section">85.4 SEE ALSO</h3>
 
 <p><a href="perldoc.html#Top">(perldoc)perldoc</a>, <a 
href="pod2man.html#Top">(pod2man)pod2man</a>, <a href="#perlpod-NAME">perlpod 
NAME</a>,
 <a href="pod2html.html#Top">(pod2html)pod2html</a>, <a 
href="pod2usage.html#Top">(pod2usage)pod2usage</a>, <a 
href="podselect.html#Top">(podselect)podselect</a>,
@@ -104182,7 +104294,7 @@
 <code>roffitall|roffitall</code>, <a href="a2p.html#Top">(a2p)a2p</a>, <a 
href="s2p.html#Top">(s2p)s2p</a>, <a 
href="find2perl.html#Top">(find2perl)find2perl</a>,
 <a href="File-Find.html#Top">(File-Find)File::Find</a>, <a 
href="pl2pm.html#Top">(pl2pm)pl2pm</a>, <a 
href="perlbug.html#Top">(perlbug)perlbug</a>,
 <a href="h2ph.html#Top">(h2ph)h2ph</a>, <a 
href="c2ph.html#Top">(c2ph)c2ph</a>, <a href="h2xs.html#Top">(h2xs)h2xs</a>, <a 
href="enc2xs.html#Top">(enc2xs)</a>, <a href="xsubpp.html#Top">(xsubpp)</a>,
-<a href="cpan.html#Top">(cpan)</a>, <a href="cpanp.html#Top">(cpanp)</a>, <a 
href="cpan2dist.html#Top">(cpan2dist)</a>, <a 
href="instmodsh.html#Top">(instmodsh)</a>, <a 
href="piconv.html#Top">(piconv)</a>, <a href="prove.html#Top">(prove)</a>,
+<a href="cpan.html#Top">(cpan)</a>, <a 
href="instmodsh.html#Top">(instmodsh)</a>, <a 
href="piconv.html#Top">(piconv)</a>, <a href="prove.html#Top">(prove)</a>,
 <a href="corelist.html#Top">(corelist)</a>, <a 
href="ptar.html#Top">(ptar)</a>, <a href="ptardiff.html#Top">(ptardiff)</a>, <a 
href="shasum.html#Top">(shasum)</a>, <a 
href="zipdetails.html#Top">(zipdetails)</a>
 </p>
 <hr>
@@ -104192,7 +104304,7 @@
 Next: <a href="#perlvms" accesskey="n" rel="next">perlvms</a>, Previous: <a 
href="#perlutil" accesskey="p" rel="prev">perlutil</a>, Up: <a href="#Top" 
accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="perlvar-1"></a>
-<h2 class="chapter">85 perlvar</h2>
+<h2 class="chapter">86 perlvar</h2>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perlvar-NAME" 
accesskey="1">perlvar NAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -104209,8 +104321,8 @@
 <p>
 Next: <a href="#perlvar-DESCRIPTION" accesskey="n" rel="next">perlvar 
DESCRIPTION</a>, Up: <a href="#perlvar" accesskey="u" rel="up">perlvar</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="NAME-84"></a>
-<h3 class="section">85.1 NAME</h3>
+<a name="NAME-85"></a>
+<h3 class="section">86.1 NAME</h3>
 
 <p>perlvar - Perl predefined variables
 </p>
@@ -104220,8 +104332,8 @@
 <p>
 Next: <a href="#perlvar-SPECIAL-VARIABLES" accesskey="n" rel="next">perlvar 
SPECIAL VARIABLES</a>, Previous: <a href="#perlvar-NAME" accesskey="p" 
rel="prev">perlvar NAME</a>, Up: <a href="#perlvar" accesskey="u" 
rel="up">perlvar</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="DESCRIPTION-82"></a>
-<h3 class="section">85.2 DESCRIPTION</h3>
+<a name="DESCRIPTION-83"></a>
+<h3 class="section">86.2 DESCRIPTION</h3>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a 
href="#perlvar-The-Syntax-of-Variable-Names" accesskey="1">perlvar The Syntax 
of Variable Names</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
@@ -104235,7 +104347,7 @@
 Up: <a href="#perlvar-DESCRIPTION" accesskey="u" rel="up">perlvar 
DESCRIPTION</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="The-Syntax-of-Variable-Names"></a>
-<h4 class="subsection">85.2.1 The Syntax of Variable Names</h4>
+<h4 class="subsection">86.2.1 The Syntax of Variable Names</h4>
 
 <p>Variable names in Perl can have several formats.  Usually, they
 must begin with a letter or underscore, in which case they can be
@@ -104289,7 +104401,7 @@
 Previous: <a href="#perlvar-DESCRIPTION" accesskey="p" rel="prev">perlvar 
DESCRIPTION</a>, Up: <a href="#perlvar" accesskey="u" rel="up">perlvar</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="SPECIAL-VARIABLES"></a>
-<h3 class="section">85.3 SPECIAL VARIABLES</h3>
+<h3 class="section">86.3 SPECIAL VARIABLES</h3>
 
 <p>The following names have special meaning to Perl.  Most punctuation
 names have reasonable mnemonics, or analogs in the shells.
@@ -104299,12 +104411,8 @@
 </pre>
 <p>at the top of your program.  This aliases all the short names to the long
 names in the current package.  Some even have medium names, generally
-borrowed from <strong>awk</strong>.  To avoid a performance hit, if you 
don&rsquo;t need the
-<code>$PREMATCH</code>, <code>$MATCH</code>, or <code>$POSTMATCH</code> 
it&rsquo;s best to use the <code>English</code>
-module without them:
+borrowed from <strong>awk</strong>.  For more info, please see <a 
href="English.html#Top">(English)</a>.
 </p>
-<pre class="verbatim">    use English '-no_match_vars';
-</pre>
 <p>Before you continue, note the sort order for variables.  In general, we
 first list the variables in case-insensitive, almost-lexigraphical
 order (ignoring the <code>{</code> or <code>^</code> preceding words, as in 
<code>${^UNICODE}</code>
@@ -104334,7 +104442,7 @@
 Next: <a href="#perlvar-Variables-related-to-regular-expressions" 
accesskey="n" rel="next">perlvar Variables related to regular expressions</a>, 
Up: <a href="#perlvar-SPECIAL-VARIABLES" accesskey="u" rel="up">perlvar SPECIAL 
VARIABLES</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="General-Variables"></a>
-<h4 class="subsection">85.3.1 General Variables</h4>
+<h4 class="subsection">86.3.1 General Variables</h4>
 
 <dl compact="compact">
 <dt>$ARG</dt>
@@ -104589,8 +104697,8 @@
 <dt>$UID</dt>
 <dd><a name="perlvar-_0024UID"></a>
 </dd>
-<dt>$&lt; &gt;</dt>
-<dd><a name="perlvar-_0024_003c-_003e"></a>
+<dt>$&lt;</dt>
+<dd><a name="perlvar-_0024_003c"></a>
 <p>The real uid of this process.  You can change both the real uid and the
 effective uid at the same time by using <code>POSIX::setuid()</code>.  Since
 changes to <code>$&lt;</code> require a system call, check <code>$!</code> 
after a change
@@ -104674,6 +104782,28 @@
 value in <code>ENV</code> changes the environment for any child processes
 you subsequently <code>fork()</code> off.
 </p>
+<p>As of v5.18.0, both keys and values stored in <code>%ENV</code> are 
stringified.
+</p>
+<pre class="verbatim">    my $foo = 1;
+    $ENV{'bar'} = \$foo;
+    if( ref $ENV{'bar'} ) {
+        say &quot;Pre 5.18.0 Behaviour&quot;;
+    } else {
+        say &quot;Post 5.18.0 Behaviour&quot;;
+    }
+</pre>
+<p>Previously, only child processes received stringified values:
+</p>
+<pre class="verbatim">    my $foo = 1;
+    $ENV{'bar'} = \$foo;
+
+    # Always printed 'non ref'
+    system($^X, '-e',
+           q/print ( ref $ENV{'bar'}  ? 'ref' : 'non ref' ) /);
+</pre>
+<p>This happens because you can&rsquo;t really share arbitrary data structures 
with
+foreign processes.
+</p>
 </dd>
 <dt>$SYSTEM_FD_MAX</dt>
 <dd><a name="perlvar-_0024SYSTEM_005fFD_005fMAX"></a>
@@ -105010,7 +105140,7 @@
 Next: <a href="#perlvar-Variables-related-to-filehandles" accesskey="n" 
rel="next">perlvar Variables related to filehandles</a>, Previous: <a 
href="#perlvar-General-Variables" accesskey="p" rel="prev">perlvar General 
Variables</a>, Up: <a href="#perlvar-SPECIAL-VARIABLES" accesskey="u" 
rel="up">perlvar SPECIAL VARIABLES</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Variables-related-to-regular-expressions"></a>
-<h4 class="subsection">85.3.2 Variables related to regular expressions</h4>
+<h4 class="subsection">86.3.2 Variables related to regular expressions</h4>
 
 <p>Most of the special variables related to regular expressions are side
 effects.  Perl sets these variables when it has a successful match, so
@@ -105057,22 +105187,63 @@
     $1 is Mutt; $2 is Jeff
     $1 is Wallace; $2 is Grommit
 </pre>
-<p>Due to an unfortunate accident of Perl&rsquo;s implementation, <code>use
-English</code> imposes a considerable performance penalty on all regular
-expression matches in a program because it uses the <code>$`</code>, 
<code>$&amp;</code>, and
-<code>$'</code>, regardless of whether they occur in the scope of <code>use
-English</code>.  For that reason, saying <code>use English</code> in libraries 
is
-strongly discouraged unless you import it without the match variables:
-</p>
-<pre class="verbatim">    use English '-no_match_vars'
-</pre>
-<p>The <code>Devel::NYTProf</code> and <code>Devel::FindAmpersand</code>
-modules can help you find uses of these
-problematic match variables in your code.
-</p>
-<p>Since Perl v5.10.0, you can use the <code>/p</code> match operator flag and 
the
-<code>${^PREMATCH}</code>, <code>${^MATCH}</code>, and 
<code>${^POSTMATCH}</code> variables instead
-so you only suffer the performance penalties.
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="#perlvar-Performance-issues" 
accesskey="1">perlvar Performance issues</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="perlvar-Performance-issues"></a>
+<div class="header">
+<p>
+Up: <a href="#perlvar-Variables-related-to-regular-expressions" accesskey="u" 
rel="up">perlvar Variables related to regular expressions</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
+</div>
+<a name="Performance-issues"></a>
+<h4 class="subsubsection">86.3.2.1 Performance issues</h4>
+
+<p>Traditionally in Perl, any use of any of the three variables  
<code>$`</code>, <code>$&amp;</code>
+or <code>$'</code> (or their <code>use English</code> equivalents) anywhere in 
the code, caused
+all subsequent successful pattern matches to make a copy of the matched
+string, in case the code might subsequently access one of those variables.
+This imposed a considerable performance penalty across the whole program,
+so generally the use of these variables has been discouraged.
+</p>
+<p>In Perl 5.6.0 the <code>@-</code> and <code>@+</code> dynamic arrays were 
introduced that
+supply the indices of successful matches. So you could for example do
+this:
+</p>
+<pre class="verbatim">    $str =~ /pattern/;
+
+    print $`, $&amp;, $'; # bad: perfomance hit
+
+    print             # good: no perfomance hit
+        substr($str, 0,     $-[0]),
+        substr($str, $-[0], $+[0]-$-[0]),
+        substr($str, $+[0]);
+</pre>
+<p>In Perl 5.10.0 the <code>/p</code> match operator flag and the 
<code>${^PREMATCH}</code>,
+<code>${^MATCH}</code>, and <code>${^POSTMATCH}</code> variables were 
introduced, that allowed
+you to suffer the penalties only on patterns marked with <code>/p</code>.
+</p>
+<p>In Perl 5.18.0 onwards, perl started noting the presence of each of the
+three variables separately, and only copied that part of the string
+required; so in
+</p>
+<pre class="verbatim">    $`; $&amp;; &quot;abcdefgh&quot; =~ /d/
+</pre>
+<p>perl would only copy the &quot;abcd&quot; part of the string. That could 
make a big
+difference in something like
+</p>
+<pre class="verbatim">    $str = 'x' x 1_000_000;
+    $&amp;; # whoops
+    $str =~ /x/g # one char copied a million times, not a million chars
+</pre>
+<p>In Perl 5.20.0 a new copy-on-write system was enabled by default, which
+finally fixes all performance issues with these three variables, and makes
+them safe to use anywhere.
+</p>
+<p>The <code>Devel::NYTProf</code> and <code>Devel::FindAmpersand</code> 
modules can help you
+find uses of these problematic match variables in your code.
 </p>
 <dl compact="compact">
 <dt>$&lt;<em>digits</em>&gt; ($1, $2, ...)</dt>
@@ -105095,11 +105266,8 @@
 any matches hidden within a BLOCK or <code>eval()</code> enclosed by the 
current
 BLOCK).
 </p>
-<p>The use of this variable anywhere in a program imposes a considerable
-performance penalty on all regular expression matches.  To avoid this
-penalty, you can extract the same substring by using <a 
href="#perlvar-_0040_002d">@-</a>.  Starting
-with Perl v5.10.0, you can use the <code>/p</code> match flag and the 
<code>${^MATCH}</code>
-variable to do the same thing for particular match operations.
+<p>See <a href="#perlvar-Performance-issues">Performance issues</a> above for 
the serious performance implications
+of using this variable (even once) in your code.
 </p>
 <p>This variable is read-only and dynamically-scoped.
 </p>
@@ -105109,9 +105277,14 @@
 <dt>${^MATCH}</dt>
 <dd><a name="perlvar-_0024_007b_005eMATCH_007d"></a>
 <p>This is similar to <code>$&amp;</code> (<code>$MATCH</code>) except that it 
does not incur the
-performance penalty associated with that variable, and is only guaranteed
+performance penalty associated with that variable.
+</p>
+<p>See <a href="#perlvar-Performance-issues">Performance issues</a> above.
+</p>
+<p>In Perl v5.18 and earlier, it is only guaranteed
 to return a defined value when the pattern was compiled or executed with
-the <code>/p</code> modifier.
+the <code>/p</code> modifier.  In Perl v5.20, the <code>/p</code> modifier 
does nothing, so
+<code>${^MATCH}</code> does the same thing as <code>$MATCH</code>.
 </p>
 <p>This variable was added in Perl v5.10.0.
 </p>
@@ -105127,12 +105300,8 @@
 pattern match, not counting any matches hidden within a BLOCK or 
<code>eval</code>
 enclosed by the current BLOCK.
 </p>
-<p>The use of this variable anywhere in a program imposes a considerable
-performance penalty on all regular expression matches.  To avoid this
-penalty, you can extract the same substring by using <a 
href="#perlvar-_0040_002d">@-</a>.  Starting
-with Perl v5.10.0, you can use the <code>/p</code> match flag and the
-<code>${^PREMATCH}</code> variable to do the same thing for particular match
-operations.
+<p>See <a href="#perlvar-Performance-issues">Performance issues</a> above for 
the serious performance implications
+of using this variable (even once) in your code.
 </p>
 <p>This variable is read-only and dynamically-scoped.
 </p>
@@ -105142,11 +105311,16 @@
 <dt>${^PREMATCH}</dt>
 <dd><a name="perlvar-_0024_007b_005ePREMATCH_007d"></a>
 <p>This is similar to <code>$`</code> ($PREMATCH) except that it does not 
incur the
-performance penalty associated with that variable, and is only guaranteed
+performance penalty associated with that variable.
+</p>
+<p>See <a href="#perlvar-Performance-issues">Performance issues</a> above.
+</p>
+<p>In Perl v5.18 and earlier, it is only guaranteed
 to return a defined value when the pattern was compiled or executed with
-the <code>/p</code> modifier.
+the <code>/p</code> modifier.  In Perl v5.20, the <code>/p</code> modifier 
does nothing, so
+<code>${^PREMATCH}</code> does the same thing as <code>$PREMATCH</code>.
 </p>
-<p>This variable was added in Perl v5.10.0
+<p>This variable was added in Perl v5.10.0.
 </p>
 <p>This variable is read-only and dynamically-scoped.
 </p>
@@ -105164,12 +105338,8 @@
     /def/;
     print &quot;$`:$&amp;:$'\n&quot;;         # prints abc:def:ghi
 </pre>
-<p>The use of this variable anywhere in a program imposes a considerable
-performance penalty on all regular expression matches.
-To avoid this penalty, you can extract the same substring by
-using <a href="#perlvar-_0040_002d">@-</a>.  Starting with Perl v5.10.0, you 
can use the <code>/p</code> match flag
-and the <code>${^POSTMATCH}</code> variable to do the same thing for particular
-match operations.
+<p>See <a href="#perlvar-Performance-issues">Performance issues</a> above for 
the serious performance implications
+of using this variable (even once) in your code.
 </p>
 <p>This variable is read-only and dynamically-scoped.
 </p>
@@ -105179,9 +105349,14 @@
 <dt>${^POSTMATCH}</dt>
 <dd><a name="perlvar-_0024_007b_005ePOSTMATCH_007d"></a>
 <p>This is similar to <code>$'</code> (<code>$POSTMATCH</code>) except that it 
does not incur the
-performance penalty associated with that variable, and is only guaranteed
+performance penalty associated with that variable.
+</p>
+<p>See <a href="#perlvar-Performance-issues">Performance issues</a> above.
+</p>
+<p>In Perl v5.18 and earlier, it is only guaranteed
 to return a defined value when the pattern was compiled or executed with
-the <code>/p</code> modifier.
+the <code>/p</code> modifier.  In Perl v5.20, the <code>/p</code> modifier 
does nothing, so
+<code>${^POSTMATCH}</code> does the same thing as <code>$POSTMATCH</code>.
 </p>
 <p>This variable was added in Perl v5.10.0.
 </p>
@@ -105419,7 +105594,7 @@
 Next: <a href="#perlvar-Error-Variables" accesskey="n" rel="next">perlvar 
Error Variables</a>, Previous: <a 
href="#perlvar-Variables-related-to-regular-expressions" accesskey="p" 
rel="prev">perlvar Variables related to regular expressions</a>, Up: <a 
href="#perlvar-SPECIAL-VARIABLES" accesskey="u" rel="up">perlvar SPECIAL 
VARIABLES</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Variables-related-to-filehandles"></a>
-<h4 class="subsection">85.3.3 Variables related to filehandles</h4>
+<h4 class="subsection">86.3.3 Variables related to filehandles</h4>
 
 <p>Variables that depend on the currently selected filehandle may be set
 by calling an appropriate object method on the <code>IO::Handle</code> object,
@@ -105655,7 +105830,12 @@
 record-oriented files), then you&rsquo;ll likely get a full chunk of data
 with every read.  If a record is larger than the record size you&rsquo;ve
 set, you&rsquo;ll get the record back in pieces.  Trying to set the record
-size to zero or less will cause reading in the (rest of the) whole file.
+size to zero or less is deprecated and will cause $/ to have the value
+of &quot;undef&quot;, which will cause reading in the (rest of the) whole file.
+</p>
+<p>As of 5.19.9 setting <code>$/</code> to any other form of reference will 
throw a
+fatal exception. This is in preparation for supporting new ways to set
+<code>$/</code> in the future.
 </p>
 <p>On VMS only, record reads bypass PerlIO layers and any associated
 buffering, so you must not mix record and non-record reads on the
@@ -105739,7 +105919,7 @@
 Up: <a href="#perlvar-Variables-related-to-filehandles" accesskey="u" 
rel="up">perlvar Variables related to filehandles</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Variables-related-to-formats"></a>
-<h4 class="subsubsection">85.3.3.1 Variables related to formats</h4>
+<h4 class="subsubsection">86.3.3.1 Variables related to formats</h4>
 
 <p>The special variables for formats are a subset of those for
 filehandles.  See <a href="#perlform-NAME">perlform NAME</a> for more 
information about Perl&rsquo;s
@@ -105873,7 +106053,7 @@
 Next: <a href="#perlvar-Variables-related-to-the-interpreter-state" 
accesskey="n" rel="next">perlvar Variables related to the interpreter 
state</a>, Previous: <a href="#perlvar-Variables-related-to-filehandles" 
accesskey="p" rel="prev">perlvar Variables related to filehandles</a>, Up: <a 
href="#perlvar-SPECIAL-VARIABLES" accesskey="u" rel="up">perlvar SPECIAL 
VARIABLES</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Error-Variables"></a>
-<h4 class="subsection">85.3.4 Error Variables</h4>
+<h4 class="subsection">86.3.4 Error Variables</h4>
 
 <p>The variables <code>$@</code>, <code>$!</code>, <code>$^E</code>, and 
<code>$?</code> contain information
 about different types of error conditions that may appear during
@@ -106052,6 +106232,10 @@
 to set the exit value, or to inspect the system error string
 corresponding to error <em>n</em>, or to restore <code>$!</code> to a 
meaningful state.
 </p>
+<p>Note that when stringified, the text is always returned as if both
+<a href="#perllocale-NAME"><code>&quot;use&nbsp;locale&quot;</code></a><!-- 
/@w --> and <a 
href="bytes.html#Top">(bytes)<code>&quot;use&nbsp;bytes&quot;</code></a><!-- 
/@w --> are in
+effect.  This is likely to change in v5.22.
+</p>
 <p>Mnemonic: What just went bang?
 </p>
 </dd>
@@ -106136,7 +106320,7 @@
 Next: <a href="#perlvar-Deprecated-and-removed-variables" accesskey="n" 
rel="next">perlvar Deprecated and removed variables</a>, Previous: <a 
href="#perlvar-Error-Variables" accesskey="p" rel="prev">perlvar Error 
Variables</a>, Up: <a href="#perlvar-SPECIAL-VARIABLES" accesskey="u" 
rel="up">perlvar SPECIAL VARIABLES</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Variables-related-to-the-interpreter-state"></a>
-<h4 class="subsection">85.3.5 Variables related to the interpreter state</h4>
+<h4 class="subsection">86.3.5 Variables related to the interpreter state</h4>
 
 <p>These variables provide information about the current interpreter state.
 </p>
@@ -106430,6 +106614,16 @@
 <p>Save source code lines into <code>@{&quot;_&lt;$filename&quot;}</code>.
 </p>
 </dd>
+<dt>0x800</dt>
+<dd><a name="perlvar-0x800"></a>
+<p>When saving source, include evals that generate no subroutines.
+</p>
+</dd>
+<dt>0x1000</dt>
+<dd><a name="perlvar-0x1000"></a>
+<p>When saving source, include source that did not compile.
+</p>
+</dd>
 </dl>
 
 <p>Some bits may be relevant at compile-time only, some at
@@ -106489,7 +106683,7 @@
 Previous: <a href="#perlvar-Variables-related-to-the-interpreter-state" 
accesskey="p" rel="prev">perlvar Variables related to the interpreter 
state</a>, Up: <a href="#perlvar-SPECIAL-VARIABLES" accesskey="u" 
rel="up">perlvar SPECIAL VARIABLES</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Deprecated-and-removed-variables"></a>
-<h4 class="subsection">85.3.6 Deprecated and removed variables</h4>
+<h4 class="subsection">86.3.6 Deprecated and removed variables</h4>
 
 <p>Deprecating a variable announces the intent of the perl maintainers to
 eventually remove the variable from the language.  It may still be
@@ -106502,9 +106696,6 @@
 <p>See <a href="#perldiag-NAME">perldiag NAME</a> for details about error 
messages.
 </p>
 <dl compact="compact">
-<dt>$OFMT</dt>
-<dd><a name="perlvar-_0024OFMT"></a>
-</dd>
 <dt>$#</dt>
 <dd><a name="perlvar-_0024_0023"></a>
 <p><code>$#</code> was a variable that could be used to format printed numbers.
@@ -106532,9 +106723,6 @@
 <p>Removed in Perl v5.10.0.
 </p>
 </dd>
-<dt>$ARRAY_BASE</dt>
-<dd><a name="perlvar-_0024ARRAY_005fBASE"></a>
-</dd>
 <dt>$[</dt>
 <dd><a name="perlvar-_0024_005b"></a>
 <p>This variable stores the index of the first element in an array, and
@@ -106564,9 +106752,6 @@
 <p>Deprecated in Perl v5.12.0.
 </p>
 </dd>
-<dt>$OLD_PERL_VERSION</dt>
-<dd><a name="perlvar-_0024OLD_005fPERL_005fVERSION"></a>
-</dd>
 <dt>$]</dt>
 <dd><a name="perlvar-_0024_005d"></a>
 <p>See <a href="#perlvar-_0024_005eV">$^V</a> for a more modern representation 
of the Perl version that allows
@@ -106576,10 +106761,10 @@
 can be used to determine whether the Perl interpreter executing a
 script is in the right range of versions:
 </p>
-<pre class="verbatim">    warn &quot;No checksumming!\n&quot; if $] &lt; 3.019;
+<pre class="verbatim">    warn &quot;No PerlIO!\n&quot; if $] lt '5.008';
 </pre>
 <p>The floating point representation can sometimes lead to inaccurate
-numeric comparisons.
+numeric comparisons, so string comparisons are recommended.
 </p>
 <p>See also the documentation of <code>use VERSION</code> and <code>require 
VERSION</code>
 for a convenient way to fail if the running Perl interpreter is too old.
@@ -106596,7 +106781,7 @@
 Previous: <a href="#perlvar" accesskey="p" rel="prev">perlvar</a>, Up: <a 
href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="perlvms-1"></a>
-<h2 class="chapter">86 perlvms</h2>
+<h2 class="chapter">87 perlvms</h2>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perlvms-NAME" 
accesskey="1">perlvms NAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -106635,8 +106820,8 @@
 <p>
 Next: <a href="#perlvms-DESCRIPTION" accesskey="n" rel="next">perlvms 
DESCRIPTION</a>, Up: <a href="#perlvms" accesskey="u" rel="up">perlvms</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="NAME-85"></a>
-<h3 class="section">86.1 NAME</h3>
+<a name="NAME-86"></a>
+<h3 class="section">87.1 NAME</h3>
 
 <p>perlvms - VMS-specific documentation for Perl
 </p>
@@ -106646,8 +106831,8 @@
 <p>
 Next: <a href="#perlvms-Installation" accesskey="n" rel="next">perlvms 
Installation</a>, Previous: <a href="#perlvms-NAME" accesskey="p" 
rel="prev">perlvms NAME</a>, Up: <a href="#perlvms" accesskey="u" 
rel="up">perlvms</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="DESCRIPTION-83"></a>
-<h3 class="section">86.2 DESCRIPTION</h3>
+<a name="DESCRIPTION-84"></a>
+<h3 class="section">87.2 DESCRIPTION</h3>
 
 <p>Gathered below are notes describing details of Perl 5&rsquo;s 
 behavior on VMS.  They are a supplement to the regular Perl 5 
@@ -106671,7 +106856,7 @@
 Next: <a href="#perlvms-Organization-of-Perl-Images" accesskey="n" 
rel="next">perlvms Organization of Perl Images</a>, Previous: <a 
href="#perlvms-DESCRIPTION" accesskey="p" rel="prev">perlvms DESCRIPTION</a>, 
Up: <a href="#perlvms" accesskey="u" rel="up">perlvms</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Installation-1"></a>
-<h3 class="section">86.3 Installation</h3>
+<h3 class="section">87.3 Installation</h3>
 
 <p>Directions for building and installing Perl 5 can be found in 
 the file <samp>README.vms</samp> in the main source directory of the 
@@ -106684,7 +106869,7 @@
 Next: <a href="#perlvms-File-specifications" accesskey="n" rel="next">perlvms 
File specifications</a>, Previous: <a href="#perlvms-Installation" 
accesskey="p" rel="prev">perlvms Installation</a>, Up: <a href="#perlvms" 
accesskey="u" rel="up">perlvms</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Organization-of-Perl-Images"></a>
-<h3 class="section">86.4 Organization of Perl Images</h3>
+<h3 class="section">87.4 Organization of Perl Images</h3>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perlvms-Core-Images" 
accesskey="1">perlvms Core Images</a>:</td><td>&nbsp;&nbsp;</td><td 
align="left" valign="top">
@@ -106704,7 +106889,7 @@
 Next: <a href="#perlvms-Perl-Extensions" accesskey="n" rel="next">perlvms Perl 
Extensions</a>, Up: <a href="#perlvms-Organization-of-Perl-Images" 
accesskey="u" rel="up">perlvms Organization of Perl Images</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Core-Images"></a>
-<h4 class="subsection">86.4.1 Core Images</h4>
+<h4 class="subsection">87.4.1 Core Images</h4>
 
 <p>During the installation process, three Perl images are produced.
 <samp>Miniperl.Exe</samp> is an executable image which contains all of
@@ -106736,7 +106921,7 @@
 Next: <a href="#perlvms-Installing-static-extensions" accesskey="n" 
rel="next">perlvms Installing static extensions</a>, Previous: <a 
href="#perlvms-Core-Images" accesskey="p" rel="prev">perlvms Core Images</a>, 
Up: <a href="#perlvms-Organization-of-Perl-Images" accesskey="u" 
rel="up">perlvms Organization of Perl Images</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Perl-Extensions"></a>
-<h4 class="subsection">86.4.2 Perl Extensions</h4>
+<h4 class="subsection">87.4.2 Perl Extensions</h4>
 
 <p>Perl extensions are packages which provide both XS and Perl code
 to add new functionality to perl.  (XS is a meta-language which
@@ -106775,7 +106960,7 @@
 Next: <a href="#perlvms-Installing-dynamic-extensions" accesskey="n" 
rel="next">perlvms Installing dynamic extensions</a>, Previous: <a 
href="#perlvms-Perl-Extensions" accesskey="p" rel="prev">perlvms Perl 
Extensions</a>, Up: <a href="#perlvms-Organization-of-Perl-Images" 
accesskey="u" rel="up">perlvms Organization of Perl Images</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Installing-static-extensions"></a>
-<h4 class="subsection">86.4.3 Installing static extensions</h4>
+<h4 class="subsection">87.4.3 Installing static extensions</h4>
 
 <p>Since static extensions are incorporated directly into
 <samp>PerlShr.Exe</samp>, you&rsquo;ll have to rebuild Perl to incorporate a
@@ -106801,7 +106986,7 @@
 Previous: <a href="#perlvms-Installing-static-extensions" accesskey="p" 
rel="prev">perlvms Installing static extensions</a>, Up: <a 
href="#perlvms-Organization-of-Perl-Images" accesskey="u" rel="up">perlvms 
Organization of Perl Images</a> &nbsp; [<a href="#SEC_Contents" title="Table of 
contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Installing-dynamic-extensions"></a>
-<h4 class="subsection">86.4.4 Installing dynamic extensions</h4>
+<h4 class="subsection">87.4.4 Installing dynamic extensions</h4>
 
 <p>In general, the distributed kit for a Perl extension includes
 a file named Makefile.PL, which is a Perl program which is used
@@ -106873,7 +107058,7 @@
 Next: <a href="#perlvms-PERL5LIB-and-PERLLIB" accesskey="n" rel="next">perlvms 
PERL5LIB and PERLLIB</a>, Previous: <a 
href="#perlvms-Organization-of-Perl-Images" accesskey="p" rel="prev">perlvms 
Organization of Perl Images</a>, Up: <a href="#perlvms" accesskey="u" 
rel="up">perlvms</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="File-specifications"></a>
-<h3 class="section">86.5 File specifications</h3>
+<h3 class="section">87.5 File specifications</h3>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perlvms-Syntax" 
accesskey="1">perlvms Syntax</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -106895,7 +107080,7 @@
 Next: <a href="#perlvms-Filename-Case" accesskey="n" rel="next">perlvms 
Filename Case</a>, Up: <a href="#perlvms-File-specifications" accesskey="u" 
rel="up">perlvms File specifications</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Syntax-1"></a>
-<h4 class="subsection">86.5.1 Syntax</h4>
+<h4 class="subsection">87.5.1 Syntax</h4>
 
 <p>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,
@@ -106968,7 +107153,7 @@
 Next: <a href="#perlvms-Symbolic-Links" accesskey="n" rel="next">perlvms 
Symbolic Links</a>, Previous: <a href="#perlvms-Syntax" accesskey="p" 
rel="prev">perlvms Syntax</a>, Up: <a href="#perlvms-File-specifications" 
accesskey="u" rel="up">perlvms File specifications</a> &nbsp; [<a 
href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Filename-Case"></a>
-<h4 class="subsection">86.5.2 Filename Case</h4>
+<h4 class="subsection">87.5.2 Filename Case</h4>
 
 <p>Perl follows VMS defaults and override settings in preserving (or not
 preserving) filename case.  Case is not preserved on ODS-2 formatted
@@ -107006,7 +107191,7 @@
 Next: <a href="#perlvms-Wildcard-expansion" accesskey="n" rel="next">perlvms 
Wildcard expansion</a>, Previous: <a href="#perlvms-Filename-Case" 
accesskey="p" rel="prev">perlvms Filename Case</a>, Up: <a 
href="#perlvms-File-specifications" accesskey="u" rel="up">perlvms File 
specifications</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Symbolic-Links"></a>
-<h4 class="subsection">86.5.3 Symbolic Links</h4>
+<h4 class="subsection">87.5.3 Symbolic Links</h4>
 
 <p>When built on an ODS-5 volume with symbolic links enabled, Perl by
 default supports symbolic links when the requisite support is available
@@ -107026,7 +107211,7 @@
 Next: <a href="#perlvms-Pipes" accesskey="n" rel="next">perlvms Pipes</a>, 
Previous: <a href="#perlvms-Symbolic-Links" accesskey="p" rel="prev">perlvms 
Symbolic Links</a>, Up: <a href="#perlvms-File-specifications" accesskey="u" 
rel="up">perlvms File specifications</a> &nbsp; [<a href="#SEC_Contents" 
title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Wildcard-expansion"></a>
-<h4 class="subsection">86.5.4 Wildcard expansion</h4>
+<h4 class="subsection">87.5.4 Wildcard expansion</h4>
 
 <p>File specifications containing wildcards are allowed both on 
 the command line and within Perl globs (e.g. <code>&lt;*.c&gt;</code>).  If
@@ -107075,7 +107260,7 @@
 Previous: <a href="#perlvms-Wildcard-expansion" accesskey="p" 
rel="prev">perlvms Wildcard expansion</a>, Up: <a 
href="#perlvms-File-specifications" accesskey="u" rel="up">perlvms File 
specifications</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Pipes"></a>
-<h4 class="subsection">86.5.5 Pipes</h4>
+<h4 class="subsection">87.5.5 Pipes</h4>
 
 <p>Input and output pipes to Perl filehandles are supported; the 
 &quot;file name&quot; is passed to lib$spawn() for asynchronous 
@@ -107109,7 +107294,7 @@
 Next: <a href="#perlvms-The-Perl-Forked-Debugger" accesskey="n" 
rel="next">perlvms The Perl Forked Debugger</a>, Previous: <a 
href="#perlvms-File-specifications" accesskey="p" rel="prev">perlvms File 
specifications</a>, Up: <a href="#perlvms" accesskey="u" rel="up">perlvms</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="PERL5LIB-and-PERLLIB"></a>
-<h3 class="section">86.6 PERL5LIB and PERLLIB</h3>
+<h3 class="section">87.6 PERL5LIB and PERLLIB</h3>
 
 <p>The PERL5LIB and PERLLIB logical names work as documented in <a 
href="#perl-NAME">perl NAME</a>,
 except that the element separator is &rsquo;|&rsquo; instead of 
&rsquo;:&rsquo;.  The
@@ -107122,7 +107307,7 @@
 Next: <a href="#perlvms-PERL_005fVMS_005fEXCEPTION_005fDEBUG" accesskey="n" 
rel="next">perlvms PERL_VMS_EXCEPTION_DEBUG</a>, Previous: <a 
href="#perlvms-PERL5LIB-and-PERLLIB" accesskey="p" rel="prev">perlvms PERL5LIB 
and PERLLIB</a>, Up: <a href="#perlvms" accesskey="u" rel="up">perlvms</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="The-Perl-Forked-Debugger"></a>
-<h3 class="section">86.7 The Perl Forked Debugger</h3>
+<h3 class="section">87.7 The Perl Forked Debugger</h3>
 
 <p>The Perl forked debugger places the debugger commands and output in a
 separate X-11 terminal window so that commands and output from multiple
@@ -107161,7 +107346,7 @@
 Next: <a href="#perlvms-Command-line" accesskey="n" rel="next">perlvms Command 
line</a>, Previous: <a href="#perlvms-The-Perl-Forked-Debugger" accesskey="p" 
rel="prev">perlvms The Perl Forked Debugger</a>, Up: <a href="#perlvms" 
accesskey="u" rel="up">perlvms</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="PERL_005fVMS_005fEXCEPTION_005fDEBUG"></a>
-<h3 class="section">86.8 PERL_VMS_EXCEPTION_DEBUG</h3>
+<h3 class="section">87.8 PERL_VMS_EXCEPTION_DEBUG</h3>
 
 <p>The PERL_VMS_EXCEPTION_DEBUG being defined as &quot;ENABLE&quot; will cause 
the VMS
 debugger to be invoked if a fatal exception that is not otherwise
@@ -107192,7 +107377,7 @@
 Next: <a href="#perlvms-Perl-functions" accesskey="n" rel="next">perlvms Perl 
functions</a>, Previous: <a 
href="#perlvms-PERL_005fVMS_005fEXCEPTION_005fDEBUG" accesskey="p" 
rel="prev">perlvms PERL_VMS_EXCEPTION_DEBUG</a>, Up: <a href="#perlvms" 
accesskey="u" rel="up">perlvms</a> &nbsp; [<a href="#SEC_Contents" title="Table 
of contents" rel="contents">Contents</a>]</p>
 </div>
 <a name="Command-line"></a>
-<h3 class="section">86.9 Command line</h3>
+<h3 class="section">87.9 Command line</h3>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a 
href="#perlvms-I_002fO-redirection-and-backgrounding" accesskey="1">perlvms I/O 
redirection and backgrounding</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -107208,7 +107393,7 @@
 Next: <a href="#perlvms-Command-line-switches" accesskey="n" 
rel="next">perlvms Command line switches</a>, Up: <a 
href="#perlvms-Command-line" accesskey="u" rel="up">perlvms Command line</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="I_002fO-redirection-and-backgrounding"></a>
-<h4 class="subsection">86.9.1 I/O redirection and backgrounding</h4>
+<h4 class="subsection">87.9.1 I/O redirection and backgrounding</h4>
 
 <p>Perl for VMS supports redirection of input and output on the 
 command line, using a subset of Bourne shell syntax:
@@ -107244,7 +107429,7 @@
 Previous: <a href="#perlvms-I_002fO-redirection-and-backgrounding" 
accesskey="p" rel="prev">perlvms I/O redirection and backgrounding</a>, Up: <a 
href="#perlvms-Command-line" accesskey="u" rel="up">perlvms Command line</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Command-line-switches"></a>
-<h4 class="subsection">86.9.2 Command line switches</h4>
+<h4 class="subsection">87.9.2 Command line switches</h4>
 
 <p>The following command line switches behave differently under
 VMS than described in <a href="#perlrun-NAME">perlrun NAME</a>.  Note also 
that in order
@@ -107294,7 +107479,7 @@
 Next: <a href="#perlvms-Perl-variables" accesskey="n" rel="next">perlvms Perl 
variables</a>, Previous: <a href="#perlvms-Command-line" accesskey="p" 
rel="prev">perlvms Command line</a>, Up: <a href="#perlvms" accesskey="u" 
rel="up">perlvms</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Perl-functions"></a>
-<h3 class="section">86.10 Perl functions</h3>
+<h3 class="section">87.10 Perl functions</h3>
 
 <p>As of the time this document was last revised, the following 
 Perl functions were implemented in the VMS port of Perl 
@@ -107304,14 +107489,14 @@
     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,
+    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,
+    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,
@@ -107729,7 +107914,7 @@
 Next: <a href="#perlvms-Standard-modules-with-VMS_002dspecific-differences" 
accesskey="n" rel="next">perlvms Standard modules with VMS-specific 
differences</a>, Previous: <a href="#perlvms-Perl-functions" accesskey="p" 
rel="prev">perlvms Perl functions</a>, Up: <a href="#perlvms" accesskey="u" 
rel="up">perlvms</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Perl-variables"></a>
-<h3 class="section">86.11 Perl variables</h3>
+<h3 class="section">87.11 Perl variables</h3>
 
 <p>The following VMS-specific information applies to the indicated
 &quot;special&quot; Perl variables, in addition to the general information
@@ -107878,7 +108063,7 @@
 process-permanent files, such as <code>SYS$INPUT</code> and 
<code>SYS$OUTPUT</code>.
 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&rsquo;t
+if you want to use it. (In previous versions of Perl it wasn&rsquo;t
 possible to get the values of these logical names, as the null
 byte acted as an end-of-string marker)
 </p>
@@ -108029,7 +108214,7 @@
 Next: <a href="#perlvms-Revision-date" accesskey="n" rel="next">perlvms 
Revision date</a>, Previous: <a href="#perlvms-Perl-variables" accesskey="p" 
rel="prev">perlvms Perl variables</a>, Up: <a href="#perlvms" accesskey="u" 
rel="up">perlvms</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Standard-modules-with-VMS_002dspecific-differences"></a>
-<h3 class="section">86.12 Standard modules with VMS-specific differences</h3>
+<h3 class="section">87.12 Standard modules with VMS-specific differences</h3>
 
 <table class="menu" border="0" cellspacing="0">
 <tr><td align="left" valign="top">&bull; <a href="#perlvms-SDBM_005fFile" 
accesskey="1">perlvms SDBM_File</a>:</td><td>&nbsp;&nbsp;</td><td align="left" 
valign="top">
@@ -108043,7 +108228,7 @@
 Up: <a href="#perlvms-Standard-modules-with-VMS_002dspecific-differences" 
accesskey="u" rel="up">perlvms Standard modules with VMS-specific 
differences</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="SDBM_005fFile"></a>
-<h4 class="subsection">86.12.1 SDBM_File</h4>
+<h4 class="subsection">87.12.1 SDBM_File</h4>
 
 <p>SDBM_File works properly on VMS. It has, however, one minor
 difference. The database directory file created has a <samp>.sdbm_dir</samp>
@@ -108058,7 +108243,7 @@
 Next: <a href="#perlvms-AUTHOR" accesskey="n" rel="next">perlvms AUTHOR</a>, 
Previous: <a href="#perlvms-Standard-modules-with-VMS_002dspecific-differences" 
accesskey="p" rel="prev">perlvms Standard modules with VMS-specific 
differences</a>, Up: <a href="#perlvms" accesskey="u" rel="up">perlvms</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
 <a name="Revision-date"></a>
-<h3 class="section">86.13 Revision date</h3>
+<h3 class="section">87.13 Revision date</h3>
 
 <p>Please see the git repository for revision history.
 </p>
@@ -108068,8 +108253,8 @@
 <p>
 Previous: <a href="#perlvms-Revision-date" accesskey="p" rel="prev">perlvms 
Revision date</a>, Up: <a href="#perlvms" accesskey="u" rel="up">perlvms</a> 
&nbsp; [<a href="#SEC_Contents" title="Table of contents" 
rel="contents">Contents</a>]</p>
 </div>
-<a name="AUTHOR-32"></a>
-<h3 class="section">86.14 AUTHOR</h3>
+<a name="AUTHOR-31"></a>
+<h3 class="section">87.14 AUTHOR</h3>
 
 <p>Charles Bailey  address@hidden
 Craig Berry  address@hidden

Index: perldoc-all.html.gz
===================================================================
RCS file: /web/www/www/software/perl/manual/perldoc-all.html.gz,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
Binary files /tmp/cvsabfmma and /tmp/cvsukek25 differ

Index: perldoc-all.html_chapter.tar.gz
===================================================================
RCS file: /web/www/www/software/perl/manual/perldoc-all.html_chapter.tar.gz,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
Binary files /tmp/cvsysW88c and /tmp/cvsd8Tf38 differ

Index: perldoc-all.info.tar.gz
===================================================================
RCS file: /web/www/www/software/perl/manual/perldoc-all.info.tar.gz,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
Binary files /tmp/cvsFdtU4k and /tmp/cvsIOmhah differ

Index: perldoc-all.pdf
===================================================================
RCS file: /web/www/www/software/perl/manual/perldoc-all.pdf,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
Binary files /tmp/cvssAGEKp and /tmp/cvsNRInxm differ

Index: perldoc-all.texi.tar.gz
===================================================================
RCS file: /web/www/www/software/perl/manual/perldoc-all.texi.tar.gz,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
Binary files /tmp/cvslDN3bO and /tmp/cvsycLceL differ



reply via email to

[Prev in Thread] Current Thread [Next in Thread]