**Perl 6** on Perl-ohjelmointikielen kehitysversio. Kehitystyö alkoi vuonna 2000. Perl 6:n suunnittelussa on lähdetty Perl 5:stä, mutta kyse on koko kielen ja sen tulkin uudelleenkirjoittamisesta.

Perl 6:ssa on monia muutoksia verrattuna Perl 5:een. Se ei ole taaksepäin yhteensopiva, mutta siellä tulee olemaan yhteensopivuustila. Larry Wall, Perlin luoja, on kutsunut Perl 6:ta yhteisön uudelleenkirjoittamaksi Perliksi, koska hänen suunnitelmansa perustuu 361:een yhteisön jäsenten tekemään ehdotukseen. Ehdotukset on julkaistu vuonna 2000. Wall on kirjoittanut suunnitelmansa pitkiin esseisiin, joita hän kutsuu nimellä Apocalypse. Esseiden numerointi vastaa lukuja kirjassa *Programming Perl* ("The Camel Book"). tärkeimpiin Apocalypse-esseisiin liittyy myös Damian Conwayn Exegesis-artikkeli, joka antaa ominaisuuksista käytännön esimerkkejä. (Nimet selittyvät sillä, että apokalypsi tarkoittaa ilmestystä tulevista asioista ja eksegeesi on selitys tekstistä.)

Perl 6:ta varten on kehitetty alustariippumatonta tavukoodia ajava virtuaalikone nimeltä **Parrot,**, mutta joka on suunniteltu myös muiden kielten tarpeisiin.
Perl 6:sta on olemassa toteutus Rakudo Perl, joka tuottaa Parrot- ja MoarVM-virtuaalikoneiden tavukoodia,
sekä Haskell-kielellä kirjoitettu Pugs.
Perl 6 on myös toteutettu Perl 5:n `v6.pm`-moduulina. Mikään toteutus ei ole toistaiseksi täydellinen tai täysin toimiva.

Suurimmat muutokset
-------------------

Perl 5:n ja Perl 6:n välillä on satoja, ellei tuhansia muutoksia, yleisenä ajatuksena on ollut: "keep Perl 6 Perl" ("pidetään Perl 6 Perlinä"). Useat muutokset normalisoivat kieltä; tekevät oppimisen helpoksi ja tehdäkseen "helppoja asioita helposti ja vaikeita mahdolliseksi".

### Muuttujat

```
# Perl 5
my @array = (0, 1, 2, 3);
my $element = $array[1]; # $element equals 1
```

Mutta Perl 6:ssa se näyttää hieman erilaiselta

```
my @array = (0, 1, 2, 3);
my $element = @array[1]; # $element equals 1
```

Tämä helpottaa lukemista, koska yleensä `$array...` on yleensä `@array`.

### Olio-ohjelmointi

Perl 5 tukee olio-ohjelmointia *siunauksen* (*blessing*) avulla. Minkä tahansa viittauksen voi siunata luokan olioksi:

```
# Perl 5
my $olio = bless $viittaus, 'Luokka';
```

Siunatulla oliolla voi sen jälkeen olla metodeita, joita käytetään nuolisyntaksilla (->):

```
# Perl 5
$olio->metodi();
```

Tämä saa Perlin löytämään metodi-nimisen aliohjelman ja kutsumaan sitä niin, että `$olio` on ensimmäinen parametri ja muut parametrit tulevat sen jälkeen.

"Helpot asiat helposti ja vaikeat mahdolliseksi" -hengessä Perl 6 pitää vanhan siunausmallin, mutta ottaa käyttöön paljon selvemmän olio-ohjelmointimallin. Esimerkiksi jos halutaan tehdä luokka, joka sisältää sisällään pisteet x ja y:

```
class Piste is rw {
    has $.x;
    has $.y;
}
```

Ja sitä käytetään näin:

```
my Piste $point .= new;
$point.x = 1.2;
$point.y = -3.7;
```

Perl 6 käyttää siis monista muista kielistä, esimerkiksi C++:sta, Javasta, Pythonista ja Rubysta, tuttua pistenotaatiota olion sisältämien muuttujien tai metodien kutsumisessa.

Lähteet
-------

1. ↑
2. ↑   (Arkistoitu – Internet Archive)

Aiheesta muualla
----------------

* Perl 6:n kehityssivu
* (englanniksi) Perl-6-FAQ[vanhentunut linkki]
* (englanniksi) Perl6::Perl5::Differences (Arkistoitu – Internet Archive)