This Week on perl5-porters (26 August / 1st September 2002)

This Week on perl5-porters (26 August / 1st September 2002)

This week, we're back to our regularly scheduled p5p report, straight from my keyboard's mouth. Many thanks to Elizabeth Mattjisen who provided the two previous reports, while I was away from p5p and from whatever might evocate more or less a computer.

More on the socket memory leak

A workaround has been found for the PerlIO / socket memory leak reported last week (and that was reported again this week) : just define the PERLIO environment variable to be perlio. (This environment variable, documented in 5.8.0's perlrun manpage, controls the default layers for I/O operations.) (While I'm writing this, I think that the same result may be achieved by using the open pragma, but I haven't tested.)

share() returns a list

Michael G Schwern complained about the share function of threads::shared : idioms like

    $scalar = share(23);
    $hash   = share({ foo => 23 });
    $array  = share([1,2,3]);

don't work, because share expects a scalar variable. In fact, this should be written

    $scalar = &share(23);
    $hash   = &share({ foo => 23 });
    $array  = &share([1,2,3]);

to bypass the prototype, and the threads module should be loaded before threads::shared.

Michael then provided a patch to fix threads::shared's behavior when threads are not enabled.

On a similar subject, Michael wondered why the return value of lock() is not documented anywhere. The definitive answer (which would be a patch) was not given.

An attempt at the perl6ish pragma

Rafael (your summarizer) submitted a patch to implement a new pragma, perl6ish. This pragma (once alluded to by Hugo) is intended to optionally enable Perl 6-like constructs to come. In this first version, it can be used to enable the // and //= operators (that would be disabled by default).

Hugo didn't decide yet whether the defined-or operators should be explicitly enabled. H.Merijn Brand advocated that it should be included by default, being 99.9999 % backward compatible, except in cases weird enough to be suspect anyway.

Perl 5 Magic Cookies

Arthur Bergman made a very interesting proposal for Perl 5.9 : use PMCs (like in Parrot) instead of the current system of typing and magic. If it's done, it'll surely need a large amount of work, so volunteers are welcome.

On core modules that live on CPAN

Several core modules that have a dual life on CPAN were upgraded : Test, Test::Simple, ExtUtils::Constant, Encode (ExtUtils::MakeMaker and Time::Hires are waiting for their turns.)

Nicholas Clark asked for a simple way to find out whether a file distributed with the core exists also in a CPAN module, and suggested a to make up a manifest for those files. Jos Boumans provided a first rough script to query the CPAN database, but I doubt it's sufficient for now.

Version strings

John Peacock proudly continued his work on v-strings. He provided some amount of patches to change the way that v-strings works in perl, basically turning them into objects.

I must admit I haven't got all the details, and moreover the definitive syntax and semantics of the version strings doesn't appear to have been fully decided right now, so here are the links to the relevant threads :

John's patch, with the details of the changes :

John is now working on allowing operator overloading from within XS code.

Memoize bug

Tony Bowden found a nasty bug with Memoize, about which Mark-Jason Dominus says : This appears to be a bug with Perl's handling of @_ in conjunction with magic goto. Scary.

The discussion then turned towards the fact that push and pop were more efficient than shift and unshift, and how to improve this.

In brief

Robert Spier writes : We've isolated and squashed the problem causing some messages from the mailing lists to not show up on So I can continue to use those ultra-long google URLs in my summaries!

Luke Palmer asked whether regular expressions on streams are planned for 5.9.x. As Hugo is willing to work quite extensively on the regex engine, this is something that may or may not happen, depending on whether it's feasible without impacting the performance of regular regular expressions.

Elizabeth Mattijsen made some memory benchmarks on the benefit of using Autoloader in threaded programs. Apparently it's possible to save memory in threads by postponing the loading of subroutines until the moment the threads are started.

B::Deparse now handles CHECK blocks.

Yitzchak Scott-Thoennes provided a patch so blessed qr// objects now stringify like their non-blessed counterparts.

Hugo fixed really quickly a regexp bug on the non-greedy quantifier ??, reported by Randal Schwartz. (Bug #16733.)

Ed Santiago reported and corrected a bug on POSIX::isprint (and similar functions -- bug #16799.)

Marc Lehmann reported that multibyte characters can't be used as separators for the various quotelike operators. Bug #16823.

After a long outgoing discussion about being slow and bloated, Michael G Schwern tried to make it faster and more lightweight, apparently without great success yet.

Elizabeth Mattijsen wondered again about the proper way to overload lock(). This is not as easy as it looks.

About this summary

This summary brought to you by Rafael Garcia-Suarez, back in front of his keyboard. It's also available via a mailing list, which subscription address is