This Week on perl5-porters (16-22 December 2002)

This Week on perl5-porters (16-22 December 2002)

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.

Version object updates

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 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.

New warning discussed

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 ?

A bit of language design

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 birthday present

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.

In brief

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/' and 'Foo\\' 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.

About this summary

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 and/or via a mailing list, which subscription address is Comments and corrections are, as always, welcome.