This Week in Perl 6, April 12 - 19, 2005


Sadly, a slip of the mouse caused me to delete a partially completed summary, so I am going to push ahead on the rewrite without a witty intro. Feel free to make one up for yourself involving stuffed animals, musicians, and dinner.

Perl 6 Compilers

Pugs 6.2.0

Autrijus released Pugs 6.2.0, marking the first major milestone for Pugs. This includes most of the control flow primitives of Perl 6 and is a testament to the solid work that all of the “lambdacamels” have put in. and Multibyte Characters

BÁRTHÁZI András had trouble encoding and decoding multibyte characters in This led to a general discussion of how to avoid such characters in URLs as well as when to call chr.

Auto Currying?

Matthew D. Swank wondered if he really needed an extra set of parens to call a function generator and its generated function simultaneously. Autrijus told him that yes he did as Perl 6 is not quite Haskell yet.

Case Insensitive P5 Regex

BÁRTHÁZI András wanted to use the :i switch on P5 regexes. Autrijus implemented it, but Larry noticed that this introduced a flag ordering dependency. As a result, the new way to supply flags to a Perl 5 regex is rx:P5<imsxg>/.../.

Cookbook Ettiquette

Marcus Adair wondered if there were rules of etiquette he should obey when writing examples for the Perl 6 Cookbook. In particular, should examples run and be only one file? Ovid suggested that one file was a good idea, but was open to contrary arguments.

Austrian Parrot/Pugs Hackathon

Thomas Klausner announced that on June 9-10 in Vienna, Austria there would be a Hackathon featuring the collective might of Autrijus, Chip, Leo, and more. When that much brain power gets together only two things can happen: much hacking and much drinking.

Encoding Illegal Byte Sequences in Strings

BÁRTHÁZI András wanted to know if he could encode an illegal byte sequence in a string. Much discussion ensued, but Larry promised that it would be possible.


Yuval Kogman announced the release of two new modules to CPAN that provide Pugs smoke HTML.

Quoting Constructs

Roie Marianer noticed that Pugs was missing some quoting constructs. He implemented them. This led to discussion of interpolation and corner cases. As usual, Larry provided both answers and questions. Roie produced a patch which Autrijus applied.

Code Block as Argument

Stevan Little found some bugs with passing a code block to a function in Pugs. Warnock applies.

push, pop, shift, and unshift on Infinite Lists

Stevan Little has been playing with push, pop, shift, and unshift on infinite lists. He thinks he has found a bug, although maybe he just hasn’t let it run long enough. Larry provided answers regarding the correct semantics.

cd Issue in Makefile

Jonathan Worthington noticed a Win32 issue in the Makefile. He can point to the offending line in the autogenerated Makefile, but that is not where the fix belongs. Warnock applies.

Hyperoperator Tests

David Christensen provided a patch for hyperoperators. Unfortunately, character set transcodings ate his patch.

shift Oddity

Stevan Little noticed that shift did not act like pop. Larry noted that the examples were not semantically valid, but even so, Pugs should not freeze.


Aaron Sherman managed to make Pugs segfault. Autrijus thinks someone might already have fixed it.


Dynamic Perl 2

William Coleda provide the second of his patches to move Perl*PMC out of the core. Leo applied it.

SVN Revision in Bug Reports

Jens Rieks reported a difficult-to-reproduce bug. This caused Leo to pine for having the SVN revision in the bug report. Brent “Dax” Royal-Gordon commented that this was a good idea. Jens Rieks offered to implement it.

Win32 SDL

Jerry Gay tried to get SDL working on Windows. There was some give and take, but in the end, it works.


Andy Dougherty provided a patch making provide a link flag to ICU headers if provided. Jens Rieks applied it.

Svk and SVN issues

Roger Hale noticed a small problem with Robert Spier fixed it.

nci.t Failure Under MinGW

François Perrad fixed a MinGW test failure. Leo applied the patch.

