Perl 6
Perl 6 Tutorial Part 1: Revision 17


Motivation for a friendly Perl 6-Tutorial

Perl 6 appears slowly before the wondering eyes of the curious, but if they grab Rakudo and the documentation (aka synopses) and try to write their first program, they often don't get too far. The language changes a bit every week and Rakudo nor Pugs know every command. The synopses aren't an easy read either. They are huge and contain a lot of nifty words. More written to clear edge cases to computer science students than to help the noobs to get a grasp. Therefore we would need a tutorial that introduces the reader slowly into the world of Perl 6 and prerequests as little knowledge as possible. Of course some basic programming skills are needed and some Perl 5 wisdom is helpful, but everything else will be explained on the way. Every chapter of this tutorial is focused on one topic and contains many examples, so you can start to play with the language, which I encourage you to do. Because a start is made quickly but it takes time to really lern Perl and the new generation is optimized even on that.

Hello Perl 6

Nearly every introduction starts with a "Hello World" example. I tried to come up with something more original, but its still the smallest, simplest program that does something joyfully useful. So let's start with something worn out?, no something well-tried:

say "Greetings, earthlings, err Perl 6 neophytes.";


Dieses erste Programm gibt doch tatsächlich den genannten Text aus. Der Befehl say entspricht dem bekannten print, fügt aber noch ans Ende der Ausgabe einen Zeilenumbruch an, der dem Standard des aktuellen Betriebssystems entspricht. Klar gibt es 'print' weiterhin, aber zur Gewöhnung wird ab jetzt say verwendet. Ich kann aber bereits die Einwände der erfahreneren Perlschreiber hören: Ein gutes Skript beginnt mit strict und warnings. Und recht haben sie. In Perl 5 müsste das kleine Programm lauten:

Perl 5:

use strict;
use warnings;

print "Greetings, earthlings, err Perl 6 neophytes.\n";

Aber in Perl 6 entfällt das, weil beide Pragmas jetzt standardmäßig aktiviert sind. Das spart nicht nur die 2 Zeilen Code, die in fast allen meiner Programme sind, sondern es hilft jenen, die nichts darüber wissen, potenzielle Probleme eher zu sehen. Bei Bedarf kann ja beides, wie bekannt, mit no strict; und no warnings; abschaltet werden.

Runde und geschweifte Klammern

Der nächste Schritt ist in Tutorials oftmals die Einführung von Variablen, denen
ein Wert zugewiesen wird, der gleich wieder ausgegeben wird.

my $a = 3;
say "Ich jongliere mit $a Bällen.";

Da Skalare immer noch Variablen sind, die einen einzelnen Wert speichern (egal
welchen Datentyps ) und immer noch mit der Sigil =$= anfangen, gibt es hier nichts
weiter zu erklären. Die Variable ist natürlich mit =my= als lexikalisch lokal deklariert,
da =use strict= gilt. Vielleicht könnte ich ein =if= einfügen, da ich Artistik mit
ein oder zwei Bällen nicht jonglieren nennen würde.

my $a = 3;
if $a > 2 { say "Ich jongliere mit $a Bällen." }

Und hier sehen wir schon einen Unterschied zu Perl 5, der angenehm auffällt.
Der dem =if= folgende Term kann, muß aber nicht mehr, in runde Klammern
gesetzt werden. Runde Klammern dienen in Perl 6 nur noch dem Gruppieren.
Hat man jedoch keine verschachtelte Struktur, sondern nur eine einzelne Anweisung
oder eine einfache Folge davon, werden sie nicht benötigt. Dies gilt überall.
Auch ein Array, eine Variable die mehrere Werte speichert, kann nun ohne
runde Klammern gefüttert werden.

my @primzahlen = 2,3,5,7;

Dies ist auch möglich, weil das Komma jetzt ein listenerzeugender Operator ist. Die
zweite, nicht ganz so offensichtliche Neuheit in Perl 6, die das Listing 4 zeigt,
ist das Fehlen eines abschließenden Semikolons. Seit Perl 1.0 trennt das Semikolon
einzelne Befehle. Lediglich der letzte Befehl innerhalb geschweifter Klammern
(in einem Block), muß nicht mit einem Semikolon abgeschlossen werden. Auch das
sieht man in Listing 4. Um sich nicht mehr merken zu müssen, wann nach einer
schließenden geschweiften Klammer ein Semikolon zu stehen hat und wann nicht
(diese Regeln wurden weitestgehend aus C übernommen), hat Larry beschlossen,
daß jedes Semikolon nach geschweiften Klammern ab jetzt freiwillig (optional) ist.
Bei =if= - Blöcken gilt das auch in Perl 5, aber nicht z.B. bei =eval= - Blöcken.

Perl 5:

eval { print "Finden sie alle 3 Unterschiede !\n" };

Perl 6:

try { say "Finden sie alle 3 Unterschiede !" }

Der dritte Unterschied ergab sich, weil =eval= jetzt nur noch Strings auswertet
und für das Ausführen von Blöcken probehalber, nun =try= statt =eval= zu verwenden ist.


Overview | Next Chapter


Upload Files

Click "Browse" to find the file you want to upload. When you click "Upload file" your file will be uploaded and added to the list of attachments for this page.

Maximum file size: 50MB

 
 
 
File Name Author Date Uploaded Size

Save Page As

Enter a meaningful and distinctive title for your page.

Page Title:

Tip: You'll be able to find this page later by using the title you choose.

Page Already Exists

There is already a page named XXX. Would you like to:

Save with a different name:

Save the page with the name "XXX"

Append your text to the bottom of the existing page named: "XXX"

Upload Files

Click "Browse" to find the file you want to upload. When you click "Add file" this file will be added to the list of attachments for this page, and uploaded when you save the page.

 
 
 
Add Tags

Enter a tag and click "Add tag". The tag will be saved when you save the page.

Tag: 

Suggestions: