This Fortnight in Perl 6, Feb. 9-22, 2005

Welcome to yet another fortnight summary. Lately, p6l has outstripped p6i in volume. While this used to be the norm, it has become a rare occurrence. Strange. Anyway, this summary would be brought to you by cookies, but I ate them all. So instead this summary is brought to you by the remaining chocolate chips. In other news, Autrijus Tang has just officially received a promotion to first-name-only status in these summaries, based on both his stellar work with Pugs and his highly identifiable name. He now joins the ranks of Larry, Dan, Madonna, and Leo.

Perl 6 Language

do { } while?

David Storrs wanted to know the best way to say do { } while($foo);. Larry told him that s/do/loop/ would suffice.

nest as a Primitive Looping Operation

Timothy Nelson receives credit for resurrecting the oldest thread I have seen brought back recently. Over two years ago, he mentioned a powerful looping structure that allowed for recursion. Now he has found a use for it.

Loop Entry

Joe Gottman wanted to execute a closure on every loop entrance, not upon every iteration. He thought ENTER happened only once ever, but it turns out that it will do what he wants.

pop %hash

Rod Adams wants to be able to pop a key value pair out of a hash. Others wondered what to use it for. Someone mentioned an OrderedHash.

Higher Order Operators

Timothy Nelson wanted meta-operators. Larry gave him the full Unicode character set with which to define them. Tim was happy.

None and Nor Delimiters

Thomas Sandlaß suggested using \ as a none junction delimiter. He then extended this idea to provide a logical nor, \\. Autrijus suggested ! for none. There was some argument about whether nor deserved such Huffmanization. Also, I think that the difference between // and \\ would continually escape me. I have enough trouble writing code to deal with Windows filesystems.

Kudos to Autrijus

Damian proudly welcomed Autrijus to the ranks of the last-nameless-ones. He also lauded Autrijus’ amazing work at forcing a lazy language to pull a lazier one. I think we all agree.

Containers vs. Object References

Rod Adams wondered whether there was a litmus test that could determine if something deserved its own sigil. The answer appears to be mostly history. Larry suggested a simplistic way to create new sigils, although it would not provide interpolation. I think a blessed method for defining new sigils which do interpolate and provide some sort of type constraint and context would be really nifty. Also I want a million dollars in small, non-consecutive, unmarked bills. If you have either, please mail it to me.

Printing True

Autrijus wondered about true and false. Are they just 1 and 0? #t and #f? Larry answered bool::true and bool::false, but true and false will suffice when there is no ambiguity.

Quoted => LHS

Juerd wondered if => auto-quotes its left hand side. It does.

"@" x 75 ~ $zap =?= ("@" x 75) ~ $zap

Juerd mistakenly thought that ~ bound more tightly than x. Only unary ~ binds that tightly, so he is safe.

Getting the key|value of a Pair

Steve Peters wondered how he could get the key or value from a pair. It turns out that the .key and .value method does what he wants until some twisted soul overrides them.

Junctions and Auto-threading

By far the longest topic this week was junctions. Some people worry that their auto-threaded behavior will cause plagues to ravage the earth and novices programmers to go blind. Others feel that without it Perl 6 will be a language suitable only to pond scum and cobol programmers. While one side believes that auto-threading repetition of sid effects will crash any database that interacts with Perl 6, the other side believes that requiring extra pragmas to unlock their full power will prevent junctions from curing cancer. Either way someone will be unhappy. It looked like the pendulum was swinging towards auto-threading, but its chief proponent will be away next week, so who knows if it can survive undefended. My favorite suggestion in all of this was to make Perl 6 a pure functional language and introduce monads.

Nullary vs. Non-slurpy

Autrijus found it distressing that he had to make an empty signature slurpy to make his quicksort sort quickly. Larry assured him that it was okay. This also led to a question of MMD tie-breaking. Remember to attach an is default if you want your ties broken!


Steve Peters had a few more questions about pairs, which made Osfameron notice that he could use pairs like Lisp’s dotted pairs. Larry admitted that he could and had hoped that no one would notice.

Octal Strings

Luke Palmer wondered which strings would change radix and to what. The consensus was that something needed to change, but no one is sure what.

Perl 6 Compilers

Pugs 6.0.8

Pugs continues to approach 2 * π with the release of 6.0.5. Later Autrijus decided that he should release more stuff and put out 6.0.8. It has many new features and a much improved test suite. You should contribute tests. All the cool people are.

List of builtins

Autrijus wondered if there was a list of builtins anywhere. Patrick pointed him to his start.

Perl 6 Now

Autrijus wondered if the unit tests for Perl 6 Now were available. Scott Walters told him that they were public domain. Autrijus gleefully sicced a small, ugly dog on them.

Pugs tests

??? proved that he was cool by providing Pugs tests. So did Steve Peters, Benjamin Smith, and Stevan Little. I bet you wish you were cool too.

Autrijus registered and populated it.

%*ENV in pugs

Rafael Garcia-Suarez wanted access to %*ENV, so he added it with tests.



Yves Breitmoser wants to improve the support for GNU R in Perl. Aaron Sherman suggested using Parrot as a back-end for Parrot, which would allow any language that targets Parrot to use R.

make html

Markus Amslser submitted a patch to fix make html. Leo applied it.

Win32 bind(accept(listen()))

Markus Amslser submitted a patch adding bind, listen, and accept on Win32. Leo applied it.

Commit Privileges

Bernhard Schmalhofer received commit privileges in recognition of his many high quality patches. Congrats Bernhard!

Tiny Webserver

Markus Amslser also provided a patch to allow his tiny webserver to run on Linux. Leo applied it.

FreeBSD Build Failure

Adriano Ferreira fixed some problems with the FreeBSD build. Leo applied the patch.

Parrot 0.1.2

Will Coleda continued pushing for a 0.1.2 release. Leo told him that there would be a release after the German Perl Workshop, which should be ending soon.

Linux PPC

Leo attempted to fix the longstanding issues with Linux PPC configure.

Failing Python Tests

Andy Dougherty noticed failures on some of the dynclasses/py*.t tests. He is working with Leo on providing enough information to solve the problem.


Christian Tismer posted to the list informing everyone about the PyPy sprint at Washington, DC’s PyCon 2005. They are eager to compare notes with other developers.

string_init and ICU data dir

Ron Blaschke noticed that Parrot choked on an empty ICU data dir. Leo fixed it.

Win32 Parrot

Ron Blaschke wants to improve Parrot building on Win32. He has offered to add the necessary PARROT_API macros and do other footwork.

Tail Calls

Bob Rogers wants to make tail calls without knowing the last call’s return values. Currently he just lies to IMCC to make it work. Leo pointed him to interpinfo .INTERPINFO_CURRENT_CONT and also suggested adding a tail_call op.

Posting via the Google Groups interface does not work. To post to any of these mailing lists please subscribe by sending email to,, or If you find these summaries useful or enjoyable, please consider contributing to the Perl Foundation to help support the development of Perl. You might also like to send feedback to



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