Trailing Space with ${LD_OUT}

Andy Dougherty fixed an old bug with LD_OUT having trailing space. Leo applied the patch.

Warnings Cleaning

Jerry Gay cleaned some warnings from the source tree. Leo applied most of the patch.

Win32 Path Nit

Philip Taylor fixed a small Win32 path issue. Leo applied the patch.

cmp Op Bug

Leo found a bug in cmp_p_i_ic opcodes.

SDL Uninitialized Variable

Nick Glencross provided a patch fixing an uninitialized variable in SDL. Leo applied the patch.

PerlScalar Morph Bug

Nicholas Clark found a bug in morph for PerlScalar. Leo verified that it was a bug. Nick Glencross offered to fix it.

Infix Method Change

Leo threatened to continue with his plan to simplify infix methods. No one objected.

Used Before Set Warning?

Nick Glencross wanted a warning for using unset variables in imcc. Leo pointed out that this was not as simple as one might like.

Remove Temp Files for Win32 make clean

Jerry Gay provided a patch removing more files under make clean in Win32. Warnock applies.

Fix Typos

Nick Glencross provided a patch which fixes some typos in docs. chromatic applied it with a few extra tweaks.

Parrot Security

BÁRTHÁZI András wondered about the general security mechanisms that Parrot would provide. Dan assured him that security would be a fundamental part of Parrot. He also provided a sketch of the Parrot security model which sparked some discussion.

Debian ARM Failure

Falls Huang reported a build failure on Debian-ARM. Leo provided a pointer in the right direction.

Missing Make Target

François Perrad notice that make src/revision.c couldn’t handle .svn/entries. Jens Rieks fixed the problem.

JIT Generation Help

Adam Preble put out a call for some general advice on understanding Parrots JIT. Leo provided some general advice.

“Attribute not found” Exception

Cory Spencer provide a patch changing getattribute to throw a real exception. Jens applied the patch with a few tweaks.

stderr during bc Configure Step

Jerry Gay provided a patch to suppress stderr during the bc configure step. There was some debate on how to make this cross platform. I don’t think there was a resolution.

string.c Segfault

Nick Glencross provided a patch fixing a few segfaults in string.c. Jens applied it.

MSWin32 ICU Linkage

Ron Blaschke added ICU to the linkage for Win32. Jens applied the patch.

Win32 Readme Updates

Ron Blaschke updated the README.win32 document. chromatic applied the patch.

Discussion Before the Patch

Big Changes Afoot

Our pumpking Leo has some big changes underway and asked someone else to man the pumps for a little while. Jens volunteered to be someone.

More Registers Make Dan’s Code less Unhappy

Dan has some very ugly generated code. It takes a LONG time to compile. Leo sped it up by giving Parrot more registers.

.const Weirdness

Nick Glencross found some weirdness with .const in IMCC. Warnock applies.

PMC Help

Bloves hoped for a pointer on PMC writing. Leo provided a helpful pointer.

&& in Commands is Not Cross Platform

Jens noticed that && in commands causes problems on some platforms. Michael G. Schwern fixed it and Jens applied the patch.

MMD Migration

Leo continued his slow but steady migration to a more MMD-like world.

Make Config Info Available at Runtime

Leo wants to have useful config information available at runtime. Steven Philip Schubiger offered to try.

Remove Old Files

Leo opened a ticket for removing some outdated files.

Small Spelling Errors

Steven Philip Schubiger provided a patch fixing some small spelling errors. He worried that perhaps he picked nits needlessly. I don’t think so, but Warnock applies.

Win32 ICU Error

François Perrad fixed a small mistake in the naming of icudt.lib. chromatic applied the patch.

Drunken Parrot

Cory Spencer has succeed in making LISP run on Parrot and uncovered a few GC bugs in the process, impressing everyone.

Python on Parrot

Kevin Tew wondered about the state of Pyrate. Sam Ruby provided a general explanation.

C => Parrot Compiler

Philip Taylor posted a few questions about Parrot for help with Carrot, his C to Parrot Compiler. Leo and Chip provided a few answers.

Perl 6 Language

Yet Another Perl Conference, North America

Gerard Lim announced YAPC::NA with much information and useful links.

Subscripts as Objects

Yuval Kogman threw out the idea of using subscripts as objects. Larry worried that this would hurt speed a little too much.

Statement Modifiers and Scopes

Paul Seamons posted some examples involving local scopes and statement modifiers. Larry decided that only curlies will delimit scopes, so as not to surprise too many people.

Whitespace in heredocs

Juerd posted a question from the p6cookbook asking about spaces v. tabs. Larry took a guess as to the context and pointed to A2 for info.

&nbsp; in \s, <?ws>, <>

Juerd wondered what sort of character classes matched nonbreaking spaces. Larry replied that they did, but postulated a <bws> class for breaking whitespace.

trim() and words()

Marcus Adair wondered about trim and words and if they actually existed. It seems that trim will exist although words might be <<$string>>.

<[]> Ugly and Hard to Type

Some people are complaining that character classes are difficult to type. The design team considers this a feature as character classes do not handle internationalization well.

Comparing Floats with Fudge

Marcus Adair wants an easy way to compare floats with a fudge factor. Larry seemed to feel that ~~ could use more DWIMery.

$*CWD vs cwd() and chdir()

Michael G. Schwern wanted a simple tied variable interface to $*CWD. This is apparently a sensitive topic. Much discussion ensued of changing directory in bizarre circumstances. It looks like Michael’s suggestion will not reach the core, although it looks like a fairly simple module.

Junction Precedence Error

Brad Bowman noticed an error in some examples involving junction precedence. Larry confirmed the error. Patrick R. Michaud fixed it.

Spelling Mistake in A06

Steven Philip Schubiger found a spelling error in A06. Patrick R. Michaud applied the patch.

<[a-z]> to Become <[a..z]>

Larry decided that the range operator in character classes should change to ... Much discussion ensued. I like it.

Tainted Variables

BÁRTHÁZI András wondered if he could mark variables as tainted. Luke Palmer showed him a way.

Re-declarable temp Variables

Aaron Sherman wants a way to re-declare variables without warnings. He suggested temp. Larry suggested ok to turn off a warning, but doesn’t think Aaron’s feature is really necessary. There’s no official ruling yet, I think.

Hyper Slices

David Christensen wants to use hyper slices as a convenient way of dealing with multidimensional data structures. Luke Palmer showed him how.

Hyperoperator Corner Case

David Christensen wondered how hyperoperators know what to pad with when one side is not long enough. The answer appears to be slightly ill-defined magic, especially when considering subtraction or division.

Fine Granularity Sleeping/Events

Gaal Yahas wants to have an alarm function that takes a double (for systems with sub-second timing promises). He also wants a version that takes a callback (possibly called later). Warnock applied.

Junctions in Subscripts

David Christensen wants junctions in subscripts to autothread. Luke Palmer commented that they might. I think they do.

Quote Operators and Interpolation

Roie Marianer had a few questions about how interpolation and quote operators would work. Larry and Juerd provided some answers. Larry’s short version: “We pretend we’re a top-down parser even if we aren’t”.

Junctions with Adverbs

David Christensen wants to use adverbs to supply exceptions to junctions. Luke Palmer told him that it doesn’t work that way.

++ Evaluation Order

Lam Fayland found an oddity in Pugs evaluation order for ++. Warnock applies.

Statement Modifiers for Setting Variables

Dave Whipp wants to use statement modifiers to restrict the scope for variables in his print statements. Larry provided a different technique.

Tie Hashes

Ingo Blechschmidt wondered what syntax to use for tying hashes. Larry began to muse aloud.

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