This Week on p5p 2001/10/07

Notes

This Week on P5P

chromatic

Call for PerlIO bugs

Attributes are broken

Multiple FETCHes

Code cleanups

Various

Please send corrections and additions to perl-thisweek-YYYYMM@simon-cozens.org where YYYYMM is the current year and month. Changes and additions to the perl5-porters biographies are particularly welcome.

chromatic

P5P is in awe of the patience and test writing ability of chromatic, who has, in a very short time, given us exhaustive new tests for B::Terse, Dumpvalue, CGI::Fast, CGI::Push, CPAN::Nox, Term::Cap, Tie::Scalar, Term::Complete, ExtUtils::Command, less, open, filetest, sigtrap, warnings::register, and a bunch of patches to older tests. Thank you!

Call for PerlIO bugs

Nicholas Clark found some people at a London.pm meeting who knew of unfixed PerlIO bugs, and suggested the following call-for-bugs:

If you are aware of a PerlIO bug that perl5-porters isn’t aware of, please would you tell perl5-porters about it, preferably in the form of a regression test that will print “ok\n” once it is fixed. Else don’t be surprised if 5.8.0 ships with the bug still present.

(While you’re at it, report any other lurking bugs you know about.)

Attributes are broken

Arthur Bergman explained again why attributes are broken. The problem is that the MODIFY_*_ATTRIBUTE subs (used to set attributes for a variable) are called at compile time. Thus, in the following code:

    sub MODIFY_SCALAR_ATTRIBUTE {
        ...
        tie $obj, $class;
    }

    for (1..10) {
        my $foo : bar = "BAZ";

        ...
    }

The variable $foo would be tied only on the first iteration of the loop, after which the scope cleanup mechanism would remove its magic, and the variable would remain untied for the remaining iterations.

Multiple FETCHes

Jeff ‘japhy’ Pinyan attacked some instances of FETCH being called multiple times on tied variables (for $tied++, $tied || $untied), thus causing potentially undesirable side-effects (Read an analysis of the problem and the proposed solution). Several people pointed out the problems with this approach, but no better solution has been found yet.

Jeff also wanted to optimise grep when called in boolean context ( if (grep EXPR, LIST)) to avoid iterating over the entire LIST, and just return the first time EXPR was true, but the potentially desirable side-effects of EXPR make this optimisation infeasible.

Code cleanups

Casey West embarked on a pod/* cleanup, to make the example code use strict where appropriate, be generally pleasing to the eye, and easy to understand. Despite this noble goal, his patches were met with some suspicion.

Jeff Pinyan said the example shouldn’t use $a, the sort variable, but Jarkko didn’t want to encourage cargo-cult programming by punishing the poor innocent $a for the vagaries of sort. Abigail didn’t think the patches accomplished anything useful, but Jarkko said that consistency and following our own suggestions (in perlstyle) are obviously good things.

Casey posted an explanation:

I feel that my style is a generally acceptable one that everyone can understand. In that light, I don’t think it’s a bad thing if I make some minor changes (single versus double quotes) in the process of making a whole document better.

Nobody said anything after that.

Various

Andy Dougherty suggested an optional make torture_test target to run tests which were not portable. (Schwern hasn’t noticed yet.)

Arthur Bergman is running the LXR cross referencing tools on the perl source. The result: PXR, the Perl Cross Reference. It will eventually contain cross references of perl-current, the latest stable release, and the Parrot source.

Brian Ingerson (of Inline fame) posted his first P5P patch, implementing the oft-requested Data::Dumper feature to allow hash keys to be sorted. He even got the indentation right the first time!

Craig Berry provided a patch to fix %ENV tainting on VMS. (Only five tests fail on VMS now, and a couple of them are bogus failures.)

Jarkko released two snapshots: 12307 and 12340. (The latest snapshot can be retrieved via rsync from “ftp.funet.fi::perlsnap”.)

Michael Schwern sought a philosophical solution to the finding the path to the running perl interpreter. Instead, he found that the contents of $^X are system dependent when perl is invoked by a #!-line.

Nicholas Clark continued to submit lots of little patches, one of which became change #12345. This is entirely fitting, because Nick is a hoopy frood who knows exactly where his towel is.

Paul Marquess and Robin Barker are investigating a DB_File bug involving filtered keys.

Stas Bekman is hunting down interesting MakeMaker (and related) bugs. He also found a scoping problem in the warnings pragma.

Finally, P5P was specially selected to receive a free mini-vacation to any of fifteen exciting destinations, along with several other people whose email addresses contained “per.”


Abhijit Menon-Sen

Tags

Feedback

Something wrong with this article? Help us out by opening an issue or pull request on GitHub