This is a live mirror of the Perl 5 development currently hosted at
10 years agoRevert "Revert "[perl #77496] tied gets scalars and globs confused""
Father Chrysostomos [Fri, 13 May 2011 15:29:42 +0000 (08:29 -0700)]
Revert "Revert "[perl #77496] tied gets scalars and globs confused""

This reverts commit b029825916bf29623e00b45fa4226fab0d52d217.

10 years agoRevert ‘Deprecate tie $handle without *’
Father Chrysostomos [Fri, 13 May 2011 15:24:16 +0000 (08:24 -0700)]
Revert ‘Deprecate tie $handle without *’

This reverts commit 7c7df8124bbdd7a0091f8ed82589548c8182f624,
except for the perldiag entry, which we still need for splain’s sake.

10 years agoAdd Porting/ to MANIFEST.
Nicholas Clark [Sat, 11 Jun 2011 17:21:01 +0000 (19:21 +0200)]
Add Porting/ to MANIFEST.

Also -x it, as it doesn't have a suitable #! line, and its peers are all -x.

10 years agoregexec.c: Remvove unnecessary special handling for \xDF
Karl Williamson [Wed, 4 May 2011 15:03:43 +0000 (09:03 -0600)]
regexec.c: Remvove unnecessary special handling for \xDF

regcomp.c has been changed, so the case that this handled no longer
comes up.

10 years agoTypo in VMS-specific realclean target from 6f83ef0e5a45c465f83de3304c5818ba44492250.
Craig A. Berry [Sat, 11 Jun 2011 16:25:30 +0000 (11:25 -0500)]
Typo in VMS-specific realclean target from 6f83ef0e5a45c465f83de3304c5818ba44492250.

10 years agoAdded Alan Haggai Alavi to AUTHORS
David Golden [Sat, 11 Jun 2011 16:24:57 +0000 (12:24 -0400)]
Added Alan Haggai Alavi to AUTHORS

10 years agoperlvar.pod: fixed typo
Alan Haggai Alavi [Sat, 11 Jun 2011 15:14:48 +0000 (20:44 +0530)]
perlvar.pod: fixed typo

Signed-off-by: David Golden <>
10 years agoCorrect errors in the use of multiple targets, which could break parallel make.
Nicholas Clark [Sun, 15 May 2011 16:20:42 +0000 (17:20 +0100)]
Correct errors in the use of multiple targets, which could break parallel make.

This was fixed in Makefile.SH in commit 0f13ebd5d71f8177.

10 years agoSort magic and magic vtable names in files generated by
Nicholas Clark [Sun, 15 May 2011 15:33:02 +0000 (16:33 +0100)]
Sort magic and magic vtable names in files generated by

Magic is sorted case insensitively, with upper case before lower case.
vtable names are all lowercase letters.

10 years agoGenerate magic_names in dump.c using
Nicholas Clark [Sun, 15 May 2011 15:25:34 +0000 (16:25 +0100)]
Generate magic_names in dump.c using

10 years agoGenerate the PERL_MAGIC_* defines using
Nicholas Clark [Sun, 15 May 2011 14:53:08 +0000 (15:53 +0100)]
Generate the PERL_MAGIC_* defines using

10 years agoIn PL_magic_data flag whether magic can be added to a readonly value.
Nicholas Clark [Sun, 15 May 2011 13:45:53 +0000 (14:45 +0100)]
In PL_magic_data flag whether magic can be added to a readonly value.

Use this to simplify the logic in Perl_sv_magic().

This introduces a small change of behaviour for error cases involving unknown
magic types. Previously, if Perl_sv_magic() was passed a magic type unknown to
it, it would

1: Croak "Modification of a read-only value attempted" if read only
2: Return without error if the SV happened to already have this magic
3: otherwise croak "Don't know how to handle magic of type \\%o"

Now it will always croak "Don't know how to handle magic of type \\%o", even
on read only values, or SVs which already have the unknown magic type.

10 years agoStore a flag for container/value magic in PL_magic_data.
Nicholas Clark [Sun, 15 May 2011 12:54:19 +0000 (13:54 +0100)]
Store a flag for container/value magic in PL_magic_data.

Use this to replace S_is_container_magic() in mg.c with a direct lookup.

10 years agoCreate a lookup table for magic vtables from magic type, PL_magic_data.
Nicholas Clark [Sun, 15 May 2011 12:21:09 +0000 (13:21 +0100)]
Create a lookup table for magic vtables from magic type, PL_magic_data.

Use it to eliminate the large switch statement in Perl_sv_magic().

As the table needs to be keyed on magic type, which is expressed as C character
constants, the order depends on the compiler's character set. Frustratingly,
EBCDIC variants don't agree on the code points for '~' and ']', which we use
here. Instead of having (at least) 4 tables, get the local runtime to sort the
table for us. Hence the regen script writes out the (unsorted) mg_raw.h, which
generate_uudmap sorts to generate mg_data.h

10 years agoRefactor generate_uudmap.c to use a helper function to output init blocks.
Nicholas Clark [Sun, 15 May 2011 11:02:28 +0000 (12:02 +0100)]
Refactor generate_uudmap.c to use a helper function to output init blocks.

In future, this will allow it to generate other output formats without
duplicating code.

10 years agoProvide the names of the magic vtables in PL_magic_vtable_names[].
Nicholas Clark [Sat, 14 May 2011 11:26:37 +0000 (12:26 +0100)]
Provide the names of the magic vtables in PL_magic_vtable_names[].

As it's a 1 to 1 mapping with the vtables in PL_magic_vtables[], refactor
Perl_do_magic_dump() to index into it directly to find the name for an
arbitrary mg_virtual, avoiding a long switch statement.

10 years agoReplace references to PL_vtbl_{bm,fm} in the code with PL_vtbl_regexp.
Nicholas Clark [Sat, 14 May 2011 08:41:18 +0000 (09:41 +0100)]
Replace references to PL_vtbl_{bm,fm} in the code with PL_vtbl_regexp.

Also, in Perl_sv_magic() merge the case for PERL_MAGIC_dbfile with the others
that return a NULL vtable.

10 years agoPL_vtbl_{bm,fm} can be aliases to PL_vtbl_regexp, instead of copies.
Nicholas Clark [Sat, 14 May 2011 08:16:30 +0000 (09:16 +0100)]
PL_vtbl_{bm,fm} can be aliases to PL_vtbl_regexp, instead of copies.

They became copies in 488344d27a84a21a, which merged Perl_magic_setbm() and
Perl_magic_setfm() into Perl_magic_setregexp().

10 years agoRefactor Perl_get_vtbl() to a small array lookup from a large switch statement.
Nicholas Clark [Fri, 13 May 2011 20:21:49 +0000 (21:21 +0100)]
Refactor Perl_get_vtbl() to a small array lookup from a large switch statement.

Provide magic_vtable_max, the number of elements in PL_magic_vtables[].

10 years agoTests for Perl_get_vtbl()
Nicholas Clark [Fri, 13 May 2011 20:06:29 +0000 (21:06 +0100)]
Tests for Perl_get_vtbl()

10 years agoReplace PL_vtbl_* with an array PL_magic_vtables.
Nicholas Clark [Fri, 13 May 2011 19:24:34 +0000 (20:24 +0100)]
Replace PL_vtbl_* with an array PL_magic_vtables.

Define each PL_vtbl_* name as a macro which expands to the correct array
element. Using a single array instead of multiple named variables will allow
the simplification of various pieces of code.

10 years agoGenerate the enum for want_vtbl_* with regen/
Nicholas Clark [Fri, 13 May 2011 17:02:08 +0000 (18:02 +0100)]
Generate the enum for want_vtbl_* with regen/

10 years agoRemove want_vtbl_{glob,symtab}, which aren't used and don't do anything useful.
Nicholas Clark [Fri, 13 May 2011 16:29:09 +0000 (17:29 +0100)]
Remove want_vtbl_{glob,symtab}, which aren't used and don't do anything useful.

Nothing visible on CPAN uses either. Passing either to Perl_get_vtbl() will
currently return NULL (as a runtime error, rather than a compile time error).

The case for want_vtbl_glob was removed from the switch in Perl_get_vtbl() in
c0c446747ad6c5bd (which eliminated the need for magic on typeglobs).
want_vtbl_symtab was added to the enum in perl.h with 8d2f45362e368d7d, but
no code was added to Perl_get_vtbl() as there is no corresponding vtable.

10 years agoMove the work of MGVTBL_SET() from the C pre-processor to
Nicholas Clark [Fri, 13 May 2011 15:50:51 +0000 (16:50 +0100)]
Move the work of MGVTBL_SET() from the C pre-processor to

Generating mg_vtable.h with MGVTBL_SET() effectively pre-expanded makes things
clearer. This eliminates use of the macro MGVTBL_SET(), which can be deleted
as nothing outside the core is relying on it.

10 years agoMove the cast for a magic vtable with const get into mg_vtable.h
Nicholas Clark [Fri, 13 May 2011 15:35:59 +0000 (16:35 +0100)]
Move the cast for a magic vtable with const get into mg_vtable.h

Putting the cast inside the initialiser (the only initialiser using it)
eliminates use of the macro MGVTBL_SET_CONST_MAGIC_GET(), which can be deleted
as nothing outside the core is relying on it.

10 years agoGenerate the definitions for magic vtables from data in a regen script.
Nicholas Clark [Fri, 13 May 2011 13:17:22 +0000 (14:17 +0100)]
Generate the definitions for magic vtables from data in a regen script.

Previously perl.h contained a long section of MGVTBL_SET() macros declaring
the core's various magic vtables. Convert the information into data structures
in a new script regen/, and use this to generate a new file
mg_vtable.h, included by perl.h

This is the first step in reducing the number of places that data relating to
magic vtables is declared (and has to be kept in sync), and will allow more
flexibility in parts of the core's implementation.

10 years agoAbolish PL_vtbl_sig. It's been all 0s since it was added in 5.0 alpha 2.
Nicholas Clark [Fri, 13 May 2011 11:36:44 +0000 (12:36 +0100)]
Abolish PL_vtbl_sig. It's been all 0s since it was added in 5.0 alpha 2.

Magic with a NULL vtable is equivalent to magic with a vtable of all 0s.
On CPAN, only Apache::Peek's code for 5.005 is referencing it.

10 years agoDon't even declare PL_vtbl_sigelem under -DPERL_MICRO
Nicholas Clark [Fri, 13 May 2011 10:39:18 +0000 (11:39 +0100)]
Don't even declare PL_vtbl_sigelem under -DPERL_MICRO

This turns out to be a simpler solution than 9ba75e3cf905a6e6.

10 years agoStore FBMs in PVMGs, instead of GVs.
Nicholas Clark [Tue, 24 May 2011 14:11:53 +0000 (15:11 +0100)]
Store FBMs in PVMGs, instead of GVs.

This should reduce the complexity of code dealing with GVs, as they no longer
try to play several different incompatible roles.

(As suggested by Ben Morrow. However, it didn't turn out to be as
straightforward as one might have hoped).

10 years agoStore the BM table in mg_ptr instead of after SvCUR().
Nicholas Clark [Wed, 18 May 2011 10:45:22 +0000 (11:45 +0100)]
Store the BM table in mg_ptr instead of after SvCUR().

Previously the 256 byte Boyer-Moore table was stored in the buffer of SvPVX()
after the raw string by extending the buffer.

Given that the scalar is alway upgraded to add PERL_MAGIC_bm magic, to clear
the table and other flags, there's no extra memory cost in using mg_ptr in the
MAGIC struct to point directly to the table.

I believe that this removes the last place in the core that stores data beyond

10 years agoExit early from Perl_fbm_compile() if the SV is already "compiled".
Nicholas Clark [Wed, 18 May 2011 09:49:43 +0000 (10:49 +0100)]
Exit early from Perl_fbm_compile() if the SV is already "compiled".

I believe that this can only happen if a constant subroutine is used more than
once as the second argument to index.

10 years agoIn Perl_fbm_instr(), use a switch() statement for the special case code.
Nicholas Clark [Tue, 17 May 2011 12:16:57 +0000 (13:16 +0100)]
In Perl_fbm_instr(), use a switch() statement for the special case code.

Previously the special-case code for lengths 0, 1 and 2 was in a nested set
of if() statements, which was slightly cryptic to read.

10 years agoIn Perl_fbm_compile(), use STRLEN instead of U32 to calculate BmPREVIOUS().
Nicholas Clark [Tue, 17 May 2011 11:28:36 +0000 (12:28 +0100)]
In Perl_fbm_compile(), use STRLEN instead of U32 to calculate BmPREVIOUS().

This should fix a theoretical bug on strings longer than 2**32 bytes where the
byte referenced by BmRARE() is at an offset beyond 2**32. I'm not sure how to
test this, as I think to trigger it one would need to have one of

a: the second argument to index as a string literal, longer than 2**32 bytes
b: a fixed string in a regex, longer than 2**32 bytes

10 years agoAbolish xbm_rare. Move BmUSEFUL() to union _xnvu and BmPREVIOUS() to the UV.
Nicholas Clark [Tue, 17 May 2011 09:26:49 +0000 (10:26 +0100)]
Abolish xbm_rare. Move BmUSEFUL() to union _xnvu and BmPREVIOUS() to the UV.

This reduces the complexity of the union declarations in sv.h.

As B.xs is accessing the structures/unions directly, instead of using the
macros, it needs a patch too.

10 years agoUse SvTAIL() instead of BmFLAGS(). The core no longer uses BmFLAGS().
Nicholas Clark [Mon, 9 May 2011 15:53:28 +0000 (16:53 +0100)]
Use SvTAIL() instead of BmFLAGS(). The core no longer uses BmFLAGS().

10 years agoEmulate the value of BmFLAGS() using SvTAIL().
Nicholas Clark [Mon, 9 May 2011 11:07:17 +0000 (12:07 +0100)]
Emulate the value of BmFLAGS() using SvTAIL().

Don't set BmFLAGS() in Perl_fbm_compile()

Originally fbm_compile() had an I32 flags argument, which seems to have been
part of case folding/locale improvements. bbce6d69784bf43b removed this.
SvTAIL() was only used in once place until c277df42229d99fe2779dcf1a3ceec16
added the U32 flags argument to fbm_compile(), not used until cf93c79d660ae36c.
That commit also added FBMcf_TAIL and FBMcf_TAIL{z,Z,DOLLAR} but didn't use the
last three. Additionally, it stored the BmFLAGS as part of the compiled table:

+       table[-1] = flags;              /* Not used yet */

f722798beaa43749 added FBMcf_TAIL_DOLLARM, renumbered FBMcf_TAIL{z,Z,DOLLAR},
but still didn't use anything other than FBMcf_TAIL.

The core, nothing on CPAN, and nothing visible to Google codesearch, has ever
used the 4 specialist flags. The only use is 0 or FBMcf_TAIL, which is in
lockstep with SvTAIL() of 0 or non-0.

10 years agoUse 0x40008000 in SvFLAGS() for SVpad_NAME, not 0x40000000
Nicholas Clark [Tue, 24 May 2011 10:17:13 +0000 (11:17 +0100)]
Use 0x40008000 in SvFLAGS() for SVpad_NAME, not 0x40000000

This eliminates potential confusion between SVpad_NAME and SVpbm_VALID.

10 years agoTest that SvFLAGS() & SVpad_NAME is SVpad_NAME, not just non-zero.
Nicholas Clark [Tue, 24 May 2011 09:59:01 +0000 (10:59 +0100)]
Test that SvFLAGS() & SVpad_NAME is SVpad_NAME, not just non-zero.

In Perl_find_rundefsv() and PAD_COMPNAME_FLAGS_isOUR(), replace longhand flags
test with SvPAD_OUR().

10 years agoDon't fbm_compile() studied scalars, to give more flexibility in SV flag usage.
Nicholas Clark [Mon, 23 May 2011 20:52:40 +0000 (21:52 +0100)]
Don't fbm_compile() studied scalars, to give more flexibility in SV flag usage.

No real-world code would ever end up using a studied scalar as a compile-time
second argument to index, so this isn't a real pessimisation.

10 years agoDon't allow study on an FBM scalar, to give more flexibility in SV flag usage.
Nicholas Clark [Mon, 23 May 2011 20:36:06 +0000 (21:36 +0100)]
Don't allow study on an FBM scalar, to give more flexibility in SV flag usage.

No real-world code would ever end up studying an FBM scalar, so this isn't a
real pessimisation.

10 years agoTest dumping studied scalars.
Nicholas Clark [Mon, 23 May 2011 20:18:51 +0000 (21:18 +0100)]
Test dumping studied scalars.

10 years agoPerl_do_sv_dump() shouldn't show "IV" for a FBM, as it's not valid.
Nicholas Clark [Mon, 23 May 2011 20:01:37 +0000 (21:01 +0100)]
Perl_do_sv_dump() shouldn't show "IV" for a FBM, as it's not valid.

The memory is used for part of the FBM state.

Tidy the order of conditions in the if() determining whether the IV/UV should
be shown.

10 years agoIn Perl_sv_2[inu]v_flags(), use the non-caching code whenever SvVALID() is true
Nicholas Clark [Mon, 23 May 2011 17:14:45 +0000 (18:14 +0100)]
In Perl_sv_2[inu]v_flags(), use the non-caching code whenever SvVALID() is true

Previous the non-caching code was only used when SvVALID() was true on a PVGV.
However, PVLVs can also perform all the roles of a PVGV, so could conceivably
be acting as FBMs. As it's safe to test SvVALID() on any scalar SV, do so, as
the compiler can combine the flag test for SvVALID() with that for
SvGMAGICAL(), producing tighter object code.

10 years agoIn IPC::Open3, inline xfork() and xclose_on_exec(), and delete xpipe_anon().
Nicholas Clark [Tue, 7 Jun 2011 11:17:40 +0000 (13:17 +0200)]
In IPC::Open3, inline xfork() and xclose_on_exec(), and delete xpipe_anon().

All three functions are private, undocumented, unexported, and un(ab)used by
any code on CPAN. The first two are used in only one place, so inline them.
The third was added in 8960aa876f446ad2, without adding any code which used it,
and it has remained unused ever since.

10 years agoIn IPC::Open3::_open(), refactor the DO_SPAWN code to loop over @handles.
Nicholas Clark [Tue, 7 Jun 2011 11:00:33 +0000 (13:00 +0200)]
In IPC::Open3::_open(), refactor the DO_SPAWN code to loop over @handles.

10 years agoIn IPC::Open3::_open(), refactor the fork/exec code to loop over @handles.
Nicholas Clark [Tue, 7 Jun 2011 10:37:28 +0000 (12:37 +0200)]
In IPC::Open3::_open(), refactor the fork/exec code to loop over @handles.

10 years agoIn IPC::Open3::_open(), refactor the common code into loops over @handles.
Nicholas Clark [Mon, 6 Jun 2011 18:45:13 +0000 (20:45 +0200)]
In IPC::Open3::_open(), refactor the common code into loops over @handles.

As fh_is_fd() is now used in only one location, inline it. (This function isn't
exported, isn't documented, and isn't (ab)used by anything on CPAN.)

10 years agoIn IPC::Open3::_open(), switch from 'r' and 'w' to '<' and '>'.
Nicholas Clark [Mon, 6 Jun 2011 17:48:03 +0000 (19:48 +0200)]
In IPC::Open3::_open(), switch from 'r' and 'w' to '<' and '>'.

IO::Handle accepts either, but open only accepts the latter.

In spawn_with_handles(), hoist the C<require Fcntl> into the only block that
needs it - this avoids loading Fcntl on Win32.

10 years agoUse $handles[2]{dup_of_out} for the special case code for shared STD{OUT,ERR}.
Nicholas Clark [Mon, 6 Jun 2011 17:19:29 +0000 (19:19 +0200)]
Use $handles[2]{dup_of_out} for the special case code for shared STD{OUT,ERR}.

As C<dup_of_out> is never set on the other two members of @handles, this will
allow code simplification.

10 years agoIn IPC::Open3::_open3(), move $kid_{rdr,wtr,err} to @handles.
Nicholas Clark [Mon, 6 Jun 2011 16:26:35 +0000 (18:26 +0200)]
In IPC::Open3::_open3(), move $kid_{rdr,wtr,err} to @handles.

Switch to 3-arg open where code is changing.

10 years agoIn IPC::Open3::_open3(), move $dup_{wtr,rdr,err} to @handles.
Nicholas Clark [Mon, 6 Jun 2011 16:02:33 +0000 (18:02 +0200)]
In IPC::Open3::_open3(), move $dup_{wtr,rdr,err} to @handles.

10 years agoIn IPC::Open3::_open3(), move $dad_{wtr,rdr,err} to @handles.
Nicholas Clark [Mon, 6 Jun 2011 15:11:35 +0000 (17:11 +0200)]
In IPC::Open3::_open3(), move $dad_{wtr,rdr,err} to @handles.

Switch to 3-arg open where code is changing. Additionally, @_ can now be used
in place of @cmd.

10 years agoMove the table describing file handles near to the top of IPC::Open::open3().
Nicholas Clark [Mon, 6 Jun 2011 13:02:22 +0000 (15:02 +0200)]
Move the table describing file handles near to the top of IPC::Open::open3().

Also convert fileno BAREWORD to fileno \*BAREWORD. These will aid future

10 years agoMove the autovivification emulation code to the top of IPC::Open3::_open3().
Nicholas Clark [Mon, 6 Jun 2011 12:43:56 +0000 (14:43 +0200)]
Move the autovivification emulation code to the top of IPC::Open3::_open3().

This avoids having to re-assign to the scalars $dad_wtr and $dad_rdr.

10 years agoRefactor IPC::Open3::_open3() to find the caller's package itself.
Nicholas Clark [Mon, 6 Jun 2011 12:29:19 +0000 (14:29 +0200)]
Refactor IPC::Open3::_open3() to find the caller's package itself.

Previously it was passed in as a parameter by IPC::Open2::open2() and
IPC::Open3::open3(), each of which used C<calller> to find it. Move the use of
caller to one place.

It would also be possible to use C<caller> to eliminate the first parameter to
_open3(), but this would add more code than it removes, so doesn't seem wise.

10 years agoIPC::Open3::open3() couldn't duplicate numeric file descriptors on Windows.
Nicholas Clark [Sun, 5 Jun 2011 17:47:32 +0000 (19:47 +0200)]
IPC::Open3::open3() couldn't duplicate numeric file descriptors on Windows.

10 years agoAvoid an uninitialized hash key in IPC::Open::spawn_with_handles().
Nicholas Clark [Sun, 5 Jun 2011 14:31:02 +0000 (16:31 +0200)]
Avoid an uninitialized hash key in IPC::Open::spawn_with_handles().

10 years agoIPC::Open3::open3() shouldn't fail if any of *STD{IN,OUT,ERR} are localized.
Nicholas Clark [Sun, 5 Jun 2011 13:58:39 +0000 (15:58 +0200)]
IPC::Open3::open3() shouldn't fail if any of *STD{IN,OUT,ERR} are localized.

Previously it would fail on Win32, because spawn_with_handles() would attempt
to duplicate all three, ignoring failures at this point, but then report
failure to close any as a fatal error, even if this was because the earlier
dup-ing had failed.

Also avoid a warning in the *nix code path in open3() if STDERR is localized
(and hence fileno STDERR is undefined).

10 years agoAdd debug code to test IPC::Open3::spawn_with_handles() on *nix.
Nicholas Clark [Sun, 5 Jun 2011 13:01:13 +0000 (15:01 +0200)]
Add debug code to test IPC::Open3::spawn_with_handles() on *nix.

This allows testing of the (normally) Win32 and OS/2 specific code paths in

10 years agoIn IPC::Open3::_open(), use 3 argument open to avoid a special case for STDERR.
Nicholas Clark [Mon, 6 Jun 2011 20:45:46 +0000 (22:45 +0200)]
In IPC::Open3::_open(), use 3 argument open to avoid a special case for STDERR.

The code for STDIN and STDOUT never ends up needing to duplicate a reference.
The code for STDERR can, because of the earlier special case code to save
STDOUT. It was special-cased to use fileno in commit 8b3e92c60014b4e7, in 1998.
This was before 3 argument open. With 3 argument open the special case can be

10 years agoGeneralise IPC::Open3::xopen() to $n-argument open.
Nicholas Clark [Mon, 6 Jun 2011 14:16:37 +0000 (16:16 +0200)]
Generalise IPC::Open3::xopen() to $n-argument open.

Previously it could only perform 2 argument open.

10 years agoSimplify the test for IPC::Open bug RT #72016.
Nicholas Clark [Sun, 5 Jun 2011 15:06:14 +0000 (17:06 +0200)]
Simplify the test for IPC::Open bug RT #72016.

The original bug was a request that errors be reported in the parent process,
with a TODO test, and then a patch that added the feature for the !DO_SPAWN
case, and removed the TODO. The *implication* of the bug report and the way the
original test was only TODO for the !DO_SPAWN case was that errors were
reported inconsistently between the two code paths of open3().

However, this is not the case - the DO_SPAWN path through open3() return a
(pseudo) PID (and no error) when asked to run a non-existent program. Hence
there is now a feature discrepancy between the alternative implementations,
which feels like a bug that should (ultimately) be addressed.

The original test could have expressed that more directly with one code path
and a TODO. The refactoring of bd29e8c290c68f4f failed to spot this, and
introduced new logic errors in the DO_SPAWN path - waitpid() should not be
called if $@ is set.

Set $pid outside the eval {} - this makes sure it is (re)set to undef if the
eval fails, instead of holding its previous (now bogus) value.

10 years agoRevert "Regenerate known_pod_issues.dat"
Father Chrysostomos [Fri, 10 Jun 2011 20:31:43 +0000 (13:31 -0700)]
Revert "Regenerate known_pod_issues.dat"

This reverts commit a15bfc9e2304470503968445191dc51fa75f3b82.

I was two hours too late. Commit 2592f3b8 solved this before I
pushed that change.

10 years agoMerge branch 'blead' of ssh:// into blead
Leon Brocard [Fri, 10 Jun 2011 20:28:21 +0000 (21:28 +0100)]
Merge branch 'blead' of ssh:// into blead

10 years agoUpdate the list of CPAN mirrors in pod/perlmodlib.PL
Leon Brocard [Fri, 10 Jun 2011 20:28:08 +0000 (21:28 +0100)]
Update the list of CPAN mirrors in pod/perlmodlib.PL

10 years agoCorrect example commit in release_managers_guide.pod; add example
Father Chrysostomos [Fri, 10 Jun 2011 20:27:21 +0000 (13:27 -0700)]
Correct example commit in release_managers_guide.pod; add example

The 8891dd8d commit mentioned in the perlNNNdelta section is actually
an example of a perl version bump.  So I’ve copied it to that section
and replaced the commit id in the perlNNNdelta section with dd885b5,
which *is* a perlNNNdelta TOC update.

10 years agoRegenerate known_pod_issues.dat
Father Chrysostomos [Fri, 10 Jun 2011 20:20:23 +0000 (13:20 -0700)]
Regenerate known_pod_issues.dat

I think there’s a bug in podchecker, as it seems to be counting octets
instead of characters in

10 years agoAdd program which generates the list of registered CPAN sites in perlmodlib.PL
Leon Brocard [Fri, 10 Jun 2011 20:27:29 +0000 (21:27 +0100)]
Add program which generates the list of registered CPAN sites in perlmodlib.PL

10 years agounused variable tmpgv
Robin Barker [Fri, 10 Jun 2011 05:47:54 +0000 (06:47 +0100)]
unused variable tmpgv

gcc reports an unused variable 'tmpgv', this was left
behind by commit 0e21945565eb4664d843bb819fb032cedee4d5a6.
Deleting the declaration has no consequences.

Signed-off-by: David Golden <>
10 years agoShow diagnostic link format in perldelta template
David Golden [Fri, 10 Jun 2011 15:55:56 +0000 (11:55 -0400)]
Show diagnostic link format in perldelta template

10 years agopodcheck.t: decode verbatim paragraphs before checking length
David Golden [Fri, 10 Jun 2011 17:54:35 +0000 (13:54 -0400)]
podcheck.t: decode verbatim paragraphs before checking length

10 years agoPartial perldelta update through 9603df1
David Golden [Fri, 10 Jun 2011 16:59:26 +0000 (12:59 -0400)]
Partial perldelta update through 9603df1

Additional documentation related entries have not yet been added

10 years agogit-deltatool: show progress only for interactive modes
David Golden [Fri, 10 Jun 2011 15:53:16 +0000 (11:53 -0400)]
git-deltatool: show progress only for interactive modes

10 years agoSuppress proto warning from attrs.t
Father Chrysostomos [Fri, 10 Jun 2011 17:54:20 +0000 (10:54 -0700)]
Suppress proto warning from attrs.t

attributes::get was being called before was loaded.
Why this did not warn before I know not. Maybe that’s another bug....

10 years agoperldata: Link directly to $;
Father Chrysostomos [Fri, 10 Jun 2011 16:48:06 +0000 (09:48 -0700)]
perldata: Link directly to $;

10 years agoAdd another address for Ian Goodacre
Father Chrysostomos [Fri, 10 Jun 2011 16:46:37 +0000 (09:46 -0700)]
Add another address for Ian Goodacre

10 years agoDocument multi-dimensional array emulation.
Ian Goodacre [Fri, 10 Jun 2011 09:47:38 +0000 (21:47 +1200)]
Document multi-dimensional array emulation.

10 years agoWe'll no longer add RCs to perlhist.pod
Jesse Vincent [Fri, 10 Jun 2011 14:36:41 +0000 (10:36 -0400)]
We'll no longer add RCs to perlhist.pod

10 years agoUpdate irc and tw mongers links.
Chia-liang Kao [Fri, 10 Jun 2011 11:36:38 +0000 (19:36 +0800)]
Update irc and tw mongers links.

10 years agoconvert to utf-8
Chia-liang Kao [Fri, 10 Jun 2011 11:31:21 +0000 (19:31 +0800)]
convert to utf-8

10 years agoBenchmart.t: improved diagnostics
David Mitchell [Fri, 10 Jun 2011 13:07:28 +0000 (14:07 +0100)]
Benchmart.t: improved diagnostics

use diag() to show absolutely all variables on failing the
notorious test 15. Maybe this will help nail it one day...

10 years agoUpdate Porting/core-cpan-diff to use HTTP::Tiny
Leon Brocard [Fri, 10 Jun 2011 09:34:41 +0000 (10:34 +0100)]
Update Porting/core-cpan-diff to use HTTP::Tiny

10 years agoScalar keys assignment through lvalue subs
Father Chrysostomos [Fri, 10 Jun 2011 04:24:01 +0000 (21:24 -0700)]
Scalar keys assignment through lvalue subs

This used not to work:

   sub foo :lvalue { keys %wallet }
   foo = 37;

Now it does. It was just a matter of following the right code path in
op_lvalue when the parent op is a leavesublv instead of a sassign.

10 years agoIn B::Concise and op.h list all ops that use LVSUB
Father Chrysostomos [Fri, 10 Jun 2011 01:12:54 +0000 (18:12 -0700)]
In B::Concise and op.h list all ops that use LVSUB

keys doesn’t actually use it yet, but it will soon.

10 years ago[perl #92542] perl5134delta.pod has a repeated word word
Pau Amma [Thu, 9 Jun 2011 21:45:01 +0000 (14:45 -0700)]
[perl #92542] perl5134delta.pod has a repeated word word

10 years agot/op/sselect.t: reduce random failures (hopefully)
David Mitchell [Thu, 9 Jun 2011 15:50:50 +0000 (16:50 +0100)]
t/op/sselect.t: reduce random failures (hopefully)

Use Time::HiRes if available to get more accurate times,
and extend the 'select(,,,N) may sleep for less than N' fudge to all
platforms, not just Windows, on the grounds that reportedly other OSes
suffer from this problem too. However, if HiRes is available, make the
'under' margin only 0.1s rather than 1s.

10 years agot/op/sselect.t: add descriptions to ok() tests
David Mitchell [Thu, 9 Jun 2011 15:15:36 +0000 (16:15 +0100)]
t/op/sselect.t: add descriptions to ok() tests

10 years agot/op/alarm.t: reduce intermittent failures
David Mitchell [Thu, 9 Jun 2011 14:51:54 +0000 (15:51 +0100)]
t/op/alarm.t: reduce intermittent failures

Fix a race condition where the alarm is reset *after* the handler
and an eval have been removed.

Also, make the points at which time is measured closer to the things
they need to measure, to reduce timing noise on a heavily-loaded system.

Hopefully these measures will reduce the number of random smoke failures,
although I couldn't reproduce the failures, even on a heavily-loaded

10 years agoUpdates to perldelta for all the updated CPAN modules.
Chris 'BinGOs' Williams [Thu, 9 Jun 2011 11:16:14 +0000 (12:16 +0100)]
Updates to perldelta for all the updated CPAN modules.

10 years agoUpdated JSON-PP to CPAN version 2.27200
Chris 'BinGOs' Williams [Sun, 22 May 2011 07:55:45 +0000 (08:55 +0100)]
Updated JSON-PP to CPAN version 2.27200


  2.27200  Sun May 22 12:17:51 2011
    - fixed incr_parse docodeing string more correctly (rt#68032 by LCONS)

10 years agoUpdated Encode to CPAN version 2.43
Chris 'BinGOs' Williams [Sat, 21 May 2011 23:33:51 +0000 (00:33 +0100)]
Updated Encode to CPAN version 2.43


  $Revision: 2.43 $ $Date: 2011/05/21 23:14:43 $
  ! lib/Encode/
    Addressed RT#68361: Encode::Bytes x-mac-... aliases missing
    Applied the 0001-Fix-typo-in-pod.patch
    Addressed RT#65796 Deep recursion error finding invalid charset
    Applied a jumbo doc patch by Tom Christiansen
    Message-Id: <14795.1304618434@chthon>

10 years agoUpdated Unicode-Collate to CPAN version 0.76
Chris 'BinGOs' Williams [Wed, 18 May 2011 23:41:54 +0000 (00:41 +0100)]
Updated Unicode-Collate to CPAN version 0.76


  0.76  Sun May 15 10:06:59 2011
    - updated CJK/ and CJK/ according to CLDR 1.9.1 using
      type='pinyin' alt='short' and type='stroke' alt='short' respectively.

  0.75  Sat May  7 21:07:38 2011
    - supported ignore_level2 and rewrite.
    - Added iglevel2.t and rewrite.t in t.

  0.74  Mon Mar 21 19:07:38 2011
    - removed sw (Swahili) collation according to CLDR 1.9.
        (removed files: Collate/Locale/ and data/sw.txt)
    - shifted primary weights of letters > Z for some languages.
        (affected locales: da, fi, fo, kl, nb, nn, sv)

10 years agoUpdated Unicode-Normalize to CPAN version 1.12
Chris 'BinGOs' Williams [Wed, 18 May 2011 23:34:57 +0000 (00:34 +0100)]
Updated Unicode-Normalize to CPAN version 1.12


  1.12  Mon May 16 23:36:07 2011
    - removed Normalize/ and Composition Exclusions are coded;
      how to load seems not good, but I'm not sure...

  1.11  Sun May 15 20:31:09 2011
    - As perl 5.14.0 has removed unicore/CompositionExclusions.txt
      in the installation, Normalize/ in this distribution
      is used instead. (see [ #68106])

10 years agoUpdated Sys-Syslog to CPAN version 0.29
Chris 'BinGOs' Williams [Wed, 18 May 2011 23:31:23 +0000 (00:31 +0100)]
Updated Sys-Syslog to CPAN version 0.29


  0.29 -- 2011.04.18 -- Sebastien Aperghis-Tramoni (SAPER) #PerlQA2011
        [BUGFIX] CPAN-RT#55215: Sys::Syslog might call exit which triggers
        DESTROY (Alexander Berger).
        [BUGFIX] CPAN-RT#55151: Allow temporary facility with native mechanism
        (Tim Jenkins).
        [BUGFIX] CPAN-RT#50928: Convert Win32 files to Unix EOLs (Steve Hay).
        [BUGFIX] CPAN-RT#50534: Unwanted space at the end of syslog message
        (Eugene V. Lyubimkin).
        [BUGFIX] CPAN-RT#49877: Options not reset after closelog() (Herbert Brezina).
        [BUGFIX] CPAN-RT#48386: Add Win32::EventLog as a prerequisite (kmx and
        Laurent Dami).
        [FEATURE] CPAN-RT#50534: Added options noeol and nonul.
        [DIST] Set INSTALLDIRS to "site" when installed on Perl 5.11+

  0.28 -- 2011.04.16 -- Sebastien Aperghis-Tramoni (SAPER) #PerlQA2011
        [BUGFIX] CPAN-RT#56084: Reset connection tracking vars (Vladimir Marek).
        [BUGFIX] CPAN-RT#56826: Avoid memory corruption when closelog() is
        called twice (Andreas Jaekel).
        [BUGFIX] CPAN-RT#64287: Make strftime() Windows-compatible (Dave Stafford).
        [FEATURE] New API for setlogsock(), in order to allow the setting
        of new options. Thanks to Jake Scott for the idea.
        [CODE] Modify can_load() so it can print the warnings if desired.
        [CODE] CPAN-RT#44410: Provide fallback macros in Syslog.xs in
        order to compile on Novell Netware.
        [TESTS] In blead, the distribution was moved from ext/Sys/Syslog
        to ext/Sys-Syslog. t/constants.t had to be fixed (Vincent Pit).
        [TESTS] CPAN-RT#53317: In core, Sys-Syslog was moved to cpan/, thus
        making t/constants.t unable to find macros.all (David Mitchell).
        [TESTS] CPAN-RT#64716: Skip t/data-validation.t if the available
        version of POE::Component::Server::Syslog is too old.
        [DIST] Bleadperl no longer require an empty MAN3PODS (Nicholas Clark).
        [DIST] Removed unneeded modules in Makefile.PL (Nicholas Clark).
        [DOC] Recreated Sys::Syslog history from the unified git repository.
        [DOC] Added a section to list the matching Perl and Sys::Syslog version.
        [DOC] CPAN-RT#49859: Removed a dead link (Leon Brocard).

10 years agoUpdated Filter-Util-Call to CPAN version 1.39
Chris 'BinGOs' Williams [Wed, 18 May 2011 20:50:14 +0000 (21:50 +0100)]
Updated Filter-Util-Call to CPAN version 1.39


  1.39 30 April 2011

  * Fix decrypt to work with Perl 5.14
    [RT #67656]

  1.38 24 April 2011

  * Versions being seperate from Module versions results in dependency confusion
    Bumped all versions to match the distribution version number.
    [RT #67655]

  * Fix decrypt to work with Perl 5.14
    [RT #67656]

  * Update the Filter-Simple URL
    [RT #49778]

10 years agoUpdate DB_File to CPAN version 1.822
Chris 'BinGOs' Williams [Wed, 18 May 2011 20:35:23 +0000 (21:35 +0100)]
Update DB_File to CPAN version 1.822


  1.822 12 March 2011

   * Keep DB_File's warnings in sync with perl's
     [ #66339]

10 years agoUpdated CGI to CPAN version 3.54
Chris 'BinGOs' Williams [Wed, 18 May 2011 19:52:36 +0000 (20:52 +0100)]
Updated CGI to CPAN version 3.54


  Version 3.54, Apr 28, 2011
   No code changes

   - Address test failures in t/tmpdir.t, thanks to Niko Tyni.
     Some tests here are failing on some platforms and have been marked as TODO.

  Version 3.53, Apr 25, 2011

  - The DELETE HTTP verb is now supported.
    (RT#52614, James Robson, Eduardo Ari�o de la Rubia)

  - Correct t/tmpdir.t MANIFEST entry. (RT#64949)
  - Update minimum required Perl version to be Perl 5.8.1, which
    has been out since 2003. This allows us to drop some hacks
    and exceptions (Mark Stosberg)

10 years agoUpdated IO-Compress to CPAN version 2.035
Chris 'BinGOs' Williams [Wed, 18 May 2011 19:23:39 +0000 (20:23 +0100)]
Updated IO-Compress to CPAN version 2.035


  2.035 6 May 2011

      * RT #67931: Test failure on Windows

  2.034 2 May 2011

      * Compress::Zlib
        - Silence pod warnings.
          [RT# 64876]

        - Removed duplicate words in pod.

      * IO::Compress::Base

        - RT #56942: Testsuite fails when being run in parallel

        - Reduce symbol import - patch from J. Nick Koston

        - If the output buffer parameter passed to read has a value of
          undef, and Append mode was specified when the file was opened,
          and eof is reached, then the buffer paramer was left as undef.
          This is different from when Append isn't specified - the buffer
          parameter is set to an empty string.

        - There area couple of issues with reading a file that contains an
          empty file that is compressed.
          Create with -- touch /tmp/empty; gzip /tmp/empty.
          Issue 1 - eof is not true immediately. Have to read from the file
                    to trigger eof.
          Issue 2 - readline incorrectly returns an empty string the first
                    time it is called, and (correctly) undef thereafter.
          [RT #67554]

10 years agoUpdated Compress-Raw-Zlib to CPAN version 2.035
Chris 'BinGOs' Williams [Wed, 18 May 2011 19:16:42 +0000 (20:16 +0100)]
Updated Compress-Raw-Zlib to CPAN version 2.035


  2.035 6 May 2011

      * No Changes

10 years agoUpdated Compress-Raw-Bzip2 to CPAN version 2.035
Chris 'BinGOs' Williams [Wed, 18 May 2011 19:12:06 +0000 (20:12 +0100)]
Updated Compress-Raw-Bzip2 to CPAN version 2.035


  2.035 6 May 2011

    * No Changes