http://www.perlmonks.org?node_id=88272

This is my quick notes on day one of the Yet Another Perl Conference in Montreal. The title refers to a new feature of Perl 6, which the opening talk was about. More on that later.

Well, Montreal was not close enough to drive, so I ended up flying - a mostly uneventful trip, and arrived at The Montreal airport around 11:30pm Tuesday night. The first thing you notice is that everything in Montreal is in two languages (French and English) but one (French) is definitely preferred. We hopped in a taxi and drove to our hotel. The taxi driver was from Lebanon and spoke broken English, good French, and actually drove fairly well, although with a tendency to think the taxi was one foot narower than it actually was, therefore every car we passed on the right hand side was about 1 mm away. The streets were strangely empty - at least when compared to a typical US city. The hotel check in went smooth, and I quickly connected to the web and got a last minute email that told how to find the hall used for the conference on the McGill campus. Finally off to sleep @ 1:30am.

Up at 7, logged in to learn that Larry Wall was "under the weather" and would not be attending after all. :( After breakfast, slightly disappointed but undeterred, I walked to the campus and found the check-in table, got my name badge (which had a mystery 9 digit number underneath my name) and an O'Reilly bag with the abstracts and schedule for both YAPC and TPC. Everyone filed into a large auditorium with small airline-style seats, and waited for Larry's last-minute replacement, the one and only Damian Conway. After a few words by the Quebec PM and the YAS people (thanks to both for arranging YAPC!), Damian took the floor and proceeded to talk about Perl 6 - how it came about, what changes were definitely coming, what things were more tentative, and a very flexible schedule of when Perl 6 might actually hit a usable beta form (October 2002). Perl 6 is going to be very, very different from what you are used to. It was a very funny and entertaining talk. (plus Damian has a really cool (to my ears) accent). Some of the highlights that I remember:

Remember when you first learned perl, and wondered why if @array was an array, an element of an array was not simply @array[9] and a hash key %foo{$bar}? Well, in Perl 6, those will work as people might originally assume they well. Each sigil (e.g. $ @ %) will mean exactly what it is supposed to, no more and no less. What's more, the arrow operator is being replaced by the dot (still no agreement on what is going to replace the dot for string concatenation). In other words, $foo->{"bar"} becomes $foo.{$bar} which can also be shortened to $foo{$bar}. Which meshes quite naturally with the "strict sigils" mentioned earlier. Dereferencing happens auto-magically as required. In short:

  • $foo ## a simple scalar
  • $foo[$bar] ## element $bar of the thing referenced by $foo
  • @foo[$bar] ## element $bar of the array @foo
  • $aref = @array; push $aref, $next; ## Neat, huh?

Some things will horribly break existing perl scripts, such as the fact that system calls will now return success the way everything else in perl does, which means that the code system("foobar") || die; will be the correct way to do it in Perl 6. :)

There will be no barewords in Perl 6. Nor will there be typeglobs. The rumors of the diamond operator's demise are greatly exaggerated - it will definitely be in Perl 6, albeit with a slighty different form in some cases. You will see things like this:

while (<$*ARGS>) { print $*OUT, $_; }

time() will return a floating point number, with as much precision as your platform is willing to give. To give it a more "traditional" look, wrap it in an int: int(time())

A switch case is coming, but apparently will not use the words "switch" and "case." The current alternatives are "given" and "when" until someone comes up with something better. Also, the word "local" is looking for a renaming; current candidates include "scratchpad", "temp", "revalue", "temporarily", and many others.

Some of these are sharp changes that may be hard to swallow, but as Damian says "Learn to love it!" His notes can be found at http://yetanother.org/damian/talks/Perl6.pdf, although the talk did not exactly follow what is there. I will go try to go over my notes later and fill in the differences more later.

After a short break, I attended the talk "CPAN, PPM, and the Future" by Brian Ingerson and Neil Kandalgaonkar. (and a few others). It was an interesting discussion of some of the problems of CPAN, but ran out of time very quickly. Some interesting ideas were put forth, including CPAN@home (testing modules in a distributed manner), CPANTS (testing perl modules automatically), and CPAN run. A BOF session has been promised to continue the discussion. This looks very promising, as the concern about the quality (and safety) of modules is obviously a matter concerning many people.

Next up was the Perl Apprentiship "Hour" by Adam Turoff. This was basically people describing some ideas for perl projects that need varying degrees of help, from taking over the project (or module, or website, etc.) completely, to helping out in varying degrees. A quick rundown of the projects (my apologies if I forgot someone's - it's been a long day):

  • The perl power tools (ppt on sourceforge) needs people to help jump start it again. This sounds like something I will definitely be interested in. Apparently there are even some BSD games (Wumpus anyone?) that have been ported. (actually, Wumpus was ported straight from BASIC (!!)
  • The CPAN Testing Service (CPANTS) is also in need of a kickstart. (cpants on sourceforge). Some of the things it needs: a perl parser, perhaps based on the B module, a breakdown of the CPAN shell, a good perl "sandbox", the CPAN@home project, module nag lists, module reviews, and documentation feedback for the authors. Lots of good ideas here - check it out on sourceforge.
  • The perl books project - hopefully to be moved to books.perl.org, this is gonig to be a one-stop place where you can read reviews and learn about every book relating to perl out there. As the author (uri@sysarch.com) pointed out, there is nothing out there like that yet. This would be a great addition to the perl community as well.
  • Nathan Torkington gave some "lightning talks" of his own about a number of ideas, including a btter way to sell perl (for instance, by making a better version of indent), forming friendships with the Python community instead of sniping with them, learning what other languages do best (or do better than perl) and adding those capabilities to perl, and the Perl Documentation Project (which was actually Casey West's beainchild). Probably some more ideas as well, I will throw up a URL if I can find one.
  • Damian Conway mentioned some modules he'd like to unload...er...donate to someone else, as he hasn't the time to maintain them, such as the Regexp::Common module. He also mentioned the TRUCE module (Trash Receptacle for Unsolicited Commercial Email). [I did not have the heart to tell him that the preferred acronym is now UBE, because the acronym is about all he currently has :) ] Some other ideas as well I cannot recall: his site may list them.
  • Last was Mark-Jason Dominus with his "tibia" idea, basically a database that is more than a flat file, but less than a full fledged DBI/SQL solution. It would allow multiple column queries, for example, something DBM cannot do. URL as soon as I get one, natch.

All of the above went very fast, and lasted into the time alloted for lunch. After a great local lunch, I returned to catch MJD again with his excellent "Stolen Secrets of the Wizards of the Ivory Tower" talk. Well, I actually only caught half of it, because I wanted to catch the second half of Abigail's talk on Parse::RecDescent. I think I would have preferred the original talk topic, "Advanced Data Structures", but my mind was on dinner at that point anyway.

All in all, a great start to YAPC! I will write more later. If anyone from perlmonks is there, say hi to me tomorrow - I'll be wearing a "shebang" polo shirt and black pants.