Contents

This is a small tour, showing the best features and improvements of Perl 6 in short examples, compared to similar working Perl 5 examples.

Output

Making output will become simpler and easier for newbies.

Perl 5(.8)

Perl 6

print "bananas are good\n";

say "bananas are good";

print "and I said: ".$quotes{"me"}.".\n";

say "and I said: {%quotes<me>}.";

File IO

File::Slurp is in the Perl 6 core language and file reading is simpler then ever (and autochomp included).

Perl 5

Perl 6

open my $FH, '<', "poetry.txt";

$content = slurp "poetry.txt";

read $FH, $content, $block_len until eof;

close $FH;

open my $FH, '<', "poetry.txt";

@content = lines "poetry.txt";

while (<$FH>) { chomp; push @content, $_; }

close $FH;

Automatic multithreading

Applying operations to junctions and arrays is now syntactically compact and readable. Perl 6 will create threads where appropriate to use multiple processors, cores or hyperthreading for high level language SIMD concurrent processing.

Perl 5

Perl 6

my $sum;

my $sum = [+] @numbers;

$sum += $_ for @numbers;

for (0 .. $#factor1) {

@product = @factor1 >>*<< @factor2;

$product[$] = $factor1[$] * $factor2[$_];

}

The Perl 5 code is a simplification, of course Perl6 "does the right thing" when the arrays have different lengths.

Comparsion

Here are junctions, then chained comparison operators.

Perl 5

Perl 6

if ($a = 3 or $a = 4 or $a = 7) {...}

{{if $a = 3

4

7 {...} }}

if (4 < $a and $a < 12) {...}

if 4 < $a < 12 {...}

if (4 < $a and $a <= 12) {...}

if $a ~~ 4^..12 {...}

The err operator eases lot of cases where Perl 5 newbies could fall into traps.

Perl 5

Perl 6

$a = defined $b ? $b : $c;

$a = $b // $c;

Case construct

Perl 5

Perl 6

if ($a = 2 or $a = 5) {...}

given $a {

elseif ($a = 6 or $a = 7 or $a = 8 or $a = 9) {...}

{{. . when 2

5 {...} }}

elseif ($a =~ /g/) {...}

. . when 6 .. 9 {...}

else {...}

. . when 'g' {...}

. . default {...}

}

It's clear to read, very versatile and when used in combination with junctions, becomes even clearer.