develooper Front page | perl.perl5.changes | Postings from April 2008

Change 33729: Integrate:

From:
Nicholas Clark
Date:
April 22, 2008 12:02
Subject:
Change 33729: Integrate:
Change 33729 by nicholas@mouse-mill on 2008/04/22 18:51:34

	Integrate:
	[ 33314]
	Subject: [PATCH pod/perlfunc.pod] sprintf "%+d"
	From: Abigail <abigail@abigail.be>
	Date: Thu, 14 Feb 2008 17:43:14 +0100
	Message-ID: <20080214164314.GA31694@abigail.be>
	
	[ 33328]
	Subject: Modulo operator and floating point numbers
	From: "Ken Williams" <kenahoo@gmail.com>
	Date: Sat, 16 Feb 2008 23:22:15 -0600
	Message-ID: <6a7ee8cc0802162122r4e59b93boee18b1f045b8954d@mail.gmail.com>
	
	[ 33333]
	Subject: [PATCH] was RE: [PATCH] re patch 33127: formatting for C<<{ bydepth => 1 }>>
	From: "Robin Barker" <Robin.Barker@npl.co.uk>
	Date: Mon, 18 Feb 2008 15:47:42 -0000
	Message-ID: <46A0F33545E63740BC7563DE59CA9C6D093A46@exchsvr2.npl.ad.local>
	
	plus another POD fix found by podchecker
	
	[ 33335]
	Visual C++ 2008 Express Edition is now out: update README.win32
	
	[ 33366]
	Subject: Re: [PATCH] POD fixes
	From: Vincent Pit <perl@profvince.com>
	Date: Sat, 23 Feb 2008 12:04:43 +0100
	Message-ID: <47BFFDCB.60107@profvince.com>
	
	[ 33402]
	Typo in doc, found by Kornel Umann.
	
	[ 33423]
	Fix some checkpod complaints.
	
	[ 33455]
	Subject: [PATCH pod/perlfaq.pod] Typo Fix
	From: chromatic <chromatic@wgz.org>
	Date: Sat, 8 Mar 2008 14:08:30 -0800
	Message-Id: <200803081408.30766.chromatic@wgz.org>
	
	[ 33462]
	Add investigating arenas for GP and MAGIC to perltodo.
	
	[ 33485]
	Add characters that VOS forbids in filenames, mentioned by Paul Green
	in private correspondence.
	
	[ 33558]
	Subject: Re: local $@ has an unwanted side effect
	From: "David Nicol" <davidnicol@gmail.com>
	Date: Fri, 21 Mar 2008 12:56:12 -0500
	Message-ID: <934f64a20803211056q5148027ava77af36f51c96418@mail.gmail.com>
	
	(with Tim Bunce's amendments)
	
	[ 33559]
	Subject: [perl #51964] Typo on regular expression at perlopentut manual page. 
	From: pancho@pancho.name (via RT) <perlbug-followup@perl.org>
	Date: Fri, 21 Mar 2008 03:31:04 -0700
	Message-ID: <rt-3.6.HEAD-25460-1206095463-311.51964-75-0@perl.org>
	
	[ 33569]
	Subject: [PATCH utils/dprofpp.PL] Typo Fixes
	From: chromatic <chromatic@wgz.org>
	Date: Wed, 26 Mar 2008 00:12:09 -0700
	Message-Id: <200803260012.09967.chromatic@wgz.org>
	
	[ 33570]
	Subject: Re: [PATCH] perlhack.pod update walkthrough
	From: "Leon Brocard" <acme@astray.com>
	Date: Wed, 26 Mar 2008 10:53:43 +0000
	Message-ID: <a92222c80803260353k6cae53eieea909aed0a967b5@mail.gmail.com>
	
	[ 33651]
	Subject: Re: [PATCH][NUDGE] Documentation fix for perlfunc/shutdown
	From: Paul Fenwick <pjf@perltraining.com.au>
	Date: Mon, 31 Mar 2008 22:53:04 +1100
	Message-ID: <47F0D0A0.8010801@perltraining.com.au>
	
	[ 33663]
	Subject: Re: TODOs (was Re: summer of code mentor applications starting (and ending) next week)
	From: Jim Cromie <jim.cromie@gmail.com>
	Message-ID: <47DFF884.80802@gmail.com>
	Date: Tue, 18 Mar 2008 11:14:44 -0600
	
	[all except the "squeeze the optree" suggestion]
	
	[ 33664]
	Subject: [PATCH] changes to perlsec.pod and call for removal of quicksort
	From: "John P. Linderman" <jpl@research.att.com>
	Date: Wed, 09 Apr 2008 08:32:31 -0400
	Message-Id: <200804091232.m39CWVkY33722822@raptor.research.att.com>
	
	[ 33670]
	Subject: [PATCH] perlclib.pod tweaks
	From: Vincent Pit <perl@profvince.com>
	Date: Sat, 12 Apr 2008 13:44:19 +0200
	Message-ID: <4800A093.3070502@profvince.com>
	
	[ 33680]
	Subject: perldata.pod typo
	From: "Starsinic, Kurt " <Kurt_Starsinic@ml.com>
	Date: Thu, 10 Apr 2008 12:28:26 -0400
	Message-ID: <6AF884BDF319934894BE33785C82362706B890BE@MLNYC729MB.amrs.win.ml.com>
	
	[ 33693]
	De-encode missed RFC 2047 encoded headers.
	
	[ 33708]
	Expand "repack the optree" and add "store the current PAD", which was
	something Dave and I talked about 2 weeks ago.
	
	[ 33712]
	Subject: [perl #52866] [PATCH] Missing period in perlintro 
	From: Matt Kraai (via RT) <perlbug-followup@perl.org>
	Date: Sun, 13 Apr 2008 21:01:50 -0700
	Message-ID: <rt-3.6.HEAD-23612-1208145708-1282.52866-75-0@perl.org>
	
	[ 33713]
	Subject: [perl #52860] [PATCH] Incorrect variable name in perlintro 
	From: Matt Kraai (via RT) <perlbug-followup@perl.org>
	Date: Sun, 13 Apr 2008 15:56:37 -0700
	Message-ID: <rt-3.6.HEAD-25460-1208127396-514.52860-75-0@perl.org>

Affected files ...

... //depot/maint-5.10/perl/Changes5.10#2 integrate
... //depot/maint-5.10/perl/Changes5.8#2 integrate
... //depot/maint-5.10/perl/README.win32#2 integrate
... //depot/maint-5.10/perl/lib/File/Basename.pm#3 integrate
... //depot/maint-5.10/perl/lib/File/Find.pm#4 integrate
... //depot/maint-5.10/perl/pod/perlclib.pod#2 integrate
... //depot/maint-5.10/perl/pod/perldata.pod#2 integrate
... //depot/maint-5.10/perl/pod/perlfaq.pod#2 integrate
... //depot/maint-5.10/perl/pod/perlfaq2.pod#2 integrate
... //depot/maint-5.10/perl/pod/perlfaq5.pod#2 integrate
... //depot/maint-5.10/perl/pod/perlfunc.pod#4 integrate
... //depot/maint-5.10/perl/pod/perlhack.pod#2 integrate
... //depot/maint-5.10/perl/pod/perlintro.pod#2 integrate
... //depot/maint-5.10/perl/pod/perlop.pod#4 integrate
... //depot/maint-5.10/perl/pod/perlopentut.pod#2 integrate
... //depot/maint-5.10/perl/pod/perlport.pod#4 integrate
... //depot/maint-5.10/perl/pod/perlreapi.pod#2 integrate
... //depot/maint-5.10/perl/pod/perlreguts.pod#2 integrate
... //depot/maint-5.10/perl/pod/perlsec.pod#3 integrate
... //depot/maint-5.10/perl/pod/perltodo.pod#7 integrate
... //depot/maint-5.10/perl/pod/perlxs.pod#3 integrate
... //depot/maint-5.10/perl/utils/dprofpp.PL#2 integrate

Differences ...

==== //depot/maint-5.10/perl/Changes5.10#2 (text) ====
Index: perl/Changes5.10
--- perl/Changes5.10#1~32696~	2007-12-22 01:39:03.000000000 -0800
+++ perl/Changes5.10	2008-04-22 11:51:34.000000000 -0700
@@ -2508,7 +2508,7 @@
 ____________________________________________________________________________
 [ 32144] By: rgs				   on 2007/10/19  10:32:39
 	Log: Subject: Re: [Diff] perlxstut.pod
-	     From: =?ISO-8859-1?Q?Ren=E9e_B=E4cker?= <renee.baecker@smart-websolutions.de>
+	     From: Renée Bäcker <renee.baecker@smart-websolutions.de>
 	     Date: Fri, 12 Oct 2007 10:29:50 +0200
 	     Message-ID: <470F307E.1030804@smart-websolutions.de>
      Branch: perl
@@ -3802,7 +3802,7 @@
 ____________________________________________________________________________
 [ 31960] By: rgs				   on 2007/09/25  08:37:13
 	Log: Subject: [patch] Dual-lifing constant.pm
-	     From: =?ISO-8859-1?Q?S=E9bastien_Aperghis-Tramoni?= <maddingue@free.fr>
+	     From: Sébastien Aperghis-Tramoni <maddingue@free.fr>
 	     Date: Tue, 25 Sep 2007 02:11:46 +0200
 	     Message-Id: <454B4D1C-48EE-4CA3-834A-A0F872C9E5FC@free.fr>
      Branch: perl
@@ -78943,7 +78943,7 @@
 [ 18750] By: hv					   on 2003/02/19  00:53:03
 	Log: more complex assertions activation:
 	     Subject: Re: Did the assertion patch/feature submission get overlooked?
-	     From: =?ISO-8859-1?Q?Salvador_Fandi=F1o?= <sfandino@yahoo.com>
+	     From: Salvador Fandiño <sfandino@yahoo.com>
 	     Date: Tue, 18 Feb 2003 19:24:13 +0000
 	     Message-ID: <3E52885D.5060903@yahoo.com>
      Branch: perl
@@ -79003,7 +79003,7 @@
 ____________________________________________________________________________
 [ 18739] By: hv					   on 2003/02/18  01:04:01
 	Log: Subject: Re: Did the assertion patch/feature submission get overlooked?
-	     From: =?ISO-8859-1?Q?Salvador_Fandi=F1o?= <sfandino@yahoo.com>
+	     From: Salvador Fandiño <sfandino@yahoo.com>
 	     Date: Mon, 17 Feb 2003 23:38:05 +0000
 	     Message-ID: <3E51725D.5060303@yahoo.com>
      Branch: perl
@@ -79082,7 +79082,7 @@
 [ 18727] By: hv					   on 2003/02/16  13:55:10
 	Log: add support for assertions. Updated form of:
 	     Subject: Re: Did the assertion patch/feature submission get overlooked?
-	     From: Salvador =?ISO-8859-1?Q?Fandi=F1o?= <sfandino@yahoo.com>
+	     From: Salvador Fandiño <sfandino@yahoo.com>
 	     Date: Sat, 30 Nov 2002 17:24:09 +0000
 	     Message-ID: <3DE8F439.50402@yahoo.com>
      Branch: perl
@@ -83784,7 +83784,7 @@
 ____________________________________________________________________________
 [ 17838] By: hv					   on 2002/09/04  13:41:27
 	Log: Subject: [PATCHes] Still no working Berkeley DB in OS X 10.2
-	     From: =?ISO-8859-1?Q?Kay_R=F6pke?= <kay@dolphin-services.de>
+	     From: Kay Röpke <kay@dolphin-services.de>
 	     Date: Tue, 3 Sep 2002 13:46:18 +0200
 	     Message-Id: <C287A20E-BF32-11D6-A454-000393414688@dolphin-services.de>
      Branch: perl

==== //depot/maint-5.10/perl/Changes5.8#2 (text) ====
Index: perl/Changes5.8
--- perl/Changes5.8#1~32694~	2007-12-22 01:23:09.000000000 -0800
+++ perl/Changes5.8	2008-04-22 11:51:34.000000000 -0700
@@ -21870,7 +21870,7 @@
 ____________________________________________________________________________
 [ 14706] By: ams				   on 2002/02/15  13:57:15
 	Log: Subject: Re: [ID 20020213.015] Pod::Html XHTML update for 5.7.2
-	     From: Ville =?ISO-8859-1?Q?Skytt=E4?= <ville.skytta@iki.fi>
+	     From: Ville Skyttä <ville.skytta@iki.fi>
 	     Date: 15 Feb 2002 10:53:06 +0200
 	     Message-Id: <1013763186.28457.6.camel@cs78130147.pp.htv.fi>
      Branch: perl

==== //depot/maint-5.10/perl/README.win32#2 (text) ====
Index: perl/README.win32
--- perl/README.win32#1~32694~	2007-12-22 01:23:09.000000000 -0800
+++ perl/README.win32	2008-04-22 11:51:34.000000000 -0700
@@ -135,21 +135,18 @@
 latter step is only essential if you want to use dmake as your default
 make for building extensions using MakeMaker.
 
-=item Microsoft Visual C++ 2008 Express Edition Beta 2
+=item Microsoft Visual C++ 2008 Express Edition
 
 This free version of Visual C++ 2008 Professional contains the same compiler
 and linker that ship with the full version, and also contains everything
 necessary to build Perl, rather than requiring a separate download of the
 Platform SDK like previous versions did.
 
-The Beta 2 package is currently available from 
-
-http://msdn2.microsoft.com/en-us/express/future/default.aspx
-http://msdn2.microsoft.com/en-gb/express/future/default.aspx
-
-The final release version will probably be found by searching in the Download
-Center at http://www.microsoft.com/downloads/search.aspx?displaylang=en in due
-course.
+This package can be downloaded by searching for "Visual Studio 2008 Express
+Edition" in the Download Center at
+http://www.microsoft.com/downloads/search.aspx?displaylang=en.  (Providing exact
+links to these packages has proven a pointless task because the links keep on
+changing so often.)
 
 Install Visual C++ 2008, then setup your environment using
 

==== //depot/maint-5.10/perl/lib/File/Basename.pm#3 (text) ====
Index: perl/lib/File/Basename.pm
--- perl/lib/File/Basename.pm#2~33640~	2008-04-03 09:03:24.000000000 -0700
+++ perl/lib/File/Basename.pm	2008-04-22 11:51:34.000000000 -0700
@@ -88,7 +88,7 @@
 C<qr//>) matched against the end of the $filename.  The matching
 portion is removed and becomes the $suffix.
 
-     # On Unix returns ("baz", "/foo/bar", ".txt")
+     # On Unix returns ("baz", "/foo/bar/", ".txt")
      fileparse("/foo/bar/baz.txt", qr/\.[^.]*/);
 
 If type is non-Unix (see C<fileparse_set_fstype()>) then the pattern

==== //depot/maint-5.10/perl/lib/File/Find.pm#4 (text) ====
Index: perl/lib/File/Find.pm
--- perl/lib/File/Find.pm#3~33640~	2008-04-03 09:03:24.000000000 -0700
+++ perl/lib/File/Find.pm	2008-04-22 11:51:34.000000000 -0700
@@ -84,7 +84,7 @@
 
 Reports the name of a directory only AFTER all its entries
 have been reported.  Entry point C<finddepth()> is a shortcut for
-specifying C<{ bydepth =E<gt> 1 }> in the first argument of C<find()>.
+specifying C<< { bydepth => 1 } >> in the first argument of C<find()>.
 
 =item C<preprocess>
 
@@ -241,7 +241,7 @@
               /etc/x             /etc              /etc/x
 
 
-When <follow> or <follow_fast> are in effect, there is
+When C<follow> or C<follow_fast> are in effect, there is
 also a C<$File::Find::fullname>.  The function may set
 C<$File::Find::prune> to prune the tree unless C<bydepth> was
 specified.  Unless C<follow> or C<follow_fast> is specified, for

==== //depot/maint-5.10/perl/pod/perlclib.pod#2 (text) ====
Index: perl/pod/perlclib.pod
--- perl/pod/perlclib.pod#1~32694~	2007-12-22 01:23:09.000000000 -0800
+++ perl/pod/perlclib.pod	2008-04-22 11:51:34.000000000 -0700
@@ -104,7 +104,7 @@
     p = realloc(p, n)           	Renew(p, n, t)
     memcpy(dst, src, n)         	Copy(src, dst, n, t)
     memmove(dst, src, n)        	Move(src, dst, n, t)
-    memcpy/*(struct foo *)      	StructCopy(src, dst, t)
+    memcpy(dst, src, sizeof(t))		StructCopy(src, dst, t)
     memset(dst, 0, n * sizeof(t))	Zero(dst, n, t)
     memzero(dst, 0)			Zero(dst, n, char)
     free(p)             	        Safefree(p)
@@ -176,9 +176,9 @@
 
     atof(s)                     Atof(s)
     atol(s)                     Atol(s)
-    strtod(s, *p)               Nothing.  Just don't use it.
-    strtol(s, *p, n)            Strtol(s, *p, n)
-    strtoul(s, *p, n)           Strtoul(s, *p, n)
+    strtod(s, &p)               Nothing.  Just don't use it.
+    strtol(s, &p, n)            Strtol(s, &p, n)
+    strtoul(s, &p, n)           Strtoul(s, &p, n)
 
 Notice also the C<grok_bin>, C<grok_hex>, and C<grok_oct> functions in
 F<numeric.c> for converting strings representing numbers in the respective

==== //depot/maint-5.10/perl/pod/perldata.pod#2 (text) ====
Index: perl/pod/perldata.pod
--- perl/pod/perldata.pod#1~32694~	2007-12-22 01:23:09.000000000 -0800
+++ perl/pod/perldata.pod	2008-04-22 11:51:34.000000000 -0700
@@ -418,7 +418,7 @@
 may be used to indicate the logical end of the script before the actual
 end of file.  Any following text is ignored.
 
-Text after __DATA__ but may be read via the filehandle C<PACKNAME::DATA>,
+Text after __DATA__ may be read via the filehandle C<PACKNAME::DATA>,
 where C<PACKNAME> is the package that was current when the __DATA__
 token was encountered.  The filehandle is left open pointing to the
 contents after __DATA__.  It is the program's responsibility to

==== //depot/maint-5.10/perl/pod/perlfaq.pod#2 (text) ====
Index: perl/pod/perlfaq.pod
--- perl/pod/perlfaq.pod#1~32694~	2007-12-22 01:23:09.000000000 -0800
+++ perl/pod/perlfaq.pod	2008-04-22 11:51:34.000000000 -0700
@@ -12,7 +12,7 @@
 
 The perlfaq comes with the standard Perl distribution, so if you have Perl
 you should have the perlfaq. You should also have the C<perldoc> tool
-that let's you read the L<perlfaq>:
+that lets you read the L<perlfaq>:
 
 	$ perldoc perlfaq
 

==== //depot/maint-5.10/perl/pod/perlfaq2.pod#2 (text) ====
Index: perl/pod/perlfaq2.pod
--- perl/pod/perlfaq2.pod#1~32694~	2007-12-22 01:23:09.000000000 -0800
+++ perl/pod/perlfaq2.pod	2008-04-22 11:51:34.000000000 -0700
@@ -408,7 +408,7 @@
 	by Richard Foley with Andy Lester
 	ISBN 1-59059-454-1 [1st edition July 2005]
 	http://www.apress.com/book/view/1590594541
-	
+
 =back
 
 =head2 Which magazines have Perl content?

==== //depot/maint-5.10/perl/pod/perlfaq5.pod#2 (text) ====
Index: perl/pod/perlfaq5.pod
--- perl/pod/perlfaq5.pod#1~32694~	2007-12-22 01:23:09.000000000 -0800
+++ perl/pod/perlfaq5.pod	2008-04-22 11:51:34.000000000 -0700
@@ -60,7 +60,7 @@
 	open my( $printer ), ">", "/dev/printer"); 
 	$printer->flush; # one time flush
 
-	
+
 =head2 How do I change, delete, or insert a line in a file, or append to the beginning of a file?
 X<file, editing>
 
@@ -541,7 +541,7 @@
 
 With older versions of Perl, the C<IO::String> module provides similar
 functionality.
-    
+
 =head2 How can I output my numbers with commas added?
 X<number, commify>
 

==== //depot/maint-5.10/perl/pod/perlfunc.pod#4 (text) ====
Index: perl/pod/perlfunc.pod
--- perl/pod/perlfunc.pod#3~33159~	2008-01-31 13:59:20.000000000 -0800
+++ perl/pod/perlfunc.pod	2008-04-22 11:51:34.000000000 -0700
@@ -1620,6 +1620,22 @@
 particular situation, you can just use symbolic references instead, as
 in case 6.
 
+The assignment to C<$@> occurs before restoration of localised variables,
+which means a temporary is required if you want to mask some but not all
+errors:
+
+    # alter $@ on nefarious repugnancy only
+    {
+       my $e;
+       {
+          local $@; # protect existing $@
+          eval { test_repugnancy() };
+          # $@ =~ /nefarious/ and die $@; # DOES NOT WORK
+          $@ =~ /nefarious/ and $e = $@;
+       }
+       die $e if defined $e
+    }
+
 C<eval BLOCK> does I<not> count as a loop, so the loop control statements
 C<next>, C<last>, or C<redo> cannot be used to leave or restart the block.
 
@@ -5088,6 +5104,10 @@
 disables the file descriptor in any forked copies in other
 processes.
 
+Returns C<1> for success. In the case of error, returns C<undef> if
+the first argument is not a valid filehandle, or returns C<0> and sets
+C<$!> for any other failure.
+
 =item sin EXPR
 X<sin> X<sine> X<asin> X<arcsine>
 
@@ -5587,8 +5607,8 @@
 
 one or more of:
 
-   space   prefix positive number with a space
-   +       prefix positive number with a plus sign
+   space   prefix non-negative number with a space
+   +       prefix non-negative number with a plus sign
    -       left-justify within the field
    0       use zeros, not spaces, to right-justify
    #       ensure the leading "0" for any octal,

==== //depot/maint-5.10/perl/pod/perlhack.pod#2 (text) ====
Index: perl/pod/perlhack.pod
--- perl/pod/perlhack.pod#1~32694~	2007-12-22 01:23:09.000000000 -0800
+++ perl/pod/perlhack.pod	2008-04-22 11:51:34.000000000 -0700
@@ -760,8 +760,11 @@
 resembles the code found in L<perlembed>; most of the real action takes
 place in F<perl.c>
 
+F<perlmain.c> is generated by L<writemain> from F<miniperlmain.c> at
+make time, so you should make perl to follow this along.
+
 First, F<perlmain.c> allocates some memory and constructs a Perl
-interpreter:
+interpreter, along these lines:
 
     1 PERL_SYS_INIT3(&argc,&argv,&env);
     2
@@ -790,16 +793,19 @@
 own C<malloc> as defined in F<malloc.c> if you selected that option at
 configure time.
 
-Next, in line 7, we construct the interpreter; this sets up all the
-special variables that Perl needs, the stacks, and so on.
+Next, in line 7, we construct the interpreter using perl_construct, 
+also in F<perl.c>; this sets up all the special variables that Perl 
+needs, the stacks, and so on.
 
 Now we pass Perl the command line options, and tell it to go:
 
     exitstatus = perl_parse(my_perl, xs_init, argc, argv, (char **)NULL);
-    if (!exitstatus) {
-        exitstatus = perl_run(my_perl);
-    }
+    if (!exitstatus)
+        perl_run(my_perl);
+
+    exitstatus = perl_destruct(my_perl);
 
+    perl_free(my_perl);
 
 C<perl_parse> is actually a wrapper around C<S_parse_body>, as defined
 in F<perl.c>, which processes the command line options, sets up any
@@ -3112,10 +3118,10 @@
 =head2 valgrind
 
 The excellent valgrind tool can be used to find out both memory leaks
-and illegal memory accesses.  As of August 2003 it unfortunately works
-only on x86 (ELF) Linux.  The special "test.valgrind" target can be used
-to run the tests under valgrind.  Found errors and memory leaks are
-logged in files named F<testfile.valgrind>.
+and illegal memory accesses.  As of version 3.3.0, Valgrind only
+supports Linux on x86, x86-64 and PowerPC.  The special "test.valgrind" 
+target can be used to run the tests under valgrind.  Found errors 
+and memory leaks are logged in files named F<testfile.valgrind>.
 
 Valgrind also provides a cachegrind tool, invoked on perl as:
 

==== //depot/maint-5.10/perl/pod/perlintro.pod#2 (text) ====
Index: perl/pod/perlintro.pod
--- perl/pod/perlintro.pod#1~32694~	2007-12-22 01:23:09.000000000 -0800
+++ perl/pod/perlintro.pod	2008-04-22 11:51:34.000000000 -0700
@@ -302,7 +302,7 @@
 Using C<my> in combination with a C<use strict;> at the top of
 your Perl scripts means that the interpreter will pick up certain common
 programming errors.  For instance, in the example above, the final
-C<print $b> would cause a compile-time error and prevent you from
+C<print $y> would cause a compile-time error and prevent you from
 running the program.  Using C<strict> is highly recommended.
 
 =head2 Conditional and looping constructs
@@ -659,7 +659,7 @@
 also available from CPAN.
 
 To learn how to install modules you download from CPAN, read
-L<perlmodinstall>
+L<perlmodinstall>.
 
 To learn how to use a particular module, use C<perldoc I<Module::Name>>.
 Typically you will want to C<use I<Module::Name>>, which will then give

==== //depot/maint-5.10/perl/pod/perlop.pod#4 (text) ====
Index: perl/pod/perlop.pod
--- perl/pod/perlop.pod#3~33610~	2008-03-30 16:20:46.000000000 -0700
+++ perl/pod/perlop.pod	2008-04-22 11:51:34.000000000 -0700
@@ -260,9 +260,11 @@
 Binary "/" divides two numbers.
 X</> X<slash>
 
-Binary "%" computes the division remainder of two numbers.  Given integer
+Binary "%" is the modulo operator, which computes the division
+remainder of its first argument with respect to its second argument.
+Given integer
 operands C<$a> and C<$b>: If C<$b> is positive, then C<$a % $b> is
-C<$a> minus the largest multiple of C<$b> that is not greater than
+C<$a> minus the largest multiple of C<$b> less than or equal to
 C<$a>.  If C<$b> is negative, then C<$a % $b> is C<$a> minus the
 smallest multiple of C<$b> that is not less than C<$a> (i.e. the
 result will be less than or equal to zero).  If the operands
@@ -273,14 +275,14 @@
 If the absolute value of the right operand (C<abs($b)>) is greater than
 or equal to C<(UV_MAX + 1)>, "%" computes the floating-point remainder
 C<$r> in the equation C<($r = $a - $i*$b)> where C<$i> is a certain
-integer that makes C<$r> should have the same sign as the right operand
+integer that makes C<$r> have the same sign as the right operand
 C<$b> (B<not> as the left operand C<$a> like C function C<fmod()>)
 and the absolute value less than that of C<$b>.
 Note that when C<use integer> is in scope, "%" gives you direct access
-to the modulus operator as implemented by your C compiler.  This
+to the modulo operator as implemented by your C compiler.  This
 operator is not as well defined for negative operands, but it will
 execute faster.
-X<%> X<remainder> X<modulus> X<mod>
+X<%> X<remainder> X<modulo> X<mod>
 
 Binary "x" is the repetition operator.  In scalar context or if the left
 operand is not enclosed in parentheses, it returns a string consisting

==== //depot/maint-5.10/perl/pod/perlopentut.pod#2 (text) ====
Index: perl/pod/perlopentut.pod
--- perl/pod/perlopentut.pod#1~32694~	2007-12-22 01:23:09.000000000 -0800
+++ perl/pod/perlopentut.pod	2008-04-22 11:51:34.000000000 -0700
@@ -307,7 +307,7 @@
 name into pipes.  For example, to autoprocess gzipped or compressed
 files by decompressing them with I<gzip>:
 
-    @ARGV = map { /^\.(gz|Z)$/ ? "gzip -dc $_ |" : $_  } @ARGV;
+    @ARGV = map { /\.(gz|Z)$/ ? "gzip -dc $_ |" : $_  } @ARGV;
 
 Or, if you have the I<GET> program installed from LWP,
 you can fetch URLs before processing them:

==== //depot/maint-5.10/perl/pod/perlport.pod#4 (text) ====
Index: perl/pod/perlport.pod
--- perl/pod/perlport.pod#3~33572~	2008-03-26 05:45:28.000000000 -0700
+++ perl/pod/perlport.pod	2008-04-22 11:51:34.000000000 -0700
@@ -1259,7 +1259,8 @@
 delimiting character, VOS files, directories, or links whose names
 contain a slash character cannot be processed.  Such files must be
 renamed before they can be processed by Perl.  Note that VOS limits
-file names to 32 or fewer characters.
+file names to 32 or fewer characters, file names cannot start with a
+C<-> character, or contain any character matching C<< tr/ !%&'()*+;<>?// >>
 
 The value of C<$^O> on VOS is "VOS".  To determine the architecture that
 you are running on without resorting to loading all of C<%Config> you

==== //depot/maint-5.10/perl/pod/perlreapi.pod#2 (text) ====
Index: perl/pod/perlreapi.pod
--- perl/pod/perlreapi.pod#1~32694~	2007-12-22 01:23:09.000000000 -0800
+++ perl/pod/perlreapi.pod	2008-04-22 11:51:34.000000000 -0700
@@ -334,7 +334,7 @@
 Get the C<length> of a capture variable. There's a special callback
 for this so that perl doesn't have to do a FETCH and run C<length> on
 the result, since the length is (in perl's case) known from an offset
-stored in C<<rx->offs> this is much more efficient:
+stored in C<< rx->offs >> this is much more efficient:
 
     I32 s1  = rx->offs[paren].start;
     I32 s2  = rx->offs[paren].end;

==== //depot/maint-5.10/perl/pod/perlreguts.pod#2 (text) ====
Index: perl/pod/perlreguts.pod
--- perl/pod/perlreguts.pod#1~32694~	2007-12-22 01:23:09.000000000 -0800
+++ perl/pod/perlreguts.pod	2008-04-22 11:51:34.000000000 -0700
@@ -385,7 +385,7 @@
 
 =head3 Debug Output
 
-In the 5.9.x development version of perl you can C<<use re Debug => 'PARSE'>>
+In the 5.9.x development version of perl you can C<< use re Debug => 'PARSE' >>
 to see some trace information about the parse process. We will start with some
 simple patterns and build up to more complex patterns.
 

==== //depot/maint-5.10/perl/pod/perlsec.pod#3 (text) ====
Index: perl/pod/perlsec.pod
--- perl/pod/perlsec.pod#2~33123~	2008-01-30 03:45:08.000000000 -0800
+++ perl/pod/perlsec.pod	2008-04-22 11:51:34.000000000 -0700
@@ -420,11 +420,11 @@
 language, not just Perl).
 
 If you're concerned about people profiting from your code, then the
-bottom line is that nothing but a restrictive licence will give you
+bottom line is that nothing but a restrictive license will give you
 legal security.  License your software and pepper it with threatening
 statements like "This is unpublished proprietary software of XYZ Corp.
 Your access to it does not give you permission to use it blah blah
-blah."  You should see a lawyer to be sure your licence's wording will
+blah."  You should see a lawyer to be sure your license's wording will
 stand up in court.
 
 =head2 Unicode
@@ -496,15 +496,14 @@
 
 Sorting - the quicksort algorithm used in Perls before 5.8.0 to
 implement the sort() function is very easy to trick into misbehaving
-so that it consumes a lot of time.  Nothing more is required than
-resorting a list already sorted.  Starting from Perl 5.8.0 a different
-sorting algorithm, mergesort, is used.  Mergesort is insensitive to
-its input data, so it cannot be similarly fooled.
+so that it consumes a lot of time.  Starting from Perl 5.8.0 a different
+sorting algorithm, mergesort, is used by default.  Mergesort cannot
+misbehave on any input.
 
 =back
 
 See L<http://www.cs.rice.edu/~scrosby/hash/> for more information,
-and any computer science textbook on the algorithmic complexity.
+and any computer science textbook on algorithmic complexity.
 
 =head1 SEE ALSO
 

==== //depot/maint-5.10/perl/pod/perltodo.pod#7 (text) ====
Index: perl/pod/perltodo.pod
--- perl/pod/perltodo.pod#6~33726~	2008-04-22 08:18:16.000000000 -0700
+++ perl/pod/perltodo.pod	2008-04-22 11:51:34.000000000 -0700
@@ -4,10 +4,11 @@
 
 =head1 DESCRIPTION
 
-This is a list of wishes for Perl. The tasks we think are smaller or easier
-are listed first. Anyone is welcome to work on any of these, but it's a good
-idea to first contact I<perl5-porters@perl.org> to avoid duplication of
-effort. By all means contact a pumpking privately first if you prefer.
+This is a list of wishes for Perl. The tasks we think are smaller or
+easier are listed first. Anyone is welcome to work on any of these,
+but it's a good idea to first contact I<perl5-porters@perl.org> to
+avoid duplication of effort, and to learn from any previous attempts.
+By all means contact a pumpking privately first if you prefer.
 
 Whilst patches to make the list shorter are most welcome, ideas to add to
 the list are also encouraged. Check the perl5-porters archives for past
@@ -529,6 +530,18 @@
 Configure and/or hints files should be adjusted to probe for the
 availability of these features and enable them as appropriate.
 
+=head2 Arenas for GPs? For MAGIC?
+
+C<struct gp> and C<struct magic> are both currently allocated by C<malloc>.
+It might be a speed or memory saving to change to using arenas. Or it might
+not. It would need some suitable benchmarking first. In particular, C<GP>s
+can probably be changed with minimal compatibility impact (probably nothing
+outside of the core, or even outside of F<gv.c> allocates them), but they
+probably aren't allocated/deallocated often enough for a speed saving. Whereas
+C<MAGIC> is allocated/deallocated more often, but in turn, is also something
+more externally visible, so changing the rules here may bite external code.
+
+
 =head1 Tasks that need a knowledge of XS
 
 These tasks would need C knowledge, and roughly the level of knowledge of
@@ -881,9 +894,42 @@
 =head2 Investigate PADTMP hash pessimisation
 
 The peephole optimier converts constants used for hash key lookups to shared
-hash key scalars. Under ithreads, something is undoing this work. See
+hash key scalars. Under ithreads, something is undoing this work.
 See http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2007-09/msg00793.html
 
+=head2 Store the current pad in the OP slab allocator
+
+=for clarification
+I hope that I got that "current pad" part correct
+
+Currently we leak ops in various cases of parse failure. I suggested that we
+could solve this by always using the op slab allocator, and walking it to
+free ops. Dave comments that as some ops are already freed during optree
+creation one would have to mark which ops are freed, and not double free them
+when walking the slab. He notes that one problem with this is that for some ops
+you have to know which pad was current at the time of allocation, which does
+change. I suggested storing a pointer to the current pad in the memory allocated
+for the slab, and swapping to a new slab each time the pad changes. Dave thinks
+that this would work.
+
+=head2 repack the optree
+
+Repacking the optree after execution order is determined could allow
+removal of NULL ops, and optimal ordering of OPs with respect to cache-line
+filling.  The slab allocator could be reused for this purpose.  I think that
+the best way to do this is to make it an optional step just before the
+completed optree is attached to anything else, and to use the slab allocator
+unchanged, so that freeing ops is identical whether or not this step runs.
+Note that the slab allocator allocates ops downwards in memory, so one would
+have to actually "allocate" the ops in reverse-execution order to get them
+contiguous in memory in execution order.
+
+See http://www.nntp.perl.org/group/perl.perl5.porters/2007/12/msg131975.html
+
+Note that running this copy, and then freeing all the old location ops would
+cause their slabs to be freed, which would eliminate possible memory wastage if
+the previous suggestion is implemented, and we swap slabs more frequently.
+
 =head2 eliminate incorrect line numbers in warnings
 
 This code
@@ -943,6 +989,24 @@
 (Although I should note that we're not certain that doing this for the general
 case is worth it)
 
+=head2 optimize tail-calls
+
+Tail-calls present an opportunity for broadly applicable optimization;
+anywhere that C<< return foo(...) >> is called, the outer return can
+be replaced by a goto, and foo will return directly to the outer
+caller, saving (conservatively) 25% of perl's call&return cost, which
+is relatively higher than in C.  The scheme language is known to do
+this heavily.  B::Concise provides good insight into where this
+optimization is possible, ie anywhere entersub,leavesub op-sequence
+occurs.
+
+ perl -MO=Concise,-exec,a,b,-main -e 'sub a{ 1 }; sub b {a()}; b(2)'
+
+Bottom line on this is probably a new pp_tailcall function which
+combines the code in pp_entersub, pp_leavesub.  This should probably
+be done 1st in XS, and using B::Generate to patch the new OP into the
+optrees.
+
 =head1 Big projects
 
 Tasks that will get your name mentioned in the description of the "Highlights

==== //depot/maint-5.10/perl/pod/perlxs.pod#3 (text) ====
Index: perl/pod/perlxs.pod
--- perl/pod/perlxs.pod#2~33120~	2008-01-30 02:33:34.000000000 -0800
+++ perl/pod/perlxs.pod	2008-04-22 11:51:34.000000000 -0700
@@ -2007,7 +2007,7 @@
 =item MY_CXT_CLONE
 
 By default, when a new interpreter is created as a copy of an existing one
-(eg via C<<threads->create()>>), both interpreters share the same physical
+(eg via C<< threads->create() >>), both interpreters share the same physical
 my_cxt_t structure. Calling C<MY_CXT_CLONE> (typically via the package's
 C<CLONE()> function), causes a byte-for-byte copy of the structure to be
 taken, and any future dMY_CXT will cause the copy to be accessed instead.

==== //depot/maint-5.10/perl/utils/dprofpp.PL#2 (text) ====
Index: perl/utils/dprofpp.PL
--- perl/utils/dprofpp.PL#1~32694~	2007-12-22 01:23:09.000000000 -0800
+++ perl/utils/dprofpp.PL	2008-04-22 11:51:34.000000000 -0700
@@ -337,13 +337,13 @@
     print <<'EOF';
 dprofpp [options] [profile]
 
-    -A          Count autoloaded to *AUTOLOAD
+    -A          Count autoloaded to *AUTOLOAD.
     -a          Sort by alphabetic name of subroutines.
-    -d          Reverse sort
+    -d          Reverse sort.
     -E          Sub times are reported exclusive of child times. (default)
-    -f          Filter all calls mathcing the pattern.
+    -f          Filter all calls matching the pattern.
     -G          Group all calls matching the pattern together.
-    -g subr     Count only those who are SUBR or called from SUBR
+    -g subr     Count only subs who are SUBR or called from SUBR.
     -H          Display long manual page.
     -h          Display this short usage message.
     -I          Sub times are reported inclusive of child times.
@@ -351,12 +351,12 @@
     -O cnt      Specifies maximum number of subroutines to display.
     -P          Used with -G to pull all other calls together.
     -p script   Specifies name of script to be profiled.
-    -Q          Used with -p to indicate the dprofpp should quit
+    -Q          Used with -p to indicate that dprofpp should quit
                 after profiling the script, without interpreting the data.
     -q          Do not print column headers.
-    -R          Count anonyms separately even if from the same package
+    -R          Count anonymous subs separately even if from the same package.
     -r          Use real elapsed time rather than user+system time.
-    -S          Create statistics for all the depths
+    -S          Create statistics for all the depths.
     -s          Use system time rather than user+system time.
     -T          Show call tree.
     -t          Show call tree, compressed.
End of Patch.



Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About