Moving From Perl 5 to Perl 6 - What's New, Tutorial Style
Friday, August 22nd, 2008
Updated: August 28th, 2008
Newsflash: Perl 6 is not dead (in case you thought it was)!
I stumbled upon this most excellent series of posts by Moritz Lenz of perlgeek.de that describe the differences between Perl 5 and the upcoming Perl 6 (thanks to Andy Lester for the link). The posts are done in the form of tutorials, which helps comprehension. Simply awesome, Moritz.
It seems like Perl 6 is going to be a lot more object oriented, but such orientation is optional and not forced upon programmers, like in, say, Java. It warms my heart that I will be able to do this (you did see the new "say" function in Perl 5.10, right?):
1 2 3 | my Num $x = 3.4; say $x.WHAT; # Num say "foo".WHAT; # Str |
My favorite Perl 6 change so far is this:
1 2 3 4 5 6 7 8 9 | # named arguments
sub doit(:$when, :$what) {
say "doing $what at $when";
}
doit(what => 'stuff', when => 'once'); # 'doing stuff at once'
doit(:when, :what('more stuff')); # 'doing more stuff at noon' |
I've first seen this technique in Ruby (apparently Python has it too), and have been using an anonymous hash in order to emulate named arguments in Perl 5. Perl 6 does it in a much cleaner way.
I wonder if there are any Perl 6 changes specifically affecting file/disk access, MySQL interaction, and execution speed.
What is your favorite new feature? Comments welcome.
Edit: Whoa, string concatenation is now ~, the dot . is used for method calls. That's kind of upsetting, I'm so used to '.'.
Edit #2: Holy crap, regex changed so much, it just warped my head onto itself and now I have a black hole in place of my face, thanks a lot. Regexes are also now called "Rules". More here

(4 rating, 4 votes)
beer planet is Artem Russakovskii's blog. Artem is a software engineer at 
August 22nd, 2008 at 3:57 pm
doit(:when, :what('more stuff')); # 'doing more stuff at noon'
Where did "noon" come from?
August 22nd, 2008 at 4:00 pm
Sorry, Baron, wordpress ate my <>. It's corrected now.
August 22nd, 2008 at 5:49 pm
Agreed. This is an excellent series of posts that really brings the Perl 5 programmer into Perl 6. Heck of a lot easier to understand than the Apocalysis and Egesis stuff.
August 22nd, 2008 at 11:55 pm
> I wonder if there are any Perl 6 changes
> specifically affecting file/disk access, MySQL
> interaction, and execution speed.
I don't really know about disk access, but in terms of speed there are many improvements compared to perl 5. The two perhaps most important things are:
1) Static types allow better optimiztions
2) Overloading is gone (and replaced by multi method dispatch), and overloading was one of the perl 5 features that prevented many optimizations.
There's no mysql specific features in Perl 6, but the new object model (about which I wrote about today, and which has many more features than I could show) will certainly help to build an easier, cleaner interface.
August 24th, 2008 at 11:48 pm
found your page and thought it was about beer… now i'm a little bit disappointed
August 24th, 2008 at 11:53 pm
Jay, allow me to refer you to http://beerpla.net/2006/06/02/beer-planet/ …
September 8th, 2008 at 4:50 am
Hehe i like you beerpla.net. Sounds like Bierplanet. Still funny.
October 22nd, 2008 at 11:44 pm
[...] default parameters, similar to PHP. Perl 5 doesn’t have such construct, it’s only introduced in Perl 6. For example 1 def do_search(string, start = [...]