This Week on p5p 2000/05/14


You can subscribe to an email version of this summary by sending an empty message to

Please send corrections and additions to where YYYYMM is the current year and month.

It was tempting to just post `nothing happened this week’. Lots of small patches to fix various 5.6.0 misbehaviors, and reports of new 5.6.0 misbehaviors. An unusual number of people who should have known better posting requests for dumb trivial features. Low traffic. Few big discussions.

Regex Stress Testing

Jarkko Hietaniemi wrote a module called Regex::PreSuf which accepts a list of words and builds a regex that recognizes only those words. Mike Giroux suggested that the large regexes generated by this module could be used to stress-test the regex engine. (Avi Finkel’s String::REPartition module might be used similarly.)

Ilya said it would be better to add the trie code from Regex::PreSuf to the regex engine. Jarkko replied that he would prefer to eat live rattlesnakes.

Another Thread-Safing Patch

Dan Sugalski sent a replacement for his patch that makes the lock() function thread-safe. It also exposes lock() functionality to XS subroutines, and some other things.

See the patch.

Also in thread news: A user posted a message asking why threads weren’t fully supported, and Dan replied at some length. (Summary: Because it’s hard.)

Dan’s reply.

Marek Rouchal: Bottom line: I’d be very happyabout fully working threads in Perl 5.6.1

Dan Sugalski:You and me both. :) I wouldn’t hold my breath.

Enormous perldoc discussion winds up

As quickly as it arrived, last week’s discussion of docmuentation issues has ended. The only discussion of note this week was a message from Mark Fisher with a reference to a 1971 paper that compared automatic indexing with manual indexing. Would-be indexers should probably take a look at this.

Mark’s message.

Gerald Salton’s paper.

Build patches for OS/2

Rocco Caputo made some changes to fix the build process on OS/2.

Read about it.

Regex Engine

In the course of trying to investigate a bug in the regex engine, Hugo van der Sanden critiqued the code style and comments. This led to a brief but interesting discussion about the code there.

Original bug report

Hugo’s critique message

Method calls on unblessed references

John Tobey submitted a patch to enable

        $r->method(arg, ...)

when $r is unblessed. If I understand correctly, the method is looked up in a package named HASH or ARRAY or whatever.

Randal said that this had come up some years ago, and the consensus was not to do it, since it would make erroneous method calls harder to catch.

I was not able to find this discussion. John found a 1996 message from Tim Bunce that referred to an even earlier discussion of this same idea. (Tim submitted a patch similar to John’s.) If anyone can dig up a pointer to the original discussion, please let me know.

Tim’s really old message.

Version Tuples Broken?

Ian Phillipps pointed out two problems with version tuples. But Ilya said that no, the problem was not with the tuples, but with the results produced by the unpack and print functions when extracting the result. Mike Guy then pointed out that

        (256.255.254 . 257.258.259) eq (

is false.

Sarathy said that this is because eq is broken; it’ll be fixed in 5.6.1.

Negative Subscripts for Tied Arrays

Michael Schwern complained that if you have a tied array, and you do


Perl does not call $o->FETCH(-1), but rather instead it calls $o->FETCHSIZE() to find out how long the array is, say 80 elements, and then invokes $o->FETCH(79) to get the last element. Nick Ing-Simmons, the author of the tied array implementation, said that that was how it was supposed to work, and changing it will break existing code.

Upcoming corrections

Brad Appleton, the author of the Pod::Parser module suite, felt that some of my comments from the previous report were unfair. In particular, he says that the current Pod::Parser implementation is incomplete, was designed for flexibility rather than speed, and he is sure that large speed gains could be easily had. Brad is preparing a long and informative reply, which I expect to include in next week’s report.


A large collection of bug reports, bug fixes, non-bug reports, questions, answers, and a small amaount of flamage and spam.

Until next week I remain, your humble and obedient servant,

Mark-Jason Dominus



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