This Month on perl5-porters (2004-08-30 - 2004-09-24)
A new summarizer.
|| and && returning lvalues
Japhy wondered if || and && might be made to return lvalues,
so that you could do
($name && $age && $gender) = $_;
Tassilo von Parseval noted a trick with anonymous refs:
${\($name && $age && $gender)} = $_;
However, Yitzchak Scott-Thoennes warned that this bit of magic
shouldn't be relied on, because it only works with simple scalars
by chance.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2004-08/msg00739.html
Assignments inside lists misbehave
Emil Jerabek reported this bug (#31403):
perl -e '@a = (1, 2, 3, 4, 5); @b = (@a, (@a = (8, 9))); print "@b\n"'
8 9 8 9 8 8 9
Dave Mitchell said this is unfixable due to the "for efficiency,
Perl does not reference count items pushed on the stack" problem.
Yitzchak Scott-Thoennes wondered, on the other hand, if refcounting
the stack might actually increase efficiency.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2004-09/msg00020.html
+= and ++ do different things under 'use integer' (bug #6021)
use integer;
$i = 0xffffffff; $i++; # $i == 4294967296
$i = 0xffffffff; $i += 1; # $i == 0
Dave Mitchell said that pre/post ++ ops upgrade to NV, whereas +=
remains an IV. He proposed adding integer-specific ++/-- ops, which
everyone agreed wasn't appropriate for maint, with Nicolas Clark
adding that "0x7fffffff + 1 under use integer is nasal demons".
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2004-09/msg00023.html
Fields mishandling private attributes
Jean Flouret noticed (bug #31078) that 'fields' ignores private fields
that are declared after public ones. While Dave Mitchell fixed this
in 5.8.X, he found that "the 5.9.X restricted hash technique" causes
run-time errors when manipulating private fields.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2004-09/msg00071.html
Named anonymous subroutines
Ovid pointed out a trick to name anonymous subroutines:
my $method = sub { local *__ANON__ = '__ANON__method'; ... };
There wasn't really a concensus on whether or not it should even be
documented, as it doesn't always work and likely won't exist in perl6.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2004-09/msg00154.html
Matching of backreferences to non-matched captures
Hugo highlighted the following problem (bug #3589). Whereas
/^((.?)a\2)+$/
necessarily matches 'a' or 'XaX' (for all X matching like '.'), when
you move the '?' outside of the inner parentheses,
/^((.)?a\2)+$/
it's not clear what \2 should match when (.)? doesn't match.
1) empty string (as when ? is inside the parens)
2) last-captured value (as in 5.6.0)
3) don't match anything (5.6.1 onward)
though people seemed to lean toward the 3rd one.
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2004-09/msg00263.html
In brief
Nathan Zook identified a bug (#31421) with leap years in Time::Local.
There was discussion about the _nocheck versions of timelocal and
timegm, their intent being to improve performance, not to make
Time::Local a date math module (for which, see CPAN).
Steve Hay, Artiom, and Ken Fox negotiated to add an environment
variable, PERL_ALLOW_NON_IFS_LSP, to work around a conflict between
a McAfee firewall and an LSP patch to win32 sockets.
Steve Hay was lost in a forest of #defines but managed to produce
a patch to fix chsize/ftruncate configuration on systems with no
chsize (or ftruncate), such as Cygwin.
Craig Berry added configuration support on VMS to allow unlink()
to delete all versions of a file.
Tels followed up with benchmarks of Math::BigInt which show that
it's about two orders of magnitude slower than Perl. Still needs
to benchmark it with XS.
Yves Orton illustrated (see bug #30966) how File::Spec::Win32's
path function should handle quotes in PATH strings.
[EMAIL PROTECTED] reported (bug #31521) that passing a '%.2f' format to
sv_vcatpvfn gives a bogus result. Hugo ([EMAIL PROTECTED]) found that the
problem occurs due to the 'special-case "%.<number>[gf]"' section in
sv_vcatpvfn(), and manifests itself from C code but not from Perl
code, and he recommended that the special case be removed.
Marcus Holland-Moritz analyzed SvOK_off's return value and simplified
by putting a void cast in SvOOK_off rather than the 38 places where
it's called from.
Yitzchak Scott-Thoennes submitted a patch to avoid unneeded lstats
in glob().
Dan Kogai noticed that multiline UTF-16 scripts are broken, prompting
Jarkko Hietaniemi to quote a story from gnat about yylex, tattoos,
lipstick, and someone named Yuri.
Dave Mitchell made an executive decision to fix sv_upgrade so that it
sets the AVf_REAL flag. In this case, bug #30066, it fixed a memory
leak with nested shared data structures in threads, but not setting
the flag had also caused other problems in the past.
YAPC::EU took place in Belfast, Ireland. (Among other things, I heard
that they had an auction to decide that next year's hosts' tshirt
"color" be fishnet.)
Releases
Dan Kogai released Encode 2.02 (upgrade of big5-hkscs).
Ken Williams released Module::Build 0.25_3 beta, File::Spec 0.90,
and Cwd 2.21.
Pavel Fedin ported Perl 5.6.1 to MorphOS.
Reference
The thread for bug number $BUGNUM can be found at
http://rt.perl.org/rt3/Ticket/Display.html?id=$BUGNUM
About this summary
This summary was written by Scott Lanning as Rafael taught him
des gros mots on #perlfr. Summaries are published at irregular
intervals on http://use.perl.org/ and posted on a mailing list
whose subscription address is [EMAIL PROTECTED]
Comments and corrections welcome.