Updated: August 28th, 2008

imageNewsflash: 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

8 Responses to “Moving From Perl 5 to Perl 6 - What's New, Tutorial Style”

  1. XaprbNo Gravatar Says:

    doit(:when, :what('more stuff')); # 'doing more stuff at noon'

    Where did "noon" come from?

  2. Artem RussakovskiiNo Gravatar Says:

    Sorry, Baron, wordpress ate my <>. It's corrected now.

  3. Dave DoyleNo Gravatar Says:

    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.

  4. moritzNo Gravatar Says:

    > 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.

  5. Jay GadgetNo Gravatar Says:

    found your page and thought it was about beer… now i'm a little bit disappointed ;)

  6. Artem RussakovskiiNo Gravatar Says:

    Jay, allow me to refer you to http://beerpla.net/2006/06/02/beer-planet/

  7. GolfspielNo Gravatar Says:

    Hehe i like you beerpla.net. Sounds like Bierplanet. Still funny.

  8. My Notes On Learning Python Coming From Perl | beer planet Says:

    [...] 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 = [...]

Leave a Reply

Subscribe without commenting