One of the themes I've noticed moving from Perl5 to Perl6 is that less syntax is required. While I still need to get the tests to pass, CGI::App is now valid Perl6 syntax. Using "sloccount" on both versions, the Perl6 version has about 4% fewer lines in it. (A drop from 1510 lines to 1450).
Considering Perl5 had fairly efficient syntax already, each little simplification is refreshingly welcome!
Here are some things I noticed that have been removed or simplified:
1;
at the end of a file
use strict;
(on by default)
our $VERSION = 1.23
(part of module declaration now).
- declaring
new()
is not needed for simple objects. (See The Objects Synopsis)
- Simple object methods are automatic.
my $self = shift;
is gone -- my favorite!
$self->{_FOO} is just $!foo
.
my
is no longer necessary in a for
loop.
Instead the syntax is: for @array -> $i {
I'm sure there are more shortcuts to be discovered.
I'm also starting to refactor Perl5 idioms into more pleasant Perl6 idioms.
Here are two snippets, both valid Perl6, but the second takes advantage of two
new features: qw//
has been replaced with < >
,
and any()
and all()
have added to the core, working like
Quatum::Superpositions in Perl5, which I've always been superstitious about
using in production.
Perl5ish code in Perl6
my %allowed_header_types = (
header => 1,
redirect => 1,
none => 1,
);
print "Invalid header_type '$header_type'" if (not %allowed_header_types<$header_type>);
Refactored to use Perl6 quoting and any()
my @allowed_header_types =
My experience with Perl6 thus far has been the sum of a details like this that add
up to a more pleasant syntax.
Thanks to TreyHarris and wolverian for post-launch feedback on this post.
Recent Comments