This week, in spite of the approaching holidays, the Perl 5 porters mailing list wasn't completely silent. Read about version objects, various warnings, operator precedence design, and a birthday.
The (apparently) never-tired John Peacock pulled another improvement of his version object patches, that should now, as he says, satisfy everyone. Basically we have now (in version.pm v0.25, found on CPAN)
version->new(1.10) < version->new(1.2) # 1.100 < 1.200 version->new("1.10") > version->new("1.2") # 1.010 > 1.002
The integration of this into bleadperl will wait until next year, if a full consensus is reached -- see the thread for the porters' comments.
Benjamin Goldberg proposed to introduce a new warning, aimed at warning programmers against using a
$DIGIT variable when the previous regular expression didn't match, as in :
$str =~ /(something)/; print $1;
In fact he proposes the warning to be triggerred whenever a regular expression match is used in void context. Among the points discussed were: should this be a run-time or a compile-time warning ? Should it be limited to failing matches ? Should it warn when the
$DIGIT variables aren't used ? What about regular expression with side-effects ?
Larry Wall commented about the recently modified parsing of the
? : ternary operator, proposed by Stephen McCamant one month ago. Current perls reject
$cond ? $a and $b : $c; as a syntax error, and Stephen provided a patch to accept this. However, Larry notes that with this patch,
$cond ? $a and $b : $c and $d;
would be equivalent to
($cond ? $a and $b : $c) and $d;
which doesn't look like the Right Thing.
Perl is 15 years old ! To commemorate this event, perl 1.0.15, the latest maintenance release of Perl 1, was released by Michael G Schwern.
Michael also released an alpha version (6.06_01) of MakeMaker, and asked for testers, notably on non-Unix platforms, and for complex modules. Some problems were reported on Windows.
Jos Boumans remarks that on Windows, both
'Foo\\Bar.pm' could be set as keys in the %INC hash. This behavior could cause problems, notably with IPC::Run. (Bug #19213)
Steve Noynaert reported a couple of strange build problems on AIX, one of them involving breakage of the glob() function. Nicholas Clark suggested that his system (libraries and/or compiler versions) could be blamed for this.
H. Merijn Brand suggested that
perl -v should report the patchlevel on developement build (as
perl -V does).
Dave Mitchell continues to patch the lexical engine, first by proposing to remove the useless SvPADBUSY flag, then by introducing a new flag SvPADSTALE, set on a lexical in a pad which has gone out of scope.
Paul Marquess asked for a good generic way to catch C++ exceptions in XSUB code and to pass them back to Perl code.
Jeff Sumler notes that the infamous warning Use of uninitialized value would be better written Use of undefined value, as one could initialize a value to
undef on purpose.
Clinton Pierce reported bug #18917, about system() executing external commands twice on Win32 in some cases, when its exit status is non null.
This summary brought to you by Rafael Garcia-Suarez, from holidays on the French Riviera, where he insanely brought his new laptop. Read it on http://use.perl.org/ and/or via a mailing list, which subscription address is email@example.com. Comments and corrections are, as always, welcome.